CN102163144A - 嵌入式处理器的硬件数据预取方法 - Google Patents

嵌入式处理器的硬件数据预取方法 Download PDF

Info

Publication number
CN102163144A
CN102163144A CN2011101150816A CN201110115081A CN102163144A CN 102163144 A CN102163144 A CN 102163144A CN 2011101150816 A CN2011101150816 A CN 2011101150816A CN 201110115081 A CN201110115081 A CN 201110115081A CN 102163144 A CN102163144 A CN 102163144A
Authority
CN
China
Prior art keywords
address
data
looking ahead
cache
ahead
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.)
Pending
Application number
CN2011101150816A
Other languages
English (en)
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 CN2011101150816A priority Critical patent/CN102163144A/zh
Publication of CN102163144A publication Critical patent/CN102163144A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明公开了一种嵌入式处理器的硬件数据预取方法,包括以下步骤:1)、在嵌入式处理器中设置一个预取缓冲区,预取缓冲区用于记录确定需要预取的地址,每一项地址包括地址位、有效位和步长;并在预取成功后通过一个累加器自动计算下一个预取地址;2)、发生数据高速缓存缺失后,首先要对是否进行预取进行判定,将缺失地址存入缺失地址表中,每次发生高速缓存缺失后将缺失地址存入一个历史表格中,历史表格仅保存缺失地址,采用先进先出结构。本发明可以有效的隐藏处理器发生高速缓存缺失后的重填高速缓存时间,从而减少高速缓存缺失。

Description

嵌入式处理器的硬件数据预取方法
技术领域
本发明涉及一种嵌入式处理器的硬件数据预取方法,具体的,本发明涉及一种通过缺失地址表、投机地从存储器中预取数据以供处理器使用的方法,嵌入式处理器通过硬件预取装置将数据预取进数据高速缓存器。
背景技术
在嵌入式处理器中存储器访问是处理器性能提升的瓶颈。例如在读写高速缓存器时发生缺失,因为所需的数据不能从高速缓存器中获得。流水线需要停顿等待缺失的数据从外存上拷贝过来,这个等待时间制约了处理器性能的提升。目前嵌入式处理器的访存的改进有许多方法,预取是其中的一种策略,主要通过隐藏高速缓存缺失所造成的流水线停顿时间来实现。在嵌入式处理器中的预取模块可以将数据在实际使用前先取到距处理器更近的存储结构中,例如高速缓存中,从而在处理器发生高速缓存缺失时,缺失数据已被传送进处理器中,大大减少了因数据传送而停顿流水线时间,从而降低了发生高速缓存缺失所引起的开销。预取可以分为软件预取与硬件预取,基于软件的预取方法是通过分析应用程序的访存行为,由软件设计人员设计或由编译器编译来实现数据预取。但是软件预取的缺点主要在插入的预取指令运行会增大高速缓存器的负担,同时,软件预取的算法在编译时完成,不可能随着程序运行的动态变化而变化,这样可能出现大量无用的预取指令被添加,从而降低处理器性能。硬件预取通过预测程序的运行时行为来动态进行预取,硬件预取基于程序的历史行为,通过找出高速缓存缺失信息的相关性预测下一次的高速缓存器的缺失,并在需要数据之前从存储器中预取要访问的数据。硬件预取需要增加硬件预取电路,预取请求会占用总线资源。因此硬件数据预取电路的设计需要考虑处理器的微结构与流水线的构成。
处理器简单的顺序预取方案,是在访问一个数据的时候对它的下一个数据进行预取,这样做的缺点就是只能预取下一个,预取数据不能及时送达高速缓存器。步幅的预取方案,是通过预取当前缺失地址之后固定的步长的地址,这样可以预取到与当前数据相隔更远的数据,并且对一些空间局限性较好的数据有较好效果。流预取方案是把数据存到缓存器结构流缓冲器中,发生高速缓存器缺失时,比较流缓冲器的第一项,命中时就替换它进高速缓存中,而新预取数据块填入到流缓冲器的最后一项。
虽然这些预取方案有一定的预测准确度,但存在一些局限性,特别是针对嵌入式处理器,需要硬件开销小的预取方案来实现高预测准确度,这就需要预取地址的准确计算与过滤无效的预取,采用高效的预取技术,减少高速缓存器缺失的频率,从而提升处理器的性能。
发明内容
本发明要解决的技术问题是提供一种嵌入式处理器的硬件数据预取方法。
为了解决上述技术问题,本发明提供一种嵌入式处理器的硬件数据预取方法,在嵌入式处理器中,如果使用太过复杂的预取机制会对处理器的存储带宽,芯片大小以及功耗等造成很大的影响,所以采用一种本发明利用缺失地址表来进行预取,以及可变步长的流预取策略。为了防止过多的无效预取,只有当发生多次高速缓存缺失时才通过对缺失地址进行计算并预取,这样可以防止过多的无效预取,同时在预测成功的基础上通过流定位的机制,来完成对流缓冲区的控制和流预取的发起,整个预取装置如图1所示。
首先在嵌入式处理器中设置一个预取缓冲区,用来记录确定需要预取的地址,每一项包括地址位、有效位和步长,并在预取成功后通过一个累加器自动计算下一个预取地址。在每一次高速缓存缺失时,如果确定产生预取流,会以当前高速缓存缺失地址分配一个流缓冲区来记录发起预取的地址,然后以该地址为首地址连续预取一定数量的数据存储到高速缓存器,并在数据高速缓存器增加一个预取位,将预取进的高速缓存数据的预取位置为有效。在下一次高速缓存访问时,如果发现数据在高速缓存中预取标记位有效,则在缓冲区内寻找该项预取的流,并继续预取。流缓冲区与核存储器之间的结构如图4所示。
发生数据高速缓存缺失后,首先要对是否进行预取进行判定,将缺失地址存入缺失地址表中,每次发生高速缓存缺失后将缺失地址存入一个历史表格中,历史表格仅保存缺失地址,可以采用先进先出结构,如图2所示。
判定预取的方法如下:在发生高速缓存缺失时,将缺失地址与历史表格中的所有地址进行比较,找出一个最小的差值,并将这最小的差值所对应的缺失地址与表中的其余地址进行比较,如果还存在另一个地址的差值与这个地址的差值也相等,那么将为这个缺失地址预取,一个预取流被定位。这样,这种方式不仅仅通过步长相等就进行预取,而且步长是最小的步长,可以保证不会造成过多的预取。在预取流确定后,将当前的缺失地址与最小差值写入流缓冲区入口的缺失地址与步长项,并启动当前的预取流进行预取请求。把取出的数据存入到高速缓存器,并将高速缓存器的预取位置为有效,表示当前高速缓存器的数据为预取的数据。其结构如图3所示。
本发明具有如下优点:
针对嵌入式处理器的预取结构,结构简单,在不占用过多的芯片面积与处理时间的情况下,针对处理器的高速缓存缺失做出处理,可以有效的隐藏处理器发生高速缓存缺失后的重填高速缓存时间,减少高速缓存缺失。同时,本发明还能针对一些突发的高速缓存缺失进行过滤,仅在发生多次高速缓存缺失后进行预取数据,防止过多无效预取,从而提高处理器的性能。
附图说明
下面结合附图对本发明的具体实施方式作进一步详细说明。
图1是数据预取装置在嵌入式处理器中的结构示意图;
图2是预取装置中的缺失历史表的示意图;
图3是预取装置中预取控制器的结构示意图;
图4是预取装置中预取缓冲区的结构示意图。
具体实施方式
实施例1、一种嵌入式处理器的硬件数据预取方法,依次进行以下步骤:
1)、嵌入式处理器在发生高速缓存缺失时会停顿流水线,比如在地址addr1发生数据高速缓存缺失,流水线停顿,并且高速数据缓存通过总线从存储器中读出缺失地址addr1所对应的数据data1,将data1写入高速数据缓存中。与此同时,如图1所示,嵌入式处理器的流水线会记录下缺失的地址addr1,并将缺失地址addr1写入到缺失历史表格中。缺失历史表如图2所示,主要包括缺失地址项与有效位项,缺失地址项记录发生数据高速缓存的缺失地址,有效位则是一个标志,可以记录哪一项地址是可以被替换的。
2)、之后将缺失历史表格中的地址送入预取控制器进行预取是否进行的判定与预取地址的计算,预取控制器如图3所示。预取控制器将当前缺失地址addr1与缺失历史表格中的所有地址通过减法器与比较器,找出一个绝对值最小的差值delta。并将得到这最小的差值delta所对应的缺失历史表中的地址与缺失历史表中的其余地址进行比较。比如delta是由缺失历史表格中的一项地址为addr2的表项计算得出,即addr2-addr1=delta,则将addr2与缺失历史表格中的其余表项通过减法器计算差值,如果还存在缺失历史表中另一个地址例如addr3,addr3与addr2的差值与这个之前计算的最小差值delta相等,那么为这个缺失地址预取数据,一个预取流被定位。如果所有缺失历史表中的表项与addr2的差值均不等于delta,则不对这个缺失地址进行预取,处理器继续运行。
3)、如果确定发生预取,会如图1所示将预取的地址送入预取缓冲区中进行预取操作,预取缓冲区具体如图4所示。预取缓冲包括地址项、最小步长、有效位、最近最少使用几个表项。其中预取控制电路将当前缺失的地址写入地址项,最小差值delta写入步长项最为预取的步长。有效位表示当前预取缓冲中有效的项。最近最少使用是在预取缓冲写满的替换标志,比如在四项的预取缓冲中需要2bit的最近最少使用项来标志,每一项分配0、1、2、3中的一项,在需要替换时将0对应的项替换掉,在这个位置新的预取缓冲项标志为3,其余的预取缓冲项依次减1,这样可以实现最近最少的替换策略。在预取确定发生后缺失地址与最小差值通过图4中所示的累加器计算出预取地址,并将该预取地址送入总线中,进行总线请求,总线响应后将需要预取的数据写入到数据高速缓存器,并将数据高速缓存器中该写入项的预取标记位置有效。如果之后处理器访问用到的数据的预取标记位为有效,且其地址还在预取缓冲中,则判定这个预取流成功预测,并将继续通过累加器对这个地址进行预取,计算预取地址并预取数据进入高速数据缓存器,同时该项的预取标记置为有效。如果在预取缓冲中未找到该项,则认为该预取流已经被替换,则重新判定是否进行预取。
其流程算法如下:
1)、发生高速缓存请求时,将缺失地址写入历史表格,并计算当前缺失地址与历史表格中的各项缺失地址的差值。
2)、比较差值,寻找最小差值,以及相差最小差值的历史表格记录的地址。
3)、将这个历史表格中记录的地址与历史表格其余的地址相比较,如果有差值为最小差值的地址,则一个预取流被定位。将当前的缺失地址与最小差值按最近被使用原则写入预取的缓冲区。
4)、利用预取缓冲区的地址预取出存储器的数据,把预取数据写入高速缓存器,并将数据高速缓存器的预取标记位置为有效,当预取的数据被使用后,预取电路继续采用这个预取流行预取。
本发明中利用数据地址之间的最小差值为预测的基准,在连续发生相隔的数据缺失时认定该数据存在空间的局限性,并将预取数据写入到高速缓存器,减少了不必要的预取并简化了预取的硬件结构,从而可以提升嵌入式处理器的性能。
最后,还需要注意的是,以上列举的仅是本发明的一个具体实施例。显然,本发明不限于以上实施例,还可以有许多变形。本领域的普通技术人员能从本发明公开的内容直接导出或联想到的所有变形,均应认为是本发明的保护范围。

Claims (1)

1.嵌入式处理器的硬件数据预取方法,其特征是包括以下步骤:
1)、在嵌入式处理器中设置一个预取缓冲区,所述预取缓冲区用于记录确定需要预取的地址,每一项地址包括地址位、有效位和步长;并在预取成功后通过一个累加器自动计算下一个预取地址;
在每一次高速缓存缺失时,如果确定产生预取流,会以当前高速缓存缺失地址分配一个流缓冲区来记录发起预取的地址,然后以该地址为首地址连续预取数据存储到数据高速缓存器,并在数据高速缓存器增加一个预取位,将预取进的高速缓存数据的预取位置为有效;
在下一次高速缓存访问时,如果发现数据在数据高速缓存器中预取标记位有效,则在缓冲区内寻找该项预取的流,并继续预取;
2)、发生数据高速缓存缺失后,首先要对是否进行预取进行判定,将缺失地址存入缺失地址表中,每次发生高速缓存缺失后将缺失地址存入一个历史表格中,历史表格仅保存缺失地址,采用先进先出结构;
所述判定预取的方法如下:在发生高速缓存缺失时,将缺失地址与历史表格中的所有地址进行比较,找出一个最小的差值,并将这最小的差值所对应的缺失地址与表中的其余地址进行比较,如果还存在另一个地址的差值与这个地址的差值也相等,那么将为这个缺失地址预取,一个预取流被定位;这样,这种方式不仅仅通过步长相等就进行预取,而且步长是最小的步长,可以保证不会造成过多的预取;
在预取流确定后,将当前的缺失地址与最小差值写入流缓冲区入口的缺失地址与步长项,并启动当前的预取流进行预取请求;
把取出的数据存入到高速缓存器,并将高速缓存器的预取位置为有效,表示当前高速缓存器的数据为预取的数据。
CN2011101150816A 2011-05-05 2011-05-05 嵌入式处理器的硬件数据预取方法 Pending CN102163144A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2011101150816A CN102163144A (zh) 2011-05-05 2011-05-05 嵌入式处理器的硬件数据预取方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2011101150816A CN102163144A (zh) 2011-05-05 2011-05-05 嵌入式处理器的硬件数据预取方法

Publications (1)

Publication Number Publication Date
CN102163144A true CN102163144A (zh) 2011-08-24

Family

ID=44464387

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2011101150816A Pending CN102163144A (zh) 2011-05-05 2011-05-05 嵌入式处理器的硬件数据预取方法

Country Status (1)

Country Link
CN (1) CN102163144A (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102508642A (zh) * 2011-11-10 2012-06-20 华为技术有限公司 一种数据预取方法及装置
CN102521158A (zh) * 2011-12-13 2012-06-27 北京北大众志微系统科技有限责任公司 一种实现数据预取的方法及装置
CN102521149A (zh) * 2011-11-28 2012-06-27 曙光信息产业(北京)有限公司 一种从多缓冲区收取数据的优化轮询系统和方法
CN102662862A (zh) * 2012-03-22 2012-09-12 北京北大众志微系统科技有限责任公司 实现混合预取的方法及相应的装置
CN103077129A (zh) * 2012-12-31 2013-05-01 上海算芯微电子有限公司 信息处理方法与装置
WO2014000626A1 (en) * 2012-06-27 2014-01-03 Shanghai Xinhao Microelectronics Co. Ltd. High-performance data cache system and method
CN104750696A (zh) * 2013-12-26 2015-07-01 华为技术有限公司 一种数据预取方法及装置
CN106330498A (zh) * 2015-06-25 2017-01-11 华为技术有限公司 远程数据获取方法及装置
CN110442382A (zh) * 2019-07-31 2019-11-12 西安芯海微电子科技有限公司 预取缓存控制方法、装置、芯片以及计算机可读存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5377336A (en) * 1991-04-18 1994-12-27 International Business Machines Corporation Improved method to prefetch load instruction data
US5450561A (en) * 1992-07-29 1995-09-12 Bull Hn Information Systems Inc. Cache miss prediction method and apparatus for use with a paged main memory in a data processing system
US5694572A (en) * 1989-06-12 1997-12-02 Bull Hn Information Systems Inc. Controllably operable method and apparatus for predicting addresses of future operand requests by examination of addresses of prior cache misses
US20020144062A1 (en) * 2001-03-29 2002-10-03 Hitachi, Ltd. Hardware prefetch system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5694572A (en) * 1989-06-12 1997-12-02 Bull Hn Information Systems Inc. Controllably operable method and apparatus for predicting addresses of future operand requests by examination of addresses of prior cache misses
US5377336A (en) * 1991-04-18 1994-12-27 International Business Machines Corporation Improved method to prefetch load instruction data
US5450561A (en) * 1992-07-29 1995-09-12 Bull Hn Information Systems Inc. Cache miss prediction method and apparatus for use with a paged main memory in a data processing system
US20020144062A1 (en) * 2001-03-29 2002-10-03 Hitachi, Ltd. Hardware prefetch system

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102508642A (zh) * 2011-11-10 2012-06-20 华为技术有限公司 一种数据预取方法及装置
CN102521149A (zh) * 2011-11-28 2012-06-27 曙光信息产业(北京)有限公司 一种从多缓冲区收取数据的优化轮询系统和方法
CN102521149B (zh) * 2011-11-28 2014-08-27 曙光信息产业(北京)有限公司 一种从多缓冲区收取数据的优化轮询系统和方法
CN102521158A (zh) * 2011-12-13 2012-06-27 北京北大众志微系统科技有限责任公司 一种实现数据预取的方法及装置
CN102521158B (zh) * 2011-12-13 2014-09-24 北京北大众志微系统科技有限责任公司 一种实现数据预取的方法及装置
CN102662862A (zh) * 2012-03-22 2012-09-12 北京北大众志微系统科技有限责任公司 实现混合预取的方法及相应的装置
CN102662862B (zh) * 2012-03-22 2015-01-21 北京北大众志微系统科技有限责任公司 实现混合预取的方法及相应的装置
CN103514107B (zh) * 2012-06-27 2018-04-06 上海芯豪微电子有限公司 高性能数据缓存系统和方法
WO2014000626A1 (en) * 2012-06-27 2014-01-03 Shanghai Xinhao Microelectronics Co. Ltd. High-performance data cache system and method
CN103514107A (zh) * 2012-06-27 2014-01-15 上海芯豪微电子有限公司 高性能数据缓存系统和方法
CN103077129A (zh) * 2012-12-31 2013-05-01 上海算芯微电子有限公司 信息处理方法与装置
CN103077129B (zh) * 2012-12-31 2016-07-13 上海算芯微电子有限公司 信息处理方法与装置
CN104750696A (zh) * 2013-12-26 2015-07-01 华为技术有限公司 一种数据预取方法及装置
CN104750696B (zh) * 2013-12-26 2018-07-20 华为技术有限公司 一种数据预取方法及装置
CN106330498A (zh) * 2015-06-25 2017-01-11 华为技术有限公司 远程数据获取方法及装置
CN106330498B (zh) * 2015-06-25 2019-08-27 华为技术有限公司 远程数据获取方法及装置
CN110442382A (zh) * 2019-07-31 2019-11-12 西安芯海微电子科技有限公司 预取缓存控制方法、装置、芯片以及计算机可读存储介质

Similar Documents

Publication Publication Date Title
CN102163144A (zh) 嵌入式处理器的硬件数据预取方法
US8140768B2 (en) Jump starting prefetch streams across page boundaries
KR101483849B1 (ko) 계층적으로 캐싱되는 프로세서들에서의 조정된 프리페칭
US7958316B2 (en) Dynamic adjustment of prefetch stream priority
US8255631B2 (en) Priority-based prefetch requests scheduling and throttling
CN100517274C (zh) 高速缓冲存储器及其控制方法
CN103443777B (zh) 具有预填充能力的存储器管理单元
US8683136B2 (en) Apparatus and method for improving data prefetching efficiency using history based prefetching
US20040123043A1 (en) High performance memory device-state aware chipset prefetcher
US20080016330A1 (en) Efficient Multiple-Table Reference Prediction Mechanism
US20050275658A1 (en) Information processing apparatus with a cache memory and information processing method
CN101751246A (zh) 预取数据的系统和方法
US20160019065A1 (en) Prefetching instructions in a data processing apparatus
JP2007207246A (ja) 命令ラインのための自己プリフェッチl2キャッシュ機構
US11188256B2 (en) Enhanced read-ahead capability for storage devices
US11301250B2 (en) Data prefetching auxiliary circuit, data prefetching method, and microprocessor
CN101201735A (zh) 用于以通过式存储模式操作分级缓存系统的方法和设备
EP1460532A3 (en) Computer processor data fetch unit and related method
US11036639B2 (en) Cache apparatus and method that facilitates a reduction in energy consumption through use of first and second data arrays
CN104808967B (zh) 一种处理器的动态数据预取系统
CN108874690A (zh) 数据预取的实现方法和处理器
JP5699854B2 (ja) 記憶制御システムおよび方法、置換方式および方法
CN108874691A (zh) 数据预取方法和内存控制器
US11449428B2 (en) Enhanced read-ahead capability for storage devices
CN101697146B (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
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20110824

WD01 Invention patent application deemed withdrawn after publication