CN113626345A - 管理高速缓存替换的系统和方法 - Google Patents
管理高速缓存替换的系统和方法 Download PDFInfo
- Publication number
- CN113626345A CN113626345A CN202110497559.XA CN202110497559A CN113626345A CN 113626345 A CN113626345 A CN 113626345A CN 202110497559 A CN202110497559 A CN 202110497559A CN 113626345 A CN113626345 A CN 113626345A
- Authority
- CN
- China
- Prior art keywords
- load
- eviction
- load unit
- candidate
- entity
- 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
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/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/126—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
-
- 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/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
-
- 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/1021—Hit rate improvement
-
- 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/45—Caching of specific data in cache memory
- G06F2212/452—Instruction code
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
一种在具有多个总线主控器的微控制器中的内部存储器与所述微控制器外部的非易失性存储器装置之间管理可执行指令的加载单元的方法。将所述加载单元的副本从所述外部存储器装置加载到所述内部存储器中以供对应总线主控器使用。每个加载单元与对应加载实体队列相关联,并且每个加载实体队列与所述多个总线主控器中的对应一个相关联。每个加载实体队列从当前加载于所述内部存储器中的所述加载单元的相关联副本中选择逐出候选项。将标识用于每个加载实体队列的所述逐出候选项的信息广播到所有加载实体队列。如果没有所述加载实体队列否决使用所述逐出候选项,则将所述逐出候选项添加到一组被管理逐出候选项中。
Description
技术领域
本发明的领域涉及一种存储器系统和一种用于其中的存储器管理的方法,其支持例如车辆内(在汽车环境中)之类的嵌入式信息系统中的软件执行。
背景技术
计算机系统通常受益于分层存储器设计,例如,在这种设计中,存储器内容的(至少部分的)副本可以存储(即,高速缓存)在存储器层次结构内的不同级别上。通常,支持不同存储器级别的硬件具有不同容量、成本和访问时间。一般来说,较快和较小的存储器电路通常更靠近系统内的处理器核心或其它处理元件,并充当高速缓存。处理系统中的其它类型的存储器存储装置可能更大且更便宜,但是与那些充当高速缓存的存储器相比,也可能相对较慢。
目前,车辆中使用的嵌入式处理系统支持例如高达16兆字节大小的应用程序图像,从而调用在4至12兆字节范围内的指令高速缓存。在未来的几年中,随着应用程序需要不同量的信息,所处理的数据和指令的量有可能增加。
发明内容
根据一种实施方式,一种处理系统包括:
微控制器装置;
在所述微控制器装置外部的外部存储器装置,所述外部存储器装置耦合到所述微控制器装置;
所述微控制器装置包括:
总线主控器,其被配置成执行应用程序代码;
随机存取存储器(RAM)装置,其在所述微控制器装置内部并且经由互连件耦合到所述总线主控器,所述RAM装置包括系统存储器部分和指令部分,所述指令部分被配置成存储来自所述外部存储器装置的加载单元的子集的副本以供所述应用程序代码使用,其中所述加载单元包括可执行指令和/或数据,并且与所述应用程序代码中的对应一个相关联;
缓存控制器装置,其耦合到所述随机存取存储器和所述外部存储器装置并且包括加载实体队列,所述加载实体队列中的每一个与所述总线主控器中的一个相关联,所述缓存控制器装置被配置成:
管理一组逐出候选项;
周期性地从所述指令部分中的所述加载单元的所述副本中选择逐出候选项;
如果所述加载实体队列中的至少一个否决所述逐出候选项,则丢弃所述逐出候选项;并且
用所请求加载单元的副本替换所述指令部分中的所述逐出候选项。
根据一些实施方式,所述加载实体队列中的每一个被配置成请求加载单元的加载,并且周期性地从与所述加载实体队列相关联的所述指令部分中的所述加载单元的所述副本中选择要包括在所述一组被管理逐出候选项中的逐出候选项。
根据一些实施方式,所述缓存控制器另外包括:
地址映射装置,其能运行来管理所述内部存储器的所述指令部分,包括跟踪由所述加载单元的子集的所述副本占用的存储区和所述指令部分内不由所述加载单元的子集的所述副本占用的可用存储区。
根据一些实施方式,所述缓存控制器另外包括:
加载管理器装置,其被配置成处理从所述外部存储器装置加载所述加载单元的请求,并在所述地址映射装置中查询所述指令部分内的大小足以存储所请求加载单元的至少一部分的副本的可用存储位置。
根据一些实施方式,所述处理系统另外包括:
缓存替换管理器装置,其耦合到所述加载实体队列和所述地址映射装置,其中
当没有足够的存储区来存储所述所请求加载单元的完整副本时,所述缓存替换管理器装置根据所述地址映射装置的请求选择所述一组被管理逐出候选项中的一个,并且验证所选逐出候选项,并且
所述地址映射装置通过以下项来对所述加载管理器装置的查询作出响应:当有足够的存储空间可用时提供所述可用存储位置,并且从所述缓存替换管理器装置重复请求额外逐出候选项且从所述指令部分逐出所述额外逐出候选项,直到所述指令部分中有足够的存储空间可用于所述所请求加载单元的完整副本。
根据一些实施方式,所述缓存控制器装置另外被配置成:
将所述逐出候选项广播到所述加载实体队列;
当接收到确认信号而没有来自所有加载实体队列的否决响应时,验证所述逐出候选项。
根据一些实施方式,当相应加载实体队列当前不需要与所述逐出候选项相对应的加载单元时,所述相应加载实体队列同意使用广播的逐出候选项。
根据一些实施方式,每个加载实体队列与确切一个总线主控器相关联,并且每个加载实体队列仅管理与由对应总线主控器执行的应用程序代码相关联的加载单元。
根据一些实施方式,当加载单元满足以下条件中的至少一个时:a)所述加载单元当前由与所述加载实体队列相关联的所述总线主控器使用,b)所述加载单元最近已由与所述加载实体队列相关联的所述总线主控器使用,以及c)所述加载实体队列知道所述加载单元将在可预见的将来由与所述加载实体队列相关联的所述总线主控器使用,所述相应加载实体队列将所述加载单元的副本标识为当前需要。
根据一些实施方式,每个加载单元由与所述外部存储器中的地址范围相对应的地址范围指定,并且所述加载单元中的至少两个具有不同长度。
根据一种实施方式,提供一种在具有多个总线主控器的微控制器中的内部存储器与所述微控制器外部的非易失性存储器装置之间管理可执行指令的加载单元的方法。所述方法包括:
将所述加载单元的副本从所述外部存储器装置加载到所述内部存储器中以供对应总线主控器使用,每个加载单元与对应加载实体队列相关联并且每个加载实体队列与所述多个总线主控器中的对应一个相关联;
通过每个加载实体队列从当前加载于所述内部存储器中的所述加载单元的相关联副本中选择逐出候选项;
将标识用于每个加载实体队列的所述逐出候选项的信息广播到所有加载实体队列;以及
如果没有所述加载实体队列否决使用所述逐出候选项,则将所述逐出候选项添加到一组被管理逐出候选项中。
根据一些实施方式,所述方法另外包括:
周期性地从所述内部存储器中与每个加载实体队列相关联的所述加载单元的所述副本中选择逐出候选项;
如果所述加载实体队列中的至少一个否决所述逐出候选项,则丢弃所述逐出候选项;以及
用所请求加载单元的副本替换所述内部存储器中的所述逐出候选项。
根据一些实施方式,如果所述加载实体队列中的一个正使用所述加载单元的所述副本,则所述加载实体队列否决所述逐出候选项。
根据一些实施方式,所述方法另外包括当所有所述加载实体队列确定以下各项中的至少一项时:a)所述逐出候选项不与当前使用的加载单元的副本相对应,以及b)最近未使用与所述逐出候选项相对应的所述加载单元的所述副本,批准所述逐出候选项。
根据一些实施方式,所述方法另外包括:通过跟踪由所述加载单元的每个副本占用的存储区和所述内部存储器内不由所述加载单元的所述副本占用的可用存储区来管理所述内部存储器中的所述加载单元的所述副本,其中所述加载单元的所述副本中的至少两个具有不同长度。
根据一些实施方式,所述方法另外包括:对所述内部存储器内的可用存储位置发出查询,所述存储位置的大小足以存储所请求加载单元的副本或所述所请求加载单元的所述副本的一部分。
根据一些实施方式,所述方法另外包括:
通过以下项来对所述查询作出响应:当有足够的存储空间可用时提供所述可用存储位置,并且重复请求额外逐出候选项,直到所述指令部分中有足够的存储空间可用于所述加载单元的所述副本。
根据一些实施方式,所述方法另外包括:
当接收到确认信号而没有来自所有加载实体队列的否决响应时,验证所述逐出候选项。
根据一些实施方式,当所述对应加载实体队列当前不需要与所述逐出候选项相关联的所述加载单元的所述副本时,同意使用广播的逐出候选项。
根据一些实施方式,每个加载实体队列与确切一个总线主控器相关联,并且每个加载实体队列仅管理与由所述对应总线主控器执行的应用程序代码相关联的加载单元。
附图说明
通过参考附图,可以更好地理解本发明技术,并且使得本领域的技术人员清楚本发明的多个目的、特征和优点。
图1示出根据本发明的所选实施例的高速缓存逐出候选项选择的时间线。
图2示出根据本发明的所选实施例的处理系统的框图。
图3示出根据所选实施例由高速缓存控制器中的加载实体队列执行的用于管理图2处理系统中的高速缓存逐出候选项的功能流程图。
图4示出根据所选实施例由高速缓存控制器中的高速缓存替换管理器执行的用于管理图2处理系统中的高速缓存逐出候选项的功能流程图。
图5示出根据所选实施例由高速缓存控制器中的加载管理器和地址映射装置执行的用于管理图2处理系统中的高速缓存逐出候选项的功能流程图。
除非另外指出,否则在不同图式中使用相同的附图标记指示相似项目。各图不一定按比例绘制。
具体实施方式
公开了用于管理保存可执行指令和常量数据的大小可变的加载单元的高速缓存替换处理的系统和方法的实施例,所述系统和方法管理指令和数据从微控制器外部的存储器装置到微控制器内部的例如(随机存取存储器(RAM))之类的缓冲存储器中的加载。外部存储器装置为当前运行的应用程序提供比在微控制器内部的存储器内可缓冲的存储区更大的存储区。通过处理大小可变的加载单元的能力来避免对应用程序代码和加载带宽造成不必要的影响。高速缓存操作通过可使用相同或不同操作系统的多于一个实例的多个处理器核心以及访问存储器中的指令或常量数据的其它类型的总线主控器,来支持微控制器中多个应用程序的执行。本文公开的系统和方法在高速缓存控制子系统中实施,所述高速缓存控制子系统另外被称为操作系统感知任务高速缓存(OTC)。
与限制处理一个大小的用于高速缓存存储器的加载单元的已知处理器高速缓存布置不同,大小可变的加载单元由本文公开的高速缓存管理部件经由解耦的加载请求和高速缓存逐出操作来支持。通过解耦请求和逐出操作,通过逐出多个加载单元来为较大的加载单元提供空间,或者通过可将多个较小的单元加载到由逐出较大的加载单元而产生的自由空间的相反情况来解决大小可变的加载单元的一个复杂性。在请求更大加载单元的情况下选择多于一个的逐出候选项,从而强制逐出多个加载单元,以提供足够的空间。在实际使用之前,对多个候选项进行适当的管理,因为在时间X的良好的逐出候选项可能在时间X+Y是不合适的候选项。当高速缓存内容在多个总线主控器(例如,处理器核心)之间共享时,管理多个逐出候选项的复杂性明显更高,这些总线主控器可执行位于高速缓存内的不同加载单元中的不同指令。
对逐出和请求操作进行解耦还可进一步准许优化高速缓存行为。例如,为了优化大缓冲存储器的内容,可标识要保存在存储器中的最有价值的数据元素。此类优化要求提前标识一个或多个合适的逐出候选项,这与传统的指令高速缓存一样,当按需标识替换候选项时是不可能的。
如上所述,外部存储器可以存储多于一个图像,例如,以支持图像的空中传送(OTA)更新,其中一个图像保存在微控制器内并发执行的应用程序的指令和常量数据。即使除了应用程序数据所需的RAM之外,在典型MCU的内部RAM中并发地提供足够的内部存储器来存储单个图像的所有指令和常量数据,也可能导致RAM大小要求所造成的花费过高。在这些应用程序的指令可以在不使用非易失性存储器的MCU中执行之前,这些指令从外部非易失性存储器复制并加载到内部存储器中。智能高速缓存控制器仅加载应用程序当前正在使用/所需的指令和常量数据的子集,有助于减小为此目的所需的对应内部存储器的大小。此类部分缓冲需要提前加载指令,以确保其及时可用,这与执行按需加载的传统高速缓存不同。
虽然外部非易失性存储器可基本上大于内部存储器,但其访问通常要慢得多,尤其是适合于车辆内汽车环境中的嵌入式系统的非易失性存储器。在多个处理器核心想要并发访问指令存储器时,这种情况在多核心系统中可能会更加复杂。鉴于内部存储器可能已经具有有限的性能,因此可以看到此问题,这在当今嵌入式系统中需要1级/2级处理器高速缓存是显而易见的。任何较慢的访问都会对必须实时执行任务的操作系统的时序要求提出挑战,尤其是汽车领域中必须遵守非常严格的实时条件的常见嵌入式系统。例如,在实施制动、安全气囊或动力系统应用程序时,可能需要在几毫秒或微秒内对事件做出适当的反应。尽管在运行实际使用指令的任务之前通过使用外部存储器中的指令预加载内部存储器可以解决相关问题,但是当带宽不足以加载时,这可能为时已晚。当高速缓存中已经包含所需的指令时(因为它已被更早地加载并且从那时起就不会被逐出),可以避免此类预加载。这使得高速缓存替换策略和高速缓存逐出候选项的适当管理成为高速缓存控制器元素的主要任务。
如先前所提及,为了适应大小可变的加载单元,单个新的加载单元可能需要替换已经存储在内部存储器中的一个或多个加载单元。单个替换的加载单元可提供用于一个或多个新的加载单元的空间。因此,单个高速缓存或加载请求可能不会触发任何事件(当有足够的空闲空间时)、单个(当被替换的加载单元为新的加载单元提供足够的空间时)或多个高速缓存替换操作(其它情况下)。这些替换操作进一步被命名为“逐出”,因为不存在由另一加载单元实际替换较早的加载单元,而是逐出加载单元以获得空间,以便稍后从正在加载的另一加载单元存储指令。由于可能存在需要在单个加载请求之后逐出的多个此类加载单元,因此主要问题是对逐出的潜在候选项进行适当的管理。否则,为逐出寻找新的候选项所花费的时间和精力可能会对任何需要空闲空间的加载操作造成另一不必要的延迟。
图1示出标识逐出候选项的问题和标识逐出需要的时间的一些方面。事件111、112、113、114、115和116描绘将加载单元A111、B112、C113、D114、E115和F116标识为逐出候选项的时间。事件130描绘了标识需要逐出来存储新的加载单元的时间。时间轴100下方的箭头描绘需要相应加载单元的时间跨度,其中箭头121描绘加载单元A的时间跨度,箭头122描绘加载单元B的时间跨度,箭头123描绘加载单元C的时间跨度,箭头124描绘加载单元D的时间跨度。此处,术语“需要”指的是对应加载单元的高速缓存在当前使用或可能在可预见的将来使用的知识。在事件130时需要加载单元A、B和D,因此所述加载单元无法用于逐出。在标识逐出需要时,可基于事件130时对候选项的需要禁止使用较早所选的逐出候选项。
图1中描绘的另一折衷与作为逐出候选项的加载单元C的管理有关。加载单元C在其标识为逐出候选项113的时间跨度期间是需要的,但是在事件130时不再需要。当事件130发生时,可以丢弃在其存储期间确定需要的逐出候选项,以减少可用候选项的数目。
用于OTC高速缓存的内部存储器通常在指令和常量数据的多个请求者之间共享,这些指令和常量数据通常在之前已被称为高速缓存用户的嵌入式系统内实施为处理器核心或其它总线主控器类型(例如,DMA引擎、协处理器或具有总线主控器能力的特定处理元件)。支持这些高速缓存用户的加载请求最好由一组加载实体队列处理,其中一个加载实体队列支持相关联的高速缓存用户以及此活动所需的加载请求。每个加载实体队列可以具有用于为高速缓存替换操作选择加载单元的特定首选项,以反映不同应用程序以及最终管理所述应用程序的不同操作系统的特定需求。
当在应用程序之间(例如,在共享库或一组共同常量的情况下)或在MCU内实施的多个处理器核心上执行的操作系统的任务(例如,由操作系统的多个任务共享的共同功能)之间共享对应代码时,期望共享由这些加载实体队列管理的加载单元。此类代码共享可能导致这些高速缓存用户使用的共享高速缓存的操作条件产生冲突;例如,加载实体队列可以标识对由另一加载实体队列选择逐出的加载单元(要加载或保持在缓冲存储器中)的需要。在此情境中,当a)加载单元是包含当前执行的指令的加载单元时,b)当加载单元是一组L个加载单元实例中包含已知或假定即将执行的指令(这些指令可能已经在高速缓存中,或者请求或计划加载)的加载单元时,c)当加载单元是包含可能在当前功能的调度堆栈中的指令(在一组最近使用的N个加载单元中)的加载单元时,或e)当加载单元在标记为锁定以供软件稍后使用的另一组M个加载单元实例中(其中L、M、N是合理的小数目,例如1-32,反映可记录在加载实体队列的硬件元件中的有限组加载单元元件),加载实体队列可以将加载单元称为“需要的”。
图2示出根据本发明的所选实施例的处理系统200的框图,所述处理系统包括操作系统任务感知高速缓存(OTC)子系统,用于调度将在处理系统200内执行的具有大小可变的加载单元的操作。处理系统200包括微控制器201,所述微控制器具有两个或更多个总线主控器,例如处理器核心202、204、206和其它总线主控器,例如直接存储器存取总线主控器207和/或其它合适的总线主控器。处理器核心202、204、206可使用其自身的专用高速缓存装置。在示出的实施例中,处理器核心204不耦合到专用高速缓存,处理器核心202耦合到单个专用高速缓存208,并且处理器核心206耦合到专用高速缓存210、212的层次结构。专用高速缓存208、210、212可以存储通常由相应处理器核心202、206使用并且通常位于处理器核心202、206附近的数据和指令。除了本文公开的OTC高速缓存子系统的实施例之外,高速缓存208、210、212是任选的并且是可用的。
专用高速缓存208、210、212通常位于相关联的处理器核心202、206的附近,并且试图避免当处理器核心202、206与微控制器201内部的其它装置(例如内部存储器216)通信时产生的延迟。专用高速缓存208、210、212独立于OTC控制器224执行按需加载和操作,所述OTC控制器使用预测机构和内部存储器216作为存储器以避免在访问外部存储器234时的延迟和带宽问题。
总线主控器202、204、206、207和其它互连件和外围装置(未示出)可操作地耦合到互连件214,所述互连件可以是单个互连件或一组特定互连件。互连件214耦合总线主控器202、204、206、207以响应访问请求与总线受控器通信。总线受控器的例子可以包括内部存储器装置216和由P0241和P1242表示的外围设备,它们可以经由外围桥接器240连接到互连件214。
内部存储器装置216可以包括多个存储器块,所述多个存储器块可被组织在随机存取存储器(RAM)组中,以准许多个总线主控器202、204、206、207对不同的存储器组进行并发访问。内部存储器装置216提供用于以下两个功能的存储区:i)第一部分被指定为系统存储器222,其用于存储在处理系统200内执行的应用程序的数据,以及ii)第二部分被指定为指令高速缓存218,以保存在被称为加载单元220的结构中的应用程序的指令和常量数据。用于指令高速缓存218和系统存储器222的部分可以跨越多个组,并且组的内容可以由这两个部分使用;用于指令高速缓存218和系统存储器222的部分与组之间没有关系。
加载单元220包含与外部存储器234中的图像250内的应用程序的对应加载单元260相关联的指令和常量数据的副本。例如,可以包含每个加载单元260的相关属性的表格格式来指定关于图像250的加载单元260的对应信息。相关属性可以与元数据(未示出)内的加载单元260内包含的指令和常量数据分开存储。元数据可替代地存储在外部存储器234中的不同位置中。
微控制器201另外包括OTC控制器224,所述OTC控制器包括一个或多个加载实体队列226、加载管理器228、地址映射245和高速缓存替换管理器230,以及未示出的其它部件。OTC控制器224的部件可实施为与也单独实施以提供OTC控制器224的功能的其它部件交互的单独单元。OTC控制器224经由一个或多个寄存器接口225、227可操作地耦合到互连件214,作为外围和/或总线主控器,以访问其它总线受控器,例如,内部存储器216。另外,或可替换的是,OTC控制器224的一个或多个部件可经由直接连接件223直接耦合到内部存储器216,以访问内部存储器216。OTC控制器224(或单独实施时的加载管理器228)可经由接口233耦合到外部存储器234。
加载实体队列226的每个实例支持来自相关联的总线主控器202、204、206、207的访问请求。除了OTC控制器224的公共寄存器之外,加载实体队列226还可以使用每个加载实体队列226专用的一组控制和状态寄存器。专用寄存器组和公共寄存器组都可以经由寄存器接口225、227中的一个从互连件214访问。每个加载实体队列226另外耦合到高速缓存替换管理器230和加载管理器228。加载实体队列226使用到加载管理器228的接口来请求从外部存储器234加载加载单元260。
在处理加载单元260期间,加载实体队列226可以存储加载单元信息232以标识当前由对应加载实体队列226管理的至少一个加载单元260的相关信息。相关加载单元信息232可以是反映图像250中包含的加载单元260的子集的信息的元数据。加载单元260的元数据可以连同图像250一起或在所述图像内存储在外部存储器234中,并且可以临时加载到内部存储器216中。可以经由总线主控器接口227或经由内部存储器216与OTC控制器224之间的直接连接件223从内部存储器216读取与由机载实体队列226管理的加载单元260相关的加载单元信息232。在其它实施例中,加载单元信息232可以存储在OTC控制器224中的其它位置。
可以实施两种或更多种不同类型的加载实体队列226。第一类型的加载实体队列226可以提供最复杂类型的总线主控器类型所需的全部功能,所述总线主类型通常是处理器核心202、204、206。其它类型的加载实体队列226可以仅提供功能的子集或简化形式,以与特定总线主控器的具体需要相一致,或者为实施显著较少功能的总线主控器提供有成本效益的实施方案。为了简化,在功能上不实施完整的加载实体队列的这种类型被称为“简化的”加载实体队列226。
加载管理器228被耦合以直接与负载实体队列226、地址映射装置245和高速缓存替换管理器230通信。加载管理器228还可提供到互连件214的寄存器接口(未示出)以与软件交互,并且使用总线主控器接口通过互连件229或到内部存储器216的直接连接件223来访问内部存储器216。加载管理器228通过接口233与外部存储器装置234通信以从外部存储器234请求加载单元260的内容,所述外部存储器被存储为内部存储器216的指令高速缓存部分218中的临时加载单元220。
OTC控制器224中示出的另一元件是地址映射装置245,所述地址映射装置连接到加载管理器228和高速缓存替换管理器230。当加载管理器228想要在指令高速缓存218中存储第一加载单元260或此类加载单元的一部分时,地址映射装置245至少查询一次空闲存储位置。当指令高速缓存218中有足够的可用空闲存储区时,地址映射装置245提供关于加载管理器228可用的空间的对应信息。当没有足够的可用空闲存储区时,地址映射装置245将逐出请求提供到高速缓存替换管理器230。在接收到此类逐出请求时,高速缓存替换管理器230提供关于被选择用于逐出的临时加载单元220的信息。被选择用于逐出的加载单元220的位置由地址映射装置245使用以释放由被选择用于逐出的加载单元220使用的存储空间。然后,可使用空闲存储空间以将第一加载单元260的指令和常量数据作为临时加载单元220存储在指令高速缓存218中。通过提供此功能,地址映射装置245管理指令高速缓存218内的空闲存储空间的使用,以将第一加载单元260的副本存储为临时加载单元220,并在临时加载单元220被逐出时释放存储空间。
高速缓存替换管理器230耦合到地址映射装置245和加载实体队列226。当地址映射装置245确定指令高速缓存218中没有足够的存储空间可用于新的临时加载单元220时,地址映射装置245查询高速缓存替换管理器230。当加载管理器228处理需要存储临时加载单元220的加载请求时,可以触发查询。当发生需要逐出一个或多个临时加载单元220的事件230(图2)时,触发对应的查询操作。
为了能够快速响应逐出需求,高速缓存替换管理器230可以存储关于一组被管理逐出候选项236的信息,在识别到逐出需求时处理所述候选项。可以基于例如优先级或其它合适的标准之类的指定标准来标识要从指令高速缓存218逐出的临时加载单元220。逐出处理本身可由地址映射装置245管理,如本文先前所描述。可以根据由加载实体队列226标识的逐出候选项来生成一组被管理逐出候选项236。个别标识处理确保每个加载实体队列226仅提供属于由相应加载实体队列226管理的一组临时加载单元220的逐出候选项。这使得能够仅通过负责管理子集的OTC控制器224的那些元件来专用地管理临时加载单元220的子集。加载单元260的独立管理允许相关操作之间的适当数据分离和干扰自由,并且准许独立处理。其还可能够公平地处理加载单元逐出处理。出于选择逐出候选项的目的,任何加载实体队列226可以使用对应的加载单元信息232。
外部存储器装置234可以使用非易失性存储器或其它合适类型的存储器装置来实施。外部存储器装置234存储至少一个图像250,所述图像包括与将由微控制器201内实施的处理器核心202、204、206执行的至少一个应用程序相关联的指令和常量数据。至少一个图像250被构造成一个或多个加载单元260,当从外部存储器234加载指令和常量数据时,所述一个或多个加载单元可用作一个单元。例如,可以通过将与加载单元260相关联的额外元数据(关于数据的数据)存储在外部存储器234中来实现将图像250构造成加载单元260。元数据可以单独存储(未示出)或作为图像250的一部分存储。加载管理器228经由接口232访问外部存储器234,用于加载加载单元260并将加载单元260中包括的指令和常量数据写入指令高速缓存218内的对应临时加载单元220。从外部存储器234到指令高速缓存218的写入操作可以使用通过互连件214的写入路径229或到内部存储器216的直接连接件223。
微控制器201和外部存储器装置234实施在两个不同的半导体装置上,所述半导体装置可以在单个封装内或在不同的封装中。相对应地,这两个半导体装置之间的接口233可以是封装内或两个封装之间的连接件。
与外部存储器装置234的大小相比较,内部存储器装置216的大小可能受到限制。外部存储器装置234可以保存多个图像250,并且每个图像250可以保存由处理器核心202、204、206执行的一个或多个应用程序的指令和数据。应用程序的执行通常由操作系统控制,在许多情况下,操作系统需要遵守严格的实时条件,且因此被称为实时操作系统(RTOS)。由RTOS控制的应用程序可以使用任务来标识其执行单元。虽然保存由微控制器201执行的一个或多个应用程序的图像250可以全部存储在外部存储器装置234中,但是此图像可以被划分为连续的可执行代码片段,这些可执行代码片段被称为加载单元260。加载单元260(保存指令和常量数据)的内容的临时副本220可以加载到指令高速缓存218中,以供对应的处理器核心202、204、206或其它总线主控器207使用。因此,加载单元260是反映连续地址范围内的一个或多个完整软件功能的指令和常量数据的片段。加载到内部存储器216中的临时加载单元220可操作成由处理器核心202、204、206执行或以其它方式处理,或由微控制器201内的另一总线主控器207使用。
可以通过沿着一组连续地址范围沿着功能边界分割图像250内的应用程序的代码和指令来指定加载单元260。这些功能可以与任务相关联,或者由实时操作系统的至少一个实例支持的多个任务共享。可以在元数据中指定关于加载单元260的信息,并且可以在软件开发处理期间手动生成,或者通过使相关生成处理自动化的工具或工具流生成。可以限定加载单元260的大小限制,例如,最小大小为1千字节并且最大大小为63千字节。不需要其它限制(例如,起始地址或结束地址的地址对齐)。可以由也在元数据中指定的加载顺序来限定加载一组加载单元260的优选次序。任何加载顺序可以包括任意数目的加载单元260。
总线主控器202、204、206、207和OTC控制器224可以并发并彼此独立地执行它们相应操作。例如,可以独立于由总线主控器202、204、206、207执行的处理来执行从外部存储器装置234加载指令和常量数据。此处理可以是由处理器核心202、204、206执行软件,所述处理本身可以是在多个处理器核心202、204、206上执行的多个软件线程,或者是由任何其它总线主控器207执行的其它处理。操作的潜在并发性取决于执行此类操作的对应硬件。访问外部存储器装置234可以与任何其它操作并发进行。当访问内部存储器216时可能产生潜在冲突。此处,(例如,当写入从外部存储器读取的加载单元的内容时)总线主控器中的一个的访问与OTC控制器224的访问之间的冲突是可能的。然而,例如,通过使用多端口存储器或通过使用例如存储器交叉存取之类的特定存储器体系结构,使得能够进行多个并发访问,可以显著地降低冲突的概率。
微控制器201能够从外部存储器装置234检索数据和指令以替换指令高速缓存218中的临时加载单元220。如果一个处理器核心202、204、206想要替换临时加载单元220,但是另一处理器核心202、204、206不想,则高速缓存替换管理器230基于来自处理器核心202、204、206的操作系统的信息以及在处理器核心202、204、206中的每一个中执行的任务来确定将替换哪个加载单元220,如下文将更全面地描述。可以选择内部存储器216的大小以容纳具有可变大小的较小加载单元220,而与未计划执行的应用程序的部分相对应的其余指令和数据留存在外部存储器装置234中。结果是,如果外部存储器装置234不可用,则内部存储器216的大小将小于容纳与特定应用程序相关联的所有数据和指令原本所需的大小。
处理系统200能够管理一组高速缓存逐出候选项,以使大小可变的加载单元260能够用于高速缓存管理,从而有效地将高速缓存逐出候选项的生成与其用于高速缓存逐出的使用解耦。此解耦准许在生成高速缓存逐出候选项与使用高速缓存逐出候选项之间有更大的时间跨度,这准许更复杂地搜索“更优化”的候选项。相比之下,按需操作的传统1级/2级高速缓存208、210、212必须或多或少地立即提供逐出候选项。
搜索更优化的逐出候选项的能力使得有利的高速缓存替换策略能够通过更好地选择逐出候选项来尝试保留OTC指令高速缓存218内更“有价值的”加载单元。然而,就所需操作的数目而言此类选择处理可能是昂贵的,这也转化成工作所需的时间跨度,这使得期望避免不必要的操作。为此目的,可以控制用于生成高速缓存逐出候选项的选择速率,以准许选择可以随着系统200的当前处理需要来调整的高速缓存逐出候选项。在一些实施例中,用于在高速缓存替换管理器230中存储逐出候选项的区域的填充级别可以用作控制选择处理的标准。可以限定一组控制级别(例如,DRAIN、ERROR和EMPTY级别),并且可以为每个控制级别分配加速因子(例如,加速选择速率x2、x8、x16)。然后,可以使用基本选择速率来选择逐出候选项,并且每当达到控制级别中的一个时,可以加速用于生成高速缓存逐出候选项的选择速率。例如,当指定四分之三的填充级别作为DRAIN级别时,当潜在的一组被管理逐出候选项少于四分之三时,选择速率可以加倍以生成两倍数目的高速缓存逐出候选项。当用于存储此类候选项的区域再次填满时,选择速率可以返回到基本(较慢)速度。
由加载实体队列226执行的功能包括选择逐出候选项和否决逐出候选项。高速缓存替换管理器230执行N个被管理逐出候选项的仲裁以标识逐出候选项,将所标识的逐出候选项广播到加载实体队列226,并且接收所标识的逐出候选项的确认和/或否决。地址映射装置245在需要时生成对逐出候选项的请求,并且在加载管理器228加载所请求加载单元260需要逐出候选项时处理逐出所标识的逐出候选项。高速缓存替换管理器230根据来自地址映射装置245的请求从其被管理逐出候选项236提供逐出候选项。高速缓存替换管理器230还将所标识的逐出候选项广播到加载实体队列226,并且接收逐出候选项的确认和/或否决。将不会使用被否决的逐出候选项,并且在选择另一逐出候选项之后重复否决处理。由在包括加载实体队列226、高速缓存替换管理器230、地址映射装置245和加载管理器228的OTC控制器224中的执行单元执行的处理可以独立于其它处理而并发执行。并且,当多个执行单元可用时,任何处理都可以由多个相关执行单元并发执行,从而产生多个逐出候选项处理。
选择逐出候选项的处理可以由管理一组加载单元260的N个加载实体队列226中的一个或多个,例如与具有处理器核心202、204、206的特征的总线主控器相关联的任何加载实体队列226,来执行。通常,处理器核心202、204、206总线主控器将是在微控制器201内实施的总线主控器202、204、206、207的子集。
图3-图5示出根据所选实施例的由相应加载实体队列126、高速缓存替换管理器230、地址映射装置245和加载管理器228执行的用于管理图2的处理系统200中的高速缓存逐出候选项的处理310、340、320、370的流程图。
可以连续地执行逐出候选项选择处理310,并且可以包括如图3所示的处理302-309。参考图2和3,逐出候选项选择处理310从处理302开始,以从由特定加载实体队列226管理的加载单元260的子集中选择逐出候选项。例如,通过按预定次序选择加载单元260的管理子集中的一个,或者可以为此类处理限定任何其它选择标准,随机地选择特定加载实体队列226的逐出候选项。处理304确定所选高速缓存逐出候选项的替换优先级。例如,预定的替换优先级可用作选择高速缓存逐出候选项的标准。如果针对所选高速缓存逐出候选项确定的替换优先级不够,则处理305可以中断对特定逐出候选项的进一步处理并且返回到处理302。
如果替换优先级足够,则处理305转换到处理306以将所选高速缓存逐出候选项和任何其它相关信息转发到高速缓存替换管理器230。处理306中的转发操作可涉及可选的握手处理307,所述握手处理等待高速缓存替换管理器230以提供所选高速缓存逐出候选项已被接受以进行进一步处理的确认309。例如,在多个加载实体队列226如此快速地提供逐出候选项以使得逐出候选项管理处理420(图4)不能立即处理它们的情况下,可能需要握手处理307,因为较早转发的逐出候选项仍在处理中,并且没有足够的存储区来记录接收到的逐出候选项以供稍后处理。在其它实施例中,可以不实施握手处理307,并且替代地,当处理资源不可用时,可以丢弃所选逐出候选项。在此情况下,可立即产生确认309而不涉及高速缓存替换管理器230。一旦所选逐出候选项已经被确认用于进一步处理(或已经被丢弃),处理308转换到处理302以重复逐出候选项选择处理302-309。
现在参考图2和4,图4中示出由高速缓存替换管理器230执行的处理的例子的流程图,所述处理包括维护被管理逐出候选项236的逐出候选项管理处理420。候选项管理处理420包括候选项接受处理419,所述候选项接受处理可由提供新逐出候选项的等于数目N个加载实体队列226的复制硬件元件并发执行。在其它实施例中,候选项接受处理419可由观察到N个加载实体队列226的握手处理307的单组硬件元件重复执行。逐出候选项管理处理420的其余处理通常仅在单个高速缓存替换管理器230内执行一次,然而,可能需要多个高速缓存替换管理器230对被管理逐出候选项236的多个列表进行管理。例如,当使用片段式存储器时,可能需要被管理逐出候选项236的多个列表,并且每个存储器片段都需要一个被管理逐出候选项236的列表。
可以连续地执行候选项接受处理419,从处理412开始,接收已经从加载实体队列226转发的逐出候选项。处理412记录逐出候选项,然后可以生成确认信号,所述确认信号经由握手处理307发送到候选项选择处理310。处理414选择新的逐出候选项以进行进一步处理,并且可以使用一些选择标准,例如,与逐出候选项相关联的替换优先级。处理415可以将选择标准和与存储在被管理逐出候选项236的列表中的其它逐出候选项相关联的对应信息进行比较。例如,处理415可以包括确定新的逐出候选项是否具有足够的相关性以被添加为新的逐出候选项。例如,相关性可由可取决于其它逐出候选项而硬编码、可编程或进行的最小优先级来确定。如果新的逐出候选项不满足选择标准或者相关性不足,则可以丢弃新的候选项,并且处理415转换到处理412以接收和记录另一逐出候选项。否则处理415转换到处理450。
逐出候选项管理处理420的其余部分可以具有多个触发事件,例如,当候选项接受419已接受新的逐出候选项并且将进一步处理时,可以发生触发A。当逐出需要处理570(图5)标识出逐出需求并且经由握手处理460将其转发到高速缓存替换管理器230时,可以发生触发B。当触发A或B都没有发生并且选择了默认处理时,可以发生触发C。每个触发A、B、C具有相关联的逐出候选项,且因此仲裁处理450可用于从触发A、B或C中选择逐出候选项中的一个以进行进一步处理。在一些实施例中,与触发B相关联的逐出候选项具有最高优先级,并且当存在时总是被选择。在与触发B相关联的逐出候选项被转发到仲裁处理450之前,可以执行处理451以根据预定标准确定被管理逐出候选项236的列表内的下一逐出候选项。处理451将所确定的逐出候选项转发到仲裁处理450。
与触发A相关联的逐出候选项可以具有下一最高优先级,并且可以在没有与触发B相关联的逐出候选项时进行选择。将由逐出候选项接受处理419接受的新的逐出候选项转发到仲裁处理450。
与触发C相关联的逐出候选项可以具有最低优先级,并且可以在没有来自触发A或B的其它逐出候选项时进行选择。在一些实施例中,可以不实施触发C。然而,如果将逐出候选项用于触发C,则可以执行处理449以从被管理逐出候选项236确定逐出候选项以转发到仲裁处理450。
一旦执行了仲裁处理450,对于与触发A、B或C相关联的逐出候选项,随后的处理在许多方面是等效的。在仲裁处理450中选择的逐出候选项也被称为“所查询的逐出候选项”。
在仲裁处理450之后,处理452经由M个握手接口331将关于所查询的逐出候选项的信息转发到所有M个加载实体队列226。可以等待处理455,直到从所有M个加载实体队列226发送确认信号,或者经由握手接口331从M个加载实体队列226中的一个或多个接收到针对所查询的逐出候选项的单个否决信号为止。
在处理455中,在所有M个加载实体队列226已经提供确认信号或者M个加载实体队列226中的一个或多个已经提供否决信号之后执行处理456。处理456确定所查询的逐出候选项的查询状态,所述查询状态是在接收到针对所查询的逐出候选项的至少一个否决信号时被否决(V),或者是在从所有M个加载实体队列226接收到针对所查询的逐出候选项的确认信号时被同意的查询状态(G)。
在处理457中,当被查询的逐出候选项与触发A相关联并且同意查询状态(表示为“AG”)时,则执行处理458以将被查询的逐出候选项添加到被管理逐出候选项236的列表。如果被管理逐出候选项236的列表已经填满,则所查询的逐出候选项可以替换被管理逐出候选项236的列表中的一个或多个逐出候选项。处理458可以确定:与已经填充被管理逐出候选项236的列表的逐出候选项相比较,所查询的逐出候选项具有不足的替换优先级。在此情况下,不将所查询的逐出候选项添加到被管理逐出候选项236的列表中,并且当独立于逐出候选项管理处理420的其余部分执行候选项接受处理419时,处理458转换到仲裁处理450,或者当依次执行处理419和处理420的其余部分时,转换到处理412以选择新的逐出候选项。
当所查询的逐出候选项与触发A相关联并且否决查询状态(表示为“AV”)时,丢弃所查询的逐出候选项,并且当独立于逐出候选项管理处理420的其余部分执行候选项接受处理419时,处理458转换到仲裁处理450,或者以当依次执行处理419和处理420的其余部分时转换到处理412以选择新的逐出候选项。
当所查询的逐出候选项与触发B相关联并且同意查询状态(表示为“BG”)时,可以执行处理445以将与所查询的逐出候选项相关联的信息连同确认信号一起提供到握手处理460。然后,处理445转换到处理450,用于进行针对逐出候选项的下一轮仲裁。可替换的是,当所查询的逐出候选项与触发B相关联并且否决查询状态(表示为“BV”)时,执行处理448以从被管理逐出候选项236的列表中移除所查询的逐出候选项,或者设置与所查询的逐出候选项相关联的标志以禁止进一步处理并将所查询的逐出候选项的替换优先级修改到防止选择所查询的逐出候选项的级别。然后,将与所查询的逐出候选项相关联的信息与否决的信号一起提供到握手处理460,并且当独立于逐出候选项管理处理420的其余部分执行候选项接受处理419时将处理448转换到任一仲裁处理450,或者当依次执行处理419和处理420的其余部分时,转换到处理412以选择新的逐出候选项。
当所查询的逐出候选项与触发C相关联并且同意查询状态(表示为“CG”)时,不进一步处理所查询的逐出候选项,并且处理457转换到仲裁处理450以用于进行针对逐出候选项的下一轮仲裁。当针对与触发C相关联的所查询的逐出候选项否决查询状态(表示为“CV”)时,处理457转换到处理448,以从被管理逐出候选项236的列表中移除所查询的逐出候选项,或者设置与所查询的逐出候选项相关联的标志以禁止进一步处理并将所查询的逐出候选项的替换优先级修改到防止选择所查询的逐出候选项的级别。然后,当独立于逐出候选项管理处理420的其余部分执行候选项接受处理419时,处理448转换到仲裁处理450,或者当依次执行处理419和处理420的其余部分时,转换到处理412以选择新的逐出候选项。
处理419和处理420的其余部分可以依次或彼此独立地执行。除了处理查询状态为“BV”的所查询的逐出候选项之外,当候选项接受处理419独立于逐出候选项管理处理420的其余部分执行时,逐出候选项管理处理420从处理457、458、445继续到仲裁处理450中的任一个,或者当依次执行处理419和处理420的其余部分时,继续到处理412以选择新的逐出候选项。当所查询的逐出候选项具有BV的查询状态时,则处理448转换到处理451以选择另一逐出候选项。处理451接着转换到仲裁处理450以再次开始仲裁处理。
再次参考图2和3,图3示出可由用于处理器核心和非处理器核心总线主控器202-207两者的M个加载实体队列226中的每一个执行的候选项否决处理340的实施例的流程图。候选项否决处理340可以连续地并且独立于候选项选择处理310执行。
处理332经由握手处理331接收由高速缓存替换管理器230广播的逐出候选项。处理334将广播的逐出候选项与加载实体队列226按需要标识的一组加载单元实例进行比较。在此加载实体队列226不需要广播的逐出候选项的情况下,处理334将确认信号发送到握手处理331而不提供否决信号,并且处理332可以经由握手处理331接收进一步广播的逐出候选项。如果处理334确定加载实体队列226需要广播的逐出候选项,则处理336将否决信号和确认信号提供到握手处理331。握手处理331将确认信号和否决信号传送到高速缓存替换管理器230。
现在参考图2和5,图5中示出由加载管理器228执行的处理的例子的流程图,所述处理包括生成选择逐出候选项的需要的逐出需要处理570。当加载管理器228接收到加载单元请求时,执行逐出需要处理570。处理562接收与所请求加载单元260相对应的加载单元信息232,并开始由加载管理器228从外部存储器234进行读取访问。处理564从外部存储器234读取所请求加载单元260的内容(或所请求加载单元的一部分,直到加载管理器234中的缓冲存储器填满为止)。在处理566中,加载管理器228查询地址映射装置245以获得指令高速缓存218内的空闲存储区。当指令高速缓存218中有足够的空闲存储区时,处理568转换到处理578以将加载单元260的临时副本220的全部或部分存储在指令高速缓存218中。当地址映射装置245不能标识出足够的空间以将作为所请求加载单元260的副本的临时加载单元220的全部或部分存储在指令高速缓存218中时,处理572创建逐出需要并将所述逐出需要转发到握手处理460。
处理573等待直到通过握手处理460接收到确认信号为止。当在处理573中接收到确认信号时,处理576使用与确认信号一起接收的关于所选逐出候选项的信息,并且使用地址映射装置245逐出指令高速缓存218中的对应临时加载单元220。如果处理577确定没有足够的空间来存储作为所请求加载单元260的副本的临时加载单元220,则处理577将控制转移到处理572以创建另一逐出需要。可以重复处理572至577,直到指令高速缓存218中的可用存储区足以存储作为所请求加载单元260的副本的临时加载单元220的全部或部分。当处理577确定有足够的空间将所请求加载单元260的临时副本220的全部或部分存储在指令高速缓存218中时,处理577转换到处理578以将临时加载单元220的全部或部分存储在指令高速缓存218中。处理579确定临时加载单元220是否完全被加载,如果是,则完成处理570。如果临时加载单元220没有完全被加载,则处理579转换到处理564以读取所请求加载单元的另一部分。重复处理564至579,直到所请求加载单元260的完整副本被复制到指令高速缓存218中的对应临时加载单元218中。
现在应理解,在一些实施例中,已经提供了一种处理系统,其可以包括微控制器装置和微控制器装置外部的外部存储器装置。外部存储器装置可耦合到微控制器装置。微控制器装置可以包括被配置成执行应用程序代码的总线主控器(202-206)、在微控制器装置内部并且经由互连件耦合到总线主控器的随机存取存储器(RAM)装置(216)。RAM装置可以包括系统存储器部分(222)和指令部分(218)。指令部分可以被配置成存储来自外部存储器装置的加载单元的子集的副本以供应用程序代码使用。加载单元可以包括可执行指令和/或数据,并且与应用程序代码中的对应一个相关联。高速缓存控制器装置(224)可以耦合到随机存取存储器和外部存储器装置并且可以包括加载实体队列。加载实体队列中的每一个与总线主控器中的一个相关联。高速缓存控制器装置可以被配置成:管理一组逐出候选项;周期性地从指令部分中的加载单元的副本中选择逐出候选项;如果加载实体队列中的至少一个否决了逐出候选项,则丢弃逐出候选项;并且用所请求加载单元的副本替换指令部分中的逐出候选项。
在另一方面,所述加载实体队列中的每一个可以被配置成请求加载单元(260)的加载,并且周期性地从与加载实体队列相关联的指令部分中的加载单元的副本中选择要包括在一组被管理逐出候选项中的逐出候选项。
在另一方面,高速缓存控制器可以另外包括:地址映射装置(245),其能用以管理内部存储器(216)的指令部分(218),包括跟踪由加载单元(220)的子集的副本占用的存储区和指令部分内不由加载单元的子集的副本占用的可用存储区。
在另一方面,高速缓存控制器可以另外包括:加载管理器装置,其被配置成处理从外部存储器装置加载加载单元的请求,并在地址映射装置中查询指令部分(218)内的大小足以存储所请求加载单元的至少一部分的副本的可用存储位置。
在另一方面,处理系统可以另外包括耦合到加载实体队列226和地址映射装置的高速缓存替换管理器装置(230)。当没有足够的存储区来存储所请求加载单元的完整副本时,高速缓存替换管理器装置可以根据地址映射装置(245)的请求选择一组被管理逐出候选项中的一个,并且验证所选逐出候选项。地址映射装置(245)通过以下项来对加载管理器装置(228)的查询作出响应:当有足够的存储空间可用时提供可用存储位置,并且从高速缓存替换管理器装置(230)重复请求额外逐出候选项且从指令部分逐出额外逐出候选项,直到指令部分中有足够的存储空间可用于所请求加载单元的完整副本为止。
在另一方面,高速缓存控制器装置可以另外被配置成:将逐出候选项广播到加载实体队列;并且当接收到确认信号而没有来自所有加载实体队列的否决响应时,验证逐出候选项。
在另一方面,当相应加载实体队列当前不需要与逐出候选项相对应的加载单元时,相应加载实体队列可以同意使用广播的逐出候选项。
在另一方面,每个加载实体队列可以与确切一个总线主控器相关联,并且每个加载实体队列仅管理与由对应总线主控器执行的应用程序代码相关联的加载单元。
在另一方面,当加载单元满足以下条件中的至少一个时:a)加载单元当前由与加载实体队列相关联的总线主控器使用,b)加载单元最近已由与加载实体队列相关联的总线主控器使用,以及c)加载实体队列知道加载单元将在可预见的将来由与加载实体队列相关联的总线主控器使用,相应加载实体队列可以将加载单元的副本标识为当前需要。
在另一方面,每个加载单元可以由与外部存储器中的地址范围相对应的地址范围指定,并且加载单元中的至少两个具有不同长度。
在其它实施例中,一种在具有多个总线主控器的微控制器中的内部存储器与微控制器外部的非易失性存储器装置之间管理可执行指令的加载单元的方法,所述方法可以包括将加载单元的副本从外部存储器装置加载到内部存储器中以供对应总线主控器使用。每个加载单元可以与对应加载实体队列相关联并且每个加载实体队列与多个总线主控器中的对应一个相关联。每个加载实体队列可以从当前加载于内部存储器中的加载单元的相关联副本中选择逐出候选项。可以将标识用于每个加载实体队列的逐出候选项的信息广播到所有加载实体队列。如果没有加载实体队列否决使用逐出候选项,则可以将逐出候选项添加到一组被管理逐出候选项中。
在另一方面,所述方法可以另外包括:周期性地从与每个加载实体队列相关联的内部存储器中的加载单元的副本中选择逐出候选项;如果加载实体队列中的至少一个否决了逐出候选项,则丢弃逐出候选项;以及用所请求加载单元的副本替换内部存储器中的逐出候选项。
在另一方面,如果加载实体队列中的一个正使用加载单元的副本,则所述加载实体队列否决逐出候选项。
在另一方面,所述方法可以另外包括当所有加载实体队列确定以下各项中的至少一项时:a)逐出候选项不与当前使用的加载单元的副本相对应,以及b)最近未使用与逐出候选项相对应的加载单元的副本,批准逐出候选项。
在另一方面,所述方法可以另外包括通过跟踪由加载单元(220)的每个副本占用的存储区和内部存储器内不由加载单元的副本占用的可用存储区来管理内部存储器(216)中的加载单元的副本,其中加载单元的副本中的至少两个具有不同长度。
在另一方面,所述方法可以另外包括对内部存储器(116)内的可用存储位置发出查询,所述存储位置的大小足以存储所请求加载单元的副本或所请求加载单元的副本的一部分。
在另一方面,所述方法另外包括通过以下项来对查询作出响应:当有足够的存储空间可用时提供可用存储位置,并且重复请求额外逐出候选项,直到指令部分中有足够的存储空间可用于加载单元的副本为止。
在另一方面,所述方法可以另外包括当接收到确认信号而没有来自所有加载实体队列的否决响应时,验证逐出候选项。
在另一方面,所述方法可以另外包括当对应加载实体队列当前不需要与逐出候选项相关联的加载单元的副本时,同意使用广播的逐出候选项。
在另一方面,每个加载实体队列可以与确切一个总线主控器相关联,并且每个加载实体队列仅管理与由对应总线主控器执行的应用程序代码相关联的加载单元。
尽管本文公开的所描述的示例性实施例涉及可应用于用于管理高速缓存替换的系统和方法的方法和系统,但本发明不一定限于本文所示的示例实施例,并且本文公开的电路系统和方法的各种实施例可以用其它装置和电路部件来实施。因此,上述公开的具体实施例仅为示意性并且不应该视为对本发明的限制,因为本发明可以不同的但是等效的方式来修改和实施,这些方式对于得益于在此的教导的本领域技术人员来说是显而易见的。相应地,前述描述并不意图将本发明限制于特定形式阐述,但是相反,其意图覆盖如可以包括于如由所附权利要求书限定的本发明的精神和范围内的此类替代方案、修改和等效物,使得本领域的技术人员应该理解在不背离本发明的精神和范围的情况下,它们可以其最广泛形式做出各种改变、替代和变化。
已经参考附图详细地描述了本发明的各种示意性实施例。虽然在前述描述中阐述了各种细节,但是应了解,可在没有这些具体细节的情况下实践本发明,并且可以对本文中所描述的本发明做出许多具体的实施决策以实现电路设计者的具体目标,例如与工艺技术或相关设计限制的依从,这种限制随不同的实施方案而不同。虽然此类研发的工作可能是复杂且耗时的,然而它对于受益于本公开的本领域的普通技术人员来说不过是常规的任务日常工作。例如,以框图形式而非具体地示出了所选方面,以便避免限制或混淆本发明。另外,本文提供的详细描述的一些部分可以实施为软件或对计算机存储器内的数据的操作,通过硬件电路系统或固件或软件、硬件和固件的组合来实施。此类描述和表示由本领域的技术人员使用,以将他们的工作的实质描述和传达给本领域的其它技术人员。例如MCU 201(图2)和芯片上系统(SoC)之类的微控制器(MCU)是由集成电路形成的小型计算机处理系统的例子。每个处理系统包含一个或多个中央处理单元(CPU)、用于存储可执行软件指令和/或数据的存储器、例如计时器等可编程外围设备等。集成电路用以执行软件和/或固件指令,和/或单独使用硬件电路执行特定功能和/或存储信息。参考MCU 201和/或在MCU 201上执行的方法和处理来描述本公开,应理解,本公开可以在许多类型的计算机处理系统中找到用途,并且不应限于在MCU中使用。本文中术语“装置”的使用是指存储例如指令和/或数据的信息和/或在软件或固件中执行指令的电路系统、硬件电路本身和/或用于存储指令和/或数据和/或使用软件、固件和/或硬件执行功能的电路系统的组合。
上文关于特定实施例描述了益处、其它优点和问题的解决方案。然而,可致使任何益处、优点或问题的解决方案发生或者变得更显著的那些益处、优点、问题的解决方案和任何元件,均不得被理解为任何权利要求或所有权利要求的关键的、要求的、或者必需的特征或元件。如本文所使用,术语“包括(comprises)”、“包括(comprising)”或其任何其它变型旨在涵盖非排它的包含物,使得包括一系列元件的过程、方法、装置、物件或设备不仅仅包括那些元件,而且可包括并未明确地列出的或并非此类过程、方法、装置、物件或设备固有的其它元件。
虽然本文中参考特定实施例描述了本公开,但是在不脱离如所附权利要求书所阐述的本公开的范围的情况下可以进行各种修改和改变。因此,应在说明性而非限制性意义上看待本说明书和图式,并且预期所有此类修改都包括在本公开的范围内。并不意图将本文中关于具体实施例所描述的任何益处、优点或问题的解决方案理解为任何或所有权利要求的关键、必需或必不可少的特征或元件。
Claims (10)
1.一种处理系统,其特征在于,包括:
微控制器装置;
在所述微控制器装置外部的外部存储器装置,所述外部存储器装置耦合到所述微控制器装置;
所述微控制器装置包括:
总线主控器,其被配置成执行应用程序代码;
随机存取存储器RAM装置,其在所述微控制器装置内部并且经由互连件耦合到所述总线主控器,所述RAM装置包括系统存储器部分和指令部分,所述指令部分被配置成存储来自所述外部存储器装置的加载单元的子集的副本以供所述应用程序代码使用,其中所述加载单元包括可执行指令和/或数据,并且与所述应用程序代码中的对应一个相关联;
缓存控制器装置,其耦合到所述随机存取存储器和所述外部存储器装置并且包括加载实体队列,所述加载实体队列中的每一个与所述总线主控器中的一个相关联,所述缓存控制器装置被配置成:
管理一组逐出候选项;
周期性地从所述指令部分中的所述加载单元的所述副本中选择逐出候选项;
如果所述加载实体队列中的至少一个否决所述逐出候选项,则丢弃所述逐出候选项;并且
用所请求加载单元的副本替换所述指令部分中的所述逐出候选项。
2.根据权利要求1所述的处理系统,其特征在于,所述加载实体队列中的每一个被配置成请求加载单元的加载,并且周期性地从与所述加载实体队列相关联的所述指令部分中的所述加载单元的所述副本中选择要包括在所述一组被管理逐出候选项中的逐出候选项。
3.根据权利要求1所述的处理系统,其特征在于,所述缓存控制器另外包括:
地址映射装置,其能运行来管理所述内部存储器的所述指令部分,包括跟踪由所述加载单元的子集的所述副本占用的存储区和所述指令部分内不由所述加载单元的子集的所述副本占用的可用存储区。
4.根据权利要求1所述的处理系统,其特征在于,所述缓存控制器装置另外被配置成:
将所述逐出候选项广播到所述加载实体队列;
当接收到确认信号而没有来自所有加载实体队列的否决响应时,验证所述逐出候选项。
5.根据权利要求1所述的处理系统,其特征在于,每个加载实体队列与确切一个总线主控器相关联,并且每个加载实体队列仅管理与由对应总线主控器执行的应用程序代码相关联的加载单元。
6.一种在具有多个总线主控器的微控制器中的内部存储器与所述微控制器外部的非易失性存储器装置之间管理可执行指令的加载单元的方法,其特征在于,所述方法包括:
将所述加载单元的副本从所述外部存储器装置加载到所述内部存储器中以供对应总线主控器使用,每个加载单元与对应加载实体队列相关联并且每个加载实体队列与所述多个总线主控器中的对应一个相关联;
通过每个加载实体队列从当前加载于所述内部存储器中的所述加载单元的相关联副本中选择逐出候选项;
将标识用于每个加载实体队列的所述逐出候选项的信息广播到所有加载实体队列;以及
如果没有所述加载实体队列否决使用所述逐出候选项,则将所述逐出候选项添加到一组被管理逐出候选项中。
7.根据权利要求6所述的方法,其特征在于,另外包括:
周期性地从所述内部存储器中与每个加载实体队列相关联的所述加载单元的所述副本中选择逐出候选项;
如果所述加载实体队列中的至少一个否决所述逐出候选项,则丢弃所述逐出候选项;以及
用所请求加载单元的副本替换所述内部存储器中的所述逐出候选项。
8.根据权利要求6所述的方法,其特征在于,如果所述加载实体队列中的一个正使用所述加载单元的所述副本,则所述加载实体队列否决所述逐出候选项。
9.根据权利要求6所述的方法,其特征在于,另外包括:通过跟踪由所述加载单元的每个副本占用的存储区和所述内部存储器内不由所述加载单元的所述副本占用的可用存储区来管理所述内部存储器中的所述加载单元的所述副本,其中所述加载单元的所述副本中的至少两个具有不同长度。
10.根据权利要求6所述的方法,其特征在于,每个加载实体队列与确切一个总线主控器相关联,并且每个加载实体队列仅管理与由所述对应总线主控器执行的应用程序代码相关联的加载单元。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/869,249 US11379380B2 (en) | 2020-05-07 | 2020-05-07 | Systems and methods for managing cache replacement |
US16/869,249 | 2020-05-07 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113626345A true CN113626345A (zh) | 2021-11-09 |
Family
ID=75659940
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110497559.XA Pending CN113626345A (zh) | 2020-05-07 | 2021-05-07 | 管理高速缓存替换的系统和方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11379380B2 (zh) |
EP (1) | EP3910484B1 (zh) |
CN (1) | CN113626345A (zh) |
Family Cites Families (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6633891B1 (en) | 1998-11-24 | 2003-10-14 | Oracle International Corporation | Managing replacement of data in a cache on a node based on caches of other nodes |
US6408362B1 (en) * | 1999-06-24 | 2002-06-18 | International Business Machines Corporation | Data processing system, cache, and method that select a castout victim in response to the latencies of memory copies of cached data |
US7069388B1 (en) | 2003-07-10 | 2006-06-27 | Analog Devices, Inc. | Cache memory data replacement strategy |
US7669009B2 (en) | 2004-09-23 | 2010-02-23 | Intel Corporation | Method and apparatus for run-ahead victim selection to reduce undesirable replacement behavior in inclusive caches |
US7774549B2 (en) * | 2006-10-11 | 2010-08-10 | Mips Technologies, Inc. | Horizontally-shared cache victims in multiple core processors |
US7840759B2 (en) | 2007-03-21 | 2010-11-23 | International Business Machines Corporation | Shared cache eviction |
US9519540B2 (en) * | 2007-12-06 | 2016-12-13 | Sandisk Technologies Llc | Apparatus, system, and method for destaging cached data |
US9122617B2 (en) | 2008-11-21 | 2015-09-01 | International Business Machines Corporation | Pseudo cache memory in a multi-core processor (MCP) |
US8117397B2 (en) * | 2008-12-16 | 2012-02-14 | International Business Machines Corporation | Victim cache line selection |
US8327073B2 (en) * | 2009-04-09 | 2012-12-04 | International Business Machines Corporation | Empirically based dynamic control of acceptance of victim cache lateral castouts |
US8250332B2 (en) | 2009-06-11 | 2012-08-21 | Qualcomm Incorporated | Partitioned replacement for cache memory |
US8601216B2 (en) | 2010-08-31 | 2013-12-03 | Oracle International Corporation | Method and system for removing cache blocks |
US9021206B2 (en) | 2011-08-25 | 2015-04-28 | International Business Machines Corporation | Use of cache statistics to ration cache hierarchy access |
US9251086B2 (en) * | 2012-01-24 | 2016-02-02 | SanDisk Technologies, Inc. | Apparatus, system, and method for managing a cache |
US9672161B2 (en) | 2012-12-09 | 2017-06-06 | Advanced Micro Devices, Inc. | Configuring a cache management mechanism based on future accesses in a cache |
US9372811B2 (en) | 2012-12-13 | 2016-06-21 | Arm Limited | Retention priority based cache replacement policy |
US9280478B2 (en) | 2013-04-26 | 2016-03-08 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Cache rebuilds based on tracking data for cache entries |
US9430394B2 (en) * | 2013-12-12 | 2016-08-30 | Mediatek Singapore Pte. Ltd. | Storage system having data storage lines with different data storage line sizes |
US9418019B2 (en) | 2013-12-31 | 2016-08-16 | Samsung Electronics Co., Ltd. | Cache replacement policy methods and systems |
US20160055100A1 (en) * | 2014-08-19 | 2016-02-25 | Advanced Micro Devices, Inc. | System and method for reverse inclusion in multilevel cache hierarchy |
US10120712B2 (en) | 2016-07-05 | 2018-11-06 | Nxp Usa, Inc. | Instruction pre-fetching |
US10120713B2 (en) | 2016-07-05 | 2018-11-06 | Nxp Usa, Inc. | Hardware controlled instruction pre-fetching |
US20180173636A1 (en) | 2016-12-20 | 2018-06-21 | Intel Corporation | Increasing lifetime reliability for a cache memory |
US10540281B2 (en) * | 2017-01-17 | 2020-01-21 | Arm Limited | Cache allocation based on quality-of-service monitoring |
US10496551B2 (en) * | 2017-06-28 | 2019-12-03 | Intel Corporation | Method and system for leveraging non-uniform miss penality in cache replacement policy to improve processor performance and power |
KR101976320B1 (ko) | 2018-04-25 | 2019-05-07 | 연세대학교 산학협력단 | 라스트 레벨 캐시 메모리 및 이의 데이터 관리 방법 |
US10521149B2 (en) * | 2018-05-30 | 2019-12-31 | Red Hat, Inc. | Memory poisoning support for free page hinting |
-
2020
- 2020-05-07 US US16/869,249 patent/US11379380B2/en active Active
-
2021
- 2021-04-23 EP EP21170204.8A patent/EP3910484B1/en active Active
- 2021-05-07 CN CN202110497559.XA patent/CN113626345A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
EP3910484B1 (en) | 2023-07-26 |
US20210349834A1 (en) | 2021-11-11 |
EP3910484A1 (en) | 2021-11-17 |
US11379380B2 (en) | 2022-07-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8478931B1 (en) | Using non-volatile memory resources to enable a virtual buffer pool for a database application | |
US8447905B2 (en) | Dynamic multi-level cache including resource access fairness scheme | |
US9086920B2 (en) | Device for managing data buffers in a memory space divided into a plurality of memory elements | |
US20180039523A1 (en) | Information processing system that determines a memory to store program data for a task carried out by a processing core | |
CN111897651B (zh) | 一种基于标签的内存系统资源管理方法 | |
US11366689B2 (en) | Hardware for supporting OS driven observation and anticipation based on more granular, variable sized observation units | |
US8566532B2 (en) | Management of multipurpose command queues in a multilevel cache hierarchy | |
KR20110050457A (ko) | 플래시 메모리 저장 장치에서 동적 메모리 할당에 의해 일어나는 자기 축출을 회피하는 방법 | |
WO2024078342A1 (zh) | 内存交换方法、装置、计算机设备及存储介质 | |
JP2004527040A (ja) | 非揮発性メモリをバッファーリングするために揮発性メモリを用いること | |
US20060150189A1 (en) | Assigning tasks to processors based at least on resident set sizes of the tasks | |
EP3702911B1 (en) | Hardware for supporting os driven load anticipation based on variable sized load units | |
US11003495B2 (en) | Dynamic access of task queues in a parallel processing system | |
US7293144B2 (en) | Cache management controller and method based on a minimum number of cache slots and priority | |
WO2017018976A1 (en) | Lock manager | |
WO2014165514A1 (en) | Embedded memory management scheme for real-time applications | |
CN113626345A (zh) | 管理高速缓存替换的系统和方法 | |
WO2017142525A1 (en) | Allocating a zone of a shared memory region | |
US10740150B2 (en) | Programmable state machine controller in a parallel processing system | |
JP4792065B2 (ja) | データ記憶方法 | |
US11314686B2 (en) | Hardware for supporting time triggered load anticipation in the context of a real time OS | |
JP5847313B2 (ja) | 情報処理装置 | |
US11106589B2 (en) | Cache control in a parallel processing system | |
CN113448897B (zh) | 适用于纯用户态远端直接内存访问的优化方法 | |
EP4116829A1 (en) | Systems and methods for managing variable size load units |
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 |