CN107851065A - 预先缓存分配器 - Google Patents
预先缓存分配器 Download PDFInfo
- Publication number
- CN107851065A CN107851065A CN201680041970.3A CN201680041970A CN107851065A CN 107851065 A CN107851065 A CN 107851065A CN 201680041970 A CN201680041970 A CN 201680041970A CN 107851065 A CN107851065 A CN 107851065A
- Authority
- CN
- China
- Prior art keywords
- caching
- memory
- message
- processor core
- private part
- 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.)
- Granted
Links
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
- 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/0877—Cache access modes
- G06F12/0879—Burst mode
-
- 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/0864—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
-
- 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/0893—Caches characterised by their organisation or structure
- G06F12/0895—Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
-
- 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
-
- 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
-
- 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/6028—Prefetching based on hints or prefetch instructions
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
描述了用于预先缓存分配的系统和技术。所描述的技术包括从多个作业中选择作业;从多个处理器核心中选择处理器核心以执行选定作业;接收对由选定作业生成的未来存储器访问进行描述的消息;基于所述消息生成存储器突发请求;执行所述存储器突发请求以将数据从存储器至少加载到缓存的专用部分,所述缓存对应于选定处理器核心;以及在选定处理器核心上启动选定作业。该技术可以包括执行由发送消息指示的动作,以将一个或多个来自所述缓存的另一个专用部分的值写入存储器。
Description
相关申请交叉引用
本申请要求于2015年7月28日提交的序列号为14/811,436、发明名称为“预先缓存分配器”的美国非临时专利申请的优先权,其全部内容通过引用结合在本申请中。
背景技术
本专利文件一般涉及内存缓存技术和系统。计算机系统可以包括用以执行程序的一个或多个处理器和用以存储与所述程序相关联的数据的存储器,例如,随机存取存储器(RAM)。程序可以包括用以读取存储器中数据的加载指令和用以将数据写入存储器的存储指令。如果缓存不具有请求的数据,则会发生缓存未命中,并且系统必须从另一个存储器访问数据,例如,不同层的缓存,或者更糟糕的是从主存储器访问数据。一些计算机系统可以采用诸如缓存预取或缓存预热等技术。
发明内容
本文件尤其描述了与预先缓存分配有关的技术。一方面,所描述的技术包括从多个作业中选择作业;从多个处理器核心中选择处理器核心以执行选定作业;接收对由选定作业生成的未来存储器访问进行描述的消息;基于所述消息生成存储器突发请求;执行所述存储器突发请求以将数据从存储器至少加载到缓存的专用部分,所述缓存对应于选定处理器核心;以及在选定处理器核心上启动选定作业。所述技术可以包括执行由发送消息指示的动作,以将一个或多个来自所述缓存的另一个专用部分的值写入存储器。
另一方面,一种用于预先缓存分配的系统可以包括:总线,提供对存储器的访问;处理器核心;缓存,分别与所述处理器核心和所述总线耦合;和控制器。所述控制器用于:从多个作业中选择作业以产生选定作业;选择所述处理器核心的处理器核心作为选定处理器核心来执行所述作业;接收对由所述选定作业生成的未来存储器访问进行描述的消息;基于所述消息生成存储器突发请求;执行所述存储器突发请求以将数据从存储器至少加载到多个缓存的缓存的专用部分,所述缓存对应于选定处理器核心;以及在选定处理器核心上启动所述选定作业。
另一方面,一种用于预先缓存分配的系统可以包括:总线,提供对存储器的访问;处理器核心;缓存,分别与所述处理器核心和所述总线耦合;作业选择元件,从多个作业中选择作业以产生选定作业;处理器核心选择元件,选择所述处理器核心的处理器核心作为选定处理器核心来执行所述选定作业;接收元件,接收对由所述选定作业生成的未来存储器访问进行描述的消息;生成元件,基于所述消息生成存储器突发请求;处理元件,执行所述存储器突发请求以将数据从存储器至少加载到多个缓存的缓存的专用部分,所述缓存对应于选定处理器核心;选定处理器核心启动所述选定作业。
又一方面,一种用于预先缓存分配的装置可以包括:第一电路,例如,控制器、处理器或专用逻辑,用于从多个作业中选择作业以产生选定作业;选择多个处理器核心的处理器核心作为选定处理器核心来执行所述选定作业;以及在选定处理器核心上启动所述选定作业;和第二电路,例如,控制器、处理器或专用逻辑,用于接收对由所述选定作业生成的未来存储器访问进行描述的消息;基于所述消息生成存储器突发请求;以及执行所述存储器突发请求以将数据从存储器至少加载到缓存的专用部分,所述缓存对应于选定处理器核心。
本文所述主题的一个或多个实施例的细节在以下附图和说明书中进行阐述。通过说明书、附图和权利要求,主题的其它特征、方面和优点将变得显而易见。
附图说明
图1示出了包括预先缓存分配器的系统的示例的架构。
图2示出了包括预先缓存分配器的计算机系统的另一示例的架构。
图3示出了执行预先缓存分配的过程的示例的流程图。
图4示出了预先缓存分配过程的示例的时间线。
图5示出了由预先缓存分配器状态机实施的过程的示例的流程图。
图6示出了计算机系统的缓存相关部分的示例的架构。
具体实施方式
诸如台式计算机、服务器、智能手机、平板电脑、膝上型计算机和其它设备的计算机系统需要可能具有存储检索成本的数据。这种存储检索成本可以根据时间来表征,获得数据的时间越长成本就越高。可以将数据存储在通常具有最低访问成本的缓存中,如高速存储器。然而,缓存中通常存在有限的空间,其中,可以将数据存储为缓存存储器。将设备需要并存储在缓存中的数据看作缓存命中(例如,所请求的数据在缓存中),可以将设备需要而不在缓存中的数据看作缓存未命中(例如,请求的数据未发现在缓存中)。为了使存储检索成本最小化,优选增加缓存命中率。公开了可以增加缓存命中率的系统与方法。
在一些实现方式中,在处理器在作业之间切换之前,预先缓存分配器(ACA)可以确定将由下一个作业使用的特定存储器区域。ACA可以使该存储器区域内的数据元素加载到处理器的缓存中。例如,作业可以对诸如缓冲区的存储器区域中的数据元素进行处理。ACA可以使该缓冲区中的数据元素加载到处理器的缓存中,使得作业经历相对于缓冲区的缓存命中。一部分缓存可以专用于这些预先缓存分配。
为了实现以下一个或多个优点,可以实现本文中所述技术的特定实施例。计算机系统可以在不修改诸如处理器、缓存和/或缓存控制器逻辑的硬件组件的前提下将一个或多个预先缓存分配器集成到其设计中。预先缓存分配可以增加缓存命中率。
图1示出了包括预先缓存分配器140的系统101的示例的架构。系统101可以包括一个或多个处理器105、缓存110、缓存控制器130、预先缓存分配器140、存储器150和作业调度器160。缓存110可以包括数据缓存、指令缓存或两者。可以将预先缓存分配应用于数据缓存、指令缓存或两者。在一些实现方式中,存储器150是较高级的缓存。在一些实现方式中,存储器150是主存储器。在一些实现方式中,系统101是多核系统,其中每个处理器核心具有其自己的缓存和缓存控制器。缓存110可以是位于处理器管芯上的L1、L2或L3缓存。在其它情况下,缓存110可以在单独设备的另一个半导体芯片上实现,所述设备与系统101通信。
缓存110可以是N路组关联缓存。缓存110包括多个时隙116a-m。每个时隙116a-m是为与存储器150相关联的不同组存储器地址保留的不同部分的缓存110。每个时隙116a-m包括N路118a-n(标记为W1,W2,...,WN)。例如,N可以是8。然而,N也可以是其它值。如果缓存110不能满足来自处理器105的存储器请求,则缓存控制器130可以将与所述存储器请求相对应的一个或多个数据元素从存储器150加载到缓存110中。缓存控制器130可能必须重写时隙116a-m内的数据以存储新数据。为了处理新数据,可以基于诸如最近最少使用(LRU)或先进先出(FIFO)的缓存替换策略来选择时隙116a-m内的一路118a-n。
当处理器105在作业之间切换时,缓存110内的任何数据可能不会被新作业使用。因此,新作业最初可能会经历高度的缓存未命中。为了解决这种未命中,预先缓存分配器140可以在处理器105执行作业时将新作业将使用的数据元素从存储器150加载到缓存110的ACA部分145。通过在处理器105执行作业时进行加载,预先缓存分配器140可以在作业需要使用数据之前将数据加载到缓存110的ACA部分145。例如,第一作业可以输出数组中的值以供第二作业使用。基于知道第二作业将需要数组中的值,预先缓存分配器140可以在第二作业需要值之前将这些值加载到缓存110。当数据在需要之前成功加载时,结果是缓存命中并且在访问数据时相应增加速度。如果没有,则结果是缓存未命中,并且在未命中之后,按照作业在缺少ACA时原本执行的情况执行作业。这种技术提供了与预热和其它技术的区别。处理器105或作业调度器160可以生成诸如接收消息的信息,所述接收消息详细描述将由新作业访问的特定存储器区域。在一些实现方式中,这种细节可以包括用以指定数据元素的范围的存储器指针和尺寸值,这些数据元素在存储器指针指向的位置上开始。基于接收消息,预先缓存分配器140可以将数据元素从存储器150的特定存储器区域加载到缓存110的ACA部分145。例如,作业可以处理来自存储器区域的数据元素,诸如已知缓冲区。当新作业在处理器105上运行时,预先缓存分配器140可以使来自该缓冲区的数据元素加载到缓存110中。此外,作业可以将数据元素输出到缓冲区以供另一作业处理,所述另一作业可以在具有不同缓存的不同处理器上执行。
在一些实现方式中,处理器105或作业调度器160可以生成诸如发送消息的信息,所述发送消息详细描述需要从缓存110传输到存储器150的特定存储器区域。作业调度器160可以发出发送消息,使得由作业写入缓冲区中的数据元素被提交给存储器150。基于发送消息,预先缓存分配器140可以将存储在缓存110中的数据元素写入存储器150的特定存储器区域。在一些实现方式中,预先缓存分配器140可以在后台处理发送消息,同时预先缓存分配器140用接收消息指定的数据元素加载缓存110。
在一些实现方式中,每个时隙116a-m的一路或多路118a-n可以专用于预先缓存分配器140。在一些实现方式中,ACA部分145可以包括与接收消息相关联的数据的专用部分和与发送消息相关联的数据的专用部分。例如,缓存时隙可以包括与接收消息相关联的数据元素的一条或多条专用路径以及与发送消息相关联的数据元素的一条或多条专用路径。在一些实现方式中,预先缓存分配器140可以配置ACA部分145的尺寸。在一些实现方式中,芯片系统(SoC)可以包括图1中的部分或全部组件。在一些实现方式中,单个集成电路(IC)可以包括处理器105、缓存110、缓存控制器130、预先缓存分配器140和作业调度器160。在一些实现方式中,这样的IC可以另外包括存储器150。
图2示出了包括预先缓存分配器230a-d的计算机系统201的另一示例的架构。计算机系统201可以包括具有相应的缓存210a-d的处理器核心205a-d、缓存控制器215a-d和预先缓存分配器230a-d。计算机系统201可以包括调度器220、总线240和存储器250。计算机系统201可以是基于消息的系统。调度器220可以调度处理器核心205a-d上的作业。在处理器核心205a-d上执行作业可以包括执行来自软件的指令,例如,操作系统例程或应用程序。在一些实现方式中,作业可以与进程标识符相关联。在一些实现方式中,调度器220使处理器核心205a-d在不同作业间切换。在作业切换之前或当新作业正在目标处理器核心205a上运行时,调度器220可以向与目标处理器核心205a对应的预先缓存分配器230a发送消息,以通知预先缓存分配器230a开始将数据元素加载到缓存210a中以供下一个作业使用。
经由缓存控制器215a-d的处理器请求可以绕过缓存分配器230a-d。此外,预先缓存分配器230a-d可以基于下一个作业的目标存储器范围来生成诸如突发存储器请求的存储器请求。突发存储器请求可用于填充多个缓存行。在一些实现方式中,总线240可以在经由缓存控制器215a-d来自处理器核心205a-d的请求以及由预先缓存分配触发器生成的请求之间仲裁。在一些实现方式中,核心存储器请求具有比基于预先缓存分配的请求更高的优先级。
在一些实现方式中,调度器220包括处理器核心。在一些实现方式中,调度器220包括存储器分配器。在一些实现方式中,缓存控制器215a-d可以包括相应的预先缓存分配器230a-d。在一些实现方式中,可以将计算机系统201设计为预先缓存分配器230a-d被合并到单个分配器中。在一些实现方式中,系统201的至少一部分可以在单个集成电路上实现,其中,每个预先缓存分配器230a-d具有其自身的集成电路部分。
图3示出了执行预先缓存分配的过程的示例的流程图。在300中,所述过程可以从一组作业中选择作业。选择作业可以包括确定该组作业的作业优先级并选择优先级最高的作业。选择作业可以包括从诸如先进先出(FIFO)队列或其它类型队列的队列中获取处理器标识符或作业标识符。选择作业可以包括处理进程间通信(IPC)消息流量并选择与IPC消息的目的地对应的作业。在305中,所述过程可以从一组处理器核心中选择处理器核心来执行选定作业。选择处理器核心可以包括确定处理器核心是空闲还是将要空闲。在310中,所述过程可以在选定处理器核心上启动选定作业。
在315中,所述过程可以接收对由选定作业生成的未来存储器访问进行描述的消息。在一些实现方式中,这种消息可以称为接收消息、RECV消息或RCV消息。在一些实现方式中,这种消息可以包括指向缓冲区的指针和缓冲区的尺寸值。在一些实现方式中,尺寸值是以字节为单位的缓冲区尺寸或字节的倍数,比如:字。在一些实现方式中,这种消息可以包括起始地址和尺寸值。在一些实现方式中,这种消息可以由一个或多个与选定作业相关联的指令生成。在一些实现方式中,这种消息可以由另一个作业的一个作业生成。例如,一个作业写入缓冲区,而另一个作业从缓冲区读取。在一些实现方式中,这种消息可以由调度器生成。在某些情况下,RECV消息包含访问由作业处理的数据所需的信息(例如,指针、尺寸或两者)。对于不适合所分配的ACA缓存的较大缓冲区,ACA可以从处理器或调度器获取提示以指示加载哪些部分。基于处理器的进一步提示,额外加载缓存可以稍后发生。这可能与L1缓存不同,因为缓存中不具有数据仅导致缓存未命中并且随后从其它地方检索数据。对于L1缓存而言,不具有数据可能导致系统中断或错误。在某些情况下,调度器运行作业来处理数据。在一些实现方式中,作业接收用以指示数据位置的消息(例如,RECV消息)。在一些实现方式中,调度器基于一个或多个调度算法来决定调度器希望作业接下来处理哪些数据。
在320中,所述过程可以基于所述消息生成存储器突发请求。在一些实现方式中,生成存储器突发请求以便加载来自缓冲区的数据元素,所述缓冲区由315中接收到的消息指定。数据元素可以是比特、字节、半字节、字、浮点、双精度等。在一些实现方式中,生成存储器突发请求以便加载存储器范围内的所有数据元素,所述存储器范围由315中接收到的消息指定。存储器范围可以由起始地址和尺寸值或结束地址限定。在一些实现方式中,存储器突发请求是在与存储器耦合的总线上发出的单个命令。如果存储器范围大于支持的硬件突发尺寸,则存储器突发请求可以包括两个或更多个与存储器范围的不同部分对应的命令。在一些实现方式中,存储器突发请求指定处理器核心标识符,以使数据元素从存储器传输到与所述处理器核心标识符对应的缓存中。
在325中,所述过程可以执行所述存储器突发请求以将数据从存储器至少加载到缓存的专用部分,所述缓存对应于选定处理器核心。执行存储器突发请求可以包括经由总线向存储器子系统发送一个或多个命令。可以将缓存划分成时隙。时隙可以包括两种或更多种方式。在一些实现方式中,时隙可以包括专用于预先缓存分配的一条或多条路径。所有时隙的专用路径可以形成缓存的专用部分。在一些实现方式中,所述过程可以基于尺寸参数来配置缓存的专用部分的尺寸。尺寸参数可以指定专门用于预先缓存分配的路径数量。在一些实现方式中,所述过程可以执行由发送消息指示的动作,以将一个或多个来自缓存的专用部分的值写入存储器。例如,发送消息可以使所述过程清空一个或多个来自一部分缓存的脏值(dirty value),该部分缓存专用于与一个或多个发送消息相关联的数据。
在一些实现方式中,在启动存储器突发请求之前启动选定作业。在一些实现方式中,基于存储器突发请求的完成来启动选定作业。在一些实现方式中,选定处理器核心仍在运行旧的作业,同时使用来自存储器突发请求的数据元素加载其缓存。来自所运行的旧作业中的存储器请求可以具有比存储器突发请求更高的优先级。在一些实现方式中,当调度器导致从旧作业切换到选定作业时,可以启动选定作业。在启动选定作业之后,缓存的专用ACA部分中的数据可以保持在同一位置,除非需要空间或者以其它方式删除了数据。在一些实现方式中,所述过程可以在存储器突发请求完成之前使选定作业开始访问数据。
图4示出了预先缓存分配过程的示例的时间线。在该示例中,当处理器运行第一作业411时,可以为第二作业412启动缓存分配。响应于对第二作业412的未来存储器访问进行描述的接收消息420,预先缓存分配器可以基于所述接收消息420生成突发请求425。接收消息420可以包括指向存储器区域的指针和尺寸。突发请求425可以使数据元素从接收消息420所识别的存储器区域传输到处理器的缓存中。当处理器开始执行第二作业412时,其可以向存储器生成核心请求430。由于预先缓存分配器使预期的数据元素加载到处理器的缓存中,所以核心请求430导致处理器的缓存的命中。在该示例中,可以在完成突发请求425之前启动第二作业412,这导致重叠440。在重叠440期间,相比于与突发请求425相关联的请求,来自第二作业412的核心请求可以具有优先权。在一些实现方式中,调度器可以调度第一作业411和第二作业412之间的切换发生在突发请求425完成时,以便减少或消除重叠440。在另一示例中,可以先启动第二作业412,其中第二作业412可以执行接收,并且在第二作业412仍然运行时还启动第二作业412的突发请求。
图5示出了由预先缓存分配器状态机实施的过程的示例的流程图。在505中,所述过程等待来自诸如调度器或处理器等来源的触发。触发的各种示例包括接收消息、清空消息或发送消息。其它类型的触发也是可能的。发送消息或清空消息导致写入数据从缓存传输到另一个存储器,例如,较高层缓存或主存储器。在510中,所述过程对触发进行解码。在一些实现方式中,解码触发可以包括提取触发类型,例如,消息类型,提取指向缓冲区的指针和/或提取缓冲区尺寸。
以触发是接收消息为基础,所述过程在515中启动突发请求以获得接收缓冲区数据。在520中,所述过程响应于突发请求从存储器接收数据元素。在525中,所述过程将接收到的数据元素存储在ACA专用缓存路径中。在一些实现方式中,一旦这些元素被ACA接收,将其转发给缓存控制器以便存储在缓存中。在一些实现方式中,所述过程指定路径索引,以使缓存控制器将数据元素存储在ACA专用路径中。存储数据元素之后,所述过程在505中等待另一个触发。
以触发是清空消息或发送消息为基础,所述过程在530中获取来自缓存的数据元素以便缓冲区清空。在535中,所述过程将数据元素写入存储器。在550中,所述过程通知缓存控制器写入完成。清空后,所述过程在505中等待另一个触发。
通常,导致ACA知道可能所需要数据的任一路径或事件均可以触发发送或清空消息。例如,如果处理器知道其需要特定的数据块,则其可以触发ACA来尝试检索数据。在某些情况下,通知ACA处理器不再需要数据的任何信息可能导致缓存控制器清空数据,从而为新的数据块腾出空间。而正常的清空通常由处理器执行,并且基于连续的存储器地址或整个缓存,一经清空,ACA发送/清空就可以释放所用过的路径,从而使ACA有机会引入其它数据。
图6示出了计算机系统的缓存相关部分的示例的架构。在该示例中,描绘了缓存的一个时隙601。时隙601包括标记为W1至W8的八条路径。处理器可以向这些路中的任一个写入或从其中读取。缓存控制器605管理用于处理器核心请求的四条路径(W1至W4)。ACA610a-c管理用于预先缓存分配的其它四条路径(W5至W8)。在该示例中,第一ACA 610a管理W5和W6路径,第二ACA 610b管理W7,第三ACA 610c管理W8。应注意,不同的系统可以具有不同数量的ACA和与图6所示不同的映射。此外,可以动态配置路径映射。在一些实现方式中,基于由作业或一组作业指定的缓冲区尺寸参数,可以通过改变虚拟水印630来动态地增加或减少ACA专用路径的数量。在一些实现方式中,可以基于应用需求和可用路径的总数将水印630用于配置并管理专用路径的数量。例如,如果所有的ACA专用路径被占用,则ACA610a-c可以标志充分条件,并且可以继续以名义路径分配数据。在一些实现方式中,ACA610a-c不会在给定的消息窗口内重写其自身数据。应注意,ACA 610a-c可以为新消息窗口重写先前消息窗口的数据。对于给定的消息窗口,一旦所有四条ACA路径都已满,时隙601中ACA路径的第五数据元素将被忽略或仅仅不被请求。然而,在一些实现方式中,这种第五数据元素可以存储在非ACA专用路径中。在一些实现方式中,核心请求也可以替代ACA专用路径中的数据。在一些实现方式中,时隙601中的一条或多条路径可以专用于核心请求,其中,不允许ACA 610a-c写入一个或多个专用核心路径中。在一些实现方式中,ACA通过缓存控制器且并不直接访问缓存路径。
如果存在缓存未命中,则缓存控制器605可以生成存储器请求。此外,如果存在诸如接收消息或发送消息等触发,则ACA 610a-c可以生成存储器请求。如果存在冲突,仲裁器和总线接口610可以在请求之间进行仲裁。此外,仲裁器和总线接口610可以包括电路以与存储器耦合。在一些实现方式中,缓存控制器605可以使用LRU来管理其路径(W1至W4)中的数据元素。在一些实现方式中,ACA 610a-c可以使用轮询调度缓存策略来管理其路径(W5至W8)中的数据元素。在一些实现方式中,核心和ACA可以对采用同一替换方案的路径进行共享。
预先缓存分配技术可以包括:从多个作业中选择作业;从多个处理器核心中选择处理器核心来执行选定作业;接收对由选定作业生成的未来存储器访问进行描述的消息;基于所述消息生成存储器突发请求;执行所述存储器突发请求以将数据从存储器至少加载到缓存的专用部分,所述缓存对应于选定处理器核心;以及在选定处理器核心上启动选定作业。缓存可以包括多个时隙,其中每个时隙包括一个或多个第一路径和一个或多个第二路径,并且其中所述缓存的专用部分包括每个时隙的一个或多个第一路径。在一些实现方式中,缓存可以包括第一和第二专用部分。实现方式可以包括执行由发送消息指示的动作,以将一个或多个来自所述缓存的第二专用部分的值写入存储器。在一些实现方式中,每个时隙包括一个或多个第一路径、一个或多个第二路径以及一个或多个第三路径。在一些实现方式中,所述缓存的第二专用部分可以包括每个时隙的一个或多个第三路径。实现方式可以包括基于尺寸参数配置所述缓存的专用部分的尺寸。在一些实现方式中,所述消息可以包括起始地址和尺寸值。在一些实现方式中,所述消息可以包括指向缓冲区的指针和缓冲区的尺寸值。在一些实现方式中,所述消息由一个或多个与选定作业相关联的指令生成。在一些实现方式中,所述消息由调度器生成。在一些实现方式中,在启动选定作业之后启动存储器突发请求。实现方式可以包括在存储器突发请求完成之前使选定作业开始访问数据。
一种用于预先缓存分配的系统可以包括:总线,提供对存储器的访问;处理器核心;缓存,分别与所述处理器核心和所述总线耦合;和控制器。所述控制器可以用于:从多个作业中选择作业以产生选定作业;选择所述处理器核心的处理器核心作为选定处理器核心来执行所述作业;接收对由所述选定作业生成的未来存储器访问进行描述的消息;基于所述消息生成存储器突发请求;执行所述存储器突发请求以将数据从存储器至少加载到多个缓存的缓存的专用部分,所述缓存对应于选定处理器核心;以及在选定处理器核心上启动所述选定作业。在一些实现方式中,控制器用于基于尺寸参数配置缓存的专用部分的尺寸。在一些实现方式中,所述消息包括指向缓冲区的指针和缓冲区的尺寸值。在一些实现方式中,所述消息由调度器生成。在一些实现方式中,所述消息由一个或多个指令生成。在一些实现方式中,在启动选定作业之后发起存储器突发请求。在一些实现方式中,控制器用于在存储器突发请求完成之前使选定作业开始访问数据。在一些实现方式中,控制器用于执行由发送消息指示的动作,以将一个或多个来自缓存的第二专用部分的值写入存储器,所述缓存对应于选定处理器核心。
一种用于预先缓存分配的装置可以包括:诸如控制器、处理器或专用逻辑的第一电路和诸如控制器、处理器或专用逻辑的第二电路,其中,所述第一电路用于:从多个作业中选择作业以产生选定作业;选择多个处理器核心的处理器核心作为选定处理器核心来执行所述选定作业;以及在选定处理器核心上启动所述选定作业;所述第二电路,用于:接收对由所述选定作业生成的未来存储器访问进行描述的消息;基于所述消息生成存储器突发请求;以及执行所述存储器突发请求以将数据从存储器至少加载到缓存的专用部分,所述缓存对应于选定处理器核心。在一些实现方式中,所述缓存的专用部分是所述缓存的第一专用部分,所述缓存包括第二专用部分。在一些实现方式中,所述缓存包括多个时隙,其中每个时隙包括一个或多个第一路径、一个或多个第二路径以及一个或多个第三路径。所述缓存的第二专用部分可以包括每个时隙的一个或多个第三路径。在一些实现方式中,第二电路用于执行由发送消息指示的动作,以将一个或多个来自缓存的第二专用部分的值写入存储器,所述缓存对应于选定处理器核心。
虽然本文包含许多具体的实施细节,但是这些不应被解释为对任何发明的范围或所要求保护的范围的限制,而是作为对特定发明的特定实施例特有的特征的描述。在本文的各实施例的上下文中描述的某些特征也可以在单个实施例中以组合方式实现。相反,在单个实施例的上下文中描述的各种特征也可以在多个实施例中各自实现或以任一合适的子组合方式实现。此外,虽然以上可以将特征描述为以某些组合方式起作用,并且甚至最初同样要求保护,但要求保护的组合中的一个或多个特征在某些情况下可以从组合中删除,并且所要求保护的组合可以针对子组合或子组合的变化。
Claims (20)
1.一种方法,其特征在于,包括:
从多个作业中选择作业;
接收对由所述选定作业生成的未来存储器访问进行描述的消息;
基于所述消息生成存储器突发请求;
执行所述存储器突发请求以将数据从存储器至少加载到缓存的专用部分,所述缓存对应于处理器核心;以及
在所述处理器核心上启动所述选定作业。
2.根据权利要求1所述的方法,其中,所述缓存包括多个时隙,其中,每个所述时隙包括一个或多个第一路径和一个或多个第二路径,并且其中所述缓存的专用部分包括每个所述时隙的所述一个或多个第一路径。
3.根据权利要求1或2所述的方法,其中,所述缓存的所述专用部分是所述缓存的第一专用部分,其中,每个所述时隙包括一个或多个第三路径,并且其中所述缓存的第二专用部分包括每个所述时隙的所述一个或多个第三路径,其中所述方法包括执行由发送消息指示的动作,以将一个或多个来自所述缓存的所述第二专用部分的值写入所述存储器。
4.根据权利要求1所述的方法,包括:
基于尺寸参数配置所述缓存的所述专用部分的尺寸。
5.根据权利要求1所述的方法,其中,所述消息包括起始地址和尺寸值。
6.根据权利要求1所述的方法,其中,所述消息包括指向缓冲区的指针和所述缓冲区的尺寸值。
7.根据权利要求1所述的方法,其中,所述消息由一个或多个与所述选定作业相关联的指令生成。
8.根据权利要求1所述的方法,其中,所述消息由调度器生成。
9.根据权利要求1所述的方法,其中,在所述选定作业启动之后发起所述存储器突发请求。
10.根据权利要求1所述的方法,包括:
在所述存储器突发请求完成之前,使所述选定作业开始访问所述数据。
11.一种系统,包括:
总线,提供对存储器的访问;
处理器核心;
缓存,分别与所述处理器核心和所述总线耦合;和
控制器,用于:
从多个作业中选择作业以产生选定作业;
选择所述处理器核心的处理器核心作为选定处理器核心来执行所述选定作业;
接收对由所述选定作业生成的未来存储器访问进行描述的消息;
基于所述消息生成存储器突发请求;
执行所述存储器突发请求以将数据从所述存储器至少加载到多个所述缓存的缓存的专用部分,所述缓存对应于所述选定处理器核心;以及
在所述选定处理器核心上启动所述选定作业。
12.根据权利要求11所述的系统,其中,所述缓存包括多个时隙,其中,每个所述时隙包括一个或多个第一路径和一个或多个第二路径,并且所述缓存的所述专用部分包括每个所述时隙的所述一个或多个第一路径。
13.根据权利要求11或12所述的系统,其中,所述缓存的所述专用部分是所述缓存的第一专用部分,其中,每个所述时隙包括一个或多个第三路径,其中所述缓存的第二专用部分包括每个所述时隙的所述一个或多个第三路径,并且其中所述控制器用于执行由发送消息指示的动作,以将一个或多个来自所述缓存的所述第二专用部分的值写入所述存储器。
14.根据权利要求11所述的系统,其中,所述控制器用于基于尺寸参数配置所述缓存的所述专用部分的尺寸。
15.根据权利要求11所述的系统,其中,所述消息包括指向缓冲区的指针和所述缓冲区的尺寸值。
16.根据权利要求11所述的系统,其中,所述消息由调度器或一个或多个与所述选定作业相关联的指令生成。
17.根据权利要求11所述的系统,其中,在所述选定作业启动之后发起所述存储器突发请求。
18.根据权利要求11所述的系统,其中,所述控制器用于在所述存储器突发请求完成之前使所述选定作业开始访问所述数据。
19.一种装置,包括:
第一电路,用于:从多个作业中选择作业以产生选定作业;选择多个处理器核心的处理器核心作为选定处理器核心来执行所述选定作业;以及在所述选定处理器核心上启动所述选定作业;和
第二电路,用于:接收对由所述选定作业生成的未来存储器访问进行描述的消息;基于所述消息生成存储器突发请求;以及执行所述存储器突发请求以将数据从存储器至少加载到缓存的专用部分,所述缓存对应于所述选定处理器核心。
20.根据权利要求19所述的装置,其中,所述缓存的所述专用部分是所述缓存的第一专用部分,其中,所述缓存包括多个时隙,其中每个所述时隙包括一个或多个第一路径、一个或多个第二路径和一个或多个第三路径,并且所述缓存的第二专用部分包括每个所述时隙的所述一个或多个第三路径,并且其中所述第二电路用于执行由发送消息指示的动作,以将一个或多个来自所述缓存的所述第二专用部分的值写入所述存储器。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/811,436 | 2015-07-28 | ||
US14/811,436 US10042773B2 (en) | 2015-07-28 | 2015-07-28 | Advance cache allocator |
PCT/CN2016/089188 WO2017016380A1 (en) | 2015-07-28 | 2016-07-07 | Advance cache allocator |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107851065A true CN107851065A (zh) | 2018-03-27 |
CN107851065B CN107851065B (zh) | 2020-10-16 |
Family
ID=57882481
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680041970.3A Expired - Fee Related CN107851065B (zh) | 2015-07-28 | 2016-07-07 | 预先缓存分配器 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10042773B2 (zh) |
EP (1) | EP3317769A4 (zh) |
CN (1) | CN107851065B (zh) |
WO (1) | WO2017016380A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112650574A (zh) * | 2020-12-31 | 2021-04-13 | 广州技象科技有限公司 | 基于优先级的任务调度方法、装置、系统和存储介质 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6855182B2 (ja) * | 2016-07-04 | 2021-04-07 | キヤノン株式会社 | 画像処理装置及びその制御方法、並びにプログラム |
KR102620350B1 (ko) | 2017-07-05 | 2024-01-02 | 레드.컴, 엘엘씨 | 전자 디바이스에서의 비디오 이미지 데이터 처리 |
KR102576443B1 (ko) * | 2018-10-26 | 2023-09-07 | 삼성에스디에스 주식회사 | 연산 장치 및 그 잡 스케줄링 방법 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0640921A1 (en) * | 1993-08-24 | 1995-03-01 | Bull HN Information Systems Inc. | High speed cache miss prediction method and apparatus |
US6868485B1 (en) * | 2002-09-27 | 2005-03-15 | Advanced Micro Devices, Inc. | Computer system with integrated directory and processor cache |
US20080183688A1 (en) * | 2006-08-25 | 2008-07-31 | Chamdani Joseph I | Methods and systems for hardware acceleration of database operations and queries |
EP1131702B1 (en) * | 1998-11-16 | 2009-04-22 | Telefonaktiebolaget LM Ericsson (publ) | Improved handling of the results of speculatively executed jobs in a multiprocessing system |
CN101459566A (zh) * | 2007-12-14 | 2009-06-17 | 华为技术有限公司 | 一种时隙环网的时隙调度方法和网络设备 |
CN103810009A (zh) * | 2014-02-20 | 2014-05-21 | 北京奇虎科技有限公司 | 一种计算机操作系统启动加速的方法和装置 |
US20140215157A1 (en) * | 2013-01-30 | 2014-07-31 | Oracle International Corporation | Monitoring multiple memory locations for targeted stores in a shared-memory multiprocessor |
CN104156321A (zh) * | 2014-07-23 | 2014-11-19 | 华为技术有限公司 | 一种数据预取的方法以及装置 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5848428A (en) | 1996-12-19 | 1998-12-08 | Compaq Computer Corporation | Sense amplifier decoding in a memory device to reduce power consumption |
US6138213A (en) | 1997-06-27 | 2000-10-24 | Advanced Micro Devices, Inc. | Cache including a prefetch way for storing prefetch cache lines and configured to move a prefetched cache line to a non-prefetch way upon access to the prefetched cache line |
JP4093741B2 (ja) * | 2001-10-03 | 2008-06-04 | シャープ株式会社 | 外部メモリ制御装置およびそれを含んだデータ駆動型情報処理装置 |
EP1444584A1 (en) | 2001-10-19 | 2004-08-11 | Telefonaktiebolaget LM Ericsson (publ) | Data prefecthing in a computer system |
JP2006520045A (ja) | 2003-03-06 | 2006-08-31 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | プリフェッチ手段を備えるデータ処理システム |
JP4451717B2 (ja) * | 2004-05-31 | 2010-04-14 | 株式会社ソニー・コンピュータエンタテインメント | 情報処理装置および情報処理方法 |
US7698541B1 (en) * | 2006-10-31 | 2010-04-13 | Netapp, Inc. | System and method for isochronous task switching via hardware scheduling |
US8069310B1 (en) | 2007-03-22 | 2011-11-29 | Emc Corporation | Methods and systems for incorporating sequential stream read requests into prefetch management for data storage having a cache memory |
WO2015070789A1 (en) * | 2013-11-14 | 2015-05-21 | Mediatek Inc. | Task scheduling method and related non-transitory computer readable medium for dispatching task in multi-core processor system based at least partly on distribution of tasks sharing same data and/or accessing same memory address (es) |
-
2015
- 2015-07-28 US US14/811,436 patent/US10042773B2/en not_active Expired - Fee Related
-
2016
- 2016-07-07 WO PCT/CN2016/089188 patent/WO2017016380A1/en active Application Filing
- 2016-07-07 CN CN201680041970.3A patent/CN107851065B/zh not_active Expired - Fee Related
- 2016-07-07 EP EP16829746.3A patent/EP3317769A4/en not_active Ceased
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0640921A1 (en) * | 1993-08-24 | 1995-03-01 | Bull HN Information Systems Inc. | High speed cache miss prediction method and apparatus |
EP1131702B1 (en) * | 1998-11-16 | 2009-04-22 | Telefonaktiebolaget LM Ericsson (publ) | Improved handling of the results of speculatively executed jobs in a multiprocessing system |
US6868485B1 (en) * | 2002-09-27 | 2005-03-15 | Advanced Micro Devices, Inc. | Computer system with integrated directory and processor cache |
US20080183688A1 (en) * | 2006-08-25 | 2008-07-31 | Chamdani Joseph I | Methods and systems for hardware acceleration of database operations and queries |
CN101459566A (zh) * | 2007-12-14 | 2009-06-17 | 华为技术有限公司 | 一种时隙环网的时隙调度方法和网络设备 |
US20140215157A1 (en) * | 2013-01-30 | 2014-07-31 | Oracle International Corporation | Monitoring multiple memory locations for targeted stores in a shared-memory multiprocessor |
CN103810009A (zh) * | 2014-02-20 | 2014-05-21 | 北京奇虎科技有限公司 | 一种计算机操作系统启动加速的方法和装置 |
CN104156321A (zh) * | 2014-07-23 | 2014-11-19 | 华为技术有限公司 | 一种数据预取的方法以及装置 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112650574A (zh) * | 2020-12-31 | 2021-04-13 | 广州技象科技有限公司 | 基于优先级的任务调度方法、装置、系统和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
EP3317769A1 (en) | 2018-05-09 |
EP3317769A4 (en) | 2018-07-04 |
CN107851065B (zh) | 2020-10-16 |
US20170031829A1 (en) | 2017-02-02 |
US10042773B2 (en) | 2018-08-07 |
WO2017016380A1 (en) | 2017-02-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11681473B2 (en) | Memory system and control method | |
US8095734B2 (en) | Managing cache line allocations for multiple issue processors | |
CN107851065A (zh) | 预先缓存分配器 | |
EP3224728B1 (en) | Providing shared cache memory allocation control in shared cache memory systems | |
US20070079070A1 (en) | Cache controller | |
JP2007026094A (ja) | 実行装置およびアプリケーションプログラム | |
US7469309B1 (en) | Peer-to-peer data transfer method and apparatus with request limits | |
US10198357B2 (en) | Coherent interconnect for managing snoop operation and data processing apparatus including the same | |
US8566532B2 (en) | Management of multipurpose command queues in a multilevel cache hierarchy | |
JP2019133391A (ja) | メモリシステムおよび制御方法 | |
JP2003228461A (ja) | ディスクアレイ装置のディスクキャッシュ管理方法 | |
US9727521B2 (en) | Efficient CPU mailbox read access to GPU memory | |
CN108228076A (zh) | 访问磁盘的方法和主机 | |
US7552285B2 (en) | Line fill techniques | |
CN112162818B (zh) | 一种虚拟内存分配方法、装置、电子设备及存储介质 | |
CN108268391A (zh) | 半导体系统及其控制方法 | |
CN105612505B (zh) | Cpu调度的方法和装置 | |
CN107562648A (zh) | 无锁ftl访问方法与装置 | |
CN111026680A (zh) | 将第一标识符映射到第二标识符 | |
CN108874685A (zh) | 固态硬盘的数据处理方法以及固态硬盘 | |
US20220129395A1 (en) | System for Improving Input / Output Performance | |
WO1993009497A2 (en) | Memory unit including a multiple write cache | |
JPH0329041A (ja) | 分散ページング制御方式 | |
US20040186823A1 (en) | Data packet processing | |
CN110502458A (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: 20201016 Termination date: 20210707 |