CN109446111B - 存储器集成电路及其预取地址决定方法 - Google Patents
存储器集成电路及其预取地址决定方法 Download PDFInfo
- Publication number
- CN109446111B CN109446111B CN201811195141.8A CN201811195141A CN109446111B CN 109446111 B CN109446111 B CN 109446111B CN 201811195141 A CN201811195141 A CN 201811195141A CN 109446111 B CN109446111 B CN 109446111B
- Authority
- CN
- China
- Prior art keywords
- address
- prefetch
- training
- normal read
- trend
- 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
Images
Classifications
-
- 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
-
- 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
- G06F9/3455—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results using stride
-
- 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, look ahead
- G06F9/3802—Instruction prefetching
-
- 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, 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/6026—Prefetching based on access pattern detection, e.g. stride based prefetch
Abstract
本发明提供一种存储器集成电路及其预取地址决定方法。存储器集成电路包括接面电路、存储器、存储器控制器与预取加速器电路。接面电路接收外部装置的正常读请求。当预取加速器电路从接面电路接收正常读请求时,预取加速器电路将正常读请求的目前地址作为新的训练地址加入训练地址群组。预取加速器电路对训练地址群组的多个训练地址进行重排序。预取加速器电路依据经重排序的训练地址群组的多个训练地址计算出预取步长。预取加速器电路依据预取步长与目前地址计算出预取请求的预取地址。
Description
技术领域
本发明涉及一种电子装置,且特别涉及一种存储器集成电路及其预取地址决定方法。
背景技术
硬件预取是由硬件根据存取地址的历史信息来推算预取地址,以便于将未来可能的存取数据预先取入快取(Cache)。因此在数据真正被用到时,处理器可以从速度较快的快取得到数据。在处理器以地址有序的方式发出多个读请求给随机存取存储器(RandomAccess Memory,RAM)的情境中,已知的预取地址决定方法可以依据有序的存取地址估计出有效的预取地址。然而,现代处理器可以支持乱序(无序)地址存取。如果处理器以地址无序(乱序)的方式发出多个读请求给随机存取存储器,则已知的预取地址决定方法的预估准确度就会降低。
发明内容
本发明提供一种存储器集成电路及其预取地址决定方法,以计算出预取请求的预取地址。
本发明的实施例提供一种存储器集成电路。存储器集成电路包括接面电路、存储器、存储器控制器与预取加速器电路。接面电路用以接收外部装置的正常读请求。存储器控制器耦接至存储器。预取加速器电路耦接于接面电路与存储器控制器之间。预取加速器电路用以产生预取请求。当预取加速器电路从接面电路接收正常读请求时,预取加速器电路将正常读请求的目前地址加入训练地址群组。预取加速器电路对训练地址群组的多个训练地址进行重排序。预取加速器电路依据经重排序的训练地址群组的多个训练地址计算出预取步长。预取加速器电路依据预取步长与目前地址计算出预取请求的预取地址。
本发明的实施例提供一种存储器集成电路的预取地址决定方法。所述预取地址决定方法包括:当存储器集成电路的接面电路接收外部装置的正常读请求时,由存储器集成电路的预取加速器电路将正常读请求的目前地址加入训练地址群组。在将目前地址加入训练地址群组后,由预取加速器电路对训练地址群组的多个训练地址进行重排序。由预取加速器电路依据经重排序的训练地址群组的多个训练地址计算出预取步长。以及依据预取步长与目前地址,由预取加速器电路计算出预取请求的预取地址。
基于上述,在本发明一些实施例中,所述存储器集成电路及其预取地址决定方法可以将对训练地址进行重排序以计算预取步长,并依据预取步长和目前地址来计算预取地址。实施例所述存储器集成电路可以减少乱序(无序)地址对预取地址的估计结果的影响,并提高预取命中率。
为让本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合附图作详细说明如下。
附图说明
图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)、微处理器、数字信号处理器(digital signal 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。
综上所述,本发明诸实施例所述的存储器集成电路及其预取地址决定方法可以将存储器带宽性能优化。在外部装置10以地址无序(乱序)的方式发出多个正常读请求给存储器集成电路的情境中,所述存储器集成电路可以将这些正常读请求的地址作为训练地址,并对这些训练地址进行重排序以计算预取步长。依据预取步长和当前正常读请求的目前地址,所述存储器集成电路可以计算预取地址。因此,所述存储器集成电路可以减少乱序(无序)地址对预取地址的估计结果的影响,并提高预取命中率。
虽然本发明已以实施例公开如上,然其并非用以限定本发明,本领域技术人员,在不脱离本发明的精神和范围内,当可作些许的更动与润饰,故本发明的保护范围当视所附权利要求书界定范围为准。
Claims (24)
1.一种存储器集成电路,包括:
接面电路,用以接收外部装置的正常读请求;
存储器;
存储器控制器,耦接至所述存储器;
预取加速器电路,耦接于所述接面电路与所述存储器控制器之间,用以产生预取请求,其中,
当所述预取加速器电路从所述接面电路接收所述正常读请求时,所述预取加速器电路将所述正常读请求的目前地址加入训练地址群组,所述预取加速器电路对所述训练地址群组的多个训练地址进行重排序,所述预取加速器电路依据经重排序的所述训练地址群组的所述多个训练地址计算出预取步长,以及所述预取加速器电路依据所述预取步长与所述目前地址计算出所述预取请求的预取地址,
其中所述预取加速器电路依据所述训练地址群组的所述多个训练地址的改变来判断所述正常读请求的地址变化趋势,
其中
在经重排序的所述训练地址群组的所述多个训练地址中具有最大训练地址与最小训练地址;
所述预取加速器电路计数所述最大训练地址的变化次数而获得最大地址计数值;
所述预取加速器电路计数所述最小训练地址的变化次数而获得最小地址计数值;以及
所述预取加速器电路依据所述最大地址计数值与所述最小地址计数值来判断所述正常读请求的所述地址变化趋势。
2.如权利要求1所述的存储器集成电路,其中
当所述最大地址计数值大于所述最小地址计数值时,所述预取加速器电路判断所述正常读请求的所述地址变化趋势为递增趋势;以及
当所述最大地址计数值小于所述最小地址计数值时,所述预取加速器电路判断所述正常读请求的所述地址变化趋势为递减趋势。
3.如权利要求1所述的存储器集成电路,其中
当所述正常读请求的所述地址变化趋势为递增趋势时,所述预取加速器电路按所述预取步长从所述目前地址出发往高地址方向取得所述预取地址,以及
当所述正常读请求的所述地址变化趋势为递减趋势时,所述预取加速器电路按所述预取步长从所述目前地址出发往低地址方向取得所述预取地址。
4.如权利要求1所述的存储器集成电路,其中
当经重排序的所述训练地址群组的所述多个训练地址的个数超过第一数量且所述正常读请求的所述地址变化趋势为递增趋势时,所述预取加速器电路删除经重排序的所述训练地址群组的所述多个训练地址中的最小训练地址;以及
当经重排序的所述训练地址群组的所述多个训练地址的个数超过所述第一数量且所述正常读请求的所述地址变化趋势为递减趋势时,所述预取加速器电路删除经重排序的所述训练地址群组的所述多个训练地址中的最大训练地址。
5.如权利要求1所述的存储器集成电路,其中,所述预取加速器电路将经重排序的所述训练地址群组的所述多个训练地址中任二个相邻训练地址相减,而计算出多个步长。
6.如权利要求5所述的存储器集成电路,其中
当所述正常读请求的地址变化趋势为递增趋势时,所述预取加速器电路将所述任二个相邻训练地址中的高地址减去低地址,以获得所述多个步长;以及
当所述正常读请求的地址变化趋势为递减趋势时,所述预取加速器电路将所述任二个相邻训练地址中的低地址减去高地址,以获得所述多个步长。
7.如权利要求5所述的存储器集成电路,其中
当所述正常读请求的地址变化趋势为递增趋势且所述多个步长中存在连续三个步长皆相等时,所述预取加速器电路将所述连续三个步长皆相等的步长值作为所述预取步长,以及从所述目前地址开始按所述预取步长往高地址方向获取N个地址作为所述预取地址,所述N为正整数;以及
当所述正常读请求的地址变化趋势为递减趋势且所述多个步长中存在连续三个步长皆相等时,所述预取加速器电路将所述连续三个步长皆相等的步长值作为所述预取步长,以及从所述目前地址开始按所述预取步长往低地址方向获取N个地址作为所述预取地址。
8.如权利要求7所述的存储器集成电路,其中所述预取加速器电路依据所述预取请求的预取命中率动态调整所述预取地址的数量N。
9.如权利要求5所述的存储器集成电路,其中当所述多个步长中不存在连续三个所述步长皆相等、且存在连续两个所述步长相等时,所述预取加速器电路将所述连续两个步长相等的步长值作为所述预取步长,以及依据所述预取步长以及所述目前地址计算出所述预取请求的所述预取地址。
10.如权利要求5所述的存储器集成电路,其中
当所述多个步长中的任何连续两个步长互不相等且所述正常读请求的地址变化趋势为递增趋势时,所述预取加速器电路从所述目前地址开始往高地址方向获取下一个快取线的地址作为所述预取地址;以及
当所述多个步长中的任何连续两个步长互不相等且所述正常读请求的地址变化趋势为递减趋势时,所述预取加速器电路从所述目前地址开始往低地址方向获取下一个快取线的地址作为所述预取地址。
11.如权利要求5所述的存储器集成电路,其中,
多个标志被用来标示多个快取线的地址是否曾被预取;
所述预取加速器电路依据所述多个步长与所述多个标志去计算所述预取地址。
12.如权利要求11所述的存储器集成电路,其中
当所述正常读请求的地址变化趋势为递增趋势时,所述预取加速器电路检查从所述目前地址开始往高地址方向的下一个快取线的所述标志;
当所述正常读请求的地址变化趋势为递减趋势时,所述预取加速器电路检查从所述目前地址开始往低地址方向的下一个快取线的所述标志;以及
当所述标志未被设置时,所述预取加速器电路获取所述下一个快取线的地址作为所述预取地址。
13.一种预取地址决定方法,适用于存储器集成电路,所述预取地址决定方法包括:
当所述存储器集成电路的接面电路接收外部装置的正常读请求时,由所述存储器集成电路的预取加速器电路将所述正常读请求的目前地址加入训练地址群组;
在将所述目前地址加入所述训练地址群组后,由所述预取加速器电路对所述训练地址群组的多个训练地址进行重排序;
由所述预取加速器电路依据经重排序的所述训练地址群组的所述多个训练地址计算出预取步长;
依据所述预取步长与所述目前地址,由所述预取加速器电路计算出预取请求的预取地址;以及
由所述预取加速器电路依据所述训练地址群组的所述多个训练地址的改变来判断所述正常读请求的地址变化趋势,
其中在经重排序的所述训练地址群组的所述多个训练地址中具有最大训练地址与最小训练地址,判断所述正常读请求的所述地址变化趋势的步骤包括:
由所述预取加速器电路计数所述最大训练地址的变化次数而获得最大地址计数值;
由所述预取加速器电路计数所述最小训练地址的变化次数而获得最小地址计数值;以及
由所述预取加速器电路依据所述最大地址计数值与所述最小地址计数值来判断所述正常读请求的所述地址变化趋势。
14.如权利要求13所述的预取地址决定方法,其中依据所述最大地址计数值与所述最小地址计数值来判断所述正常读请求的所述地址变化趋势的步骤包括:
当所述最大地址计数值大于所述最小地址计数值时,由所述预取加速器电路判断所述正常读请求的所述地址变化趋势为递增趋势;以及
当所述最大地址计数值小于所述最小地址计数值时,由所述预取加速器电路判断所述正常读请求的所述地址变化趋势为递减趋势。
15.如权利要求13所述的预取地址决定方法,其中计算出所述预取请求的所述预取地址的步骤包括:
当所述正常读请求的所述地址变化趋势为递增趋势时,由所述预取加速器电路按所述预取步长从所述目前地址出发往高地址方向取得所述预取地址;以及
当所述正常读请求的所述地址变化趋势为递减趋势时,由所述预取加速器电路按所述预取步长从所述目前地址出发往低地址方向取得所述预取地址。
16.如权利要求13所述的预取地址决定方法,还包括:
当经重排序的所述训练地址群组的所述多个训练地址的个数超过第一数量且所述正常读请求的所述地址变化趋势为递增趋势时,由所述预取加速器电路删除经重排序的所述训练地址群组的所述多个训练地址中的最小训练地址;以及
当经重排序的所述训练地址群组的所述多个训练地址的个数超过所述第一数量且所述正常读请求的所述地址变化趋势为递减趋势时,由所述预取加速器电路删除经重排序的所述训练地址群组的所述多个训练地址中的最大训练地址。
17.如权利要求13所述的预取地址决定方法,其中计算出所述预取步长的步骤包括:
由所述预取加速器电路将经重排序的所述训练地址群组的所述多个训练地址中任二个相邻训练地址相减,而计算出多个步长。
18.如权利要求17所述的预取地址决定方法,其中计算出所述多个步长的步骤包括:
当所述正常读请求的地址变化趋势为递增趋势时,由所述预取加速器电路将所述任二个相邻训练地址中的高地址减去低地址,以获得所述多个步长;以及
当所述正常读请求的地址变化趋势为递减趋势时,由所述预取加速器电路将所述任二个相邻训练地址中的低地址减去高地址,以获得所述多个步长。
19.如权利要求17所述的预取地址决定方法,其中计算出所述预取步长的步骤还包括:
当所述正常读请求的地址变化趋势为递增趋势且所述多个步长中存在连续三个步长皆相等时,由所述预取加速器电路从所述目前地址开始按所述连续三个步长皆相等的步长值往高地址方向获取N个地址作为所述预取地址,所述N为正整数;以及
当所述正常读请求的地址变化趋势为递减趋势且所述多个步长中存在连续三个步长皆相等时,由所述预取加速器电路从所述目前地址开始按所述连续三个步长皆相等的步长值往低地址方向获取N个地址作为所述预取地址。
20.如权利要求19所述的预取地址决定方法,还包括:
由所述预取加速器电路依据所述预取请求的预取命中率动态调整所述预取地址的数量N。
21.如权利要求17所述的预取地址决定方法,其中计算出所述预取步长的步骤还包括:
当所述多个步长中不存在连续三个所述步长皆相等、且存在连续两个所述步长相等时,由所述预取加速器电路依据所述连续两个步长相等的步长值以及所述目前地址计算出所述预取请求的所述预取地址。
22.如权利要求17所述的预取地址决定方法,其中计算出所述预取步长的步骤还包括:
当所述多个步长中的任何连续两个步长互不相等且所述正常读请求的地址变化趋势为递增趋势时,由所述预取加速器电路从所述目前地址开始往高地址方向获取下一个快取线的地址作为所述预取地址;以及
当所述多个步长中的任何连续两个步长互不相等且所述正常读请求的地址变化趋势为递减趋势时,由所述预取加速器电路从所述目前地址开始往低地址方向获取下一个快取线的地址作为所述预取地址。
23.如权利要求17所述的预取地址决定方法,其中多个标志被用来标示多个快取线的地址是否曾被预取,而计算出所述预取步长的步骤还包括:
由所述预取加速器电路依据所述多个步长与所述多个标志去计算所述预取地址。
24.如权利要求23所述的预取地址决定方法,其中依据所述多个步长与所述多个标志去计算所述预取地址的步骤包括:
当所述正常读请求的地址变化趋势为递增趋势时,由所述预取加速器电路检查从所述目前地址开始往高地址方向的下一个快取线的所述标志;
当所述正常读请求的地址变化趋势为递减趋势时,由所述预取加速器电路检查从所述目前地址开始往低地址方向的下一个快取线的所述标志;以及
当所述标志未被设置时,由所述预取加速器电路获取所述下一个快取线的地址作为所述预取地址。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811195141.8A CN109446111B (zh) | 2018-10-15 | 2018-10-15 | 存储器集成电路及其预取地址决定方法 |
US16/257,048 US20200117460A1 (en) | 2018-10-15 | 2019-01-24 | Memory integrated circuit and pre-fetch address determining method thereof |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811195141.8A CN109446111B (zh) | 2018-10-15 | 2018-10-15 | 存储器集成电路及其预取地址决定方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109446111A CN109446111A (zh) | 2019-03-08 |
CN109446111B true CN109446111B (zh) | 2021-01-26 |
Family
ID=65546378
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811195141.8A Expired - Fee Related CN109446111B (zh) | 2018-10-15 | 2018-10-15 | 存储器集成电路及其预取地址决定方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20200117460A1 (zh) |
CN (1) | CN109446111B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI717816B (zh) * | 2019-08-28 | 2021-02-01 | 群聯電子股份有限公司 | 記憶體控制方法、記憶體儲存裝置及記憶體控制電路單元 |
CN112416817B (zh) * | 2020-12-02 | 2023-02-17 | 海光信息技术股份有限公司 | 预取方法、信息处理装置、设备以及存储介质 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4692678B2 (ja) * | 2007-06-19 | 2011-06-01 | 富士通株式会社 | 情報処理装置 |
US8166251B2 (en) * | 2009-04-20 | 2012-04-24 | Oracle America, Inc. | Data prefetcher that adjusts prefetch stream length based on confidence |
US9026739B2 (en) * | 2012-03-07 | 2015-05-05 | Advanced Micro Devices, Inc. | Multimode prefetcher |
US9098418B2 (en) * | 2012-03-20 | 2015-08-04 | Apple Inc. | Coordinated prefetching based on training in hierarchically cached processors |
CN106776371B (zh) * | 2015-12-14 | 2019-11-26 | 上海兆芯集成电路有限公司 | 跨距参考预取器、处理器和将数据预取到处理器的方法 |
TWI588831B (zh) * | 2016-01-29 | 2017-06-21 | 智原科技股份有限公司 | 非揮發性記憶體加速器及存取加速方法 |
CN106021128B (zh) * | 2016-05-31 | 2018-10-30 | 东南大学—无锡集成电路技术研究所 | 一种基于步幅和数据相关性的数据预取器及其预取方法 |
US10540287B2 (en) * | 2017-05-12 | 2020-01-21 | Samsung Electronics Co., Ltd | Spatial memory streaming confidence mechanism |
US10769069B2 (en) * | 2018-03-02 | 2020-09-08 | Arm Limited | Prefetching in data processing circuitry |
-
2018
- 2018-10-15 CN CN201811195141.8A patent/CN109446111B/zh not_active Expired - Fee Related
-
2019
- 2019-01-24 US US16/257,048 patent/US20200117460A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20200117460A1 (en) | 2020-04-16 |
CN109446111A (zh) | 2019-03-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109284240B (zh) | 存储器集成电路及其预取方法 | |
US11789872B2 (en) | Slot/sub-slot prefetch architecture for multiple memory requestors | |
KR100578436B1 (ko) | 내용 인식 프리페처의 후보 가상 주소 식별 방법 및 장치 | |
US9026739B2 (en) | Multimode prefetcher | |
US8510518B2 (en) | Bandwidth adaptive memory compression | |
US9418019B2 (en) | Cache replacement policy methods and systems | |
US20140237193A1 (en) | Cache window management | |
CN109446111B (zh) | 存储器集成电路及其预取地址决定方法 | |
US20160103765A1 (en) | Apparatus, systems, and methods for providing a memory efficient cache | |
CN113760787B (zh) | 多级高速缓存数据推送系统、方法、设备和计算机介质 | |
US20090193196A1 (en) | Method and system for cache eviction | |
WO2017160480A1 (en) | Priority-based access of compressed memory lines in memory in a processor-based system | |
WO2022178869A1 (zh) | 一种缓存替换方法和装置 | |
WO2023035654A1 (zh) | 偏移预取方法、执行偏移预取的装置、计算设备和介质 | |
CN113094392A (zh) | 数据缓存的方法和装置 | |
JP2008234059A (ja) | データ転送装置および情報処理システム | |
CN113268440A (zh) | 缓存淘汰方法及系统 | |
US7529891B2 (en) | Balanced prefetching exploiting structured data | |
WO2023165543A1 (zh) | 共享缓存的管理方法、装置及存储介质 | |
CN110889053B (zh) | 一种接口数据的缓存方法、装置及计算设备 | |
US20240054179A1 (en) | Systems and methods for inference system caching | |
CN110658999A (zh) | 一种信息更新方法、装置、设备及计算机可读存储介质 | |
CN112445794A (zh) | 一种大数据系统的缓存方法 | |
CN114996292B (zh) | 执行计划自动变更方法、装置、设备及可读存储介质 | |
CN107870733B (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 |
Granted publication date: 20210126 Termination date: 20211015 |
|
CF01 | Termination of patent right due to non-payment of annual fee |