CN117940908A - 动态分配高速缓存存储器作为ram - Google Patents

动态分配高速缓存存储器作为ram Download PDF

Info

Publication number
CN117940908A
CN117940908A CN202280057928.6A CN202280057928A CN117940908A CN 117940908 A CN117940908 A CN 117940908A CN 202280057928 A CN202280057928 A CN 202280057928A CN 117940908 A CN117940908 A CN 117940908A
Authority
CN
China
Prior art keywords
cache
memory
circuit
address
request
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
Application number
CN202280057928.6A
Other languages
English (en)
Inventor
R·纳塔拉詹
J·M·舒尔茨
C·D·舒勒
R·K·古普塔
T·T·邹
S·R·斯里达兰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Apple Inc
Original Assignee
Apple Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Apple Inc filed Critical Apple Inc
Priority claimed from PCT/US2022/038644 external-priority patent/WO2023033955A1/en
Publication of CN117940908A publication Critical patent/CN117940908A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0835Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means for main memory peripheral accesses (e.g. I/O or DMA)
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0864Addressing 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1405Saving, restoring, recovering or retrying at machine instruction level
    • G06F11/141Saving, restoring, recovering or retrying at machine instruction level for bus or memory accesses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3037Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/885Monitoring specific for caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1021Hit rate improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/30Providing cache or TLB in specific location of a processing system
    • G06F2212/305Providing cache or TLB in specific location of a processing system being part of a memory device, e.g. cache DRAM
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/502Control mechanisms for virtual memory, cache or TLB using adaptive policy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/601Reconfiguration of cache memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/603Details of cache memory of operating mode, e.g. cache mode or local memory mode

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

一种装置包括高速缓存控制器电路和高速缓存存储器电路,该高速缓存存储器电路还包括具有多个高速缓存行的高速缓存存储器。该高速缓存控制器电路可被配置为接收重新分配该高速缓存存储器电路的当前正在使用的部分的请求。该请求可标识对应于该高速缓存行中的一个或多个高速缓存行的地址区域。该高速缓存控制器电路可被进一步配置为响应于该请求,通过从高速缓存操作排除该一个或多个高速缓存行来将该一个或多个高速缓存行转换为可直接寻址随机存取存储器(RAM)。

Description

动态分配高速缓存存储器作为RAM
技术领域
本文描述的实施方案涉及片上系统(SoC),并且更具体地,涉及用于操作高速缓存存储器的方法。
背景技术
片上系统(SoC)集成电路(IC)通常包括用作系统的中央处理单元(CPU)的一个或多个处理器,以及各种其他部件,诸如存储器控制器和其他代理。如本文所用,“代理”是指能够经由总线电路发起事务或作为事务的目的地的功能电路。因此,通用处理器、图形处理器、网络接口、存储器控制器和其他类似电路可称为代理。如本文所用,“事务”是指在两个代理之间跨一个或多个总线电路的数据交换。来自代理的从存储器电路读取数据或将数据存储到存储器电路的事务是典型类型的事务,并且可以包括大量数据。存储器电路可使用多个时钟周期来存取其存储器单元内的数据。
高速缓存存储器频繁地用于SoC中以通过减少与系统存储器和/或非易失性存储存储器的事务相关联的延迟来支持处理器的增加的性能。高速缓存存储器可存储存储在频繁存取的存储器地址处的信息的本地副本。与执行对目标存储器地址的存储器存取相比,这些本地副本可具有用于将高速缓存值存取到代理的较短延迟。当对当前未高速缓存的目标地址进行存储器存取时,所寻址的存储器可被存取,并来自多个连续地址(包括目标地址)的值作为组被读取并且然后可被高速缓存以减少未来存取时间。当高速缓存行中的高速缓存信息变为无效或确定高速缓存信息尚未被频繁存取时,高速缓存信息可失效并被标记以供逐出,从而允许其被正由SoC的处理器存取的其他信息重写。
发明内容
在实施方案中,一种装置包括高速缓存控制器电路和高速缓存存储器电路,该高速缓存存储器电路还包括具有多个高速缓存行的高速缓存存储器。高速缓存控制器电路可被配置为接收重新分配高速缓存存储器电路的当前正在使用的一部分的请求。该请求可标识对应于高速缓存行中的一个或多个高速缓存行的地址区域。高速缓存控制器电路还可被配置为响应于请求,通过从高速缓存操作排除一个或多个高速缓存行来将一个或多个高速缓存行转换为可直接寻址随机存取存储器(RAM)。
在另外的示例中,高速缓存控制器电路可被进一步配置为支持用于所标识的地址区域中的存储器事务的实时虚拟信道,并且使经由实时虚拟信道接收的存储器事务优先于经由批量虚拟信道接收的存储器事务。在示例中,高速缓存控制器电路可被进一步配置为确定地址区域被包括在安全存取区域中。响应于该确定,高速缓存控制器电路可被进一步配置为忽略来自未被授权存取安全存取区域的代理的地址区域中的存储器事务。
在另一个示例中,高速缓存控制器电路还可被配置为在转换为可直接寻址RAM之前刷新一个或多个高速缓存行。在示例中,高速缓存控制器电路可被进一步配置为响应于有效高速缓存行中的数据被写入而发布对有效高速缓存行的回写请求。高速缓存控制器电路还可被配置为从回写请求排除一个或多个高速缓存行。
在实施方案中,高速缓存控制器电路可被进一步配置为接收从可直接寻址RAM解除分配高速缓存存储器的部分的不同请求。响应于不同请求,高速缓存控制器电路可被进一步配置为在高速缓存操作中包括一个或多个高速缓存行,而不在重新分配一个或多个高速缓存行的同时复制存储在可直接寻址RAM中的数据。在另一个实施方案中,高速缓存控制器电路还可被配置为响应于在解除分配高速缓存存储器的部分之后接收到的可直接寻址RAM中的存储器事务而生成错误。
附图说明
下面的详细描述参照附图,现在对这些附图进行简要说明。
图1示出了在两个时间点处的包括高速缓存存储器和地址映射的系统的实施方案的框图。
图2示出包括处理器、具有多个通路的高速缓存存储器以及地址映射的系统的实施方案的框图。
图3描绘了在两个不同时间点处的图1的系统的实施方案的框图。
图4示出了接收两个写入请求的图1的系统的实施方案的框图。
图5示出包括经由网络仲裁器将存储器事务发送到高速缓存存储器的两个代理的系统的实施方案的框图。
图6示出了包括两个代理(一个可信代理和一个不可信代理)的系统的实施方案的框图,这两个代理将存储器事务发送到高速缓存存储器。
图7示出用于将高速缓存存储器系统的一部分重新分配到可直接寻址地址区域的方法的实施方案的流程图。
图8描绘了用于从未授权代理接收存储器事务并且用于从可直接寻址地址区域解除分配高速缓存存储器系统的一部分的方法的实施方案的流程图。
图9示出了在两个时间点处的系统的实施方案的框图,其中位于系统存储器中的缓冲器被分配给高速缓存存储器。
图10示出在两个不同时间点处的图9的系统的实施方案的框图,其中重复向高速缓存存储器分配存储位置的尝试。
图11描绘了包括处理器内核和向高速缓存存储器分配缓冲器的DMA的系统的实施方案的框图。
图12示出了在两个不同时间点处的图9的系统的实施方案的框图,其中批量事务和实时事务与缓冲器和高速缓存存储器结合使用。
图13示出用于将缓冲器分配给高速缓存存储器系统的方法的实施方案的流程图。
图14描绘了用于结合缓冲器和高速缓存存储器使用批量事务和实时事务的方法的实施方案的流程图。
图15示出了用于在存取分配给高速缓存存储器的缓冲器时确定高速缓存未命中率的方法的实施方案的流程图。
图16示出包括耦接的集成电路的系统的各种实施方案。
图17描绘了根据一些实施方案的示例性计算机可读介质的框图。
尽管本公开中所述的实施方案可受各种修改形式和另选形式的影响,但其具体实施方案在附图中以举例的方式示出并将在本文中详细描述。然而,应当理解,附图和对其的具体实施方式不旨在将实施方案限制为所公开的特定形式,而相反,本发明旨在涵盖落入所附权利要求书的实质和范围内的所有修改、等同物和另选方案。
具体实施方式
事务可被分类成两个或更多个优先级级别,诸如“实时”和“批量”。实时事务可以具有比批量事务更高的优先级级别,并且因此可以通过实时事务所经过的总线电路和任何中间代理来更快地处理。代理可以使用实时事务来满足完成处理的截止时间,如果不满足,则可能导致系统中较差的性能、不正确的计算或者甚至故障。例如,如果不满足低时延截止时间,则视频的回放可能停顿或出现毛刺。来自其他代理的对总线电路和存储器电路的存取的竞争是满足此类低时延截止时间的复杂性的一个来源。
高速缓存存储器可用于通过存储更靠近对应代理的存储器位置的副本来减轻用于满足低时延截止时间的一些复杂性,从而减少总线电路和/或实时事务在被处理时必须遍历的中间代理的数量。另外,如果多个高速缓存存储器可用,则给定高速缓存存储器可由较少代理存取,由此增加代理可存取高速缓存存储器同时满足低时延截止时间的概率。然而,如果未被频繁存取和/或如果存在来自其他代理的对高速缓存存储器中的高速缓存值的竞争,则高速缓存值可以从高速缓存存储器中被逐出。
因此,需要用于使用高速缓存存储器来存储用于和/或将用于实时事务的值的技术。本文中提出了用于使用高速缓存存储器来实现较快存取存储器区域的两种一般方法。在第一种方法中,可以将高速缓存存储器的一部分分配给系统总线可存取地址区域,其中可以以与随机存取存储器(RAM)类似的方式存取可寻址高速缓存存储器。为了实现这样的技术,可以使用控制电路来分配高速缓存存储器的一部分作为RAM。高速缓存存储器的分配部分中的高速缓存行被刷新,并且将任何脏数据(例如,已在高速缓存存储器中修改而不更新系统存储器中的对应存储器位置的数据)回写到系统存储器。分配部分中的高速缓存行被启用以用于经由存储器映射地址区域存取,并且从可用高速缓存存储器行移除。然后,代理可能能够利用实时事务直接存取存储器映射地址区域,该实时事务可以在与高速缓存位置类似的时间量内被处理。由于存储器映射地址区域在分配期间不被视为高速缓存的一部分,因此如果在延长的时间段内不被存取,则存储在该区域中的值不处于被逐出的风险中。下面描述的图1至图8示出了这种高速缓存作为RAM方法的各种细节。
在第二种方法中,在系统存储器内分配缓冲器,其中缓冲器旨在与低时延存储器事务一起使用。为了减少用于存取该缓冲器中的值的时延,还可以在高速缓存存储器中分配缓冲器。在一些实施方案中,高速缓存可包括对高优先级数据的支持,包括用于将特定高速缓存行与低时延事务相关联的技术。这种支持可以包括限制或消除用于相关联的高速缓存行的逐出。然而,大缓冲器(例如,大小被设计成与视频帧、其他图像、音频文件等一起使用的缓冲器)的高速缓存分配可能开始遭受高速缓存未命中,因为缓冲器的朝向高速缓存分配过程的结束分配的部分具有映射到现在被缓冲器的先前高速缓存的部分占据的高速缓存行的较高概率。如果高速缓存分配以缓冲器的一个末端开始,则相对末端将遭受更高数量的高速缓存未命中,从而随着对缓冲器的存取移向要分配的最后部分而使得高速缓存未命中更频繁。
所公开的技术尝试将缓冲器的部分的高速缓存分配散布在缓冲器中的各个位置上。为了实现这一点,缓冲器可以被逻辑地划分成多个块。然后可进行尝试将来自每个块的第一子块分配到高速缓存中。随后,可进行进一步尝试以将来自每个块的第二子块分配到高速缓存中。这可以针对每个块中的多个子块重复,直到已进行尝试来高速缓存所有子块。这样的技术可将用于各种子块分配的高速缓存未命中分布在整个缓冲器上,使得未命中不朝向缓冲器的末端集中。例如,如果缓冲器用于处理图像,则高速缓存未命中可能在整个图像的处理中更一致地发生,但集中度较低,而不是在图像处理的开始处具有几个未命中,然后随着处理接近图像的末端而具有更频繁的未命中。随着未命中更频繁地发生,可生成更多实时事务以从系统存储器检索请求的数据。使更多数量的实时事务被同时处理可增加错过低时延截止时间的可能性,随后增加系统的用户经历差性能或系统故障的可能性。稍后在本公开中描述的图9至图13示出了关于该分布式高速缓存方法的细节。
图1示出了在两个时间点处的高速缓存存储器系统的一个实施方案的框图。如图所示,系统100包括高速缓存控制器电路101、高速缓存存储器电路105和地址映射110。高速缓存存储器电路105包括高速缓存行120-127。地址映射110被示出为具有四个地址区域115a-115d(统称为地址区域115)。系统100可对应于处理器电路,诸如微处理器、微控制器或其他形式的片上系统(SoC)。系统100可在单个集成电路上实现或通过使用耦接在电路板上的多个电路元件来实现。
如图所示,高速缓存存储器电路105可使用任何合适类型的存储器电路设计来实现,诸如静态随机存取存储器(SRAM)、动态RAM(DRAM)、铁电RAM(FeRAM或FRAM)、磁阻RAM(MRAM)、闪速存储器等。高速缓存存储器电路105可使用任何合适的高速缓存结构来组织,包括使用多个通路和/或集合。高速缓存控制器电路101包括用于在高速缓存存储器电路105中执行高速缓存操作的电路,诸如维持高速缓存标签,确定与存储器事务相关的地址是命中(高速缓存行当前对应于地址)还是未命中(没有高速缓存行已填充有对应于地址的数据),响应于未命中来发布高速缓存行填充请求,标记高速缓存行以供逐出等。地址映射110包括用于确定存储器映射寄存器和存储器电路的物理地址的软件、固件和硬件电路的任何合适组合。在一些实施方案中,地址映射110包括用于将逻辑地址转换为物理地址的转换表。
如图所示,高速缓存控制器电路101在时间t0处接收分配请求145。高速缓存控制器电路101被配置为接收重新分配高速缓存存储器电路105的当前正在使用的一部分的分配请求145。分配请求145标识地址区域115中的对应于高速缓存行120-127中的一者或多者(例如,高速缓存行123)的一个地址区域(例如,地址区域115b)。高速缓存控制器电路101在时间t0处接收分配请求145,此时,高速缓存存储器电路105已在使用中并且高速缓存行120-127中的一者或多者可以在使用中以高速缓存系统存储器(未示出)中的位置。分配请求145可以通过包括对应于地址区域115b的地址值来指示地址区域115b。在其他实施方案中,可使用其他形式的指示来标识地址区域115b,诸如对应于地址区域115b的索引值。
地址区域115中的每一者在活动时可对应于与高速缓存存储器电路105中的存储器位置相对应的多个地址,诸如高速缓存行120-127中的一者或多者。当地址区域115中的特定一者活动时,对应的高速缓存行不用于高速缓存数据,而是用作RAM。当地址区域不活动时,对应的高速缓存行可用于高速缓存数据值。与不活动地址区域相关联的地址可被视为非法地址,并且因此如果包括在事务中则可生成异常。在时间t0处,地址区域115b不是活动的(如图1中的散列所指示),并且因此没有数据值可被存储在该区域内。地址区域115c和115d也是不活动的,而地址区域115a当前是活动的。在一些实施方案中,地址区域115a可以对应于主系统存储器并且包括当系统100活动时总是被启用的所有存储器位置和存储器映射寄存器的地址。
响应于分配请求145,高速缓存控制器电路101可被进一步配置为在时间t1处通过从高速缓存操作排除高速缓存行123而将高速缓存行123转换为可直接寻址随机存取存储器(RAM)。然后可使用寻址到地址区域115b内的位置的存储器事务来直接寻址高速缓存行123。例如,激活地址区域115b可包括修改地址映射110,使得寻址到地址区域115b内的位置的事务被路由到对应于高速缓存行123的存储器单元。另外,高速缓存控制器电路101还可以设置高速缓存行123不可用并且当前没有高速缓存数据存储在高速缓存行123中的指示。例如,高速缓存控制器电路101可以在对应于提供此类指示的高速缓存行123的高速缓存标签中设置一个或多个位。
使用这样的高速缓存到RAM技术可使得在系统100中执行的过程能够在系统活动的任何时间点处分配高速缓存存储器电路105的一部分以用作可直接寻址RAM。如先前所述,这样的分配可允许特定代理保留具有低时延存取时间的存储器空间以供与跟高优先级事务(诸如实时事务)相关的数据一起使用。在高速缓存存储器电路105中分配该空间可进一步防止其他代理获得对所分配部分的使用,直到特定代理完成实时事务并且可解除分配该部分以再次用作高速缓存行123。
需注意,图1中所示的系统100仅为一个示例。图1的图示经简化以突出与本公开相关的特征结构。各种实施方案可包括附加元件和/或元件的不同配置。例如,仅示出了八个高速缓存行和四个地址区域。在其他实施方案中可以实现任何合适数量的高速缓存行和地址区域。尽管地址区域115b被示出为对应于单个高速缓存行,但在其他实施方案中,地址区域可对应于任何合适数量的高速缓存行以及高速缓存行的一部分。
图1所示的系统以简化的描绘示出。高速缓存存储器系统可以以各种方式实现。具有高速缓存存储器的系统的另一个示例在图2中示出。
移到图2,示出在高速缓存存储器电路中采用通路的使用的高速缓存存储器系统的实施方案的框图。如图所示,系统200包括高速缓存控制器电路201、高速缓存存储器电路205、地址映射210和处理器230。处理器230可对应于通用处理内核,或能够处理数据并发布存储器请求的其他类型的处理电路。除了如下所述之外,系统200的元件执行如针对图1的类似命名和编号的元件所描述的功能。
如图所示,高速缓存存储器电路205包括具有多个通路240a-240d以及多个集合250-257的高速缓存存储器。处理器230被配置为使用包括活动和不活动地址区域215的地址映射210来发布存储器请求。在所示实施方案中,当系统200活动时,地址区域215m总是活动的,并且可以包括用于主系统存储器以及各种寄存器的地址。当处理器230向系统存储器发布存储器请求(例如,地址区域215m中的地址)时,高速缓存控制器电路201使用存储器提取中包括的提取地址来确定高速缓存存储器电路205中的高速缓存行当前是否保持对应于提取地址的系统存储器位置的有效值。为了进行这样的确定,高速缓存控制器电路201可使用提取地址来标识集合250-257中的特定集合。例如,高速缓存控制器电路201电路可在散列算法中使用提取地址的至少一部分来确定特定散列值。该散列值然后可用于标识集合250-257中的特定集合。集合250-257中的每一者包括来自通路240中的每个通路的至少一个高速缓存行。如果用于特定集合的通路240中的任一者中的高速缓存行保持对应于提取地址的有效值,则存储器请求在高速缓存存储器电路205中被称为“命中”。否则,存储器请求是高速缓存存储器电路205中的“未命中”。多个通路的使用可以在高速缓存控制器电路201如何将所提取的值映射到高速缓存存储器电路205的高速缓存行中实现一定的灵活性。
如上所述,高速缓存存储器电路205可提供比对系统存储器(诸如在地址区域215m中)的存取更低时延的存取(也称为较高服务质量(QoS))。在某些条件下,可能需要处理器230以高QoS截止时间处理数据块。由于处理系统存储器之外的数据可能在高QoS截止时间的限制内危害数据的成功处理,因此处理器230可将分配请求245发送到高速缓存控制器电路201以请求重新分配高速缓存存储器电路205的一部分。
如图所示,高速缓存控制器电路201被配置为从处理器230接收分配请求245以将高速缓存存储器电路205的一部分重新分配为可直接寻址存储器。分配请求245标识在接收分配请求245时不活动的地址区域215b。例如,分配请求245可包括标识地址区域215b的特定地址值或其他类型的指示。基于分配请求245,高速缓存控制器电路被进一步配置为选择通路240的一部分来进行转换。如所描绘的,通路240中的每一者可对应于地址范围215中的一者,如所指示的,包括对应于地址区域215b的通路240b。在其他实施方案中,高速缓存存储器电路205可包括附加通路,使得两个或更多个通路可与给定地址区域相关联。分配请求245还可以指示多于一个地址区域,诸如地址区域215b和215c。在一些实施方案中,通路240的部分可以是特定通路的一半或其他比例。例如,通路240b可在集合250-257中的每一者中包括多个高速缓存行,诸如每个集合两行。在此类实施方案中,可重新分配来自集合250-257中的每一者的两个高速缓存行中的一者,由此留下通路240b的一半以用作高速缓存,而另一半被重新分配到地址区域215b。
为了转换通路240b,高速缓存控制器电路201可被配置为在与通路的所选择的部分中包括的特定高速缓存行相对应的高速缓存标签中设置相应指示。高速缓存行250b-257b被包括在通路240b中,并且如图所示,被选择用于重新分配到地址区域215b。将相应指示添加到用于高速缓存行250b-257b中的每一者的高速缓存标签移除了对应高速缓存行作为高速缓存存储器的用途。此类指示可致使高速缓存控制器电路201在确定所接收的存储器请求在高速缓存存储器电路205中是命中还是未命中时忽略高速缓存行250b-257b,并且可进一步防止高速缓存控制器电路201将来自高速缓存未命中的地址映射到高速缓存行250b-257b中的任一者。因此,当高速缓存标签中的这些指示被设置时,高速缓存行250b-257b被有效地从高速缓存存储器使用中移除。
高速缓存控制器电路201被进一步配置为映射通路240b中的高速缓存行250b-257b以供在所标识的地址区域215b中使用。如图所示,地址区域215b包括多个地址,该多个地址可被保留以与重新分配的高速缓存行250b-257b一起使用并且因此可不被映射到任何其他存储器位置或寄存器。当地址区域215b不活动时,存取这些地址的尝试可导致异常的生成和/或默认值的返回。高速缓存控制器电路201可被进一步配置为在对应于特定高速缓存行250b-257b的高速缓存标签中设置相应实时指示符。此类实时指示符可表示高速缓存行250b-257b以及因此地址区域215b中的地址与具有比批量事务更高的优先级的实时事务相关联。因此,对重新分配的高速缓存行250b-257b中的任一者的存储器存取可被视为实时事务,即使实时事务未显式地用于存储器存取中。
此外,高速缓存控制器电路201可被进一步配置为在映射通路240b之前刷新通路240b中的高速缓存行250b-257b中的一者或多者以供在地址区域215b中使用。由于高速缓存存储器电路205可在处理器230发布分配请求245之前处于使用中,所以通路240b中的高速缓存行中的一个或多个高速缓存行可用于高速缓存存储器位置,诸如地址区域215m中的位置。如果当前高速缓存值匹配地址区域215m中的相应位置中的值,则当相应高速缓存行被映射到地址区域215b时,这些值可被简单地清除或忽略。然而,如果在通路240b中高速缓存的值已经被修改但是还没有被回写到地址区域215m,则这样的值可以被称为“脏”,并且发布刷新命令以将脏值回写到地址区域215m中的系统存储器位置。例如,在所示示例中,高速缓存行251b、254b和257b包括脏数据。高速缓存控制器电路201发布刷新命令248以将这些高速缓存行中的脏值回写到地址区域215m中的对应位置。可在将通路240b的高速缓存行转换为地址区域215b中的可直接寻址存储器位置之前发布一个或多个刷新命令。
在以高QoS截止时间处理数据块之后,处理器230可能不会立即使用地址区域215b中的高QoS可直接寻址存储器,并且可被配置为发布解除分配通路240b的请求。高速缓存控制器电路201可被进一步配置为响应于接收到解除分配地址区域215b中的可直接寻址存储器的请求而在高速缓存操作中包括通路240b。响应于解除分配可直接寻址存储器的请求,不重新定位在通路240b被重新分配时存储在可直接寻址存储器中的值。在重新分配期间写入到地址区域215b的任何值可被删除或忽略,并且随后随着返回通路240b以在高速缓存存储器电路205的操作中使用而被重写。
需注意,使用高速缓存存储器电路205的通路240来将高速缓存存储器重新分配到可直接寻址存储器可用可接受量的附加逻辑电路来实现,同时允许高速缓存存储器电路205在很少中断或无中断的情况下继续操作。相比之下,在单独高速缓存行的基础上实现高速缓存存储器的重新分配可能需要附加的较大逻辑电路,尤其在高速缓存存储器较大和/或具有许多集合和通路的情况下。另一方面,进一步限制可被重新分配的高速缓存存储器的量可能无法提供足够的解决方案来在对高QoS存储器位置的需要与正在进行的高速缓存操作之间进行管理。例如,如果高速缓存存储器电路205的重新分配限于高速缓存的一半,则正被分配的存储器的量可比处理高QoS数据所必需的大得多,并且进一步减小高速缓存的容量,并且可能减小利用高速缓存的代理的效率。
还需注意,图2的实施方案是高速缓存存储器系统的一个描绘。尽管仅示出四个通路和八个集合,但在其他实施方案中,可包括任何合适数量的高速缓存通路和集合。另外,虽然描绘了五个地址区域,但是地址映射210可以被划分成任何合适数量的区域。
图2的描述描述了可直接寻址存储器位置的解除分配。将可直接寻址的存储器区域解除分配回高速缓存存储器可以以各种方式实现。图3描绘了这样的方式。
转向图3,图1的系统再次在两个不同的时间点处示出。如参考图1所述,系统100包括高速缓存控制器电路101、高速缓存存储器电路105和地址映射110。在时间t0处,高速缓存行123被映射到地址区域115b中的可直接寻址存储器,并且因此不可用于高速缓存操作。如图所示,高速缓存控制器电路101被配置为例如从代理(诸如图2中的处理器230)接收从地址区域115b中的可直接寻址存储器解除分配高速缓存行123的解除分配请求345。响应于解除分配请求345,高速缓存控制器电路101被进一步配置为在高速缓存操作中包括高速缓存行123,而不复制存储在可直接寻址存储器中的数据,同时高速缓存行123被重新分配到地址区域115b。例如,如上所述,高速缓存控制器电路101可以在高速缓存行123的相关联的高速缓存标签中设置指示,以指示高速缓存行123被重新分配到可直接寻址存储器。为了解除分配高速缓存行123,高速缓存控制器电路101可清除该指示,从而从地址区域115b移除高速缓存行123并且在后续高速缓存操作中包括高速缓存行123。
当相关联高速缓存标签中的指示被清除时,可删除或忽略在分配给地址区域115b时写入到高速缓存行123的值。由于地址区域115b中的地址可以不在地址映射110中的其他地方实现,所以可以不发布回写请求来复制这些值。除非利用地址区域115b的代理在其活动时显式地将数据从地址区域115b复制到地址映射110中的其他位置,否则地址区域115b中的值可能在解除分配完成之后丢失。
在时间t1处,存储器事务350由代理发布以存取地址区域115b中的值。高速缓存控制器电路101被配置为响应于在解除分配地址区域115b之后接收到存储器事务350而生成错误消息355。在一些实施方案中,如果存储器事务350包括对地址区域115b中的地址的写入或修改,则可以生成错误消息355。否则,如果存储器事务350仅包括对地址区域115b的读取存取,则作为生成错误消息355的替代或除此之外,高速缓存控制器电路101可向请求代理返回特定默认值,诸如全零位或全一位。生成错误消息355可使用各种技术来实现。例如,可通过断言异常信号来生成错误消息355,该异常信号继而致使特定过程由系统100中的一个或多个处理器内核执行。生成错误消息355可包括返回向发布存储器事务350的代理指示地址区域115b已被解除分配的特定值。
图3描绘了高速缓存行从可直接寻址的地址区域的解除分配。继续到图4,系统100被描绘为地址区域115b是活动的(使用高速缓存行123)并且示出可如何同时处理高速缓存操作和对地址区域115b的存取。图4中的系统100示出高速缓存控制器电路101接收写入请求445和446。
如图所示,写入请求445包括将数据写入到当前被高速缓存在高速缓存存储器电路105的高速缓存行121中的一个或多个位置的写入请求。以类似的方式,写入请求446包括将数据写入到地址区域115b中的一个或多个位置的写入请求,该写入请求通过将高速缓存行123从高速缓存存储器电路105重新分配到地址映射110来实现。高速缓存控制器电路101被配置为响应于写入请求445而发布针对高速缓存行121的回写请求447。高速缓存行121中的修改值连同系统存储器中的对应目标地址一起被包括在回写请求447中。回写请求447使得这些修改值在系统存储器中的目标地址处被更新。如果高速缓存行121被逐出并且然后被映射到系统存储器中的不同地址,则系统存储器中的目标地址仍可具有最新的值。
如图所示,高速缓存控制器电路101被进一步配置为从回写请求排除高速缓存行123。写入请求446可以修改地址区域115b(包括高速缓存行123)中的一个或多个值。尽管高速缓存行123中的值被修改,但是高速缓存控制器电路101被配置为忽略关于回写命令的这些修改。地址区域115b尽管包括高速缓存行123,但被视为端点存储器目的地。系统存储器中没有目标地址对应于地址区域115b中的地址。因此,响应于写入请求446,存储在高速缓存行123中的修改值可能不会在另一个存储器电路中更新。
然而,需注意,不同高速缓存存储器可驻留在高速缓存存储器电路105与发布写入请求446的处理电路之间。例如,高速缓存存储器电路105可以是L2高速缓存,并且发布写入请求446的处理电路可包括L1高速缓存。在这样的实施方案中,L1高速缓存可以高速缓存存储在地址区域115b中(例如,在高速缓存行123中)的至少一些值。
还需注意,图3和图4的实施方案仅仅是用于展示所公开的概念的示例。为了清楚起见,简化了这些图中所示的系统100。在其他实施方案中,可包括附加元件,诸如发布引起所描述操作的存储器事务的一个或多个代理。另外,虽然图3和图4利用图1的系统100,但所描述的技术可应用于图2的系统200。
上文以各种能力描述了与所公开的技术一起使用的实时事务的使用。实时和批量事务均可用于以本文所述的基于高速缓存的地址区域为目标的存储器请求。图5示出了如何可实现使用具有不同QoS级别的事务的示例。
现在移到图5,描绘了一种系统,其中仲裁器用于调度系统网络上的事务。系统500包括高速缓存控制器电路501和地址映射510,其可对应于图1、图3和图4中类似命名和编号的元件,除了如下所述之外。系统500还包括代理530a和530b(统称为代理530)、网络仲裁器电路540和总线电路545。图5示出了寻址到地址区域515b的两个存储器事务(分别为实时事务和批量事务的存储器事务550和555)的流程,该地址区域使用来自高速缓存控制器电路501的一个或多个高速缓存行使用诸如上文所描述的技术来实现。
在第一时间点处,代理530b发布具有地址区域515b中的目的地的批量存储器事务555。以类似于图1和图2中的地址区域115b和215b的方式,地址区域515b包括与高速缓存控制器电路501相关联的高速缓存存储器的一部分。如图所示,存储器事务555由网络仲裁器电路540在其到高速缓存控制器电路501的通路上接收。由于存储器事务555是批量事务,所以网络仲裁器电路540将存储器事务555放置到批量队列565a中,直到总线电路545具有可用带宽来将存储器事务555转发到高速缓存控制器电路501。
总线电路545包括将高速缓存控制器电路501耦接到网络仲裁器电路540的一组导线。在一些实施方案中,总线电路545可以包括足够数量的导线以支持独立的物理批量和实时信道。然而,如图所示,总线电路545不包括这种数量的导线,并且因此,使用同一组导线传送实时和批量存储器事务,利用虚拟批量和实时信道来支持每种类型的事务的相应QoS级别。因此,网络仲裁器电路540使用优先化方案来在实时(RT)队列560a与批量队列565a之间进行选择,以用于经由总线电路545发送的下一事务。例如,网络仲裁器电路540可以首先发送RT队列560a中的事务,然后在RT队列565a为空之后发送批量队列560a中的事务。在其他实施方案中,可在选择过程中包括附加考虑因素以避免批量队列565a达到满状态或使批量队列565a中的批量事务停顿过长的时间量。
如本文所用,“信道”是用于在源代理(例如,处理器电路)与目的地代理(例如,存储器电路)之间传送信息的介质。信道可包括导线(包括电路板或集成电路上的导电迹线)和各种其他电路元件。在一些实施方案中,信道还可包括天线和特定频率或频率范围的电磁波。“物理”信道是指包括信道的电路元件。“虚拟”信道是指在同一物理信道上实现的两个或更多个不同“信道”。可以使用各种技术来实现虚拟信道。例如,可以通过包括用于每个虚拟信道的相应队列来在信道接口中实现信道的虚拟化。代理使用相应信道的队列在给定信道上发送和接收事务。其他电路然后可控制相应队列之间的信道仲裁以在信道可用时选择要发送的特定事务。在其他实施方案中,代理可负责将各种事务与对应的虚拟信道相关联。在此类实施方案中,代理可维持适当数据结构以用于将事务指派给适当虚拟信道,并且然后进行仲裁以在信道可用时选择要发送的给定事务。
在第二时间点处,网络仲裁器电路540从批量队列565a选择存储器事务555并且将其转发到高速缓存控制器电路501。高速缓存控制器电路501继而可将存储器事务555放置到批量队列565b中,直到带宽可用于处理地址区域515b中的存储器事务555。同时,在第二点之后的第三时间点处,代理530a经由总线电路545将存储器事务550发送到高速缓存控制器电路501。网络仲裁器电路540接收实时存储器事务550并将其置于RT队列560a中。在随后的第四时间点处,存储器事务550由网络仲裁器电路540选择并被发送到高速缓存控制器电路501,该高速缓存控制器电路将所接收的存储器事务550放置在RT队列560b中。
在所示示例中,存储器事务550和555两者分别在RT队列560b和批量队列565b中。高速缓存控制器电路501被配置为支持用于地址区域515a-515d中的存储器事务的实时和批量虚拟信道。因此,高速缓存控制器电路501使用类似于网络仲裁器电路540的选择方案,使经由实时虚拟信道接收的存储器事务550优先于经由批量虚拟信道接收的存储器事务550。在第四点之后的第五时间点处,高速缓存控制器电路501跳过在批量队列560b中等待的存储器事务555,而是选择在RT队列565b中等待的存储器事务550。随后,在第六时间点处,存储器事务555满足选择标准并且在地址区域515b中被处理。
需注意,系统500是用于突出所公开技术的示例。为了清楚起见,图5被简化。在其他实施方案中,可包括附加元件,诸如附加代理、多个总线电路、相关联网络仲裁器电路等。
图5描绘了可如何使用所公开的技术来处理具有不同QoS级别的存储器事务。所公开的高速缓存控制器电路可被进一步配置为管理落入不同类型的安全存储器区域内的地址区域。接下来提出这种实施方案的描述。
转到图6,示出包括对开放存取和安全存取存储器区域的支持的系统的实施方案。系统600包括高速缓存控制器电路601、地址映射610、系统存储器映射620、可信代理630和不可信代理635。如图所示,系统存储器映射620被划分成两个区域,开放存取区域623和安全存取区域627。地址映射610中的地址区域615b对应于重新分配的高速缓存存储器,如先前所述,并且被映射在安全存取区域627内。可信代理630和不可信代理635分别发布存储器事务650和655,两者均以地址区域615b中的目的地地址为目标。
如图所示,系统存储器映射620包括系统600中包括的所有地址区域的存储器映射。这些地址区域可以被分类为两种类型的安全区域:开放存取区域623和安全存取区域627。开放存取区域包括系统600内的任何代理(包括可信代理630和不可信代理635两者)可以发布存储器事务的所有存储器范围。开放存取区域可以包括用于一般应用使用的存储器,包括例如用于处理图像、音频文件和执行一般应用的存储器。安全存取区域627包括具有受限存取的存储器范围。只有被分类为可信的代理(诸如可信代理630)才可以存取安全存取区域627内的存储器位置。从不可信代理到安全存取区域627中的地址的存储器事务可以被忽略或者可以导致生成错误指示,诸如异常。
在所示示例中,可信代理630和不可信代理635两者针对地址区域615b中的目的地地址发布相应存储器事务650和655。为了支持安全存取区域,高速缓存控制器电路601被配置为确定地址区域615b被包括在安全存取区域627中。响应于该确定,高速缓存控制器电路601被配置为忽略来自未被授权存取安全存取区域627的不可信代理635的存储器事务655。然而,可信代理630被授权存取安全存取区域627,并且因此,高速缓存控制器电路601被配置为处理地址区域615b中的存储器事务650。
响应于接收存储器事务655,高速缓存控制器电路601可被进一步配置为生成错误指示。例如,高速缓存控制器电路601可将错误代码返回到不可信代理635,该错误代码包括指示对未授权地址的存取的特定值。替代地或附加地,高速缓存控制器电路601可被进一步配置为断言一个或多个异常信号,诸如非法地址异常和/或安全违规异常。
需注意,系统600仅为示例。为了清楚起见,可从系统600省略各种元件。在其他实施方案中,系统600可以包括附加安全存取区域。例如,可以实现多个不同安全存取区域,其中每个区域对应于不同级别的安全存取,并且因此可由可信代理的不同组合存取。
上文关于图1至图6所描述的电路和技术描述用于将高速缓存存储器的一部分重新分配到可直接寻址地址区域的各种技术。各种方法可用于实现这些所公开的技术。下面参考图7至图8描述两种此类方法。
现在移到图7,示出用于将高速缓存存储器电路的一部分重新分配到可直接寻址地址区域的方法的实施方案的流程图。方法700可由高速缓存控制器电路执行,诸如分别为图1、图2、图5和图6中的高速缓存控制器电路101、201、501和601。方法700可由执行软件或固件的处理电路、由包括例如逻辑门的硬件电路、或它们的组合来执行。共同参考图1和图7,方法700在框710中开始。
在框710处,方法700包括由高速缓存控制器电路101接收将高速缓存存储器电路105的当前正在使用的一部分重新分配到可直接寻址存储器空间的分配请求145。如图所示,分配请求145标识不活动地址区域115b。分配请求145可在时间t0处接收,此时,高速缓存存储器电路105已在使用中并且高速缓存行120-127中的一者或多者可以在使用中以高速缓存系统存储器中的位置。地址区域115b可通过在分配请求145中包括地址区域115b中的地址值或对应于地址区域115b的索引值来指示。
在框720处,方法700还包括基于所标识的地址区域115b选择高速缓存存储器电路105的高速缓存行123来进行转换。如图所示,高速缓存行123可由于在系统100中执行的软件(诸如操作系统)而与地址区域115b相关联。在其他实施方案中,高速缓存行123可以基于系统100的电路设计被硬编码到地址区域115b。尽管仅一个高速缓存行被示出为被选择用于地址区域115b中,但是可以选择任何合适数量的高速缓存行。例如,如参考图2所述,高速缓存存储器电路可包括多个通路,并且可选择整个通路或多个通路以用于可直接寻址地址区域中。
在框730处,方法700还包括由高速缓存控制器电路101设置所选择的高速缓存行123的相应指示以将高速缓存行123从另外的高速缓存操作中排除。例如,高速缓存控制器电路101可在对应于高速缓存行123的高速缓存标签中设置特定位或位组以指示高速缓存行123在地址区域115b中的使用。另外,高速缓存控制器电路101可设置实时存储器指示符,该实时存储器指示符表示高速缓存行123与具有比批量事务更高的优先级的实时事务相关联。这样的指示可防止高速缓存控制器电路101在高速缓存行123已被重新分配给地址区域115b之后执行该高速缓存行的内容的逐出。实时指示可进一步使以地址区域115b中的地址作为目的地的任何事务优先于高速缓存控制器电路101的队列中的任何批量事务。
在一些实施方案中,方法700还可包括在设置相应指示之前由高速缓存控制器电路101刷新高速缓存行123。由于在接收分配请求145之前已使用高速缓存存储器电路105,因此可将有效数据高速缓存在高速缓存行123中。如果高速缓存在高速缓存行123中的任何值已被修改并且该修改尚未被回写到系统存储器中的目的地位置,那么可由高速缓存控制器电路101发布刷新命令,该高速缓存控制器电路生成对具有当前高速缓存在高速缓存行123中的修改值的任何位置的回写请求。在已发布回写请求之后,则高速缓存行123可用于地址区域115b中。
将高速缓存存储器的一部分用作可直接寻址地址区域可实现可由特定代理用于执行具有高QoS截止时间的存储器存取的低时延存储器范围,该高QoS截止时间可能无法由到系统存储器的直接寻址实现,即使典型高速缓存技术用于系统存储器存取。通过使用高速缓存存储器电路创建低时延存储器区域,特定代理可能能够缓冲要在该低时延存储器区域中处理的数据,而没有如果在特定时间帧内未被存取则所缓冲的数据被从高速缓存中逐出的风险。
当地址区域115b活动时,高速缓存行120-122和124-127可用于高速缓存存储器电路105中的高速缓存操作。例如,写入到当前高速缓存在高速缓存存储器电路105中的特定地址的数据可被回写到系统存储器中的特定地址。然而,高速缓存行123不用于高速缓存操作。例如,写入到地址区域115b中的高速缓存行123中的不同地址的数据不被回写到系统存储器。相反,高速缓存行123可用作写入到地址区域115b的数据的最终目的地。
方法700可在框730中结束,或可重复一些或所有操作。例如,方法700可响应于高速缓存控制器电路101接收到另一分配请求而返回到框710。在一些实施方案中,可以同时执行方法700的多个实例。例如,高速缓存控制器电路101可能能够处理第二分配请求,同时仍然执行第一分配请求。如果系统100包括多个高速缓存控制器电路(例如,对于相应高速缓存存储器电路),则每个高速缓存控制器电路可能能够并行地执行方法700。需注意,图7的方法仅仅是用于将高速缓存存储器的一部分分配为可直接寻址地址区域的示例。
现在转到图8,示出用于操作和解除分配利用高速缓存存储器的一部分的可直接寻址地址区域的方法的实施方案的流程图。以与方法700类似的方式,方法800可由高速缓存控制器电路执行,诸如分别如图1、图2、图5和图6中所示的高速缓存控制器电路101、201、501和601。方法800还可由执行软件或固件的处理电路、由硬件电路或它们的组合来执行。共同参考图1、图3和图8,方法800开始于框810,其中高速缓存行123已经被重新分配到地址区域115b。
在框810处,方法800包括由高速缓存控制器电路101从未授权代理接收针对地址区域115b的存储器事务。如以上参考图6所述,系统100的系统存储器映射可以包括开放存取区域和一个或多个安全存取区域。各种代理可以尝试存取地址区域115b,其中的一些代理可以被授权存取一个或多个安全区域,而其他代理可能没有授权存取除了开放存取区域中的那些地址之外的任何地址。
在框820处,方法800包括响应于确定地址区域115b是安全存取区域的一部分,由高速缓存控制器电路101忽略来自未授权代理的存储器事务。如图所示,包括在所接收的存储器事务中的地址以地址区域115b中的位置为目标。地址区域115b可被确定为在未授权代理不能存取的系统存储器映射的安全存取区域内。响应于该确定,所接收的存储器事务被忽略。如上所述,可以向未授权代理返回错误消息,并且/或者断言异常信号以向例如操作系统指示尝试了未授权存取。
在框830处,该方法还包括由高速缓存控制器电路101接收从可直接寻址地址区域115b解除分配高速缓存存储器电路105的高速缓存行123的解除分配请求345。正在使用地址区域115b的代理可以完成发起将高速缓存行123重新分配到地址区域115b的请求的活动。例如,处理器可响应于启动特定应用程序或应用程序内的过程而请求激活地址区域115b。一旦应用程序或过程已完成,则可能不需要地址区域115b,并且因此可返回以在高速缓存存储器电路105中使用,由此增加可在给定时间高速缓存的数据量。
在框840处,方法800还包括响应于解除分配请求345,在高速缓存操作中包括高速缓存行123。如图所示,高速缓存行123返回到高速缓存存储器电路105以用作高速缓存存储器。例如,如果对应于高速缓存行123的高速缓存标签中的一个或多个位被设置为包括地址区域115b中的高速缓存行123,那么可清除这些位以将高速缓存行123返回到高速缓存存储器电路105。在重新分配高速缓存行123时存储在地址区域115b中的数据可被重写,而无需回写到系统存储器电路。在解除分配高速缓存行123之前,可能需要通过使用相应的存储器事务将存储在地址区域115b中的值显式地复制到其他存储器位置。否则,来自地址区域115b的任何值可能在解除分配之后丢失。
在框850处,该方法还包括响应于在解除分配高速缓存存储器电路105的高速缓存行123之后接收到的对地址区域115b中的地址的读取请求而返回默认值。如图所示,如果在已执行解除分配请求345之后将存储器事务350引导到地址区域115b中的地址,则将指示对不活动地址的存取的默认值返回到发布存储器事务350的代理。
在框860处,方法800还包括响应于在解除分配之后接收到的对地址区域115b中的地址的写入请求而由高速缓存控制器电路101生成错误。除了框850之外,或者在一些实施方案中,代替框850,可以生成错误,诸如异常信号的断言。此类错误可向监督处理器、安全电路、异常处理程序电路或过程和/或其他硬件电路或软件过程提供已进行对不活动地址的存取的指示。在一些情况下,这样的存取可以指示不正确地操作的系统,并且可以发起恢复操作,诸如系统重置或异常例程。
在一些实施方案中,方法800可以在框860中结束,或者在其他实施方案中,可以重复一些或所有操作。例如,方法800可返回到框830以响应于不同的解除分配请求而解除分配不同的地址区域。需注意,方法800的操作可以完全或部分地以不同次序执行。例如,框810和820可以在初次执行框830之前被执行一次或多次。可以在不执行框810和820的情况下执行框830-860。
方法700和800的各种操作的执行可以同时和/或以交错的方式执行。例如,高速缓存控制器电路101可被配置为同时管理多个地址区域,借此允许不同处理器电路以重叠方式利用不同可直接寻址地址区域。因此,方法800可在方法700进行的同时全部或部分地执行。
图1至图8描绘了高速缓存作为RAM技术的各种实施方案,其中高速缓存存储器的一部分被分配给系统总线可存取地址区域,从而为给定代理或代理组启用低时延存储器区域。下面描述的图9至图15描绘了分布式缓冲器技术,其中在系统存储器内分配缓冲器,并且然后使用特定次序将缓冲器分配到高速缓存存储器中,该特定次序尝试将高速缓存未命中分布在整个缓冲器上。
继续到图9,示出了在两个时间点处的包括高速缓存存储器的系统的实施方案的框图。如图所示,系统900包括处理电路901、高速缓存存储器电路905和系统存储器电路910。高速缓存存储器电路905包括高速缓存行920a-920h(统称为高速缓存行920)。系统存储器电路910被示出为具有九个存储位置935a-935i(统称为位置935)。系统900可对应于处理器,诸如微处理器、微控制器或其他形式的片上系统(SoC)。系统900可在单个集成电路上实现或通过使用耦接在电路板上的多个电路元件来实现。
如图所示,处理电路901可以是单核或多核处理器复合体中的处理器内核。系统900可包括其上存储有指令的非暂态计算机可读介质,该指令可由处理电路901执行以执行下文关于图9至图15所描述的操作。此类非暂态计算机可读介质可包括包括在系统存储器电路910中和/或耦接到其的非易失性存储器电路。非易失性存储器电路可包括例如闪速存储器阵列、固态驱动器、硬盘驱动器、通用串行总线(USB)驱动器、光盘驱动器、软盘驱动器等。系统存储器电路910和高速缓存存储器电路905可各自分别包括一种或多种类型的RAM,诸如SRAM、DRAM等。
如图所示,处理电路901被配置为将系统900的系统存储器电路910中的存储位置935分配到缓冲器915。在各种实施方案中,处理电路901和/或系统900中的另一代理(未示出)可使用缓冲器915来处理与在系统900上执行的应用相关的信息。为了满足该应用的期望性能,对缓冲器915的存取可能具有特定的服务质量(QoS)需求。为了增加满足QoS需求的概率,处理电路901被进一步配置为将存储位置935分配到高速缓存存储器电路905中。对高速缓存存储器电路905的存取通常可具有存取到系统存储器电路910的较高QoS级别。
为了将缓冲器915分配到高速缓存存储器电路905,处理电路901被配置为选择用于将存储位置935分配到高速缓存存储器电路905中的特定次序。与线性次序相比,该特定次序可增加高速缓存未命中率的均匀性。以线性次序分配存储位置935(例如,以分配位置935a开始并且以存储位置935b、935c、935d等的次序前进到存储位置935i)可导致针对缓冲器915的末端处的存储位置更频繁地发生高速缓存未命中。例如,存储位置935g、935h和935i可能由于对应的高速缓存行已经被分配给不同的存储位置而具有更高的未能被分配的概率。因此,选择用于执行将存储位置935分配到高速缓存存储器电路905的特定次序,该特定次序以更公平的方式分配存储位置935,这增加缓冲器915的末端处的位置可被成功地分配到高速缓存存储器电路905的可能性。
在选择特定次序之后,处理电路901被进一步配置为按特定次序将缓冲器915的存储位置935中的一些存储位置高速缓存在高速缓存存储器电路905中。在一些实施方案中,处理电路901可被进一步配置为选择和分配存储位置935的子集,每个子集具有多个存储位置,而不是选择和分配单独的存储位置。
作为示例,在时间t0处,处理电路901将包括存储位置935的缓冲器915分配到系统存储器电路910中。在时间t1处,处理电路901被配置为基于特定次序将缓冲器915分割成多个块。该多个块对应于存储位置935并且具有如所示的串行逻辑次序。
每个存储位置935可包括系统存储器电路910的任何合适数量个字节,诸如一个字节、十六个字节、128个字节等。在一些实施方案中,不同存储位置935可以包括不同数量的字节。对于该示例,一个存储位置935具有与一个高速缓存行920相同数量的字节。存储位置935的大小可由处理电路901基于特定次序来确定。如图所示,缓冲器915被划分成九个存储位置,并且特定次序包括分配每第三个存储位置,从存储位置935a开始,然后是935d,并且然后是935g。该次序绕回存储位置935b,然后是935e,并且然后是935h。然后分配最后三个存储位置,以935c开始,然后是935f,并且以935i结束。
处理电路901被进一步配置为使用增量来高速缓存存储位置935,该增量以与串行次序不同的特定次序来选择存储位置935中的一些存储位置。在所示示例中,该增量为三,但可使用任何合适的数量。将存储位置935a分配到高速缓存行920c,随后将存储位置935d分配到高速缓存行920f,并且然后将存储位置935g分配到高速缓存行920h。如图所示,高速缓存存储器电路905被配置为基于包括在给定存储位置935中的特定系统地址将给定存储位置935映射到对应高速缓存行920。例如,高速缓存存储器电路905可执行特定地址或其一部分的散列,并且所得散列值用于将特定地址映射到对应高速缓存行920。由于高速缓存存储器电路905可比系统存储器电路910小得多,因此两个不同系统地址可导致映射到同一高速缓存行920的散列值。在这样的情况下,两个地址中的第二个地址可能未能被分配。
在图9的示例中,存储位置935b、935f和935i分别被映射到高速缓存行920h、920e和920c。然而,这三个高速缓存行920已经分别被分配给存储位置935a、935h和935g。因此,存储位置935b、935f和935i未能被分配。如缓冲器915中斜体粗体文本所示,未能分配的存储位置散布在整个缓冲器915中。如果代理随后从存储位置935a开始以逻辑次序遍历缓冲器915的内容,则高速缓存未命中一次发生一个,在到达下一个高速缓存未命中之前由两个或更多个高速缓存命中隔开。
然而,如果以与遍历缓冲器915相同的线性次序分配存储位置935,则将分配存储位置935b而不是存储位置935g,并且将分配存储位置935f来代替存储位置935h。这将导致存储位置935g、935h和935i全部未能分配。在该场景中,当代理遍历缓冲器915时,在缓冲器915末端的行中发生三个高速缓存未命中,在未命中之间没有高速缓存命中。一行中对系统存储器电路910的三次提取可能导致延迟,因为第二次和第三次提取可能必须等待先前的提取被处理。因此,使用特定次序而非线性次序来分配缓冲器915可减少遍历缓冲器915的总时间。
在缓冲器915到高速缓存存储器电路905的分配完成之后,处理电路901或系统900中的其他代理可存取高速缓存存储器电路905作为到存储在缓冲器915中的值的低时延路径。与直接存取系统存储器电路910中的位置935相比,已被成功高速缓存的位置935可提供对缓冲器915的内容的更快存取。
需注意,图9的实施方案仅仅为示例。图9仅包括用于描述所公开的技术的元件。在其他实施方案中,可以包括额外的元件。例如,在其他实施方案中可以包括一个或多个总线电路、存储器管理单元等。为了清楚起见,限制高速缓存行和存储位置的数量。在其他实施方案中,可包括任何合适数量的高速缓存行和存储位置。
在图9的描述中,简要讨论了成功分配缓冲器位置的故障。如果缓冲器中的特定位置被映射到已经被分配给缓冲器中的不同位置的高速缓存行,则分配失败。在一些实施方案中,缓冲器中的特定位置可以映射到当前被分配给系统存储器中不与缓冲器相关联的不同位置的高速缓存行。现在提出用于处理这种情况的技术。
现在移到图10,再次示出在两个时间点的图9的系统900的实施方案的框图。如图所示,系统900与图9所示相同,不同之处在于高速缓存存储器电路被示为具有四个附加高速缓存行,即高速缓存行920i-920l。如上所述,为了清楚起见,高速缓存存储器电路905在图9中被示为具有有限数量的高速缓存行。在各种实施方案中,高速缓存存储器电路905可包括任何合适数量的高速缓存行,包括例如除图10中所示的十二个高速缓存行之外的附加高速缓存行。处理电路901被示出为将缓冲器915的存储位置935b、935e和935h分配到高速缓存存储器电路905中。在时间t0处,处理电路901尝试将存储位置935b分配到高速缓存行920k中。
如图9所示,存储位置935b被映射到先前已被分配给缓冲器915的存储位置935g的高速缓存行920h。在图10的实施方案中,存储位置935b可进一步被映射到高速缓存行920k。例如,高速缓存存储器电路905可为集合关联的且包括多个通路,使得给定系统存储器地址可映射到两个或更多个高速缓存行920。因此,高速缓存行920k可处于与高速缓存行920h不同的通路中,并且因此可以提供在其中分配存储位置935b的另选高速缓存行。
然而,在时间t0处,高速缓存行920k被分配给存储位置1035y,其可以是系统存储器电路910中不与缓冲器915相关联的位置。响应于将存储位置935b高速缓存到高速缓存行920k的故障,处理电路901被配置为在高速缓存不同的存储位置之前重试存储位置935b的高速缓存。如图所示,处理电路901生成对高速缓存存储位置935b的新分配请求。在一些实施方案中,处理电路901可以包括分配存储位置935b的初始尝试与重试尝试之间的特定时间量或指令周期或总线周期数量的延迟。
在时间t1处,存储位置1035y可以从高速缓存行920k中被逐出,并且因此,存储位置935b可以被成功地高速缓存到高速缓存行920k中。随后,处理电路901可进一步尝试高速缓存存储位置935e,随后是存储位置935h。
通过重试存储位置935b的高速缓存分配尝试,处理电路901可以增加成功高速缓存的缓冲器915的存储位置的数量。可分配到高速缓存存储器电路905中的缓冲器915的存储位置越多,满足将利用缓冲器915的应用的QoS需要的概率就越高。
需注意,图10中所示的系统900是用于展示所公开的技术的示例。仅示出了用于描述这些技术的元件。如先前所述,其他实施方案中可包括附加元件,诸如附加高速缓存行和存储位置,以及附加处理电路和其他总线和存储器管理电路。
图9的系统将处理电路描述为执行与将存储位置高速缓存到高速缓存存储器电路中相关联的许多动作。可利用各种类型的处理电路来执行此类动作。一个这样的处理电路包括直接存储器存取(DMA)电路,诸如图11中所示。
现在转到图11,描绘了包括用于在高速缓存存储器中高速缓存系统存储器的缓冲器的DMA电路的系统的实施方案。系统1100包括耦接到DMA电路1101的处理器内核1190,该DMA电路进一步耦接到高速缓存存储器电路905和系统存储器电路910。在各种实施方案中,DMA电路1101、处理器内核1190或两者的组合可对应于图9和图10的处理电路901。
处理器内核1190可以是执行计算操作的通用处理器。在一些实施方案中,处理器内核1190可以是专用处理内核,诸如图形处理器、音频处理器或神经处理器。在一些实施方案中,处理器内核1190可包括多个通用和/或专用处理器内核以及用于管理功率信号、时钟信号、存储器请求等的支持电路。如所描绘的,DMA电路1101被配置为发布存储器事务以跨系统1100的存储器映射在各种存储器地址之间复制或移动值。DMA电路1101可被实现为专用电路、被编程为执行此类任务的通用电路或它们的组合。DMA电路1101可至少由处理器内核1190编程以按期望顺序执行多个存储器事务。
如前所述,处理电路901选择用于将缓冲器915的存储位置高速缓存到高速缓存存储器电路905中的特定次序。如系统1100中所示,由处理器内核1190例如基于缓冲器915的大小和/或高速缓存存储器电路905中的高速缓存行的可用性来执行选择特定次序。处理器内核1190被配置为将特定次序编程到DMA电路1101中,并且使用DMA电路1101将缓冲器915的存储位置935中的一些存储位置高速缓存在高速缓存存储器电路905中。例如,DMA电路1101可以包括各种寄存器,处理器内核1190可以将用于位置935的源地址和用于将存储位置935高速缓存到高速缓存存储器电路905中的目的地地址存储到这些寄存器中,包括提供用于发布对应于存储位置935中的一些存储位置的存储器事务的特定次序。
如图所示,处理器内核1190被进一步配置为针对包括对存储位置935的存取的存储器事务来跟踪高速缓存存储器电路905中的高速缓存未命中率。在缓冲器915已被分配到高速缓存存储器电路905中之后,处理器内核1190或系统1100中的不同代理可发布存取存储位置935中的一些存储位置的各种存储器事务。根据有多少存储位置935被成功分配给高速缓存存储器电路905,可针对以存储位置935中的地址为目标的这些存储器事务确定特定高速缓存未命中率。例如,如果百分之十的存储位置935未能被分配,并且存储位置935被特定代理使用缓冲器915同等地存取,则高速缓存未命中将接近或等于百分之十。然而,如果特定代理比其他存储位置更频繁地存取存储位置935中的特定存储位置,则根据更频繁存取的存储位置是否被成功分配,高速缓存未命中率可以高于或低于百分之十。
响应于确定所跟踪的高速缓存未命中率满足阈值速率,处理器内核1190可被进一步配置为修改DMA电路1101中的特定次序。例如,如果阈值未命中率是15%,并且所跟踪的未命中率是18%,则处理器内核1190可以标识未被高速缓存但在存储器事务中被频繁地作为目标的存储位置935以及标识未被频繁地作为目标的成功高速缓存的存储位置935。修订次序可以调整用于分配这些标识的存储位置的次序,使得更频繁存取的位置在修改次序中被更快地分配,并且较不频繁存取的位置被移向修改次序的末尾。当后续缓冲器将被分配给高速缓存存储器电路905时,可相对于原始特定次序选择修改次序。在一些实施方案中,可确定各种次序并将其与特定代理、任务、过程等相关联,使得用于分配的选定次序考虑类似任务的过去执行。
关于确定分配次序,上文公开了一种技术,其中使用连续位置之间的特定增量来选择后续存储位置。在图11中,示出了一种技术,其包括将缓冲器915划分成具有相应系列的毗邻存储位置935的多个块1130a-1130c(统称为块1130)。所示出的九个存储位置935被划分成三个块1130,每个块1130包括三个连续存储位置935。尽管块1130被示出为每个块包括相等数目的存储位置935,但是在其他实施方案中,每个块1130中包括的存储位置935的数目可以变化。例如,对缓冲器915的使用可能是已知的,并且基于已知的使用,特定存储位置935或位置组可能已知被不频繁地存取,而其他存储位置则已知被更频繁地存取。因此,可调整指派给每个块的存储位置935的数量,使得例如每个块的初始存储位置935为已知将更频繁存取的位置。
在将存储位置935划分成相应块1130之后,处理器内核1190可选择将块1130中的一些块的相应系列的第一存储位置935分配到高速缓存存储器电路905的特定次序,并且然后分配块1130中的一些块的第二存储位置935。如图所示,块1130a包括初始存储位置935a,随后是存储位置935c和935c。类似地,块1130b包括初始存储位置935d,随后是存储位置935e和935f,而块1130c包括初始存储位置935g,随后是存储位置935h和935i。
在第一遍中,处理器内核1190使DMA电路1101高速缓存来自块1130、存储位置935a、935d和935g中的每一者的初始存储位置。在第二遍中,DMA电路1101随后高速缓存来自每个块1130的第二存储位置(存储位置935b、935e和935h),随后是第三遍,其中缓存来自每个块1130的第三位置(存储位置935c、935f和935i)。
如上所述,处理器内核1190可基于所监测的高速缓存未命中率来修改特定次序。该修改可以包括调整包括在每个块中的位置的数量、从每个块一次存储的位置的数量或者用于分配每个块内的位置的次序。例如,在框1130b中,处理器内核1190可以确定比存储位置935d更频繁地存取存储位置935e。在修改的次序中,从块1130b分配的初始存储位置可以是935e而不是935d。
需注意,系统1100仅为示例。为了清楚起见,已经简化了图11。尽管示出了九个存储位置和三个块,但是缓冲器915可以包括任何合适数量的存储位置,并且这些位置可以被划分成任何合适数量的块。每个块中包括的位置的数量可以在块之间变化。另外,在给定时间处分配的来自每个块的位置的数量可以在各遍之间变化。
关于图1至图8讨论了各种类型的QoS级别。用于将缓冲器从系统存储器高速缓存到高速缓存存储器中的事务还可针对不同任务利用不同QoS级别。图12示出了利用所公开的技术对批量和实时事务的使用。
现在继续到图12,示出在两个不同时间处的图9和图10的系统900的实施方案,即在对高速缓存的缓冲器分配期间和在所分配的缓冲器的使用期间。系统900包括如先前在图9和图10中所示的元件。另外,高速缓存存储器电路905和系统存储器电路910被配置为分别支持批量信道1240和实时信道1245。在一些实施方案中,批量信道1240和实时信道1245可利用各种代理与存储器电路之间的单独物理连接来完成相应事务。在其他实施方案中,实时信道1245和批量信道1240的至少一部分被共享,并且在一些实施方案中,可以被实现为如上所述的虚拟批量和实时信道。
在时间t0处,缓冲器915被高速缓存在高速缓存存储器电路905中。在本实施方案中,缓冲器915是实时缓冲器。如本文所用,“实时缓冲器”指其中实时事务主要用于存取缓冲器的位置的存储器缓冲器。实时缓冲器可与代理和/或任务一起使用,其中未能满足特定QoS需求可导致代理或任务的不正确操作。例如,处理用于回放的视频帧需要在特定时间量内完成,否则视频回放可能对观看者产生明显的停顿或毛刺。
尽管缓冲器915是实时缓冲器,但是将缓冲器915初始分配到高速缓存中可能不是时间敏感的。因此,高速缓存缓冲器915的存储位置935可使用批量事务1242跨批量信道1240执行以将多个存储位置935分配到高速缓存存储器电路905中。如时间t0处所示,使用批量信道1240来传送批量事务1242a、1242b和1242c以分别分配高速缓存存储器电路905中的存储位置935a、935d和935g。在该缓冲器分配任务期间,将使用缓冲器915的代理(例如,处理电路901)可能不具有准备好从缓冲器915读取或向该缓冲器写入的值。因此,批量事务1242可用于分配缓冲器915。
然而,由于预期缓冲器915与实时事务一起使用,所以批量事务1242可包括具有成功高速缓存的存储位置935的指示,该指示指示这些高速缓存的存储位置与实时事务相关联。例如,与每个成功高速缓存存储位置935相关联的高速缓存标签可具有特定位或一组位集合,其指示相关联的高速缓存行920将与实时事务一起使用。当高速缓存行被标识用于逐出时,在它们相应的高速缓存标签中具有实时指示的高速缓存行920可以接收更高的优先级。例如,如果高速缓存存储器电路905中的特定数量的高速缓存行920达到阈值级别(例如,接近最大存储容量的某一百分比),则可选择高速缓存行920中尚未频繁存取的特定高速缓存行以供逐出。具有实时指示集合的高速缓存行920可以从对逐出的考虑中省略,或者可以以被选择的次序被设置得非常低,例如,其他高速缓存行将具有被选择用于逐出的更高可能性。
高速缓存存储器电路905还可响应于与实时存储器事务相关联的高速缓存未命中而保留特定量的带宽以用于从系统存储器电路910提取数据。高速缓存存储器电路905可限制在给定时间点发布且活动的批量事务的数量,使得带宽保留以发布实时事务。例如,高速缓存存储器电路905与系统存储器电路910之间的总线电路可包括基于信用的仲裁器电路。为了使所发布的事务由该仲裁器电路选择,高速缓存存储器电路905可能需要维持特定数量的总线信用。在这样的实施方案中,如果总线信用的数量处于或接近特定数量,则高速缓存存储器电路905可以延迟发布批量事务。可在高速缓存存储器电路905已累积足够数目的总线信用之后发送批量事务。
在时间t1处,缓冲器915已被分配给高速缓存存储器电路905。如粗体斜体文本所指示的,位置935f和935i未能被成功地高速缓存。例如,存储位置935f和935i可能已经被映射到先前分别被分配给存储位置1235x和1235y的高速缓存行920i和920l。处理电路901被进一步配置为使用实时事务1250a来存取成功高速缓存的存储位置935c。高速缓存存储器电路905可被配置为使用存储在高速缓存行920a中的值来处理实时事务1250a。
高速缓存存储器电路905被配置为响应于与相应存储器事务相关联的高速缓存未命中而生成对系统存储器电路910的提取请求,所生成的提取请求具有与对应存储器事务兼容的QoS级别。例如,高速缓存存储器电路905可响应于来自给定代理的批量事务而生成批量提取1265a和1265b。处理电路901可被进一步配置为使用实时事务1250b来存取未成功高速缓存的存储位置935f。响应于存储位置935f的高速缓存未命中,高速缓存存储器电路905被配置为使用实时提取1290来完成实时事务1250b。由于高速缓存存储器电路905被配置为保留用于实时提取的带宽,因此可在尚未发布的其他批量提取之前处理实时提取。例如,可使批量提取1265b排队等待批量提取1265a的完成。如果实时提取1290是在批量提取1265b发布之前生成的,则实时提取1290可在批量提取1265b之前被处理。
使用这样的实时和批量QoS级别可以减少代理使用分配给高速缓存存储器的实时缓冲器的存取时间。在实时缓冲器的一部分未能被分配给缓冲器的情况下,实时QoS级别的使用还可减少存储器存取时间。
需注意,图12的实施方案是用于展示目的的示例。为了清楚起见,已最小化图12中所描绘的多个元件。尽管示出了存储位置和高速缓存行的数量,但是在其他实施方案中可以包括任何合适数量的存储位置和高速缓存行。尽管仅示出了实时和批量事务,但是在其他实施方案中可以使用任何合适数量的QoS级别。
上文关于图9至图12所描述的电路、过程和技术描述用于将系统存储器中的缓冲器分配到高速缓存存储器的各种技术。可使用多种方法来实现这些各种技术。下面参考图13至图15描述三种此类方法。
现在移到图13,示出用于将系统存储器中的缓冲器高速缓存到高速缓存存储器电路中的方法的实施方案的流程图。在各种实施方案中,方法1300可由图9、图10和图12中的处理电路901执行,作为用于将缓冲器915高速缓存在高速缓存存储器电路905中的过程的一部分。例如,处理电路901可包括(或者可存取)其上存储有程序指令的非暂态计算机可读介质,该程序指令可由处理电路执行以引起参考图13描述的操作。共同参考图9和图13,方法1300开始于框1310。
在框1310处,方法1300包括由处理电路901将系统存储器电路910中的多个存储位置935分配到缓冲器915。如图所示,处理电路901或系统900中的不同代理可请求在系统存储器电路910中分配缓冲器915以便与代理正准备执行的特定过程或任务一起使用。例如,任务可以涉及图像、音频文件的处理,文件的加密或解密、来自传感器的输入的分析等。在一些实施方案中,缓冲器915可以是使用实时事务来存取存储位置935的实时缓冲器。如前所述,实时事务具有比其他事务(诸如批量事务)更高的QoS级别。
在框1320处,方法1300还包括确定用于将存储位置935分配到高速缓存存储器电路905中的特定次序。与使用线性次序相比,该特定次序可被选择为增加高速缓存未命中率的均匀性。如前所述,使用线性次序分配存储位置935可导致接近线性次序的开始的存储位置935被成功高速缓存,而在线性次序末尾处的存储位置935由于被映射到与先前高速缓存的存储位置935相同的高速缓存行920而未能被成功地高速缓存。如果缓冲器915中的数据以与它们被分配的次序相同的次序从存储位置935被存取,则随着处理朝向次序的末尾移动,将预期更多的高速缓存未命中。因此,选择特定次序使得高速缓存以尝试在缓冲器915的使用期间均匀地分布高速缓存未命中的次序发生。因此,在缓冲器915的使用期间,高速缓存未命中可能不会集中在缓冲器存取的任何特定部分期间。
在框1330处,方法1300还包括使用特定次序高速缓存缓冲器915的存储位置935。在已选择用于分配存储位置935的特定次序之后,处理电路901开始将存储位置935中的一些存储位置分配到高速缓存存储器电路905中。在一些实施方案中,诸如图10中所示,方法130可以包括响应于高速缓存特定存储位置935(例如,存储位置935b)的故障,在高速缓存不同的存储位置935(诸如存储位置935e)之前重试存储位置935b的高速缓存。
方法1300可在框1330中结束。在一些实施方案中,可重复方法1300的至少一部分。例如,响应于接收到对分配系统存储器电路910中的不同缓冲器的请求,方法1300可以重复。在一些情况下,方法1300可以与该方法的其他实例同时执行。例如,处理电路901的两个或更多个实例或处理电路901的单个实例中的多个过程线程可各自彼此独立地执行方法1300。
现在转到图14,示出了用于利用分配到高速缓存存储器电路中的缓冲器来使用各种QoS级别的方法的实施方案的流程图。以与方法1300类似的方式,方法1400可由图9、图10和图12中的处理电路901来执行。如上所述,处理电路901可包括(或者可存取)其上存储有程序指令的非暂态计算机可读介质,该程序指令可由处理电路901执行以引起参考图14描述的操作。共同参考图12和图14,方法1400开始于框1410。
在框1410处,方法1400包括使用批量事务将多个位置分配到高速缓存存储器电路中。如图所示,缓冲器915的分配过程可能没有关键的QoS需求。因此,缓冲器915的存储位置935的高速缓存可使用批量事务1242执行以将存储位置935分配到高速缓存存储器电路905中。如图12的时间t0处所示,使用批量信道1240来传送批量事务1242a、1242b和1242c以分别将存储位置935a、935d和935g分配到高速缓存存储器电路905中。
在框1420处,方法1400还包括包括具有成功高速缓存的存储位置935的指示,该指示指示与实时事务一起使用。尽管用于缓冲器915的分配过程可能没有实时需求,但可预期使用实时事务来存取缓冲器915。因此,当特定存储位置935被成功地高速缓存到相应高速缓存行920中时,用于高速缓存行的对应高速缓存标签可以包括高速缓存的内容与实时事务相关联的指示。如前所述,此类指示可帮助避免已被分配给缓冲器915的高速缓存行920的逐出。
在框1430处,方法1400还包括由代理(例如,处理电路901)使用实时事务来存取成功高速缓存的存储位置935。在已经完成缓冲器915的分配之后,如图12所示,处理电路901可以使用实时事务1250a和1250b来存取存储位置935中的一些存储位置。实时事务1250a命中其中存储位置935c已被高速缓存的高速缓存行920a。如果实时事务1250a包括读取请求,那么可使用实时事务将来自高速缓存行920a的对应于所请求地址的数据从高速缓存存储器电路905发送到处理电路901。
在框1440处,方法1400还包括响应于未能被高速缓存的存储位置935的特定位置的高速缓存未命中,由高速缓存存储器电路905使用实时事务来存取系统存储器电路910中的缓冲器915中的特定存储位置935。如图12所示,实时事务1250b以存储位置935f为目标。然而,存储位置935f未能被成功地高速缓存在高速缓存存储器电路905中。因此,高速缓存存储器电路905生成并向系统存储器电路910发布实时提取1290以从存储位置935f检索值。如果也由高速缓存存储器电路905生成的批量提取1265a和1265b中的任一者在实时提取1290准备好被发布时尚未发布,那么实时提取1290可优先于未发布的批量提取。
方法1400可以在框1440中结束,或者在一些实施方案中,可以全部或部分地重复。例如,当处理电路901正在处理缓冲器915中的值时,可以重复框1430。类似地,当处理电路901存取未被成功高速缓存的存储位置935时,可以重复框1440。以与方法1300类似的方式,方法1400可与方法1400的其他实例同时执行。
现在继续到图15,示出了用于选择和调整用于将缓冲器分配到高速缓存存储器电路的特定次序的方法的实施方案的流程图。如针对方法1300和1400所描述的,方法1400可由图9、图10和图12中的处理电路901来执行。如所描述的,处理电路901可包括(或者可存取)其上存储有程序指令的非暂态计算机可读介质,该程序指令可由处理电路901执行以引起参考图15描述的操作。共同参考图12和图15,方法1500开始于框1510。
在框1510处,方法1500包括使用多个存储位置935的期望高速缓存未命中率来确定特定次序。如上所述,用于分配缓冲器915的特定次序可以以在缓冲器915上分布高速缓存未命中为目标来选择。将使用缓冲器915的代理(例如,处理电路901)可使用线性次序来处理存储在缓冲器915中的数据。处理电路901可以在诸如935a之类的初始存储位置处开始,并且按顺序前进通过存储位置935,例如935b、935c等等,以存储位置935i结束。如果以该相同的线性次序分配存储位置935,则多个存储位置935可能无法朝向缓冲器915的末端高速缓存。以相同次序处理缓冲器915中的数据可导致随着处理进行而增加的高速缓存未命中率,从而潜在地朝向缓冲器915的末端达到峰值。可选择特定次序以将待分配的存储位置935的故障分布在缓冲器915上,使得当缓冲器915被处理时,峰值高速缓存未命中率保持低于期望的高速缓存未命中率。
在框1520处,方法1500还包括在高速缓存之后由处理电路901使用线性次序来存取多个存储位置935。如所描述的,处理电路901可使用不同于特定次序的线性次序来存取缓冲器915。在其他实施方案中,处理电路901可使用与线性次序不同的次序。在此类实施方案中,特定次序可以被选择为与不同次序不同,包括例如使用线性次序来分配存储位置935。
在框1530处,该方法还包括跟踪与使用特定次序相关联的高速缓存未命中率以高速缓存多个存储位置935。当处理电路901使用缓冲器915时,观察到的高速缓存未命中率可被跟踪,并且可进一步与期望的高速缓存未命中率进行比较。如果用于分配存储位置935的特定次序是有效的,则所跟踪的高速缓存未命中率应保持低于期望的高速缓存未命中率,因为高速缓存未命中可以在缓冲器915中的所有数据的整个处理过程中更一致地发生。通过一致地分布高速缓存未命中,峰值高速缓存未命中率应保持合理地低,并且不超过期望的高速缓存未命中率。
在框1540处,方法1500还包括响应于确定所跟踪的高速缓存未命中率满足阈值速率,调整特定次序以供后续使用。如图所示,如果所跟踪的高速缓存未命中率达到或超过期望的高速缓存未命中率,则使用所选择的特定次序分配缓冲器915没有实现期望的结果。阈值速率可以等于期望的高速缓存未命中率,或者可以基于整个系统操作目标而被调整得更高或更低。为了调整特定次序,可分析在高速缓存未命中率满足阈值速率时发生的高速缓存未命中以标识正被存取的存储位置935。这些标识的存储位置935中的一者或多者可被选择为移动得更靠近调整的分配次序的开始。另外,还可以标识在高速缓存未命中率为低时被存取的存储位置935。这些存储位置中的一者或多者可被选择为朝向调整的分配次序的末尾移动。
在一些实施方案中,方法1500可以在框1540中结束,或者可以全部或部分地重复。例如,当处理电路901正在存取缓冲器915中的存储位置935时,可以重复框1520和1530。如针对方法1300和1400所描述的,方法1500还可以与方法1500的其他实例同时执行。另外,方法1300、1400和1500可彼此同时执行。
图1至图8示出了用于重新分配高速缓存存储器的一部分以用作可直接寻址地址区域的系统的电路和方法。图9至图15描绘了用于将系统存储器中的缓冲器高速缓存到高速缓存存储器电路中的电路和技术。所公开的系统的任何实施方案可被包括在各种计算机系统中的一个或多个计算机系统中,诸如台式计算机、膝上型计算机、智能电话、平板电脑、可穿戴设备等。在一些实施方案中,上述电路可在片上系统(SoC)或其他类型的集成电路上实现。图16中示出了示出计算机系统1600的实施方案的框图。在一些实施方案中,计算机系统1600可以包括所公开的实施方案中的任一者,诸如系统100、200、500、600、900或1100。
在所示实施方案中,系统1600包括片上系统(SoC)1606的至少一个实例,该片上系统可包括多种类型的处理电路诸如中央处理单元(CPU)、图形处理单元(GPU),或者其他通信结构,以及到存储器和输入/输出设备的接口。在一些实施方案中,SoC 1606中的一个或多个处理器包括多个执行道和指令发布队列。在各种实施方案中,SoC 1606耦接到外部存储器1602、外围设备1604和功率源1608。
还提供了功率源1608,该功率源向SoC 1606供应供电电压以及向存储器1602和/或外围设备1604供应一个或多个供电电压。在各种实施方案中,功率源1608表示电池(例如,智能电话、膝上型计算机或平板计算机或者其他设备中的可再充电电池)。在一些实施方案中,包括SoC 1606的多于一个实例(并且也包括多于一个外部存储器1602)。
存储器1602是任何类型的存储器,诸如动态随机存取存储器(DRAM)、同步DRAM(SDRAM)、双数据速率(DDR、DDR2、DDR3等)SDRAM(包括SDRAM的移动版本,诸如mDDR3等,和/或SDRAM的低功率版本,诸如LPDDR2等)、RAMBUSDRAM(RDRAM)、静态RAM(SRAM)等。一个或多个存储器设备耦接到电路板上以形成存储器模块,诸如单列直插存储器模块(SIMM)、双列直插存储器模块(DIMM)等。另选地,设备与SoC或集成电路以芯片堆叠(chip-on-chip)构型、封装堆叠(package-on-package)构型或多芯片模块构型安装。
根据系统1600的类型,外围设备1604包括任何期望的电路系统。例如,在一个实施方案中,外围设备1604包括用于各种类型的无线通信的设备,诸如Wi-Fi、蓝牙、蜂窝、全球定位系统等。在一些实施方案中,外围设备1604还包括附加存储装置,包括RAM存储装置、固态存储装置或磁盘存储装置。外围设备1604包括用户接口设备诸如显示屏,包括触摸显示屏或多点触摸显示屏、键盘或其他输入设备、麦克风、扬声器等。
如图所示,系统1600被示为在范围广泛的领域中具有应用。例如,系统1600可用作台式计算机1610、膝上型计算机1620、平板计算机1630、蜂窝或移动电话1640或者电视1650(或耦接到电视的机顶盒)的芯片、电路系统、部件等的一部分。还示出了智能手表和健康监测设备1660。在一些实施方案中,智能手表可包括各种通用计算相关功能。例如,智能手表可提供对电子邮件、手机服务、用户日历等的访问。在各种实施方案中,健康监测设备可以是专用医疗设备或以其他方式包括专用的健康相关功能。例如,健康监测设备可监测用户的生命体征、跟踪用户与其他用户的接近度以用于流行病学社交距离的目的、联系人跟踪、在发生健康危机的情况下向紧急服务部门提供通信等。在各种实施方案中,上述智能手表可包括或可不包括一些或任何健康监测相关功能。还设想了其他可穿戴设备1660,诸如围绕颈部佩戴的设备、附接到帽子或其他头盔的设备、可植入人体中的设备、被设计成提供增强和/或虚拟现实体验的眼镜等。
系统1600还可用作基于云的服务1670的一部分。例如,先前提及的设备和/或其他设备可访问云端中的计算资源(即,远程定位的硬件和/或软件资源)。更进一步地,系统1600可用于家庭1680的除先前提到的那些设备之外的一个或多个设备中。例如,家用电器可监测和检测值得注意的情况。家中的各种设备(例如,冰箱、冷却系统等)可监测设备的状态,并且在检测到特定事件的情况下向房主(或例如维修机构)提供警报。另选地,恒温器可监测家中的温度,并且可基于由房主对各种情况的反应历史来自动化调整加热/冷却系统。图16中还示出了系统1600对各种交通运输模式1690的应用。例如,系统1600可用于飞机、火车、公共汽车、出租用汽车、私人汽车、从私人船只到游轮的水运船、(用于出租或私有的)小型摩托车等的控制和/或娱乐系统。在各种情况下,系统1600可用于提供自动化引导(例如,自驾驶车辆)、一般系统控制等。
需注意,系统1600的各种潜在应用可包括各种性能、成本和功率消耗要求。因此,使得能够使用一个或多个集成电路来提供性能、成本和功率消耗的合适组合的可缩放解决方案可以是有益的。这些和许多其他实施方案都是可能的并且被设想到的。需注意,图16所示的设备和应用仅为例示性的,并非旨在进行限制。其他设备是可能的并且被设想到的。
如关于图16所公开的,计算机系统1600可包括有包括在个人计算机、智能电话、平板计算机或其他类型的计算设备内的一个或多个集成电路。下文在图17中展示了用于使用设计信息设计和产生集成电路的过程。
图17是示出根据一些实施方案的存储电路设计信息的非暂态计算机可读存储介质的示例的框图。图17的实施方案可在用于设计和制造集成电路(例如如图1至图15所示和所述的系统100、200、500、600、900或1100中的任一者)的过程中使用。在所示实施方案中,半导体制造系统1720被配置为处理存储于非暂态计算机可读存储介质1710上的设计信息1715并基于该设计信息1715来制造集成电路1730(例如,系统100)。
非暂态计算机可读存储介质1710可以包括各种适当类型的存储器设备或存储设备中的任一者。非暂态计算机可读存储介质1710可以是安装介质,例如CD-ROM、软盘或磁带设备;计算机系统存储器或随机存取存储器诸如DRAM、DDR RAM、SRAM、EDO RAM、Rambus RAM等;非易失性存储器诸如闪存、磁介质,例如,硬盘驱动器或光学存储装置;寄存器或其它类似类型的存储器元件等。非暂态计算机可读存储介质1710还可以包括其它类型的非暂态存储器或它们的组合。非暂态计算机可读存储介质1710可以包括可驻留在不同位置例如通过网络连接的不同计算机系统中的两个或更多个存储器介质。
设计信息1715可利用各种适当的计算机语言中的任何语言来指定,包括硬件描述语言诸如但不限于:VHDL、Verilog、SystemC、SystemVerilog、RHDL、M、MyHDL等。设计信息1715能被半导体制造系统1720用来制造集成电路1730的至少一部分。设计信息1715的格式可被至少一个半导体制造系统诸如例如半导体制造系统1720识别。在一些实施方案中,设计信息1715可包括指定单元库的元素及其连接性的网表。在包括在集成电路1730中的电路的逻辑合成期间使用的一个或多个单元库也可包括在设计信息1715中。此类单元库可包括指示被包括在单元库中的单元的设备或晶体管级网表、掩模设计数据、表征数据等的信息。
在各种实施方案中,集成电路1730可以包括一个或多个自定义宏单元,诸如存储器、模拟或混合信号电路等。在这种情况下,设计信息1715可以包括与所包括的宏单元相关的信息。此类信息可以包括但不限于电路图捕获数据库、掩模设计数据、行为模型以及设备或晶体管级网表。如本文所用,掩模设计数据可以根据图形数据系统(暂态)或任何其他合适的格式来格式化。
半导体制造系统1720可以包括被配置为制造集成电路的各种适当元件中的任何元件。这可包括例如用于(例如,在可包括掩模的晶片上)沉积半导体材料、移除材料、改变所沉积材料的形状、(例如,通过掺杂材料或使用紫外线处理来修改介电常数)对材料进行改性等的元件。半导体制造系统1720还可被配置为执行所制造电路的各种测试以进行正确操作。
在各种实施方案中,集成电路1730被配置为根据由设计信息1715所指定的电路设计来操作,这可包括执行本文所述功能中的任何功能。例如,集成电路1730可包括本文所示或所述的各种元件中的任何元件。另外,集成电路1730可以被配置为执行本文结合其它部件所述的各种功能。
如本文所用,形式为“指定被配置为…的电路的设计的设计信息”的短语并不暗示为了满足该要素就必须制造所涉及的电路。相反,该短语表明设计信息描述了一种电路,该电路在被制造时将被配置为执行所指示的动作或者将包括所指定的部件。
***
本公开包括对“实施方案”或“实施方案”的组(例如,“一些实施方案”或“各种实施方案”)的引用。实施方案是所公开概念的不同具体实施或实例。对“实施方案”、“一个实施方案”、“特定实施方案”等的引用并不一定是指相同的实施方案。设想了大量可能的实施方案,包括具体公开的那些,以及落入本公开的实质或范围内的修改或替代。
本公开可讨论可由所公开的实施方案产生的潜在优点。并非所有这些实施方案的具体实施都将必然表现出任何或所有潜在优点。特定具体实施是否实现了优点取决于许多因素,其中一些因素在本公开的范围之外。事实上,存在许多原因导致落入权利要求范围内的具体实施可能不表现出任何所公开的优点中的一些或全部。例如,特定具体实施可包括在本公开的范围之外的其他电路,结合所公开的实施方案中的一个实施方案,该其他电路否定或减弱一个或多个所公开的优点。此外,特定具体实施(例如,具体实施技术或工具)的次优设计执行也可能否定或减弱所公开的优点。即使假设有技术的具体实施,优点的实现仍可取决于其他因素,诸如部署具体实施的环境情况。例如,提供给特定具体实施的输入可防止本公开中解决的一个或多个问题在特定场合发生,结果可能无法实现其解决方案的益处。考虑到本公开外部的可能因素的存在,本文所述的任何潜在优点都不应理解为是为了证明侵权行为而必须满足的权利要求限制。相反,此类潜在优点的识别旨在示出受益于本公开的设计者可用的一种或多种改进类型。永久性地描述此类优点(例如,陈述特定优点“可能出现”)并非旨在传达关于此类优点实际上是否可被实现的疑问,而是认识到此类优点的实现通常取决于附加因素的技术现实。
除非另行指出,否则实施方案是非限制性的。也就是说,所公开的实施方案并非旨在限制基于本公开起草的权利要求的范围,即使仅针对特定特征描述单个示例的情况下也是如此。本发明所公开的实施方案旨在为示例性的而非限制性的,而无需在本公开中进行任何相反的陈述。因此本申请意在允许涵盖所公开实施方案的权利要求、以及此类替代形式、修改形式和等价形式,这对知晓本公开有效效果的本领域技术人员将是显而易见的。
例如,本申请中的特征可以任何合适的方式组合。因此,在本专利申请(或要求享有其优先权的专利申请)进行期间可针对特征的任何此类组合作出新的权利要求。具体地讲,参照所附权利要求,从属权利要求的特征在适当的情况下可与其他从属权利要求的特征组合,包括从属于其他独立权利要求的权利要求。类似地,在适当的情况下,可组合来自相应独立权利要求的特征。
因此,虽然所附从属权利要求可撰写成使得每个从属权利要求从属于单个其他权利要求,但也可设想附加从属关系。可设想符合本公开的从属特征的任何组合,并且这些组合可在本专利申请或另一专利申请中受权利要求书保护。简而言之,组合不限于所附权利要求中具体列举的那些。
在适当的情况下,还预期以一种格式或法定类型(例如,装置)起草的权利要求旨在支持另一种格式或法定类型(例如,方法)的对应权利要求。
***
因为本公开是法律文件,所以各种术语和短语可受到管理和司法解释的约束。特此给出公告,以下段落以及贯穿本公开提供的定义将用于确定如何解释基于本公开起草的权利要求。
除非上下文另有明确规定,否则对单数形式的项目的引用(即,前面有“一个”、“一种”或“该”的名词或名词短语)旨在表示“一个或多个”。因此,在不伴随上下文的情况下,对权利要求中的“项目”的引用并不排除该项目的附加实例。“多个”项目是指两个或更多个项目的集合。
词语“可”在本文中在允许的意义上(即,具有潜在可能的,能够的)进行使用,而不是在强制意义上(即,必须)进行使用。
术语“包含”和“包括”及其形式是开放式的,并且意指“包括但不限于”。
当在本公开中相对于选项列表使用术语“或”时,除非上下文另有提供,否则一般将理解为以包含性意义使用。因此,表述“x或y”等同于“x或y,或两者”,因此涵盖1)x但不是y,2)y但不是x,以及3)x和y两者。另一方面,短语诸如“x或y中的任一者,但不是两者都”使得清楚“或”以排他性意义使用。
表述“w、x、y或z,或它们的任何组合”或“...w、x、y和z中的至少一者”旨在涵盖涉及最多至该集合中元件总数的单个元件的所有可能性。例如,给定集合[w,x,y,z],这些短语涵盖集合中的任何单个元素(例如,w但不是x、y或z)、任何两个元素(例如,w和x,但不是y或z)、任何三个元素(例如,w、x和y,但不是z)以及所有四个元素。短语“...w、x、y和z中的至少一者”因此是指集合[w,x,y,z]中的至少一个元素,从而涵盖该元素列表中的所有可能的组合。该短语不应被解释为要求存在w的至少一个实例、x的至少一个实例、y的至少一个实例和z的至少一个实例。
在本公开中,各种“标签”可先于名词或名词短语。除非上下文另有提供,否则用于特征(例如,“第一电路”、“第二电路”、“特定电路”、“给定电路”等)的不同标签是指特征的不同实例。除此之外,除非另有说明,否则标签“第一”、“第二”和“第三”在应用于特征时并不暗示任何类型的排序(例如,空间、时间、逻辑等)。
短语“基于”或用于描述影响确定的一个或多个因素。此术语不排除可能有附加因素可影响确定。也就是说,确定可仅基于指定的因素或基于所指定的因素及其他未指定的因素。考虑短语“基于B确定A”。此短语指定B是用于确定A的因素或者B影响A的确定。此短语并不排除A的确定也可基于某个其他因素诸如C。此短语也旨在覆盖A仅基于B来确定的实施方案。如本文所用,短语“基于”与短语“至少部分地基于”是同义的。
短语“响应于”和“响应”描述了触发效应的一个或多个因素。该短语不排除附加因素可影响或以其他方式触发效应的可能性,这些因素与指定因素联合使用或独立于指定因素。也就是说,效果可以仅仅响应于这些因素,或者可以响应于指定的因素以及其他未指定的因素。考虑短语“响应于B执行A”。该短语指定B是触发A的执行或触发A的特定结果的因素。该短语不排除执行A也可能响应于某些其他因素,诸如C。该短语也不排除执行A可响应于B和C而联合执行。此短语也旨在覆盖A仅响应于B而执行的实施方案。如本文所用,短语“响应”与短语“至少部分地响应于”是同义的。类似地,短语“响应于”与短语“至少部分地响应于”是同义的。
在本公开内,不同实体(其可被不同地称为“单元”、“电路”、其他部件等)可被描述或声称成“被配置为”执行一个或多个任务或操作。此表达方式—被配置为[执行一个或多个任务]的[实体]—在本文中用于指代结构(即,物理的事物)。更具体地,此表达方式用于指示此结构被布置成在操作期间执行一个或多个任务。结构可被说成“被配置为”执行某个任务,即使该结构当前并非正被操作。因此,被描述或表述为“被配置为”执行某个任务的实体指代用于实施该任务的物理的事物,诸如设备、电路、具有处理器单元的系统和存储有可执行程序指令的存储器等。此短语在本文中不被用于指代无形的事物。
在一些情况下,各种单元/电路/部件在本文中可被描述为执行一组任务或操作。应当理解,这些实体“被配置为”执行那些任务/操作,即使没有具体指出。
术语“被配置为”并不旨在意指“可配置为”。例如,未编程的FPGA不会被认为是“被配置为”执行特定功能。然而,该未编程的FPGA可以“可配置为”执行该功能。在适当编程之后,FPGA然后可认为“被配置为”执行特定功能。
出于基于本公开的美国专利申请的目的,在权利要求中陈述结构“被配置为”执行一个或多个任务明确地旨在对该权利要求要素不援引35U.S.C.§112(f)。如果申请人在基于本公开的美国专利申请的申请过程中想要援引112(f)部分,则其将使用“用于[执行功能]的装置”结构来表述权利要求的要素。
***
在本公开中可描述不同的“电路”。这些电路或“电路系统”构成硬件,该硬件包括各种类型的电路元件,诸如组合逻辑、时钟存储设备(例如,触发器、寄存器、锁存器等)、有限状态机、存储器(例如,随机存取存储器、嵌入式动态随机存取存储器)、可编程逻辑阵列等。电路可以是定制设计的,或取自标准库。在各种具体实施中,电路系统可以视情况包括数字部件、模拟部件或两者的组合。某些类型的电路可通常被称为“单元”(例如,解码单元、算术逻辑单元(ALU)、功能单元、存储器管理单元(MMU)等)。此类单元也指电路或电路系统。
因此,在附图中示出并在本文中描述的所公开的电路/单元/部件和其他元件包括硬件元件,诸如前面段落中描述的那些硬件元件。在许多情况下,硬件元件在特定电路中的内部布置可通过描述该电路的功能来指定。例如,特定的“解码单元”可被描述为执行“处理指令的操作码并将该指令路由到多个功能单元中的一个或多个”的功能,这意味着解码单元“被配置为”执行该功能。对于计算机领域的技术人员而言,该功能规范足以暗示用于电路的一组可能的结构。
在各种实施方案中,如前面段落中所述,电路、单元和其他元件可由其被配置为实施的功能或操作来限定。相对于彼此的布置和此类电路/单元/部件以及它们进行交互的方式形成硬件的微架构定义,该硬件最终在集成电路中制造或被编程到FPGA中以形成微架构定义的物理具体实施。因此,微架构定义被本领域的技术人员认为是可导出许多物理具体实施的结构,所有这些物理具体实施均落入由微架构定义所描述的更广泛的结构中。即,具有根据本公开提供的微架构定义的技术人员可在没有过度实验的情况下并且利用普通技术人员的应用,通过以硬件描述语言(HDL)诸如Verilog或VHDL编码电路/单元/部件的描述来实现该结构。HDL描述常常以可显现为功能性的方式来表达。但是对于本领域的技术人员而言,该HDL描述是用于将电路、单元或部件的结构转换为下一级具体实施细节的方式。此类HDL描述可采用以下形式:行为代码(其通常为不可合成的)、寄存器传输语言(RTL)代码(其与行为代码相比通常为可合成的)、或结构代码(例如,指定逻辑门及其连接性的网表)。可针对为给定集成电路制造技术设计的单元库来顺序地合成HDL描述,并可出于定时、功率和其他原因而被修改,以获得被传输到工厂以生成掩模并最终产生集成电路的最终的设计数据库。一些硬件电路或其部分也可在示意图编辑器中被定制设计并且与合成电路系统一起被捕获到集成电路设计中。该集成电路可包括晶体管和其他电路元件(例如,无源元件,诸如电容器、电阻器、电感器等),以及晶体管和电路元件之间的互连件。一些实施方案可实现耦接在一起的多个集成电路,以实现硬件电路,和/或可在一些实施方案中使用离散元件。另选地,HDL设计可被合成为可编程逻辑阵列诸如现场可编程门阵列(FPGA),并且可在FPGA中实现。一组电路的设计与这些电路的后续低级具体实施之间的这种解耦通常导致这样的情形:其中电路或逻辑设计者从来不指定超出对电路被配置为做什么的描述的用于低级具体实施的一组特定结构,因为该过程是在电路实施过程的不同阶段执行的。
可使用电路元件的许多不同低级组合来实现电路的相同规格的事实导致该电路的大量等效结构。如所指出的那样,这些低级电路具体实施可根据制造技术、被选择用于制造集成电路的代工厂、为特定项目提供的单元库等的变化而变化。在许多情况下,通过不同设计工具或方法进行的产生这些不同具体实施的选择可以是任意的。
此外,对于给定实施方案,电路的特定功能规范的单个具体实施通常包括大量设备(例如,数百万个晶体管)。因此,该信息的剪切体积使得提供用于实现单个实施方案的低级结构的完整叙述是不切实际的,更不用说大量等同的可能具体实施。为此,本公开描述了使用工业中常用的功能简写的电路的结构。

Claims (20)

1.一种装置,包括:
高速缓存存储器电路,所述高速缓存存储器电路包括具有多个高速缓存行的高速缓存存储器;以及
高速缓存控制器电路,所述高速缓存控制器电路被配置为:
接收重新分配所述高速缓存存储器电路的当前正在使用的部分的请求,其中所述请求标识对应于所述多个高速缓存行中的一个或多个高速缓存行的地址区域;以及
响应于所述请求,通过从高速缓存操作排除所述一个或多个高速缓存行来将所述一个或多个高速缓存行转换为可直接寻址随机存取存储器(RAM)。
2.根据权利要求1所述的装置,其中所述高速缓存控制器电路被进一步配置为:
支持用于所标识的地址区域中的存储器事务的实时虚拟信道;以及
使经由所述实时虚拟信道接收的存储器事务优先于经由批量虚拟信道接收的存储器事务。
3.根据权利要求1所述的装置,其中所述高速缓存控制器电路被进一步配置为:
确定所述地址区域被包括在安全存取区域中;以及
响应于所述确定,忽略来自未被授权存取所述安全存取区域的代理的在所述地址区域中的存储器事务。
4.根据权利要求1所述的装置,其中所述高速缓存控制器电路被进一步配置为在将所述一个或多个高速缓存行转换为所述可直接寻址RAM之前冲刷所述一个或多个高速缓存行。
5.根据权利要求1所述的装置,其中所述高速缓存控制器电路被进一步配置为:
响应于有效高速缓存行中的数据被写入而发布对所述有效高速缓存行的回写请求;以及
从回写请求排除所述一个或多个高速缓存行。
6.根据权利要求1所述的装置,其中所述高速缓存控制器电路被进一步配置为:
接收从所述可直接寻址RAM解除分配所述高速缓存存储器的所述部分的一不同请求;以及
响应于所述不同请求,在高速缓存操作中包括所述一个或多个高速缓存行,而不在重新分配所述一个或多个高速缓存行的同时复制存储在所述可直接寻址RAM中的数据。
7.根据权利要求6所述的装置,其中所述高速缓存控制器电路被进一步配置为响应于在解除分配所述高速缓存存储器的所述部分之后接收到的所述可直接寻址RAM中的存储器事务而生成错误。
8.一种方法,包括:
由高速缓存控制器电路接收将高速缓存存储器电路的当前正使用的部分重新分配到可直接寻址地址区域的请求,其中所述请求标识不活动的地址区域;
基于所标识的地址区域,选择所述高速缓存存储器电路的一个或多个高速缓存行以进行转换;以及
由所述高速缓存控制器电路针对所选择的高速缓存行中的高速缓存行设置相应指示,以将所选择的高速缓存行从进一步高速缓存操作中排除。
9.根据权利要求8所述的方法,其中设置所述相应指示包括由所述高速缓存控制器电路设置实时存储器指示符,其中所述实时存储器指示符表示所选择的高速缓存行与具有比批量事务更高的优先级的实时事务相关联。
10.根据权利要求8所述的方法,还包括响应于确定所标识的地址区域是安全存取区域的一部分,由所述高速缓存控制器电路忽略来自未被授权存取所述安全存取区域的代理的针对所标识的地址区域的存储器事务。
11.根据权利要求8所述的方法,还包括由所述高速缓存控制器电路在设置所述相应指示之前冲刷所选择的高速缓存行。
12.根据权利要求8所述的方法,其中当前缓存在所述高速缓存存储器电路中的写入到特定地址的数据被回写到系统存储器中的所述特定地址;并且
其中写入到所标识的地址区域中的一不同地址的数据不被回写到所述系统存储器。
13.根据权利要求8所述的方法,所述方法还包括:
由所述高速缓存控制器电路接收从所述可直接寻址地址区域解除分配所述高速缓存存储器电路的所述部分的一不同请求;以及
响应于所述不同请求,将所选择的高速缓存行包括在高速缓存操作中,其中在重新分配所选择的高速缓存行时存储在所述可直接寻址地址区域中的数据被覆写而没有回写到系统存储器电路。
14.根据权利要求13所述的方法,还包括响应于在解除分配所述高速缓存存储器电路的所述部分之后接收到的对所述可直接寻址地址区域中的地址的读取请求,由所述高速缓存控制器电路返回默认值。
15.一种系统,包括:
高速缓存存储器电路,所述高速缓存存储器电路包括具有多个通路的高速缓存存储器;
处理器,所述处理器被配置为使用包括活动地址区域和不活动地址区域的地址映射来发布存储器请求;以及
高速缓存控制器电路,所述高速缓存控制器电路被配置为:
从所述处理器接收将所述高速缓存存储器的部分重新分配为可直接寻址存储器的请求,其中所述请求标识不活动地址区域;
基于所述请求,选择所述多个通路的部分以进行转换;以及
映射通路的所选择的部分以供在所标识的地址区域中使用。
16.根据权利要求15所述的系统,其中为了转换通路的所选择的部分,所述高速缓存控制器电路被配置为在与包括在通路的所选择的部分中的特定高速缓存行相对应的高速缓存标签中设置相应指示,其中所述相应指示移除了所述特定高速缓存行作为高速缓存存储器的使用。
17.根据权利要求16所述的系统,其中所述高速缓存控制器电路被进一步配置为在与所述特定高速缓存行相对应的所述高速缓存标签中设置相应实时指示符,其中所述实时指示符表示所述特定高速缓存行与具有比批量事务更高的优先级的实时事务相关联。
18.根据权利要求15所述的系统,其中所述高速缓存控制器电路被进一步配置为响应于接收到解除分配所述可直接寻址存储器的请求而将通路的所选择的部分包括在高速缓存操作中,其中响应于解除分配所述可直接寻址存储器的所述请求而不重新定位在通路的所选择的部分被重新分配时存储在所述可直接寻址存储器中的数据。
19.根据权利要求15所述的系统,其中所述高速缓存控制器电路被进一步配置为在映射通路的所选择的部分以供在所标识的地址区域中使用之前,冲刷通路的所选择的部分中的高速缓存行。
20.根据权利要求15所述的系统,其中所述通路的所述部分是特定通路的一半。
CN202280057928.6A 2021-08-31 2022-07-28 动态分配高速缓存存储器作为ram Pending CN117940908A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US17/462,812 2021-08-31
US17/462,777 2021-08-31
US17/462,812 US11893251B2 (en) 2021-08-31 2021-08-31 Allocation of a buffer located in system memory into a cache memory
PCT/US2022/038644 WO2023033955A1 (en) 2021-08-31 2022-07-28 Dynamic allocation of cache memory as ram

Publications (1)

Publication Number Publication Date
CN117940908A true CN117940908A (zh) 2024-04-26

Family

ID=85286447

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202280057928.6A Pending CN117940908A (zh) 2021-08-31 2022-07-28 动态分配高速缓存存储器作为ram

Country Status (2)

Country Link
US (2) US11893251B2 (zh)
CN (1) CN117940908A (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230221874A1 (en) * 2022-01-12 2023-07-13 Vmware, Inc. Method of efficiently receiving files over a network with a receive file command

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4953079A (en) * 1988-03-24 1990-08-28 Gould Inc. Cache memory address modifier for dynamic alteration of cache block fetch sequence
US5307477A (en) * 1989-12-01 1994-04-26 Mips Computer Systems, Inc. Two-level cache memory system
JPH0659952A (ja) 1992-08-07 1994-03-04 Toshiba Corp 磁気ディスク装置
US5502833A (en) * 1994-03-30 1996-03-26 International Business Machines Corporation System and method for management of a predictive split cache for supporting FIFO queues
US5913224A (en) * 1997-02-26 1999-06-15 Advanced Micro Devices, Inc. Programmable cache including a non-lockable data way and a lockable data way configured to lock real-time data
US6370619B1 (en) 1998-06-22 2002-04-09 Oracle Corporation Managing partitioned cache
US6438651B1 (en) * 1999-11-01 2002-08-20 International Business Machines Corporation Method, system, and program for managing requests to a cache using flags to queue and dequeue data in a buffer
US7310706B1 (en) * 2001-06-01 2007-12-18 Mips Technologies, Inc. Random cache line refill
US6789167B2 (en) 2002-03-06 2004-09-07 Hewlett-Packard Development Company, L.P. Method and apparatus for multi-core processor integrated circuit having functional elements configurable as core elements and as system device elements
US7254676B2 (en) 2002-11-15 2007-08-07 Intel Corporation Processor cache memory as RAM for execution of boot code
JP4374221B2 (ja) * 2003-08-29 2009-12-02 パナソニック株式会社 コンピュータシステムおよび記録媒体
JP2005078596A (ja) * 2003-09-03 2005-03-24 Hitachi Ltd データ転送装置の制御方法、データ転送装置、チャネル制御装置、及び記憶デバイス制御装置
US7308683B2 (en) * 2003-10-30 2007-12-11 International Business Machines Corporation Ordering of high use program code segments using simulated annealing
US7610448B2 (en) * 2006-12-27 2009-10-27 Intel Corporation Obscuring memory access patterns
US7886118B2 (en) 2007-01-04 2011-02-08 International Business Machines Corporation Detecting illegal reuse of memory with low resource impact
US7895392B2 (en) * 2007-01-05 2011-02-22 International Business Machines Color-based cache monitoring
US20090217058A1 (en) 2008-02-27 2009-08-27 Spansion Llc Secure data transfer after authentication between memory and a requester
US7987407B2 (en) 2009-08-20 2011-07-26 Arm Limited Handling of hard errors in a cache of a data processing apparatus
US8760460B1 (en) 2009-10-15 2014-06-24 Nvidia Corporation Hardware-managed virtual buffers using a shared memory for load distribution
US8352646B2 (en) * 2010-12-16 2013-01-08 International Business Machines Corporation Direct access to cache memory
US9053037B2 (en) 2011-04-04 2015-06-09 International Business Machines Corporation Allocating cache for use as a dedicated local storage
FR2985825B1 (fr) * 2012-01-13 2014-12-05 Commissariat Energie Atomique Systeme et procede de gestion de correspondance entre une memoire cache et une memoire principale
US9092341B2 (en) 2012-07-10 2015-07-28 International Business Machines Corporation Methods of cache preloading on a partition or a context switch
US9323684B2 (en) 2014-03-21 2016-04-26 Intel Corporation Dynamic cache and memory allocation for memory subsystems
CN105556503B (zh) 2014-08-11 2018-08-21 联发科技股份有限公司 动态的存储器控制方法及其系统
US10956617B2 (en) * 2014-12-12 2021-03-23 Coresecure Technologies, Llc Systems and methods for random fill caching and prefetching for secure cache memories
KR20170008339A (ko) 2015-07-13 2017-01-24 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US10587583B2 (en) 2017-05-19 2020-03-10 Vmware, Inc. Prioritizing application traffic through network tunnels
US11288010B2 (en) 2017-09-25 2022-03-29 Intel Corporation Efficiently storing computer processor data structures in computer memory
US10908821B2 (en) * 2019-02-28 2021-02-02 Micron Technology, Inc. Use of outstanding command queues for separate read-only cache and write-read cache in a memory sub-system
US20210042228A1 (en) 2019-07-17 2021-02-11 Intel Corporation Controller for locking of selected cache regions
US11507516B2 (en) 2020-08-19 2022-11-22 Micron Technology, Inc. Adaptive cache partitioning
US11836087B2 (en) * 2020-12-23 2023-12-05 Micron Technology, Inc. Per-process re-configurable caches

Also Published As

Publication number Publication date
US20230062917A1 (en) 2023-03-02
US11893251B2 (en) 2024-02-06
US20240126457A1 (en) 2024-04-18

Similar Documents

Publication Publication Date Title
US9075730B2 (en) Mechanisms to bound the presence of cache blocks with specific properties in caches
US8405668B2 (en) Streaming translation in display pipe
US9286223B2 (en) Merging demand load requests with prefetch load requests
KR102402630B1 (ko) 캐시 제어 인지 메모리 컨트롤러
US20200133905A1 (en) Memory request management system
US9135177B2 (en) Scheme to escalate requests with address conflicts
US8566532B2 (en) Management of multipurpose command queues in a multilevel cache hierarchy
US20240126457A1 (en) Dynamic Allocation of Cache Memory as RAM
US20240143530A1 (en) DMA Control Circuit with Quality of Service Indications
US11893413B2 (en) Virtual channel support using write table
CN116057514A (zh) 可扩展高速缓存一致性协议
CN113138851B (zh) 一种数据管理方法、相关装置及系统
US9244841B2 (en) Merging eviction and fill buffers for cache line transactions
US20190042312A1 (en) Hardware resource allocation system
US11704245B2 (en) Dynamic allocation of cache memory as RAM
KR20240034258A (ko) Ram으로서의 캐시 메모리의 동적 할당
TWI835272B (zh) 控制快取原則的系統及方法,及快取區
US11740993B2 (en) Debug trace of cache memory requests
TW202422346A (zh) 控制快取原則的系統及方法,及快取區
US10922232B1 (en) Using cache memory as RAM with external access support
US20240094917A1 (en) Write Arbiter Circuit with Per-Rank Allocation Override Mode
US20240095194A1 (en) Read Arbiter Circuit with Dual Memory Rank Support

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