CN109284240B - 存储器集成电路及其预取方法 - Google Patents
存储器集成电路及其预取方法 Download PDFInfo
- Publication number
- CN109284240B CN109284240B CN201811195142.2A CN201811195142A CN109284240B CN 109284240 B CN109284240 B CN 109284240B CN 201811195142 A CN201811195142 A CN 201811195142A CN 109284240 B CN109284240 B CN 109284240B
- Authority
- CN
- China
- Prior art keywords
- prefetch
- request
- controller
- address
- normal read
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 38
- 239000000872 buffer Substances 0.000 claims description 53
- 230000007423 decrease Effects 0.000 claims description 2
- 239000000126 substance Substances 0.000 claims 1
- 238000012549 training Methods 0.000 description 127
- 230000008859 change Effects 0.000 description 22
- 238000013461 design Methods 0.000 description 16
- 230000003247 decreasing effect Effects 0.000 description 10
- 230000003111 delayed effect Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000015556 catabolic process Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000001360 synchronised 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
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/161—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
- G06F13/1626—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests
- G06F13/1631—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests through address comparison
-
- 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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- 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/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/345—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
-
- 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/3861—Recovery, e.g. branch miss-prediction, exception handling
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6022—Using a prefetch buffer or dedicated prefetch cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6026—Prefetching based on access pattern detection, e.g. stride based prefetch
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明提供一种存储器集成电路及其预取方法。存储器集成电路包括接面电路、存储器、存储器控制器与预取加速器电路。接面电路接收外部装置的正常读请求。在预取加速器电路发送预取请求至存储器控制器后,预取加速器电路通过存储器控制器从存储器预取至少一笔预取数据。当在预取加速器电路中的预取数据具有正常读请求的目标数据时,预取加速器电路从所述预取数据中取出目标数据并回传给接面电路。当在预取加速器电路中的预取数据没有目标数据时,预取加速器电路将正常读请求优先于预取请求发送给存储器控制器。
Description
技术领域
本发明涉及一种电子装置,且特别涉及一种存储器集成电路及其预取方法。
背景技术
硬件预取是由硬件根据存取地址的历史信息,将未来可能的存取数据预先取入快取(Cache),从而在数据真正被用到时可以从速度较快的快取得到数据。无论如何,预取请求可能会和正常读请求竞争资源(例如,存储器缓冲器和存储器总线),而造成来自中央处理单元(central processing unit,CPU)的正常读请求被延迟。
已知的硬件预取对于如何处理预取请求有两种方法。一种方法认为正常读请求与预取请求有相同的优先级。另一种方法总是优先处理预取请求,以便程序可以使用已知的数据。这两种方法往往延迟了正常读请求并可能导致效能下降,特别是预取请求不准确的时候。无论采取上述何种预取策略,都无法保证在所有场景中皆可提升效能。
发明内容
本发明提供一种存储器集成电路及其预取方法,以提高存储器的带宽利用率。
本发明的实施例提供一种存储器集成电路。存储器集成电路包括接面电路、存储器、存储器控制器与预取加速器电路。接面电路用以接收外部装置的正常读请求。存储器控制器耦接至存储器。预取加速器电路耦接于接面电路与存储器控制器之间。预取加速器电路用以产生预取请求。在预取加速器电路发送预取请求至存储器控制器后,预取加速器电路通过存储器控制器从存储器预取至少一笔预取数据。当在预取加速器电路中的所述预取数据具有正常读请求的目标数据时,预取加速器电路从所述预取数据中取出目标数据并回传给接面电路。当在预取加速器电路中的所述预取数据没有目标数据时,预取加速器电路将正常读请求优先于预取请求发送给存储器控制器。
本发明的实施例提供一种存储器集成电路的预取方法。存储器集成电路包括接面电路、存储器、存储器控制器与预取加速器电路。预取方法包括:由接面电路接收外部装置的正常读请求;由预取加速器电路产生预取请求;在预取加速器电路发送预取请求至存储器控制器后,由预取加速器通过存储器控制器从存储器预取至少一笔预取数据;当在预取加速器电路中的所述预取数据具有正常读请求的目标数据时,由预取加速器电路从所述预取数据中取出目标数据并回传给接面电路;以及当在预取加速器电路中的所述预取数据没有目标数据时,由预取加速器电路将正常读请求优先于预取请求发送给存储器控制器。
基于上述,在本发明一些实施例中,所述存储器集成电路及其预取方法可以将存储器带宽性能优化。当预取数据中具有正常读请求的目标数据时,接面电路可以从预取数据获取目标数据而不需要去存取存储器,因此可以加速正常读请求的读取速度。当预取数据中没有正常读请求的目标数据时,接面电路可以优先地(优先于预取请求)将正常读请求发送给所述存储器控制器,因此可以保证正常读请求不会被延迟。因此,所述存储器集成电路可以降低正常读请求被延迟的机率,有效提升存储器的带宽利用率。
为让本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合附图作详细说明如下。
附图说明
图1是依据本发明一实施例所绘示的存储器集成电路的电路方块(circuitblock)示意图。
图2是依据本发明一实施例所绘示的一种存储器集成电路的预取地址决定方法的流程示意图。
图3是依据本发明一实施例所绘示的一种存储器集成电路的预取方法的流程示意图。
图4是是依据本发明一实施例说明图1所示预取加速器电路的电路方块示意图。
图5是依照本发明一实施例说明图4所示预取控制器290对于正常请求队列230的操作流程示意图。
【符号说明】
10:外部装置
100:存储器集成电路
110:预取加速器电路
120:存储器控制器
130:接面电路
150:存储器
210:缓冲器
220:待定正常请求队列
230:正常请求队列
240:已送正常请求队列
250:已送预取请求队列
260:预取请求决定器
270:预取请求队列
280:预取仲裁器
290:预取控制器
S111~S115、S131~S132、S210~S240、S510~S580:步骤
具体实施方式
在本申请说明书全文(包括权利要求书)中所使用的“耦接(或连接)”一词可指任何直接或间接的连接手段。举例而言,若文中描述第一装置耦接(或连接)于第二装置,则应该被解释成该第一装置可以直接连接于该第二装置,或者该第一装置可以通过其他装置或某种连接手段而间接地连接至该第二装置。另外,凡可能之处,在附图及实施方式中使用相同标号的元件/构件/步骤代表相同或类似部分。不同实施例中使用相同标号或使用相同用语的元件/构件/步骤可以相互参照相关说明。
图1是依据本发明一实施例所绘示的存储器集成电路100的电路方块(circuitblock)示意图。依照设计需求,存储器集成电路100可以是任何类型的存储器集成电路100。举例来说,在一些实施例中,存储器集成电路100可以是随机存取存储器(Random AccessMemory,RAM)集成电路、只读存储器(Read-Only Memory,ROM)、快闪存储器(Flash Memory)或其他存储器集成电路或上述一种或多种类型的存储器的组合。外部装置10可以包含中央处理单元(central processing unit,CPU)、芯片组(chipset)、直接存储器存取(directmemory access,DMA)控制器或是具有存储器存取需求的其他装置。外部装置10可以发出存取请求给存储器集成电路100。外部装置10的所述存取请求可以包括读请求(以下称为正常读请求)和/或写请求。
请参照图1,存储器集成电路100包括接面电路130、存储器150、存储器控制器120与预取加速器电路110。存储器控制器120耦接至存储器150。依照不同的设计需求,存储器150可以是任何类型的固定存储器或可移动存储器。例如,存储器150可以包括随机存取存储器(RAM)、只读存储器(ROM)、快闪存储器(Flash Memory)或类似元件或上述元件的组合。在本实施例中,存储器150可以包括双倍数据速率(double data rate,DDR)同步动态随机存取存储器(synchronous dynamic random access memory,SDRAM)。存储器控制器120可以是中央处理单元(CPU)、微处理器、数字信号处理器(digitalsignal processor,DSP)、可编程控制器、特殊应用集成电路(application specific integrated circuit,ASIC)或其他类似元件或上述元件的组合。
接面电路130可以从外部装置10接收正常读请求。依照设计需求,接面电路130可以是任何通信规格的接面电路。举例来说,在一些实施例中,接面电路130可以是符合DDRSDRAM总线规格的接面电路。预取加速器电路110耦接于接面电路130与存储器控制器120之间。接面电路130可以将外部装置10的正常读请求传送至预取加速器电路110。预取加速器电路110可以将外部装置10的正常读请求传送给存储器控制器120。存储器控制器120可以执行外部装置10的正常读请求,而从存储器150取出正常读请求的目标数据。存储器控制器120还耦接至接面电路130。存储器控制器120可以将正常读请求的所述目标数据回传给接面电路130。
预取加速器电路110可以根据外部装置10的正常读请求的历史信息来产生预取请求给存储器控制器120。当预取加速器电路110从接面电路130接收到正常读请求时,预取加速器电路110可以将正常读请求的目前地址加入训练地址群组。接着,预取加速器电路110对训练地址群组的多个训练地址进行重排序。完成重排序后,预取加速器电路110依据经重排序的训练地址群组的多个训练地址计算出预取步长。预取加速器电路110可以依据所述预取步长与所述目前地址计算出预取请求的预取地址。
图2是依据本发明一实施例所绘示的一种存储器集成电路的预取地址决定方法的流程示意图。请参照图2,当存储器集成电路100的接面电路130接收外部装置10的正常读请求时,存储器集成电路100的预取加速器电路110会将正常读请求的目前地址加入训练地址群组(步骤S210)。接着,在将目前地址加入训练地址群组后,预取加速器电路110对训练地址群组的多个训练地址进行重排序(步骤S220)。预取加速器电路110依据经重排序的训练地址群组的多个训练地址计算出预取步长(步骤S230)。在一些实施例中,预取加速器电路110可以将经重排序的训练地址群组的多个训练地址中任二个相邻训练地址相减,而计算出所述预取步长。接着,依据所述预取步长与所述正常读请求的目前地址,预取加速器电路110可以计算出预取请求的预取地址(步骤S240)。
举例来说,预取加速器电路110可以判断所述正常读请求的地址变化趋势,然后依据所述地址变化趋势来计算所述预取步长和/或所述预取地址。在一些实施例中,预取加速器电路110可以依据所述训练地址群组的多个训练地址的改变来判断所述正常读请求的地址变化趋势。举例来说,预取加速器电路110在经重排序的所述训练地址群组的多个训练地址中可以找出最大训练地址与最小训练地址。预取加速器电路110计数所述最大训练地址的变化次数而获得最大地址计数值,以及计数所述最小训练地址的变化次数而获得最小地址计数值。预取加速器电路110依据所述最大地址计数值与所述最小地址计数值来判断所述正常读请求的地址变化趋势。例如,当最大地址计数值大于最小地址计数值时,预取加速器电路110判断正常读请求的地址变化趋势为递增趋势;当最大地址计数值小于最小地址计数值时,预取加速器电路110判断正常读请求的地址变化趋势为递减趋势。
当正常读请求的地址变化趋势为递增趋势时,预取加速器电路110按预取步长从正常读请求的目前地址出发往高地址方向取得预取地址。当正常读请求的地址变化趋势为递减趋势时,预取加速器电路110按预取步长从正常读请求的目前地址出发往低地址方向取得预取地址。在计算出预取地址后,预取加速器电路110可以发送预取请求至存储器控制器120,以便取得所述预取地址所对应的预取数据。
在预取加速器电路110发送所述预取请求至存储器控制器120后,存储器控制器120可以执行所述预取请求,而从存储器150取出所述预取请求所对应的预取数据。存储器控制器120可以将所述预取数据回传给预取加速器电路110。因此,预取加速器电路110可以通过存储器控制器120从存储器150预取至少一笔预取数据。
图3是依据本发明一实施例所绘示的一种存储器集成电路的预取方法的流程示意图。请参照图1与图3。接面电路130可以在步骤S131中接收外部装置10的正常读请求,并且将外部装置10的正常读请求传送至预取加速器电路110。另一方面,预取加速器电路110可以在步骤S111中产生预取请求。在预取加速器电路110发送所述预取请求至存储器控制器120后,预取加速器电路110可以通过存储器控制器120从存储器150预取至少一笔预取数据(步骤S112)。
在步骤S113中,预取加速器电路110可以判断在预取加速器电路110中的所述预取数据有无所述正常读请求的目标数据。当在预取加速器电路110中的所述预取数据具有所述正常读请求所需要的目标数据时(步骤S113判断为“有”),预取加速器电路110从所述预取数据中取出所述目标数据并回传给接面电路130(步骤S114)。在接面电路130接获所述正常读请求的目标数据后,接面电路130可以将此目标数据回传给外部装置10(步骤S132)。
当在预取加速器电路110中的所述预取数据没有所述正常读请求所需要的目标数据时(步骤S113判断为“无”),预取加速器电路110将正常读请求优先于预取请求发送给存储器控制器120(步骤S115)。存储器控制器120可以执行所述正常读请求,而从存储器150取出所述正常读请求的目标数据。存储器控制器120可以将所述目标数据回传给接面电路130。在接面电路130接获所述正常读请求的目标数据后,接面电路130可以将此目标数据回传给外部装置10(步骤S132)。
除此之外,在一实施例中,预取加速器电路110依据相关于存储器控制器120的忙碌程度的状态信息与预取阈值的关系来判断是否发送预取请求给存储器控制器120。在一实施例中,所述状态信息包括计数值,此计数值用以表示曾经传送给存储器控制器120却尚未获得目标数据的正常读请求的数量。所述预取阈值为预取加速器电路110判断是否发送预取请求的临界计数值。举例来说,当所述计数值大于所述预取阈值时,代表存储器控制器120处于忙碌状态,因此预取加速器电路110便判断不发送预取请求给存储器控制器120,以免加重存储器控制器120的负担。相反地,当所述计数值小于所述预取阈值时,代表存储器控制器120处于空闲状态,因此预取加速器电路110便判断可以发送预取请求给存储器控制器120。预取加速器电路110可以使存储器控制器120优先地执行外部装置10的正常读请求,而利用在存储器控制器120处于空闲状态时使存储器控制器120执行预取请求,以降低正常读请求被延迟的机率。
所述预取阈值可以依照设计需求来决定。在一实施例中,预取加速器电路110可以统计预取命中率。所述“预取命中率”是指正常读请求的目标数据相同于预取数据的统计值。预取加速器电路110可以基于所述预取命中率动态调整所述预取阈值。若预取加速器电路110所统计的预取命中率较高,代表此时预取加速器电路110的预取效率高,因此预取加速器电路110可以调高所述预取阈值,使得预取加速器电路110更容易发送预取请求给存储器控制器120。相反地,若预取加速器电路110所统计的预取命中率较低,代表此时预取加速器电路110的预取效率低,因此预取加速器电路110可以调低所述预取阈值,使得预取加速器电路110不易发送预取请求,以避免从存储器150预取无用的数据。
因此,本发明的预取加速器电路110可以在各种场景中依据预取命中率动态调节预取加速器电路110发送预取请求的难易程度,有效提升各种场景的带宽利用率。当预取数据中没有正常读请求的目标数据时,接面电路130可以优先地(优先于预取请求)将正常读请求发送给存储器控制器120,因此可以保证正常读请求不会被延迟。当预取数据中具有正常读请求的目标数据时,接面电路130可以从预取数据获取目标数据而不需要去存取存储器150,因此可以加速正常读请求的读取速度。
图4是依据本发明一实施例说明图1所示预取加速器电路110的电路方块示意图。在图4所示实施例中,预取加速器电路110包括缓冲器210、待定正常请求队列220、正常请求队列230、已送正常请求队列240、已送预取请求队列250以及预取控制器290。预取控制器290耦接于接面电路130与存储器控制器120之间。在接面电路130多次发出外部装置10的正常读请求的过中,预取控制器290可以根据外部装置10的正常读请求的历史信息来产生预取请求给存储器控制器120。关于预取控制器290如何决定预取请求的预取地址,可以参照图2的相关说明。关于预取控制器290如何处理预取请求与外部装置10的正常读请求,可以参照图3的相关说明。
请参照图4,缓冲器210耦接至接面电路130与存储器控制器120之间。预取控制器290可以产生预取请求给存储器控制器120,以便从存储器150读取出至少一笔预取数据。缓冲器210可以存储从存储器150被读取出来的所述预取数据。
正常请求队列230耦接于接面电路130与存储器控制器120之间。正常请求队列230可以存储来自接面电路130的正常读请求。依照设计需求,正常请求队列230可以是先进先出缓冲器或是其他类型的缓冲器。正常请求队列230的操作可以参照图5的相关说明。
图5是依照本发明一实施例说明图4所示预取控制器290对于正常请求队列230的操作流程示意图。当预取控制器290从接面电路130接获外部装置10的正常读请求(步骤S510)后,预取控制器290可以先检查缓冲器210(步骤S520)。当这个正常读请求命中缓冲器210时(亦即缓冲器210具有外部装置10的正常读请求的目标数据),预取控制器290可以执行步骤S530,以从缓冲器210所存储的预取数据中取出目标数据并回传给接面电路130。当缓冲器210所存储的预取数据没有外部装置10的正常读请求的目标数据时,预取控制器290可以检查已送预取请求队列250(步骤S540)。当这个正常读请求命中已送预取请求队列250时(亦即这个正常读请求的地址相同于在已送预取请求队列250中预取请求的地址),预取控制器290可以执行步骤S550,以把外部装置10的正常读请求推入待定正常请求队列220。当这个正常读请求没有命中已送预取请求队列250时,预取控制器290可以检查预取请求队列270(步骤S560)。当这个正常读请求命中预取请求队列270时(亦即这个正常读请求的地址相同于在预取请求队列270中一个对应预取请求的地址),预取控制器290可以执行步骤S570,以删除在预取请求队列270中的这个对应预取请求。无论这个正常读请求有无命中预取请求队列270,预取控制器290会将这个正常读请求推入正常请求队列230(步骤S580)。当正常请求队列230具有外部装置10的正常读请求时,预取控制器290将正常读请求优先于预取请求发送给存储器控制器120。
请参照图4。在一实施例中,预取控制器290可以依据相关于存储器控制器120的忙碌程度的状态信息与预取阈值的关系来判断是否发送预取请求给存储器控制器120。依照设计需求,所述状态信息可以包括计数值,所述计数值用以表示曾经传送给存储器控制器120却尚未获得目标数据的正常读请求的数量。所述预取阈值为预取控制器290判断是否发送预取请求的临界计数值。举例来说,当所述计数值大于所述预取阈值时,代表存储器控制器120处于忙碌状态,因此预取控制器290便判断不发送预取请求给存储器控制器120,以免加重存储器控制器120的负担。相反地,当所述计数值小于所述预取阈值时,代表存储器控制器120处于空闲状态,因此预取控制器290便判断可以发送预取请求给存储器控制器120。预取控制器290可以使存储器控制器120优先地执行外部装置10的正常读请求,而且利用在存储器控制器120处于空闲状态时使存储器控制器120执行预取请求,以降低正常读请求被延迟的机率。
所述预取阈值可以依照设计需求来决定。在一实施例中,预取控制器290可以统计预取命中率。所述“预取命中率”是指正常读请求的目标数据相同于预取数据的统计值。预取控制器290可以基于所述预取命中率动态调整所述预取阈值。若预取控制器290所统计的预取命中率较高,代表此时预取加速器电路110的预取效率高,因此预取控制器290可以调高所述预取阈值,使得预取控制器290更容易发送预取请求给存储器控制器120。相反地,若预取控制器290所统计的预取命中率较低,代表此时预取加速器电路110的预取效率低,因此预取控制器290可以调低所述预取阈值,使得预取控制器290不易发送预取请求给存储器控制器120,以避免从存储器150预取无用的数据。
举例来说,在一些实施例中,所述预取阈值包括第一阈值与第二阈值,其中所述第二阈值大于或等于所述第一阈值。当所述预取命中率小于所述第一阈值时,代表此时预取命中率低,因此预取控制器290可以调低所述预取阈值,使得预取控制器290不易发送预取请求给存储器控制器120。当所述预取命中率大于所述第二阈值时,代表此时预取命中率高,因此预取控制器290可以调高预取阈值,使得预取控制器290容易发送预取请求给存储器控制器120。
当正常请求队列230没有正常读请求,并且所述状态信息(例如所述计数值)小于所述预取阈值时(亦即存储器控制器120处于空闲状态),预取控制器290可以发送所述预取请求给存储器控制器120。因此,预取控制器290可以利用在存储器控制器120处于空闲状态时使存储器控制器120执行预取请求。当正常请求队列230具有所述正常读请求,或是所述状态信息不小于所述预取阈值时(亦即存储器控制器120可能处于忙碌状态),预取控制器290不发送预取请求给存储器控制器120,以便让存储器控制器120优先执行外部装置10的正常读请求。
预取控制器290可以基于所述预取命中率动态调整所述预取阈值。依照设计需求,所述预取命中率可以包括第一计数值、第二计数值以及第三计数值。预取控制器290可以包括预取命中计数器(未绘示)、缓冲命中计数器(未绘示)以及队列命中计数器(未绘示)。所述预取命中计数器可以计数正常读请求命中预取请求的预取地址的次数(即正常读请求的目标地址相同于预取请求的预取地址的次数),以获得所述第一计数值。所述缓冲命中计数器可以计数正常读请求命中在缓冲器210中的预取数据的次数(即正常读请求的目标地址相同于缓冲器210中任一笔预取数据的预取地址的次数),以获得所述第二计数值。
请参照图4,已送预取请求队列250耦接预取控制器290。已送预取请求队列250可以记录已发往存储器控制器120但是存储器控制器120尚未回复预取数据的预取请求。依照设计需求,已送预取请求队列250可以是先进先出缓冲器或是其他类型的缓冲器。所述队列命中计数器可以计数正常读请求命中在已送预取请求队列250中的预取请求的预取地址的次数(即正常读请求的目标地址相同于已送预取请求队列250中任一笔预取请求的预取地址的次数),以获得所述第三计数值。
在一实施例中,当所述第一计数值大于第一阈值,所述第二计数值大于第二阈值,且所述第三计数值大于第三阈值时(代表此时预取控制器290的预取命中率高),预取控制器290可以调大所述预取阈值。所述第一阈值、所述第二阈值和/或所述第三阈值可以依照设计需求来决定。当所述第一计数值小于所述第一阈值,所述第二计数值小于所述第二阈值,且所述第三计数值小于所述第三阈值时(代表此时预取控制器290的预取命中率低),预取控制器290可以调小所述预取阈值。
在图4所示实施例中,预取控制器290包括预取请求地址决定器260、预取请求队列270以及预取仲裁器280。预取请求地址决定器260耦接至接面电路130。预取请求地址决定器260可以执行图2所示预取方法,以决定预取请求的地址。预取请求队列270耦接至预取请求地址决定器260,以存储预取请求地址决定器260所发出的预取请求。依照设计需求,预取请求队列270可以是先进先出缓冲器或是其他类型的缓冲器。仲裁器280耦接于预取请求队列270与存储器控制器120之间。仲裁器280可以依据所述状态信息(例如所述计数值)与所述预取阈值的关系来判断是否将在预取请求队列270中的预取请求发送给存储器控制器120。
在本实施例中,仲裁器280可以统计预取命中率。仲裁器280可以基于此预取命中率去动态调整所述预取阈值。若仲裁器280所统计的预取命中率较高,仲裁器280可以调高所述预取阈值,亦即在预取请求队列270中的预取请求更容易被发送给存储器控制器120。若仲裁器280所统计的预取命中率较低,仲裁器280可以调低所述预取阈值,亦即在预取请求队列270中的预取请求不易被发送给存储器控制器120。
图4所示预取加速器电路110还包括已送正常请求队列240。已送正常请求队列240用以记录已发往存储器控制器120但存储器控制器120尚未回复目标数据的正常读请求。依照设计需求,已送正常请求队列240可以是先进先出缓冲器或是其他类型的缓冲器。当预取控制器290的预取请求地址决定器260产生预取请求时,预取请求地址决定器260可以依据预取请求队列270、正常请求队列230、已送正常请求队列240、已送预取请求队列250以及缓冲器210来决定是否将预取请求推入预取请求队列270。
举例来说,在预取请求地址决定器260产生一个预取请求(在此称为候选预取请求)后,预取请求地址决定器260可以检查预取请求队列270、正常请求队列230、已送正常请求队列240、已送预取请求队列250以及缓冲器210。当预取请求命中了检查预取请求队列270、正常请求队列230、已送正常请求队列240、已送预取请求队列250以及缓冲器210中的任何一个时(亦即预取请求的地址相同于检查预取请求队列270、正常请求队列230、已送正常请求队列240与已送预取请求队列250中任何一个的任何请求的地址,或是预取请求的地址相同于缓冲器210中预取数据所对应的地址),预取请求地址决定器260可以丢弃这个候选预取请求(预取地址)。反之,预取请求地址决定器260可以将这个候选预取请求(预取地址)推入预取请求队列270。
考虑到预取请求队列270的容量可能是有限的。当这个候选预取请求要被推入预取请求队列270时,若预取请求队列270已经满了,则在预取请求队列270前端的预取请求(最旧的预取请求)可以被丢弃,然后这个候选预取请求被推入预取请求队列270。
图4所示预取加速器电路110还包括待定正常请求队列220。待定正常请求队列220耦接至接面电路130。待定正常请求队列220可以存储正常读请求。依照设计需求,待定正常请求队列220可以是先进先出缓冲器或是其他类型的缓冲器。当缓冲器210没有外部装置10的正常读请求的目标数据时,预取控制器290可以检查这个正常读请求是否命中在已送预取请求队列250中的预取请求的地址。当这个正常读请求命中在已送预取请求队列250中的一个对应预取请求的地址时,预取控制器250将这个正常读请求推入待定正常请求队列220。等到这个对应预取请求的预取数据被放入缓冲器210后,预取控制器290会依照在待定正常请求队列220中的这个正常读请求而将在缓冲器210中的目标数据回传给接面电路130。
考虑到缓冲器210的容量可能是有限的。当新的预取数据要被放入缓冲器210时,若预缓冲器210已经满了,则在缓冲器210中的最旧的预取数据可以被丢弃,然后这个新的预取数据被放入缓冲器210。另外,在依照正常读请求而将一个对应预取数据(目标数据)从缓冲器210回传给接面电路130后,在缓冲器210中的这个对应预取数据可以被丢弃。
当这个正常读请求没有命中在已送预取请求队列250中的预取请求的地址时,预取控制器290可以检查这个正常读请求是否命中在预取请求队列270中的预取请求的地址(步骤S560)。当这个正常读请求已命中在预取请求队列270中的预取请求的地址时,预取控制器290可以删除在预取请求队列270中与这个正常读请求具有相同地址的预取请求(步骤S570),并且预取控制器290可以将这个正常读请求推入正常请求队列230(步骤S580)。当这个正常读请求没有命中在预取请求队列270中的预取请求的地址时,预取控制器290可以将这个正常读请求推入正常请求队列230(步骤S580)。
以下将说明预取请求地址决定器260的算法的实施范例。为了方便说明,在此假设一个地址有40个位,其中28个最高有效位(most significant bit,MSB)(亦即第39位至第12位)被定义为基地址,6个最低有效位(least significant bit,LSB)(亦即第5位至第0位)被定义为细地址,而第11位至第6位被定义为指标(index)。无论如何,前述地址位的定义为说明范例,不应以此限制本发明。一个基地址可以对应一个4K存储器页(memorypage),其中一个4K存储器页被定义为64个快取线(cacheline)。一个指标可以对应一个快取线。
预取请求地址决定器260可以建立有限数量个训练地址群组(也可称为条目或entry)。训练地址群组的数量可以依照设计需求来决定。举例来说,训练地址群组的上限数量可以是16个。一个训练地址群组可以对应一个基地址,亦即对应一个4K存储器页。预取请求地址决定器260可以依循“最久未使用(least recently used,LRU)”算法来管理这些训练地址群组。当接面电路130将外部装置10的正常读请求的目前地址提供给预取请求地址决定器260时,预取请求地址决定器260可以依据这个目前地址的基地址而将这个目前地址加入对应的训练地址群组(条目)中。一个相同训练地址群组(条目)中的所有地址都具有相同的基地址。当这个目前地址没有对应的训练地址群组(条目)时,预取请求地址决定器260可以建立一个新的训练地址群组(条目),然后将这个目前地址加入这个新的训练地址群组(条目)中。当这个目前地址没有对应的训练地址群组(条目)时,而且训练地址群组的数量已达上限数量时,预取请求地址决定器260可以清除/移除最久没有存取的训练地址群组(条目),然后建立一个新的训练地址群组(条目),以便将这个目前地址加入这个新的训练地址群组(条目)中。
每一个训练地址群组(条目)被配置了与快取线数量相同的标志(或称位掩码,bitmask)。举例来说,当一个训练地址群组(条目)对应64个快取线时,这个训练地址群组(条目)被配置64个标志。一个标志可以指出一个对应快取线是否曾被预取,或是这个对应快取线曾被外部装置10的正常读请求所读取。这些标志的初始值皆为0,以表示未曾被预取。预取请求地址决定器260可以依据多个步长与这些标志去计算预取地址(容后详述)。
在预取请求地址决定器260将外部装置10的正常读请求的目前地址作为一个新的训练地址加入一个对应训练地址群组(条目)后,预取请求地址决定器260可以对在这个对应训练地址群组(条目)中的所有训练地址进行重排序。举例来说,预取请求地址决定器260以升幂/降幂方式针对在一个相同训练地址群组(条目)中的多个训练地址的指标进行重排序。
举例来说,外部装置10在不同时间发出具有地址A的正常读请求、具有地址B的正常读请求与具有地址C的正常读请求给接面电路130。在此假设地址A、地址B与地址C具有相同的基地址,因此地址A、地址B与地址C会被加入一个相同训练地址群组(条目)。然而,地址A、地址B与地址C之间的大小关系可能是无序的。因此,预取请求地址决定器260可以对这个训练地址群组(条目)的所有训练地址(包含地址A、地址B与地址C)的指标(index)进行重排序。在此假设,地址A的指标的值为0,地址B的指标的值为3,而地址C的指标INDEX的值为2。在重排序前,这个训练地址群组(条目)的训练地址的指标的顺序是0、3、2。预取请求地址决定器260对地址A、地址B与地址C的指标进行重排序后,经重排序的这个训练地址群组(条目)的训练地址的指标的顺序变为0、2、3。
完成重排序后,预取请求地址决定器260可以在经重排序的一个相同训练地址群组的所述多个训练地址中辨识出最大训练地址与最小训练地址。每一个训练地址群组(条目)还被配置了一个最大地址变化计数器与一个最小地址变化计数器。在一个相同训练地址群组(条目)中,预取请求地址决定器260可以利用所述最大地址变化计数器去计数所述最大训练地址的变化次数而获得最大地址计数值,以及利用所述最小地址变化计数器去计数所述最小训练地址的变化次数而获得最小地址计数值。预取请求地址决定器260可以依据所述最大地址计数值与所述最小地址计数值来判断所述正常读请求的地址变化趋势。
举例来说,当所述最大地址计数值大于所述最小地址计数值时,预取请求地址决定器260可以判断外部装置10的正常读请求的地址变化趋势为递增趋势。当所述最大地址计数值小于所述最小地址计数值时,预取请求地址决定器260可以判断外部装置10的正常读请求的地址变化趋势为递减趋势。
考虑到一个训练地址群组(条目)的容量(亦即在同一个训练地址群组中的训练地址的个数)可能是有限的。当经重排序的训练地址群组(条目)的这些训练地址的个数超过第一数量且所述正常读请求的地址变化趋势为递增趋势时,预取请求地址决定器260可以删除经重排序的训练地址群组(条目)的这些训练地址中的最小训练地址。所述第一数量可以依照设计需求来决定。举例来说,在一些实施例中,所述第一数量可以是7个或是其他数量。当经重排序的训练地址群组(条目)的这些训练地址的个数超过所述第一数量且所述正常读请求的地址变化趋势为递减趋势时,预取请求地址决定器260可以删除经重排序的训练地址群组(条目)的这些训练地址中的最大训练地址。
预取请求地址决定器260可以将经重排序的训练地址群组(条目)的这些训练地址中任二个相邻训练地址相减,而计算出多个步长。举例来说,当外部装置10的正常读请求的地址变化趋势为递增趋势时,预取请求地址决定器260可以将所述任二个相邻训练地址中的高地址减去低地址,以获得多个步长。当外部装置10的正常读请求的地址变化趋势为递减趋势时,预取请求地址决定器260可以将所述任二个相邻训练地址中的低地址减去高地址,以获得多个步长。
表一说明在一个相同训练地址群组(条目)中的训练地址进行重排序的过程以及计数值的变化。
<表一>
请参照图4与表一。在时间T1,预取请求地址决定器260建立一个新的训练地址群组(条目),然后将指标(index)为0的训练地址加入这个新的训练地址群组(条目)中,如表一所示。此时这个训练地址群组(条目)的最大地址变化计数器与最小地址变化计数器的计数值(亦即最大地址计数值与最小地址计数值)都被初始化为0。外部装置10发出一个新的正常读请求给接面电路130,而且预取请求地址决定器260在时间T2将这个新的正常读请求的目前地址作为一个新的训练地址加入表一所示训练地址群组(条目)中。在此假设这个目前地址的指标为3。此时,在这个训练地址群组(条目)中的最大训练地址(最大指标)由0改变为3,而最小训练地址(最小指标)保持为0。由于最大训练地址(最大指标)已经发生改变,所以最大地址变化计数器的计数值(最大地址计数值)加1。
外部装置10发出另一个新的正常读请求给接面电路130,而且预取请求地址决定器260在时间T3将这个新的正常读请求的目前地址作为另一个新的训练地址加入表一所示训练地址群组(条目)中。在此假设这个目前地址的指标为2。接着,在时间T4,预取请求地址决定器260对这个训练地址群组(条目)进行重排序。因为在这个训练地址群组(条目)中的最大训练地址(最大指标)与最小训练地址(最小指标)都没有变化,所以最大地址计数值保持为1,而最小地址计数值保持为0。
外部装置10发出又一个新的正常读请求给接面电路130,而且预取请求地址决定器260在时间T5将这个新的正常读请求的目前地址作为另一个新的训练地址加入表一所示训练地址群组(条目)中。在此假设这个目前地址的指标为5。此时,在这个训练地址群组(条目)中的最大训练地址(最大指标)由3变为5,而最小训练地址(最小指标)保持为0。由于最大训练地址(最大指标)已经发生改变,所以最大地址变化计数器的计数值(最大地址计数值)再次加1,因此最大地址计数值变为2。
外部装置10发出再一个新的正常读请求给接面电路130,而且预取请求地址决定器260在时间T6将这个新的正常读请求的目前地址作为另一个新的训练地址加入表一所示训练地址群组(条目)中。在此假设这个目前地址的指标为1。接着,在时间T7,预取请求地址决定器260对这个训练地址群组(条目)进行重排序。因为在这个训练地址群组(条目)中的最大训练地址(最大指标)与最小训练地址(最小指标)都没有变化,所以最大地址计数值保持为2,而最小地址计数值保持为0。
外部装置10发出又一个新的正常读请求给接面电路130,而且预取请求地址决定器260在时间T8将这个新的正常读请求的目前地址作为另一个新的训练地址加入表一所示训练地址群组(条目)中。在此假设这个目前地址的指标为7。此时,在这个训练地址群组(条目)中的最大训练地址(最大指标)由5变为7,而最小训练地址(最小指标)保持为0。由于最大训练地址(最大指标)已经发生改变,因此最大地址变化计数器的计数值(最大地址计数值)再次加1,使得最大地址计数值变为3。
外部装置10发出另一个新的正常读请求给接面电路130,而且预取请求地址决定器260在时间T9将这个新的正常读请求的目前地址作为另一个新的训练地址加入表一所示训练地址群组(条目)中。在此假设这个目前地址的指标为4。接着,在时间T10,预取请求地址决定器260对这个训练地址群组(条目)进行重排序。此时,经重排序的训练地址群组的指标(训练地址)依序为0,1,2,3,4,5,7。因为在这个训练地址群组(条目)中的最大训练地址(最大指标)与最小训练地址(最小指标)都没有变化,所以最大地址计数值保持为3,而最小地址计数值保持为0。
预取请求地址决定器260可以依据在训练地址群组(条目)中的多个训练地址的改变来判断正常读请求的地址变化趋势。具体而言,预取请求地址决定器260可以依据最大地址变化计数器的计数值(最大地址计数值)与最小地址变化计数器的计数值(最小地址计数值)来判断正常读请求的地址变化趋势。当最大地址计数值大于最小地址计数值时,预取请求地址决定器260可以判断正常读请求的地址变化趋势为递增趋势(详如表一所示范例)。当最大地址计数值小于最小地址计数值时,预取请求地址决定器260可以判断正常读请求的地址变化趋势为递减趋势。
请参照表一,经重排序的训练地址群组(条目)的多个指标(训练地址)依序为0,1,2,3,4,5,7。基于表一所示范例的地址变化趋势为递增趋势,预取请求地址决定器260可以将任二个相邻训练地址中的高地址减去低地址而获得多个步长。因此,预取请求地址决定器260可以由小到大依序将任二个相邻的地址的指标值相减,而获得多个步长1-0=1,2-1=1,3-2=1,4-3=1,5-4=1,7-5=2。在另一实施例中,当正常读请求的地址变化趋势为递减趋势时,预取请求地址决定器260可以将任二个相邻训练地址中的低地址减去高地址而获得多个步长,使得步长为负数。
在预取请求地址决定器260获得多个步长后,预取请求地址决定器260可以依照这些步长来获取预取步长。预取步长的获取方式叙述如下。
在预取请求地址决定器260获得多个步长后,当正常读请求的地址变化趋势为递增趋势且所述多个步长中存在连续三个步长皆相等于第一步长值时,预取请求地址决定器260可以将所述第一步长值作为所述预取步长,以及从所述正常读请求的目前地址开始按所述预取步长往高地址方向获取N个地址作为预取地址(候选预取地址)。预取请求地址决定器260可以检查这些候选预取地址所对应的标志(快取线的标志)。当这些候选预取地址所对应的标志未被设置时(表示这些候选预取地址未曾被预取或被存取),预取请求地址决定器260可以获取这些快取线的地址(这些候选预取地址)作为预取地址。
当外部装置10的正常读请求的地址变化趋势为递减趋势且所述多个步长中存在连续三个步长皆相等于第一步长值时,预取请求地址决定器260可以将所述第一步长值作为所述预取步长,以及从所述正常读请求的目前地址开始按所述预取步长往低地址方向获取N个地址作为预取地址(候选预取地址)。预取请求地址决定器260可以检查这些候选预取地址所对应的标志(快取线的标志)。当这些候选预取地址所对应的标志未被设置时(表示这些候选预取地址未曾被预取或被存取),预取请求地址决定器260可以获取这些快取线的地址(这些候选预取地址)作为预取地址。
所述N可以依照设计需求来决定。举例来说,在一实施例中,所述N可以是3或是其他数量。本实施例并不限制N的数值范围。在另一些实施例中,预取请求地址决定器260可以依据预取请求的预取命中率去动态调整预取地址的数量N。所述“预取命中率”是指正常读请求命中预取数据的统计值。所述“预取命中率”是由仲裁器280所统计,且已经详述于前文,故在此不再赘述。
基于表一所示范例的地址变化趋势为递增趋势,所述多个步长为正数。以表一为例,所述多个步长为1,1,1,1,1,2。所述多个步长中存在连续三个步长的步长值互为相等(皆为“1”),因此预取请求地址决定器260可以用“1”作为所述预取步长。预取请求地址决定器260可以从当前正常读请求的目前地址开始按步长“1”往高地址方向获取N个(例如3个)地址作为预取地址。
在预取请求地址决定器260获得所述多个步长后,当所述多个步长中不存在连续三个步长皆相等于第一步长值且存在连续两个步长皆相等于第二步长值时,预取请求地址决定器260可以将所述第二步长值作为所述预取步长,以及依据所述预取步长以及所述正常读请求的目前地址计算出预取请求的预取地址。举例来说,假设所述多个步长为1、3、3、2、1、2且所述正常读请求的地址变化趋势为递增趋势。这些步长中存在连续两个步长互为相等(皆为3),因此预取请求地址决定器260可以将步长“3”作为所述预取步长。预取请求地址决定器260可以从当前正常读请求的目前地址开始按步长“3”往高地址方向获取N个(例如3个)地址作为预取地址。
在预取请求地址决定器260获得所述多个步长后,当所述多个步长中的任何连续两个步长互不相等且外部装置10的正常读请求的地址变化趋势为递增趋势时,预取请求地址决定器260可以从所述正常读请求的目前地址开始往高地址方向获取下一个快取线的地址(指标)作为所述预取地址。当所述多个步长中的任何连续两个步长互不相等且外部装置10的正常读请求的地址变化趋势为递减趋势时,预取请求地址决定器260可以从所述正常读请求的目前地址开始往低地址方向获取下一个快取线的地址(指标)作为所述预取地址。举例来说,假设所述多个步长为3、1、2、4、2、1且所述正常读请求的地址变化趋势为递增趋势。这些步长中的任何连续两个步长互不相等,因此预取请求地址决定器260可以从前正常读请求的目前地址开始按预取步长为1往高地址方向获取N个地址作为预取地址。
在预取请求地址决定器260获得预取步长后,当外部装置10的正常读请求的地址变化趋势为递增趋势时,预取请求地址决定器260可以按所述预取步长从所述正常读请求的目前地址出发而往高地址方向取得/选择预取地址。而当外部装置10的正常读请求的地址变化趋势为递减趋势时,预取请求地址决定器260可以按所述预取步长从所述正常读请求的目前地址出发而往低地址方向取得/选择预取地址。在计算出预取地址后,预取请求地址决定器260可以发送预取请求至预取请求队列270。
综上所述,本发明诸实施例所述的存储器集成电路100及其预取方法可以将存储器带宽性能优化。当预取数据中具有正常读请求的目标数据时,接面电路130可以从预取数据获取目标数据而不需要去存取存储器150,因此可以加速正常读请求的读取速度。当预取数据中没有正常读请求的目标数据时,接面电路130可以优先地(优先于预取请求)将正常读请求发送给所述存储器控制器120,因此可以保证正常读请求不会被延迟。因此,存储器集成电路100可以降低正常读请求被延迟的机率,有效提升存储器150的带宽利用率。
虽然本发明已以实施例公开如上,然其并非用以限定本发明,本领域技术人员在不脱离本发明的精神和范围内,当可作些许的更动与润饰,故本发明的保护范围当视所附权利要求书界定范围为准。
Claims (26)
1.一种存储器集成电路,包括:
接面电路,用以接收外部装置的正常读请求;
存储器;
存储器控制器,耦接至所述存储器以及所述接面电路;以及
预取加速器电路,耦接于所述接面电路与所述存储器控制器之间,用以产生预取请求,其中,
在所述预取加速器电路发送所述预取请求至所述存储器控制器后,所述预取加速器电路通过所述存储器控制器从所述存储器预取至少一笔预取数据;
当在所述预取加速器电路中的所述至少一笔预取数据具有所述正常读请求的目标数据时,所述预取加速器电路从所述至少一笔预取数据中取出所述目标数据并回传给所述接面电路;以及
当在所述预取加速器电路中的所述至少一笔预取数据没有所述目标数据时,所述预取加速器电路将所述正常读请求优先于所述预取请求发送给所述存储器控制器,
其中
所述预取加速器电路依据相关于所述存储器控制器的忙碌程度的状态信息与预取阈值的关系来判断是否发送所述预取请求给所述存储器控制器;以及
所述预取加速器电路统计预取命中率,并基于所述预取命中率动态调整所述预取阈值。
2.如权利要求1所述的存储器集成电路,其中所述状态信息包括计数值,所述计数值用以表示曾经传送给所述存储器控制器却尚未获得所述目标数据的所述正常读请求的数量。
3.如权利要求1所述的存储器集成电路,其中所述预取加速器电路包括:
预取控制器,耦接于所述接面电路与所述存储器控制器之间,用以产生所述预取请求;
缓冲器,耦接至所述接面电路与所述存储器控制器之间,用以存储从所述存储器被读取出来的所述至少一笔预取数据;以及
正常请求队列,耦接于所述接面电路与所述存储器控制器之间,用以存储来自所述接面电路的所述正常读请求,其中
当所述正常请求队列具有所述正常读请求时,所述预取控制器将所述正常读请求优先于所述预取请求发送给所述存储器控制器,以及
当所述缓冲器具有所述正常读请求的所述目标数据时,所述预取控制器从所述缓冲器中取出所述目标数据并回传给所述接面电路。
4.如权利要求3所述的存储器集成电路,其中
所述预取控制器依据相关于所述存储器控制器的忙碌程度的状态信息与预取阈值的关系来判断是否发送所述预取请求给所述存储器控制器;以及
所述预取控制器统计预取命中率,并基于所述预取命中率动态调整所述预取阈值。
5.如权利要求4所述的存储器集成电路,其中
当所述正常请求队列没有所述正常读请求,且所述状态信息小于所述预取阈值时,所述预取控制器发送所述预取请求给所述存储器控制器;以及
当所述正常请求队列具有所述正常读请求,或所述状态信息不小于所述预取阈值时,所述预取控制器不发送所述预取请求。
6.如权利要求4所述的存储器集成电路,其中
当所述预取命中率小于第一阈值时,所述预取控制器调小所述预取阈值;以及
当所述预取命中率大于第二阈值时,所述预取控制器调大所述预取阈值,其中所述第二阈值大于或等于所述第一阈值。
7.如权利要求4所述的存储器集成电路,其中所述预取加速器电路还包括:
已送预取请求队列,耦接所述预取控制器,用以记录已发往所述存储器控制器但所述存储器控制器尚未回复所述至少一笔预取数据的所述预取请求,
其中,
所述预取控制器包括预取命中计数器、缓冲命中计数器以及队列命中计数器;
所述预取命中计数器用以计数所述正常读请求命中所述预取控制器所产生所述预取请求的预取地址的次数,以获得第一计数值;
所述缓冲命中计数器用以计数所述正常读请求命中在所述缓冲器中的所述至少一笔预取数据的次数,以获得第二计数值;
所述队列命中计数器用以计数所述正常读请求命中在所述已送预取请求队列中的所述预取请求的预取地址的次数,以获得第三计数值;
所述预取命中率包括所述第一计数值、所述第二计数值以及所述第三计数值;
当所述第一计数值大于第一阈值,所述第二计数值大于第二阈值,以及所述第三计数值大于第三阈值时,所述预取控制器调大所述预取阈值;以及
当所述第一计数值小于所述第一阈值,所述第二计数值小于所述第二阈值,以及所述第三计数值小于所述第三阈值时,所述预取控制器调小所述预取阈值。
8.如权利要求4所述的存储器集成电路,其中所述预取控制器包括:
预取请求地址决定器,用以决定所述预取请求的地址;
预取请求队列,耦接至所述预取请求地址决定器,用以存储所述预取请求;以及
仲裁器,耦接于所述预取请求队列与所述存储器控制器之间,其中所述仲裁器依据所述状态信息与所述预取阈值的关系来判断是否将在所述预取请求队列中的所述预取请求发送给所述存储器控制器。
9.如权利要求8所述的存储器集成电路,其中所述仲裁器统计所述预取命中率,并基于所述预取命中率动态调整所述预取阈值。
10.如权利要求3所述的存储器集成电路,其中所述预取加速器电路还包括:
已送预取请求队列,耦接所述预取控制器,用以记录已发往所述存储器控制器但所述存储器控制器尚未回复所述至少一笔预取数据的所述预取请求;以及
已送正常请求队列,用以记录已发往所述存储器控制器但所述存储器控制器尚未回复所述目标数据的所述正常读请求;
其中当所述预取控制器产生所述预取请求时,所述预取控制器依据所述预取控制器的预取请求队列、所述正常请求队列、所述已送正常请求队列、所述已送预取请求队列以及所述缓冲器来决定是否将所述预取请求推入所述预取请求队列。
11.如权利要求3所述的存储器集成电路,其中所述预取加速器电路还包括:
已送预取请求队列,耦接所述预取控制器,用以记录已发往所述存储器控制器但所述存储器控制器尚未回复所述至少一笔预取数据的所述预取请求;以及
待定正常请求队列,耦接至所述接面电路,其中
当所述缓冲器没有所述正常读请求的所述目标数据时,所述预取控制器检查所述正常读请求是否命中在所述已送预取请求队列中的所述预取请求的地址,以及
当所述正常读请求已命中在所述已送预取请求队列中的所述预取请求的地址时,所述预取控制器将所述正常读请求推入所述待定正常请求队列。
12.如权利要求11所述的存储器集成电路,其中
当所述正常读请求没有命中在所述已送预取请求队列中的所述预取请求的地址时,所述预取控制器检查所述正常读请求是否命中在所述预取请求队列中的所述预取请求的地址,以及
当所述正常读请求已命中在所述预取请求队列中的所述预取请求的地址时,所述预取控制器删除在所述预取请求队列中与所述正常读请求具有相同地址的所述预取请求,并且所述预取控制器将所述正常读请求推入所述正常请求队列。
13.如权利要求12所述的存储器集成电路,其中
当所述正常读请求没有命中在所述预取请求队列中的所述预取请求的地址时,所述预取控制器将所述正常读请求推入所述正常请求队列。
14.一种存储器集成电路的预取方法,所述存储器集成电路包括接面电路、存储器、存储器控制器与预取加速器电路,所述预取方法包括:
由所述接面电路接收外部装置的正常读请求;
由所述预取加速器电路产生预取请求;
在所述预取加速器电路发送所述预取请求至所述存储器控制器后,由所述预取加速器电路通过所述存储器控制器从所述存储器预取至少一笔预取数据;
当在所述预取加速器电路中的所述至少一笔预取数据具有所述正常读请求的目标数据时,由所述预取加速器电路从所述至少一笔预取数据中取出所述目标数据并回传给所述接面电路;以及
当在所述预取加速器电路中的所述至少一笔预取数据没有所述目标数据时,由所述预取加速器电路将所述正常读请求优先于所述预取请求发送给所述存储器控制器,
所述预取方法还包括:
由所述预取加速器电路依据相关于所述存储器控制器的忙碌程度的状态信息与预取阈值的关系来判断是否发送所述预取请求给所述存储器控制器;以及
由所述预取加速器电路统计预取命中率,并基于所述预取命中率动态调整所述预取阈值。
15.如权利要求14所述的预取方法,其中所述状态信息包括计数值,所述计数值用以表示曾经传送给所述存储器控制器却尚未获得所述目标数据的所述正常读请求的数量。
16.如权利要求14所述的预取方法,其中所述预取加速器电路包括预取控制器、缓冲器以及正常请求队列,而所述预取方法还包括:
由所述预取控制器产生所述预取请求;
由所述缓冲器存储从所述存储器被读取出来的所述至少一笔预取数据;
由所述正常请求队列存储来自所述接面电路的所述正常读请求;
当所述正常请求队列具有所述正常读请求时,由所述预取控制器将所述正常读请求优先于所述预取请求发送给所述存储器控制器;以及
当所述缓冲器具有所述正常读请求的所述目标数据时,由所述预取控制器从所述缓冲器中取出所述目标数据并回传给所述接面电路。
17.如权利要求16所述的预取方法,还包括:
由所述预取控制器依据相关于所述存储器控制器的忙碌程度的状态信息与预取阈值的关系来判断是否发送所述预取请求给所述存储器控制器;以及
由所述预取控制器统计预取命中率,并基于所述预取命中率动态调整所述预取阈值。
18.如权利要求17所述的预取方法,还包括:
当所述正常请求队列没有所述正常读请求,且所述状态信息小于所述预取阈值时,由所述预取控制器发送所述预取请求给所述存储器控制器;以及
当所述正常请求队列具有所述正常读请求,或所述状态信息不小于所述预取阈值时,不发送所述预取请求。
19.如权利要求17所述的预取方法,还包括:
当所述预取命中率小于第一阈值时,由所述预取控制器调小所述预取阈值;以及
当所述预取命中率大于第二阈值时,由所述预取控制器调大所述预取阈值,其中所述第二阈值大于或等于所述第一阈值。
20.如权利要求17所述的预取方法,其中所述预取加速器电路还包括已送预取请求队列,而所述预取方法还包括:
由所述已送预取请求队列记录已发往所述存储器控制器但所述存储器控制器尚未回复所述至少一笔预取数据的所述预取请求;
计数所述正常读请求命中所述预取控制器所产生所述预取请求的预取地址的次数,以获得第一计数值;
计数所述正常读请求命中在所述缓冲器中的所述至少一笔预取数据的次数,以获得第二计数值;
计数所述正常读请求命中在所述已送预取请求队列中的所述预取请求的预取地址的次数,以获得第三计数值,其中所述预取命中率包括所述第一计数值、所述第二计数值以及所述第三计数值;
当所述第一计数值大于第一阈值,所述第二计数值大于第二阈值,以及所述第三计数值大于第三阈值时,由所述预取控制器调大所述预取阈值;以及
当所述第一计数值小于所述第一阈值,所述第二计数值小于所述第二阈值,以及所述第三计数值小于所述第三阈值时,由所述预取控制器调小所述预取阈值。
21.如权利要求17所述的预取方法,其中所述预取控制器包括预取请求地址决定器、预取请求队列以及仲裁器,而所述预取方法还包括:
由所述预取请求地址决定器决定所述预取请求的地址;
由所述预取请求队列存储所述预取请求;以及
由所述仲裁器依据所述状态信息与所述预取阈值的关系来判断是否将在所述预取请求队列中的所述预取请求发送给所述存储器控制器。
22.如权利要求21所述的预取方法,还包括:
由所述仲裁器统计所述预取命中率,并基于所述预取命中率动态调整所述预取阈值。
23.如权利要求16所述的预取方法,其中所述预取加速器电路还包括已送预取请求队列以及已送正常请求队列,而所述预取方法还包括:
由所述已送预取请求队列记录已发往所述存储器控制器但所述存储器控制器尚未回复所述至少一笔预取数据的所述预取请求;以及
由所述已送正常请求队列记录已发往所述存储器控制器但所述存储器控制器尚未回复所述目标数据的所述正常读请求;以及
当所述预取控制器产生所述预取请求时,由所述预取控制器依据所述预取控制器的预取请求队列、所述正常请求队列、所述已送正常请求队列、所述已送预取请求队列以及所述缓冲器来决定是否将所述预取请求推入所述预取请求队列。
24.如权利要求16所述的预取方法,其中所述预取加速器电路还包括已送预取请求队列以及待定正常请求队列,而所述预取方法还包括:
由所述已送预取请求队列记录已发往所述存储器控制器但所述存储器控制器尚未回复所述至少一笔预取数据的所述预取请求;
当所述缓冲器没有所述正常读请求的所述目标数据时,所述预取控制器检查所述正常读请求是否命中在所述已送预取请求队列中的所述预取请求的地址;以及
当所述正常读请求已命中在所述已送预取请求队列中的所述预取请求的地址时,所述预取控制器将所述正常读请求推入所述待定正常请求队列。
25.如权利要求24所述的预取方法,还包括:
当所述正常读请求没有命中在所述已送预取请求队列中的所述预取请求的地址时,由所述预取控制器检查所述正常读请求是否命中在所述预取请求队列中的所述预取请求的地址;以及
当所述正常读请求已命中在所述预取请求队列中的所述预取请求的地址时,由所述预取控制器删除在所述预取请求队列中与所述正常读请求具有相同地址的所述预取请求,并且由所述预取控制器将所述正常读请求推入所述正常请求队列。
26.如权利要求25所述的预取方法,还包括:
当所述正常读请求没有命中在所述预取请求队列中的所述预取请求的地址时,由所述预取控制器将所述正常读请求推入所述正常请求队列。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811195142.2A CN109284240B (zh) | 2018-10-15 | 2018-10-15 | 存储器集成电路及其预取方法 |
US16/257,038 US20200117462A1 (en) | 2018-10-15 | 2019-01-24 | Memory integrated circuit and pre-fetch method thereof |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811195142.2A CN109284240B (zh) | 2018-10-15 | 2018-10-15 | 存储器集成电路及其预取方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109284240A CN109284240A (zh) | 2019-01-29 |
CN109284240B true CN109284240B (zh) | 2020-06-16 |
Family
ID=65176428
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811195142.2A Expired - Fee Related CN109284240B (zh) | 2018-10-15 | 2018-10-15 | 存储器集成电路及其预取方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20200117462A1 (zh) |
CN (1) | CN109284240B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10579531B2 (en) * | 2017-08-30 | 2020-03-03 | Oracle International Corporation | Multi-line data prefetching using dynamic prefetch depth |
US10909039B2 (en) | 2019-03-15 | 2021-02-02 | Intel Corporation | Data prefetching for graphics data processing |
TWI717816B (zh) * | 2019-08-28 | 2021-02-01 | 群聯電子股份有限公司 | 記憶體控制方法、記憶體儲存裝置及記憶體控制電路單元 |
US11347645B2 (en) * | 2019-10-14 | 2022-05-31 | EMC IP Holding Company LLC | Lifetime adaptive efficient pre-fetching on a storage system |
CN110806990A (zh) * | 2019-10-15 | 2020-02-18 | 四川豪威尔信息科技有限公司 | 一种存储器集成电路及其预取方法 |
US11372762B2 (en) | 2020-07-14 | 2022-06-28 | Micron Technology, Inc. | Prefetch buffer of memory sub-system |
US11372763B2 (en) * | 2020-07-14 | 2022-06-28 | Micron Technology, Inc. | Prefetch for data interface bridge |
KR102559245B1 (ko) | 2021-01-29 | 2023-07-24 | 우석대학교 산학협력단 | 흡입효율이 강화된 필터박스 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1809817A (zh) * | 2003-06-20 | 2006-07-26 | 飞思卡尔半导体公司 | 用于动态预取缓冲器配置和替换的方法及设备 |
CN101354641A (zh) * | 2008-08-20 | 2009-01-28 | 炬力集成电路设计有限公司 | 一种外部存储器的访问控制方法及访问控制装置 |
CN104915322A (zh) * | 2015-06-09 | 2015-09-16 | 中国人民解放军国防科学技术大学 | 一种卷积神经网络硬件加速方法及其axi总线ip核 |
CN106776371A (zh) * | 2015-12-14 | 2017-05-31 | 上海兆芯集成电路有限公司 | 跨距参考预取器、处理器和将数据预取到处理器的方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8650354B2 (en) * | 2011-07-22 | 2014-02-11 | International Business Machines Corporation | Prefetching tracks using multiple caches |
-
2018
- 2018-10-15 CN CN201811195142.2A patent/CN109284240B/zh not_active Expired - Fee Related
-
2019
- 2019-01-24 US US16/257,038 patent/US20200117462A1/en not_active Abandoned
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1809817A (zh) * | 2003-06-20 | 2006-07-26 | 飞思卡尔半导体公司 | 用于动态预取缓冲器配置和替换的方法及设备 |
CN101354641A (zh) * | 2008-08-20 | 2009-01-28 | 炬力集成电路设计有限公司 | 一种外部存储器的访问控制方法及访问控制装置 |
CN104915322A (zh) * | 2015-06-09 | 2015-09-16 | 中国人民解放军国防科学技术大学 | 一种卷积神经网络硬件加速方法及其axi总线ip核 |
CN106776371A (zh) * | 2015-12-14 | 2017-05-31 | 上海兆芯集成电路有限公司 | 跨距参考预取器、处理器和将数据预取到处理器的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109284240A (zh) | 2019-01-29 |
US20200117462A1 (en) | 2020-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109284240B (zh) | 存储器集成电路及其预取方法 | |
US11789872B2 (en) | Slot/sub-slot prefetch architecture for multiple memory requestors | |
KR100578436B1 (ko) | 내용 인식 프리페처의 후보 가상 주소 식별 방법 및 장치 | |
US9280474B2 (en) | Adaptive data prefetching | |
CN108763110B (zh) | 一种数据缓存方法及装置 | |
KR101021046B1 (ko) | 동적 프리페치 버퍼 구성 및 대체를 위한 방법 및 장치 | |
US20080229070A1 (en) | Cache circuitry, data processing apparatus and method for prefetching data | |
US9418019B2 (en) | Cache replacement policy methods and systems | |
WO2007068122A1 (en) | System and method for cache management | |
CN108073527B (zh) | 一种缓存替换的方法和设备 | |
CN113760787B (zh) | 多级高速缓存数据推送系统、方法、设备和计算机介质 | |
CN109446111B (zh) | 存储器集成电路及其预取地址决定方法 | |
EP3285172A1 (en) | Data cache region prefetcher | |
WO2017160480A1 (en) | Priority-based access of compressed memory lines in memory in a processor-based system | |
WO2022178869A1 (zh) | 一种缓存替换方法和装置 | |
WO2023035654A1 (zh) | 偏移预取方法、执行偏移预取的装置、计算设备和介质 | |
CN111708720A (zh) | 一种数据缓存方法、装置、设备及介质 | |
CN108874691B (zh) | 数据预取方法和内存控制器 | |
EP1304619A1 (en) | Cache memory operation | |
CN113094392A (zh) | 数据缓存的方法和装置 | |
WO2023165543A1 (zh) | 共享缓存的管理方法、装置及存储介质 | |
CN116610262A (zh) | 降低ssd顺序读延时的方法、装置、设备及介质 | |
CN110889053B (zh) | 一种接口数据的缓存方法、装置及计算设备 | |
CN110580227B (zh) | 自适应nvm命令生成方法与装置 | |
CN112256205B (zh) | 非易失缓存数据预取方法、装置、电子设备及存储介质 |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20200616 Termination date: 20211015 |