预取数据控制器及其方法

文档序号:6426088阅读:166来源:国知局
专利名称:预取数据控制器及其方法
技术领域
本发明提供一种提取一存储装置所存储的数据的装置及方法,特别指一种可有效率地预取一存储装置所存储的数据的预取控制器及方法。
背景技术
一般而言,计算机系统会包含有一运算单元(例如一中央处理器)以及一存储单元(例如一动态随机存取存储器),亦即存储单元纪录数据与指令,而运算单元便自存储单元提取所要的数据与指令来完成一预定逻辑运算,此外,运算单元亦会将该预定逻辑运算所产生的输出数据回存至存储单元。如本技术领域所公知,随着制造工艺进步,中央处理器的运算时钟便快速地提升,因此一般而言,中央处理器的运算时钟远高于动态随机存取存储器的工作时钟,亦即中央处理器的数据处理速度快于动态随机存取存储器的数据处理速度。所以,当中央处理器执发出一数据提取指令以提取动态随机存取存储器中一预定数据后,中央处理器必须等待动态随机存取存储器读取该预定数据,并传回该预定数据至中央处理器,因此便会因为动态随机存取存储器的延迟时间而影响中央处理器的运算效能。所以,快取存储器(cache)便用来减轻存储器的延迟时间对中央处理器的影响,相较于公知动态随机存取存储器,快取存储器(例如静态随机存取存储器)具有高速的数据存取速度,但是由于快取存储器的生产成本较高,因此计算机系统所设置的快取存储器(例如中央处理器中的L2快取)的容量远小于动态随机存取存储器的容量。
请参阅图1,图1为公知数据处理系统10的功能方块图。数据处理系统10包含有一快取存储器12,一预取控制器(pre-fetch controller)14,一存储器控制器(memory controller)16,以及一动态随机存取存储器18。如上所述,快取存储器12的数据存取速度快于动态随机存取存储器18的数据存取速度,因此当中央处理器执行一逻辑运算时,若中央处理器可直接自快取存储器12读取到所要的数据,则中央处理器便可进一步地提升其运算效能,所以预取控制器14便先预测中央处理器执行该逻辑运算需自动态随机存取存储器18提取数据DATAa、DATAb、DATAc,然后告知存储器控制器16以驱动存储器控制器16自动态随机存取存储器18读取数据DATAa、DATAb、DATAc,并传送至快取存储器12中存储。因此,当中央处理器执行该逻辑运算的过程中,若数据DATAa、DATAb、DATAc为其所要的数据,亦即中央处理器搜寻快闪存储器会产生公知快取命中(cache hit),因此中央处理器便可直接由快取存储器12提供所需的数据DATAa、DATAb、DATAc来执行该逻辑运算。然而,一般而言,预取控制器14的预测结果与该逻辑运算的数据需求不一定会完全吻合,亦即该逻辑运算需自动态随机存取存储器18读取其存储的数据DATAa、DATAb、DATAd,但是预取控制器14却预测中央处理器执行该逻辑运算需自动态随机存取存储器18提取数据DATAa、DATAb、DATAc,因此,当中央处理器执行该逻辑运算时,中央处理器搜寻快取存储器12中的数据DATAa、DATAb会产生快取命中,因此中央处理器可顺利地自快取存储器12读取数据DATAa、DATAb,然而,当中央处理器于快取存储器12中搜寻数据DATAd时会产生公知快取未命中(cache miss),因此便必须经由存储器控制器16自动态随机存取存储器18提取数据DATAd,最后,数据DATAd会存储于快取存储器12中,并同时会传送给中央处理器,换句话说,中央处理器便必须等待,直到接收到动态随机存取存储器18所输出的数据DATAd后才能继续执行该逻辑运算。
由上可知,数据DATAc并非为所要的数据DATAd,因此预取控制器14预先读取动态随机存取存储器18中的数据DATAc便会耗费存储器控制器16与动态随机存取存储器18之间的频带宽度,所以,当预取控制器14的预测准确率太低时,亦即当中央处理器搜寻快取存储器12时不断地产生快取未命中,因此预先读取数据的操作便会使计算机系统的整体效能大幅地恶化。

发明内容
因此,本发明提供一种可有效率地预取一存储装置所存储的数据的预取控制器及方法,以解决上述问题。
根据本发明,公开一种控制预取存储器的数据的方法。该方法包括有初始化一计数值;当预取操作时,提取该存储器的数据并使得该计数值减去一第一数值;当预取命中时,使得该计数值累加一第二数值;以及比较将该计数值与一第一阈值,若该计数值小于该第一阈值,则暂停提取该存储器的数据。
由于本发明预取控制器与其操作方法不断地监测预测准确度,并动态地调整一计数值,当预取控制器的预测准确度不佳时,该计数值会达到一阈值,因此本发明预取控制器与其操作方法便会停止预先读取数据的操作,以便缓和过量快取未命中对存储器传输频带宽度所造成的影响。


图1为公知数据处理系统的功能方块图。
图2为本发明第一种预取控制器的功能方块示意图。
图3为本发明第一种预取控制的方法流程4为本发明第二种预取控制器的功能方块示意图。
附图符号说明10 数据处理系统 12 快取存储器14、20、40 预取控制器16 存储器控制器18 动态随机存取存储器22 控制电路24 计数寄存器26、44 减法器28、42 加法器30、46 比较模块32 运算单元 34 检测单元36 输出单元具体实施方式
请参阅图2,图2为本发明第一种预取控制器20的功能方块示意图。预取控制器20包含有一控制电路22,一计数寄存器24,一减法器26、一加法器28,以及一比较模块30。控制电路22中则包含有一运算单元32,一检测单元34,以及一输出单元36。此外,计数寄存器24中存储有一计数值CNT。请注意,如本技术领域所公知,减法器26亦可经由加法器与XOR逻辑运算电路来加以实施。预取控制器20的操作方法详述如下,首先,当预取控制器20启动时,计数寄存器24会初始其纪录的计数值CNT,举例来说,计数寄存器24可纪录10个位,亦即计数值CNT的最小值对应”0000000000”,而计数值CNT的最大值对应”1111111111”,因此计数值CNT的初始值需介于其最大值与最小值之间,本实施例中,该初始值为最大值与最小值的中间值,亦即”0000011111”。然后,控制电路22的运算单元32便开始预测中央处理器执行逻辑运算所要读取的预定数据,并产生相对应数据提取指令(request),并经由输出单元36传送该数据提取指令至图1所示的存储器控制器16,以便自动态随机存取存储器18读取所要的预定数据。此外,当输出单元36输出一数据提取指令时,其会触发一控制信号pf_get,且控制信号pf_get会进一步地启动减法器26执行逻辑运算,因此计数值CNT与一第一数值N1便会经由减法器26计算计数值CNT减去第一数值N1的运算结果,然后该运算结果便进一步地更新(update)计数寄存器24所记录的计数值CNT。
此外,控制电路22的检测单元34则会检测中央处理器执行逻辑运算所要的数据与运算单元32产生的数据提取指令所对应的预取数据是否符合,当一数据提取指令所对应的预取数据符合中央处理器所要的数据时,检测单元34会输出一控制信号pf_hit,且控制信号pf_hit会进一步地启动加法器28执行逻辑运算,因此计数值CNT与一第二数值N2便会经由加法器28计算计数值CNT与第二数值N2相加的运算结果,然后该运算结果便进一步地更新计数寄存器24所记录的计数值CNT。
如上所述,控制信号pf_get表示预取控制器20自图1所示的动态随机存取存储器预先读取一数据,而控制信号pf_hit则表示预取控制器20所预先读取的数据符合中央处理器所要的数据,一般而言,预取控制器20的预测结果与该逻辑运算的数据需求不一定完全吻合,因此可能输出单元36已触发产生复数次控制信号pf_get后,检测单元34才会产生一次控制信号pf_hit,亦即控制信号pf_hit与控制信号pf_get之间的比例便代表预取控制器20的预测准确度。换句话说,若预取控制器20的预测准确度越高,则控制信号pf_hit的发生频率便越频繁。本实施例中,假设控制信号pf_hit与控制信号pf_get之间的比例为A∶B时,中央处理器仍可维持良好的运算效能,因此本实施例便设定第一数值N1与第二数值N2之间的比例对应A∶B,举例来说,若控制信号pf_hit与控制信号pf_get之间的比例为1∶4时,预取控制器22的运作视为有效率的,因此便设定第一数值N1与第二数值N2之间的比例对应1∶4,所以,本实施例中,第一数值N1与第二数值N2分别等于1与4。所以,当输出单元36产生一次控制信号pf_get时,计数值CNT会递减1,以及当检测单元34产生一次控制信号pf_hit时,计数值CNT会递增4。
如前所述,计数值CNT的初始值为”0000011111”,因此若输出单元36每产生4控制信号pf_get中,检测单元34有产生一次控制信号pf_hit,则计数值CNT会保持不变,亦即计数值CNT仍纪录该初始值”00011111”。若输出单元36每产生4次以上(例如5次)的控制信号pf_get中,检测单元34才有产生一次控制信号pf_hit,因此计数值CNT会小于该初始值”00011111”,并逐渐地趋近最小值”0000000000”,换句话说,当计数值CNT逐渐地减少时,则表示预取控制器20的预测准确率不佳而造成执行效能不佳。此外,若输出单元36每产生4次以下(例如3次)的控制信号pf_get中,检测单元34便可产生一次控制信号pf_hit,因此计数值CNT会大于该初始值”00011111”,并逐渐地趋近最大值”1111111111”,换句话说,当计数值CNT逐渐地增加时,则表示预取控制器20的预测准确率良好而产生极佳执行效能。
本实施例中,比较模块30会比较计数值CNT以及一阈值TH1,而阈值TH1小于上述初始值”0000011111”。由上可知,当预取控制器20的预测准确率不佳时,表示控制信号pf_hit的发生频率降低,因此计数值CNT会逐渐地趋近最小值”0000000000”,明显地,当预取控制器20的预测准确率太低,则表示中央处理器搜寻图1所示的快取存储器12时会不断地产生快取未命中,因此预取控制器20预先读取数据的操作便会使计算机系统的整体效能大幅地恶化,所以当比较模块30判断计数值CNT小于阈值TH1时,比较模块30会驱动控制电路22以中断输出单元36的功能,亦即输出单元36不再将运算单元32所产生的数据提取指令传送至图1所示的存储器控制器16,因此输出单元36便停止产生控制信号pf_get至减法器26,换句话说,当输出单元36停止输出控制信号pf_get后,计数值CNT便不会再降低。
请注意,运算单元32与检测单元34此时仍会正常地运作,亦即运算单元32仍会不断预测中央处理器执行逻辑运算时所需的数据,并产生相对应数据提取指令,而检测单元34会检测数据提取指令于动态随机存取存储器18所对应的数据与中央处理器执行逻辑运算于动态随机存取存储器18所提取的数据,虽然输出单元36不会输出数据提取指令至存储器控制器16以执行预先读取数据的操作,然而检测单元34仍会继续监测运算单元32的预测结果是否准确,因此当检测单元34检测到运算单元32所预测的数据与中央处理器自动态随机存取存储器18所提取的数据相同时,则检测单元34会产生控制信号pf_hit,因此加法器28便会启动来提升计数值CNT,如上所述,当输出单元36停止输出控制信号pf_get后,计数值CNT便不会再降低,亦即计数值CNT便会因为检测单元34陆陆续续地输出控制信号pf_hit而逐渐地增加。
本实施例中,比较模块30会比较计数值CNT与一阈值TH2来决定是否驱动控制电路22重新启动输出单元36,阈值TH2大于阈值TH1,且大于上述初始值”0000011111”,因此若阈值TH2等于阈值TH1,则预取控制器20便可能于启动输出单元36的操作与关断输出单元36的操作之间不停地切换,所以本发明预取控制器20便使用不同的阈值TH1、TH2来避免上述情况。当计数值CNT超过阈值TH2后,输出单元36会重新启动,若此时预取控制器20的预测准确率仍未改善,亦即控制信号pf_hit的发生频率过低,因此计数值CNT会快速地减少,当计数值CNT又小于阈值TH1时,则比较模块30会告知控制电路22以暂停输出单元36的功能,因此可减轻存储器控制器16与动态随机存取存储器18之间的数据传输负荷。
图3为本发明第一实施例的流程图,当预取操作时,计数值CNT会减去一第一数值N1,当预取命中时,计数值CNT会增加一第二数值N2,如果计数值CNT小于阈值TH1,则表示预测的准确率太差,因此会停止存取存储器的数据。此时还是有预取操作,只是计数值CNT不再减少,但若是预取命中时,则计数值CNT会增加第二数值N2,直到计数值CNT大于阈值TH2时,才会重新在启动存储器控制器到存储器中存取数据。
综上所述,当计数值CNT小于阈值TH1时,运作中的输出单元36会被关断,而当计数值CNT大于阈值TH2时,关断中的输出单元36会开始运作。然而,本发明预取控制器20亦可于计数值CNT高于一阈值时,关断目前运作中的输出单元36,以及于计数值CNT小于另一阈值时,重新启动目前关断中的输出单元36,请参阅图2与图3,图3为本发明第二种预取控制器40的功能方块示意图。请注意,图3所示的预取控制器40与图2所示的预取控制器20中,大部分的同名元件具有相同的功能,因此不再重复赘述。主要的不同的处在于加法器42、减法器44以及比较模块46的操作,本实施例中,当输出单元36输出一控制信号pf_get时,控制信号pf_get会启动加法器42而非减法器44,此时,加法器42会将计数值CNT与一数值N3相加,并以运算结果更新计数值CNT。另外,当检测单元34输出一控制信号pf_hit时,控制信号pf_hit会启动减法器44而非加法器42,此时,减法器44会将计数值CNT减去一数值N4,并以运算结果更新计数值CNT。数值N3、N4的设定规则与上述数值N1、N2的设定规则相同,因此数值N3、N4之间的比例即对应预取控制器40的预定预测准确率。
图2所示的实施例中,当检测单元34输出一控制信号pf_hit时,加法器28会启动以使用数值N2来提升计数值CNT,以及当输出单元36输出一控制信号pf_get时,减法器26会启动以使用数值N1来降低计数值CNT。然而,本发明预取控制器20于检测单元34输出一控制信号pf_hit时,启动加法器28以使用数值N3来提升计数值CNT,以及于输出单元36输出一控制信号pf_get时,启动减法器26以使用数值N4来降低计数值CNT。如前所述,计数值CNT的初始值为”0000011111”,因此若输出单元36每产生4次控制信号pf_get中,检测单元34产生一次控制信号pf_hit,则计数值CNT会保持不变,亦即计数值CNT仍纪录该初始值”00011111”。若输出单元36每产生4次以上(例如5次)的控制信号pf_get中,检测单元34才有产生一次控制信号pf_hit,因此计数值CNT会大于该初始值”00011111”,并逐渐地趋近最大值”1111111111”,换句话说,当计数值CNT逐渐地增加时,则表示预取控制器40的预测准确率不佳而造成执行效能不彰。此外,若输出单元36每产生4次以下(例如3次)的控制信号pf_get中,检测单元34便可产生一次控制信号pf_hit,因此计数值CNT会小于该初始值”00011111”,并逐渐地趋近最小值”0000000000”,换句话说,当计数值CNT逐渐地减少时,则表示预取控制器40的预测准确率良好而可产生极佳执行效能。
比较模块46会比较计数值CNT以及一阈值TH3,而阈值TH3大于上述初始值”0000011111”。当比较模块46判断计数值CNT大于阈值TH3时,比较模块46会驱动控制电路22以中断输出单元36的功能,亦即输出单元36不再将运算单元32所产生的数据提取指令传送至图1所示的存储器控制器16,因此输出单元36便停止产生控制信号pf_get至加法器42,换句话说,当输出单元36停止输出控制信号pf_get后,计数值CNT便不会再增加。如前所述,检测单元34仍会继续监测运算单元32的预测结果是否准确,因此当检测单元34检测到运算单元32所预测的数据与中央处理器自动态随机存取存储器18所提取的数据相同时,则检测单元34会产生控制信号pf_hit,因此减法器44便会启动来降低计数值CNT,所以计数值CNT便会因为检测单元34陆陆续续地输出控制信号pf_hit而逐渐地降低。
然后,比较模块46会比较计数值CNT与一阈值TH4来决定是否驱动控制电路22重新启动输出单元36,阈值TH4小于阈值TH3,且低于上述初始值”0000011111”,因此,当计数值CNT小于阈值TH4后,输出单元36会重新启动,若此时预取控制器40的预测准确率仍未改善,亦即控制信号pf_hit的出现频率仍过低,因此计数值CNT便会快速地增加,当计数值CNT又超过阈值TH3时,则比较模块30会告知控制电路22以暂停输出单元36的功能,因此便可减轻存储器控制器16与动态随机存取存储器18之间的数据传输负荷。
本发明预取控制器与其操作方法不断地监测预测准确度,并动态地调整一计数值,当预取控制器的预测准确度不佳时,该计数值会达到一阈值,因此本发明预取控制器与其操作方法便会停止预先读取数据的操作,以便缓和过量快取未命中对存储器传输频带宽度所造成的影响。此外,上述数值N1、N2、N3、N4与阈值TH1、TH2、TH3、TH4为可编程(programmable),所以,本发明预取控制器与其操作方法可弹性地设定上述数值N1、N2、N3、N4与阈值TH1、TH2、TH3、TH4来进一步地微调(tune)预取控制器的效能。再者,本发明预取控制器应用简单的电路结构来计算计数值以控制预先读取数据的操作,因此不但生产成本低且实作容易。
以上所述仅为本发明的较佳实施例,凡依本发明权利要求所进行的等效变化与修改,皆应属本发明的涵盖范围。
权利要求
1.一种控制预取存储器的数据的方法,包括有初始化一计数值;当预取操作时,提取该存储器的数据并使得该计数值减去一第一数值;当预取命中时,使得该计数值累加一第二数值;以及将该计数值与一第一阈值相比较,若该计数值小于该第一阈值,则暂停提取该存储器的数据。
2.如权利要求1所述的控制预取存储器数据的方法,其中当暂停提取该存储器数据时,不使得该计数值减去该第一数值,但其中当预取命中时,使得该计数值累加该第二数值。
3.如权利要求2所述的控制预取存储器数据的方法,其中当该计数值大于一第二阈值时,重新启动提取该存储器的数据,且其中该第二阈值大于该第一阈值。
4.如权利要求1所述的控制预取存储器数据的方法,其中该第二数值为第一数值的整数倍。
5.一种控制预取存储器的数据的方法,包括有初始化一计数值;当预取操作时,提取该存储器的数据并使得该计数累加一第一数值;当预取命中时,使得该计数值减去一第二数值;以及比较将该计数值与一第一阈值,若该计数值大于该第一阈值,则暂停提取该存储器的数据。
6.如权利要求5所述的控制预取存储器数据的方法,其中当暂停提取该存储器数据时,暂停使得该计数值累加该第一数值,但其中当预取命中时,使得该计数值减去该第二数值。
7.如权利要求6所述的控制预取存储器数据的方法,其中当该计数值小于一第二阈值时,重新启动提取该存储器的数据,且其中该第二阈值小于该第一阈值。
8.如权利要求5所述的控制预取存储器数据的方法,其中该第二数值为第一数值的整数倍。
9.一种预取控制器,用以预取一存储器的数据以提供一逻辑运算单元的使用,该预取控制器包含有一计数寄存器,寄存有一计数值;以及一控制电路,连接到该计数寄存器,用以当预取操作及预取命中时,使得该计数值改变。
10.如权利要求9所述的预取控制器,其中该控制电路还包含有一运算单元,用以当预取操作时,预测该逻辑运算单元执行所需的数据,并至该存储器中提取该数据。
11.如权利要求9所述的预取控制器,其中该控制电路还包含有一输出单元,用以当预取操作时,使得该计数值减去一第一数值。
12.如权利要求11所述的预取控制器,其中该控制电路还包含有一检测单元,用以当预取命中时,使得该计数值累加一第二数值。
13.如权利要求11所述的预取控制器,其中还包含有一比较模块,连接在该计数寄存器与该控制电路间,用以当该计数值小于一第一阈值时,停止提取该存储器的数据,以及当停止提取后,若该计数值大于一第二阈值时,则重新启动预取该存储器的数据。
14.如权利要求13所述的预取控制器,其中当停止预取该存储器数据时,使得该计数值不减去该第一数值,但若预取命中时,使得该计数值累加该第二数值。
15.如权利要求13所述的预取控制器,其中该第二阈值大于该第一阈值。
16.如权利要求9所述的预取控制器,其中该控制电路还包含有一输出单元,用以当预取操作时,使得该计数值累加一第三数值。
l7.如权利要求16所述的预取控制器,其中该控制电路还包含有一检测单元,用以当预取命中时,使得该计数值减去一第四数值。
18.如权利要求17所述的预取控制器,其中还包含有一比较模块,连接在该计数寄存器与该控制电路间,用以当该计数值大于一第三阈值时,停止提取该存储器的数据,且以及当停止提取后,该计数值小于一第四阈值时,重新启动预取该存储器的数据。
19.如权利要求18所述的预取控制器,其中当停止提取该存储器数据后时,使得该计数值不累加该第三数值,以及若预取命中时,使得该计数值减去该第四数值,且其中该第四阈值小于该第三阈值。
20.如权利要求9所述的预取控制器,其中还包含有一减法器,连接到该计数寄存器,使得该计数值改变,以及一加法器,连接到该计数寄存器,使得该计数值改变。
全文摘要
本发明为一种预取存储器数据的预取控制器与方法,该方法包含有初始化一计数值;当预取操作时,提取该存储器的数据并使得计数值减去第一数值;当预取命中时,使得计数值累加第二数值;以及将该计数值与第一阈值相比较,若计数值小于第一阈值,则暂停提取存储器的数据。
文档编号G06F12/08GK1570887SQ20041007512
公开日2005年1月26日 申请日期2004年8月31日 优先权日2003年10月7日
发明者徐文芝 申请人:威盛电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1