CN107771322B - 可编程集成电路中存储器资源的管理 - Google Patents
可编程集成电路中存储器资源的管理 Download PDFInfo
- Publication number
- CN107771322B CN107771322B CN201680027998.1A CN201680027998A CN107771322B CN 107771322 B CN107771322 B CN 107771322B CN 201680027998 A CN201680027998 A CN 201680027998A CN 107771322 B CN107771322 B CN 107771322B
- Authority
- CN
- China
- Prior art keywords
- memory
- cache
- addresses
- subset
- level
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/02—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
- H03K19/173—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
- H03K19/177—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
- H03K19/17748—Structural details of configuration resources
- H03K19/1776—Structural details of configuration resources for memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1064—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in cache or content addressable memories
-
- 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/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- 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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0615—Address space extension
-
- 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/0888—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
-
- 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/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- 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
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1694—Configuration of memory controller to different memory types
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/78—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
- G06F21/79—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/0008—Arrangements for reducing power consumption
-
- 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- 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/10—Address translation
-
- 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/1041—Resource optimization
- G06F2212/1044—Space efficiency 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/20—Employing a main memory using a specific memory technology
- G06F2212/206—Memory mapped I/O
-
- 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/25—Using a specific main memory architecture
- G06F2212/251—Local memory within processor subsystem
- G06F2212/2515—Local memory within processor subsystem being configurable for different purposes, e.g. as cache or non-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/6042—Allocation of cache space to multiple users or processors
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
一种用于管理可编程集成电路IC(100)中的存储器的方法,所述方法包括:用所述可编程集成电路IC的存储器地址空间中的第一地址子集与所述可编程集成电路IC的物理存储器之间的关联关系配置(602)所述可编程集成电路IC的存储器映射(400)。用所述存储器地址空间中的第二地址子集与虚拟存储器块之间的关联关系进一步配置(602)所述存储器映射。将所述可编程集成电路IC的缓存的至少一部分锁定(608、612)到所述第二地址子集。
Description
技术领域
本公开大致上涉及可编程集成电路(IC)中存储器资源的管理。
背景技术
具有不同功能的可编程集成电路(IC)被广泛使用。通常,可编程IC是可被编程以执行指定逻辑功能的器件。可编程IC可以包括可编程逻辑或者可编程逻辑和硬连线逻辑的组合,诸如一个或多个微处理器。一种类型的可编程IC,即现场可编程门阵列(FPGA)通常包括可编程单元(tile)阵列。这些可编程单元包括各种类型的逻辑块,其可以包括例如输入/输出块(IOB)、可配置逻辑块(CLB)、专用随机存取存储器块(BRAM)、乘法器、数字信号处理块(DSP)、处理器、时钟管理器、延迟锁定环(DLL)、总线或网络接口,例如***组件互连高速(PCIe)和以太网等等。
每个可编程单元均可以包括可编程互连和可编程逻辑。可编程互连通常包括通过可编程互连点(PIP)互连的大量不同长度的互连线。可编程逻辑使用可编程元件来实现用户设计的逻辑,所述可编程元件可以包括例如函数发生器、寄存器、算术逻辑等等。
通常通过将配置数据流加载到定义如何配置可编程元件的内部配置存储器单元(cells)来对可编程互连和可编程逻辑进行编程。配置数据可以从存储器(例如,从外部PROM)读取,或者由外部设备写入FPGA。各个存储单元的集体状态决定了FPGA的功能。
一些可编程IC包括一个或多个能够执行程序代码的微处理器。微处理器可以被制造为包括可编程逻辑电路和可编程互连电路的相同管芯的一部分,也被统称为IC的“可编程电路”。应该理解的是,微处理器内的程序代码的执行与可以在IC上应用的可编程电路的“编程”或“配置”是不同的。编程或配置IC的可编程电路的动作会导致由可编程电路内的配置数据所指定的不同的物理电路的执行。
片上***(SOC)是可编程IC的一个例子。SOC可以包括微处理器、可编程逻辑、片上存储器、各种输入/输出(I/O)电路以及用于在微处理器、可编程逻辑和I/O电路之间进行通信的互连电路。
尽管在单个SOC上的多个功能的集成可以支持各种各样的应用并且提供了很大的灵活性,但是在SOC上提供特定功能电路的资源的数量可能少于当特定功能电路被实施在一个独立的IC管芯时可用的资源数量。例如,SOC可能具有比专用FPGA IC管芯更少的可编程逻辑资源。类似地,具有一个或多个微处理器、片上存储器和可编程逻辑的SOC可能具有比具有微处理器、片上存储器和不具有可编程逻辑的另一个SOC更少的片上存储器资源。相比于特定SOC具有的可用的片上存储器,一些应用可能更受益于更多数量的片上存储器。为了满足对更多片上存储器的需求,设计者可以寻找具有更大的片上存储器资源的SOC。然而,具有更多片上存储器的SOC可能比具有更少片上存储器的另一SOC更昂贵,这使得设计者要在以降低的成本取得较低的性能还是更高的成本取得更好的性能之间进行选择。
发明内容
公开了一种管理可编程集成电路IC中的存储器的方法。所述方法包括:用所述可编程集成电路IC的存储器地址空间中的第一地址子集与所述可编程集成电路IC的物理存储器之间的关联关系配置所述可编程集成电路IC的存储器映射。用所述存储器地址空间中的第二地址子集与虚拟存储器块之间的关联关系进一步配置所述存储器映射。将所述可编程集成电路IC的缓存的至少一部分锁定到所述第二地址子集。
还公开了一种可编程集成电路IC。所述可编程集成电路IC包括处理器子***,并且所述处理器子***包括实施所述可编程集成电路IC的存储器地址空间的第一部分的存储器电路。所述可编程集成电路IC还包括可编程逻辑子***,并且所述可编程逻辑子***包括可编程逻辑电路和实施所述存储器地址空间的第二部分的存储器电路。缓存电路耦接到所述处理器子***的存储器电路和所述可编程逻辑子***的存储器电路。虚拟存储器块电路在所述可编程逻辑电路中被实施。所述虚拟存储器块电路响应于所述存储器地址空间的第二部分的子集的地址。所述缓存电路包括与所述缓存电路的存储块相关联的锁定存储元件和标记存储元件。多个所述标记存储元件被配置具有所述存储器地址空间的第二部分的子集的地址。一个或多个所述锁定存储元件被配置有第一值,所述第一值指示一个或多个相关联的存储块被锁定到多个所述标记存储元件中的所述存储器地址空间的第二部分的子集的地址。
通过考虑下面的具体实施方式和权利要求,可以认识到其他特征。
附图说明
通过阅读以下详细描述并参考附图,所公开的方法和电路的各个方面和特征将变得显而易见,在附图中:
图1示出了作为片上***(SOC)的示例的可编程IC;
图2示出了可编程逻辑子***中的虚拟存储器块的实现的示例;
图3示出了可应用于图1的***的***存储器映射;
图4示出了将物理地址映射到这些物理地址的属性的转换表;
图5示出了多个存储块和具有用于虚拟存储块的锁定地址的缓存;和
图6示出了配置可编程IC以实施虚拟存储器块以及将虚拟存储器块的地址锁定在缓存中的过程。
具体实施方式
在以下描述中,阐述了许多具体细节以描述所呈现的具体示例。然而,对于本领域的技术人员来说显而易见的是,可以在没有下面给出的所有具体细节的情况下实践一个或多个其他示例和/或这些示例的变体。在其它情况下,众所周知的特征没有被详细描述,以免混淆对本文示例的描述。为了便于说明,可以在不同的图中使用相同的附图标记来指示相同的元件或者相同元件的附加实例。
在所公开的方法和***中,通过实施虚拟存储器块,并使可编程IC的缓存存储专用于可编程IC的地址空间中被分配给虚拟存储器块的一部分,从而增加可编程IC(例如SOC)的片上存储器的数量。
可编程IC包括描述可编程IC的地址空间的存储器映射。存储器映射被配置为使得地址空间的一部分与在可编程IC上提供数据存储的物理存储器资源相关联。虚拟存储器块与地址空间的另一部分相关联。虚拟存储器块被分配地址空间的地址子集,并且没有主存储器电路用于存储在这些地址上的数据。与具有主存储器电路的虚拟存储器块不同,缓存被与虚拟存储器块关联的地址锁定。如果整个缓存都用于虚拟块,则虚拟存储器块地址以外的地址处的数据缓存可能会被禁用。当虚拟存储器块的地址被锁定在缓存中时,对虚拟存储器块的地址的引用被解析(resolved)到缓存中。对虚拟存储器块的地址处的数据的任何更新保留在缓存中,并且不会被进一步写入到任何主存储器中,这是因为虚拟存储器块的地址的存储由缓存专门地提供。
图1示出了作为SOC的示例的可编程IC 100。可编程IC可以被配置为有效地增加在芯片上的片上存储器的数量。可编程IC包括处理器子***102和可编程逻辑子***104。处理器子***通常包括一个或多个处理器核心106、存储器资源以及用于连接可编程逻辑子***的电路。可编程逻辑子***可以包括可编程逻辑(未示出)、可编程互连(未示出)以及诸如以上针对FPGA描述的各种其他电路。
可编程IC包括多个存储器资源,这些存储器资源可以被在处理器核心106上执行的程序代码访问,或者可以被在可编程逻辑子***中实施的电路访问。存储器资源包括片上存储器108以及可以在可编程逻辑子***中配置的存储器块122。双倍数据速率(DDR)存储器资源110可以被设置在芯片外,并且为在处理器核心上执行的程序代码或者在可编程逻辑子***中实施的电路提供额外的存储。在示例性的实施方式中,片上存储器108和DDR存储器110可以用DRAM来实施。
可编程IC的物理地址空间被映射到存储器映射118中。物理地址空间包括片上存储器108和DDR存储器110,另外还包括可编程逻辑子***中可用的地址空间,诸如I/O***设备120、存储器块122和虚拟存储器块112。存储器映射可以是查找表存储器,其中地址范围被映射到分配有该地址范围的部件。例如,一个地址范围被映射到片上存储器108,另一个地址范围被映射到DDR存储器110,另一个地址范围被映射到I/O***设备120,另一个地址范围被映射到在其中实施存储器块122和虚拟存储器块112的可编程逻辑。互连电路124使用存储器映射来将存储器访问请求指向到正确的部件。
对于一些应用,可能存在安全性要求而排除了DDR存储器的使用,可能需要处理器子***中的额外的存储器,或者需要对存储器访问次数的改进的确定性(improveddeterminism)。可编程IC可被配置为实施可编程逻辑子***中的虚拟存储器块112,并将虚拟存储器块的地址锁定到处理器子***102中的二级缓存114,以便向处理器子***提供额外的存储器资源。如果整个缓存专用于虚拟存储器块,那么对于虚拟存储器块以外的地址而言,缓存将被禁用。在处理器核心106上执行的程序代码访问片上存储器108和二级缓存114的速度高于访问在可编程逻辑子***中实施的存储器或DDR存储器110。尽管可编程逻辑子***可以被配置成实施用于在处理器子***执行的代码的存储器资源,但从处理器核心到可编程逻辑子***中实施的存储器的访问请求可能要通过交换网络,如线116所示的那样,并且产生大量的延迟。
在一个实施方式中,在可编程逻辑子***104的可编程逻辑中实施虚拟存储器块112。虚拟存储器块112与存储器块122的不同之处在于,在可编程逻辑子***中的虚拟存储器块不提供数据存储。也就是说,在处理器核心106上执行的程序代码可以将数据写入到实施存储器块122的可编程逻辑子***中的存储器电路中,但是写入虚拟存储器块112的地址的数据不存储在可编程逻辑子***的任何存储器电路中。写入到虚拟存储块的地址的数据被存储在二级缓存114中。
不同于在可编程逻辑子***中具有用于存储虚拟存储块的地址的数据的存储器电路,虚拟存储器块的地址被锁定在二级缓存114中。处理器核心106上执行的代码所访问的被映射到虚拟存储器块的地址,将被指向到二级缓存。因此,在处理器核心上执行的代码可以使用作为在处理器子***内可访问的存储器资源的片上存储器108和二级缓存。对虚拟存储器块的地址处的数据的所有更新保留在二级缓存中,并且略过(bypass)主存储器的更新,因为虚拟存储器块的地址的存储由缓存专门地提供。类似地,由“软处理器”(未示出)执行的代码产生的对虚拟存储器块的地址的访问将被指向到二级缓存,“软处理器”是在可编程逻辑子***的可编程逻辑中实施的处理器。
处理器子***还包括存储器管理单元(MMU)和一级缓存电路126、转换表128和侦听控制单元130。MMU从处理器核心106接收存储器访问请求,并使用转换表将虚拟地址转换成物理地址。转换表将虚拟地址空间映射到SOC的物理存储器资源的物理地址。
在示例性的实施方式中,转换表包括与物理地址关联的标志存储元件(flagstorage element)。每个标志存储元件的状态指示相关的地址范围是可缓存的还是不可缓存的。对于虚拟存储器块的地址,转换表中的相关联的标志存储元件可以被设置为指示在那些地址处的数据的缓存被启用的值。对于虚拟存储器块之外的地址,如果整个缓存专用于虚拟存储器块,那么相关联的标志存储元件可以被设置为指示那些地址处的缓存被禁用的值。
MMU 126确定来自处理器核心的存储器请求中的地址是否存在于一级缓存中。对于存在于一级缓存中的地址,MMU访问一级缓存。对于不存在于一级缓存中的地址,MMU将该请求传递给侦听控制单元130。
侦听控制单元130处理从MMU转发的存储器访问请求,和由在可编程逻辑子***104中实施的处理器电路(未示出)通过接口132发送的存储器访问请求。除了保持二级缓存114和在可编程逻辑子***中的其他缓存(未示出)之间的一致性外,侦听控制单元还确定请求的地址是否被缓存在二级缓存中。当虚拟存储块112的地址被锁定在二级缓存中时,二级缓存被引用虚拟存储块的请求所访问。对于引用不在二级缓存中的地址的请求,侦听控制单元将该请求转发给互连电路124,互连电路124反过来根据存储器映射118确定部件地址,并相应地转发该请求。
虚拟存储块的使用和虚拟存储块的地址的锁定可以适应于各种不同的可编程IC体系结构。例如,在一个实施方式中,二级缓存是8路组关联缓存。应该认识到,在替代实施方式中的缓存可以具有更少或更多的路,可以被直接映射,或者可以是完全关联的。处理器子***102具有一级和二级缓存。另一种实施方式可能具有单级缓存,其中虚拟存储器块的地址被锁定在单级缓存中。
图2示出了在可编程逻辑子***104中的虚拟存储器块112的实施方式的示例。虚拟存储器块可实施成:为输入到电路的每个地址都输出位值0的电路。虚拟存储器块不需要具有用于存储与地址空间中分配给虚拟存储器块的地址相关联的数据的任何存储器电路,因为对于每个分配的地址都输出相同的恒定值,如线204所示。可编程逻辑子***还可以包括存储器块控制器202,以用于提供虚拟存储器块和微控制器总线之间的接口,其中微控制器总线将可编程逻辑子***连接到处理器子***。
图3示出了可应用于图1的***的***存储器映射300。存储器映射可以是查找表存储器,其可以通过***的物理地址空间中的地址或部分地址来寻址。地址空间可以被分成地址范围,每个地址范围被映射到通过相关地址范围中的地址所寻址的一个部件或一组部件。
示例性的***存储器映射包括映射到片上存储器、CPU私有寄存器(privateregister)、处理器***寄存器、I/O***设备、可编程逻辑和DDR存储器的地址范围。地址空间中被映射到可编程逻辑的部分被分配给虚拟存储块,如框图302所示,其是地址范围304的一部分。虚线表示在可编程逻辑中没有用于存储在虚拟存储器块的地址处的数据的物理存储器电路。地址范围304的其他部分可以被分配给具有物理存储器电路的存储器块,以用于存储分配给该存储器块的地址处的数据。
图4示出了将存储器地址空间的物理地址映射到物理地址的属性的转换表400。转换表是一种存储器映射,并且例如可以被在图1的处理器核心106上执行的操作***所使用。例如,转换表可以是可由物理地址或地址的一部分寻址的查找表存储器。
在一个示例性实施方式中,整个缓存可以专用于虚拟存储器块,并且虚拟存储器块的地址是仅有的可缓存的地址。转换表不仅为物理地址提供存储,而且还包含标志存储元件,其能够指示相关地址是可缓存还是不可缓存。例如,存储元件402被设置为指示虚拟存储块的地址是可缓存的值,并且诸如存储元件404等的所有其他存储元件被设置为指示其他地址不可缓存的值。
除了用于指示相关联的地址是否可缓存的存储元件之外,转换表还可以包括指示诸如以下内容的其它属性:可缓冲性(bufferability)、安全/非安全存储器、共享性(sharability)、强序(strongly-ordered)/正常存储器、缓存策略(如果是可缓冲位组)和/或只读/只写。
图5示出了存储器的多个块502和高速缓冲存储器504,高速缓冲存储器504具有用于虚拟存储器块的锁定地址。为了便于参考,在图中使用块索引(block indices)而不是存储器地址。每个索引值均对应于一个块的基地址(base address)。与虚拟存储器块关联的索引旁边的块用虚线示出,以表示虚拟存储器块不被物理存储器电路支持。具体而言,虚拟存储器块的索引是0-7,并且与索引0-7相邻的块用虚线画出。
与虚拟存储器块相关联的块以外的每个块均表示可寻址存储器的多个字。例如,每个块可以表示8、16、32、64或更多字的存储。虽然示例性的缓存是四路组关联缓存(four-way set associative cache),但应该认识到,本文中的示例和教导可适用于N路关联缓存。每个索引均可以被缓存到缓存的四个不同路中的一路,如将表示虚拟存储块的块连接到路506和缓存504的相关存储块的线所示。例如,虚拟存储器块的索引0和4可缓存到第一组508路的路0、1、2、3。
根据实施方式的要求,缓存中的一些部分可能被缓存存储块或缓存路锁定。在该示例中,如存储在与锁定路关联的锁定存储元件(“锁定位”)507中的值所指示的,路0和1被锁定。虚拟存储器块的索引被存储在缓存中的锁定路的标记存储元件509中。在组508中,如关联的锁定位所指示的,路0和1被锁定,并且虚拟存储器块索引0和4被存储在路0和1的标记存储元件中;在组510中,如关联的锁定位所指示的,路0和1被锁定,并且虚拟存储器块索引1和5被存储在路0和1的标记存储元件中;在组512中,如关联的锁定位所指示的,路0和1被锁定,并且虚拟存储器块索引2和6被存储在路0和1的标记存储元件中;在组514中,如关联的锁定位所示,路0和1被锁定,并且虚拟存储器块索引3和7被存储在路0和1的标记存储元件中。
如相关联的锁定位的值所指示的,缓存的路2和3可以是未锁定的。虚拟存储器块的块之外的块可以被缓存在缓存504的未锁定的路2和3中。
图6示出了配置可编程IC以实施虚拟存储器块以及将虚拟存储器块的地址锁定在缓存中的过程。在框图602中,在可编程IC的可编程逻辑子***的可编程逻辑资源中实施虚拟存储器块。虚拟存储器块可以作为预定义逻辑模块被提供给设计者,设计者可以例如通过图形用户界面或硬件描述语言(HDL)在电路设计中实例化该预定义逻辑模块。设计者可以指定虚拟存储器块的深度或大小。定义虚拟存储器块的逻辑模块可以与设计的其他部分一起编译至用于可编程IC的可编程逻辑子***的配置数据。虚拟存储器块通过设计工具被分配给可编程逻辑子***的物理资源,并且硬件定义文件被输出以向在处理器子***中执行的操作***指示虚拟存储器块的位置。操作***或用户的应用软件可以将转换表配置为指示存储器地址空间中可缓存的部分以及存储器地址空间中不可缓存的部分。例如,地址空间中被分配给虚拟存储器块的子集可以被指定为可缓存的,并且地址空间的其他部分可以被指定为不可缓存的。实施虚拟存储器块的配置数据可以被加载到可编程逻辑子***中,以实施包括虚拟存储器块的设计。如上所述,虚拟存储器块响应于读取请求中的任何输入地址而输出恒定值,例如0。虚拟存储器块不需要响应写入请求,因为一旦缓存被初始化,向虚拟存储器块的地址的写入将会在缓存处被解析。
框图604-622的过程可以通过在图1的处理器核心106上执行的程序代码来执行,诸如用户或操作***的应用程序代码。例如,在框图604,在转换表中的与虚拟存储器块的地址相关联的存储元件被设置为指示地址可缓存的值。如果整个缓存专用于虚拟存储器块,则将与虚拟存储器块以外的地址相关联的存储元件设置为指示地址不可缓存的值。如果不是全部缓存被锁定到虚拟存储块的地址,则与虚拟存储块以外的地址相关联的存储元件可以被设置为指示地址可缓存的值。
在框图606和608,缓存被准备好用于虚拟存储器块的初始化和锁定。示例性过程用于将虚拟存储器块锁定到二级缓存。在框图606,一级缓存被禁用且无效。一级缓存的禁用会禁用一级缓存可能具有的预测(predictive)缓存能力。使一级缓存无效可确保一级缓存中可能存在的虚拟存储器块的任何地址均被无效,并且对虚拟存储器块的地址的读取请求被指向到虚拟存储器块。
在框图608,锁定二级缓存的所有路,并且在框图610,解锁二级缓存的路中的一个。在锁定和解锁缓存的路时,与路相关联的锁定位的值也被相应地调整,如图5所示。一次处理一路消除了将本可缓存的路也锁定的可能性。此外,一次处理一路防止处理器和编译器优化(如推测性提取和无序执行)来访问缓存。在框图612,虚拟存储器块中的被映射到缓存的解锁路的地址被用于发放读取请求。因为一级缓存被无效,所以读取请求被传递到虚拟存储器块。响应于每个读取请求,虚拟存储器块以恒定值(诸如0值位的字)进行响应,并且在框图614,恒定值被存储在二级缓存中。另外,对虚拟存储器块的读取请求的地址被存储在与缓存的解锁路相关联的标记存储器存储元件中。可以认识到,恒定值的块可以被虚拟存储器块输出,并且可以被存储在二级缓存中以对应于虚拟存储器块的地址块。
在框图616,二级缓存的所有路都被再次锁定,并且判定框图618确定是否应该处理缓存的任何其它的路。如果整个二级缓存都被锁定到虚拟存储器块,则处理将继续进行,直到缓存的所有路都被处理。如果虚拟存储器块仅需要一部分缓存,则处理继续,直到已经处理了足够数量的路,以锁定虚拟存储器块的所有地址。该过程返回到框图610,以处理缓存的另一路。否则,过程继续至框图620。
在框图620,二级缓存中未用于虚拟存储器块的任何路都被解锁,并且在框图622,二级缓存准备好以全部或部分被锁定到虚拟存储器块的地址的方式而供使用。在框图624,响应于引用虚拟存储器块的存储器访问请求,缓存中被锁定到虚拟存储器块的部分被访问。如果缓存中被锁定到虚拟存储器块的部分被更新,那么缓存之外的物理存储器的更新会被略过,因为虚拟存储器块的存储仅由缓存提供。
以下示出一些额外的示例。
在一个示例中,公开了一种管理可编程集成电路IC中的存储器的方法。所述方法可能包括:用所述可编程集成电路IC的存储器地址空间中的第一地址子集与所述可编程集成电路IC的物理存储器之间的关联关系配置所述可编程集成电路IC的存储器映射;用所述存储器地址空间中的第二地址子集与虚拟存储器块之间的关联关系配置所述存储器映射;以及将所述可编程集成电路IC的缓存的至少一部分锁定到所述第二地址子集。
所述方法还包括:将所述虚拟存储器块实施成所述可编程集成电路IC的电路,其中实施所述虚拟存储器块的所述电路响应于所述第二地址子集中的任何输入地址而返回恒定值。
所述方法还包括:响应于引用所述第二地址子集中的地址的存储器访问请求,访问所述缓存的锁定部分;以及对于对所述缓存的锁定部分的更新,略过所述物理存储器的更新。
在一些所述方法中,所述锁定步骤包括:锁定所述缓存的多个路中的一个或多个路。
在一些所述方法中,所述缓存是二级缓存。
在一些所述方法中,所述可编程集成电路IC具有处理器子***和可编程逻辑子***,所述处理器子***中的二级缓存,被分配至所述可编程逻辑子***中的物理存储器的所述地址空间的一部分,以及与被分配给所述可编程逻辑子***的物理存储器的所述地址空间的一部分的子集相关联的第二地址子集。
一些所述方法还包括:将所述虚拟存储器块实施成所述可编程逻辑子***中的电路,其中实施所述虚拟存储器块的所述电路响应于所述第二地址子集中的任何输入地址而返回恒定值。
一些所述方法还包括:将第一值存储在与所述第一地址子集相关联的存储元件中,并且将第二值存储在与所述第二地址子集相关联的存储元件中,其中所述第一值用于指示所述第一地址子集的地址是不可缓存的,并且所述第二值用于指示所述第二地址子集的地址是可缓存的。
在一些所述方法中,所述锁定步骤包括:将所述第二地址子集的一个或多个地址存储在与所述缓存的一个或多个路相关联的存储元件中;以及将第一值存储在与所述缓存的一个或多个路相关联的一个或多个存储元件中,其中所述一个或多个存储元件中的所述第一值指示相关联的一个或多个路被锁定到所述第二地址子集的一个或多个地址。
在一些所述方法中,所述缓存是多路组关联缓存,并且所述方法还包括:将所述虚拟存储器块实施成所述可编程集成电路IC的电路,其中实施所述虚拟存储器块的所述电路响应于所述第二地址子集中的任何输入地址而返回恒定值;选择所述缓存的一个路;将读取请求发放至在所述第二地址子集的地址处的、对应于所述一个路的虚拟存储器块;将从实施所述虚拟存储器块的电路返回的所述恒定值存储在所述缓存中所选择的一个路的存储器中;以及。
在一些所述方法中,重复所述选择、发放以及存储用于所述缓存的一个或多个其他路的步骤,直到所述缓存的所有路都被处理。
在一些所述方法中,为少于所述缓存的所有路重复所述选择、发放以及存储用于所述缓存的一个或多个其他路的步骤。
一些所述方法还包括:将所述虚拟存储器块实施成所述可编程集成电路IC的电路,其中实施所述虚拟存储器块的所述电路响应于所述第二地址子集中的任何输入地址而返回恒定值。
一些所述方法还包括:响应于引用所述第二地址子集中的地址的存储器访问请求,访问所述缓存的锁定部分;以及对于对所述缓存的锁定部分的更新,略过所述物理存储器的更新。
一些所述方法还包括:将第一值存储在与所述第一地址子集相关联的存储元件中,并且将第二值存储在与所述第二地址子集相关联的存储元件中,其中所述第一值用于指示所述第一地址子集的地址是不可缓存的,并且所述第二值用于指示所述第二地址子集的地址是可缓存的。
在另一示例中,公开了一种可编程集成电路IC。所述IC包括:处理器子***,其包括实施所述可编程集成电路IC的存储器地址空间的第一部分的存储器电路;可编程逻辑子***,其包括可编程逻辑电路和实施所述存储器地址空间的第二部分的存储器电路;缓存电路,其耦接到所述处理器子***的存储器电路和所述可编程逻辑子***的存储器电路;和在所述可编程逻辑电路中实施的虚拟存储器块电路,其中所述虚拟存储器块电路响应于所述存储器地址空间的第二部分的子集的地址;其中:所述缓存电路包括与所述缓存电路的存储块相关联的锁定存储元件和标记存储元件,多个所述标记存储元件被配置具有所述存储器地址空间的第二部分的子集的地址,一个或多个所述锁定存储元件被配置有第一值,所述第一值指示一个或多个相关联的存储块被锁定到多个所述标记存储元件中的所述存储器地址空间的第二部分的子集的地址。
在所述可编程集成电路IC中,所述处理器子***包括与所述存储器地址空间的地址相关联的标记存储元件;所述标记存储元件的第一子集配置有第一值,所述第一值指示来自所述存储器地址空间的第一部分的数据的缓存是被禁用的;和所述标记存储元件的第二子集被配置有第二值,所述第二值指示来自所述存储器地址空间的第二部分的数据的缓存是被启用的。
在所述可编程集成电路IC中,所述虚拟存储器块电路被配置为:响应于所述存储器地址空间的第二部分的子集中的任何输入地址,返回恒定值。
在所述可编程集成电路IC中,所述缓存电路被配置和安排成:响应于引用所述存储器地址空间的第二部分的子集的地址的存储器访问请求,访问被锁定到所述存储器地址空间的第二部分的子集的地址的存储块;和对于对锁定到所述存储器地址空间的第二部分的子集的地址的所述存储块的更新,略过所述物理存储器的更新。
在所述可编程集成电路IC中,所述处理器子***包括耦接到所述缓存电路的一级缓存,并且所述缓存电路是二级缓存。
这些方法和电路被认为适用于各种***和应用。通过考虑说明书,其他方面和特征对于本领域技术人员将是显而易见的。例如,尽管在一些情况下可以在各个图中描述各个方面和特征,但是应该理解,即使组合未被明确地示出或者没有被明确地描述为组合,来自一个附图的特征也可以与另一个图的特征组合。可以认为,说明书和附图仅被视为示例,本发明的真实范围由权利要求指示。
Claims (8)
1.一种管理可编程集成电路IC中的存储器的方法,其中所述可编程集成电路IC具有处理器子***和可编程逻辑子***,所述方法包括:
用所述可编程集成电路IC的存储器地址空间中的第一地址子集与所述可编程集成电路IC的物理存储器之间的关联关系配置所述可编程集成电路IC的存储器映射;
用所述存储器地址空间中的第二地址子集与虚拟存储器块之间的关联关系配置所述存储器映射,其中所述第二地址子集在被分配给所述可编程逻辑子***的物理存储器的所述可编程集成电路IC的存储器地址空间的一部分内;
将所述虚拟存储器块实施成所述可编程逻辑子***的可编程逻辑电路中的电路,其中实施所述虚拟存储器块的所述电路响应于所述第二地址子集中的任何输入地址而返回恒定值;
将所述可编程集成电路IC的所述处理器子***中的二级缓存的至少一部分锁定到所述第二地址子集;
响应于来自所述处理器子***的处理器核心的、引用所述第二地址子集中的地址的存储器访问请求,访问所述二级缓存的锁定部分;以及
对于对所述二级缓存的锁定部分的更新,略过所述物理存储器的更新。
2.根据权利要求1所述的方法,其特征在于,所述锁定步骤包括:锁定所述二级缓存的多个路中的一个或多个路。
3.根据权利要求1至2中的任一项所述的方法,其特征在于,还包括:将第一值存储在与所述第一地址子集相关联的存储元件中,并且将第二值存储在与所述第二地址子集相关联的存储元件中,其中所述第一值用于指示所述第一地址子集的地址是不可缓存的,并且所述第二值用于指示所述第二地址子集的地址是可缓存的。
4.根据权利要求1-2中的任一项所述的方法,其特征在于,所述锁定步骤包括:
将所述第二地址子集的一个或多个地址存储在与所述二级缓存的一个或多个路相关联的存储元件中;
将第一值存储在与所述二级缓存的一个或多个路相关联的一个或多个存储元件中,其中所述一个或多个存储元件中的所述第一值指示相关联的一个或多个路被锁定到所述第二地址子集的一个或多个地址。
5.根据权利要求1所述的方法,其特征在于,所述二级缓存是多路组关联缓存,所述方法还包括:
使一级缓存无效;
选择所述二级缓存的一个路;
锁定所述二级缓存的所有路;
解锁所述二级缓存的所述一个路;
将读取请求发放至在所述第二地址子集的地址处的、对应于所述一个路的虚拟存储器块;
将从实施所述虚拟存储器块的电路返回的所述恒定值存储在所述二级缓存中所选择的一个路的存储器中;以及
将所述读取请求的地址存储在与解锁的一个路相关联的标记存储器存储元件中;
重复所述选择、锁定、解锁、发放、存储所述恒定值以及存储用于所述二级缓存的一个或多个其他路的地址的步骤;以及
解锁所述虚拟存储器块中未用于所述二级缓存的任何路。
6.一种可编程集成电路IC,其特征在于,包括:
处理器子***,其包括一个或多个处理器核心及实施所述可编程集成电路IC的存储器地址空间的第一部分的存储器电路;
可编程逻辑子***,其包括可编程逻辑电路、可编程互连电路和实施所述存储器地址空间的第二部分的存储器电路;
缓存电路,其耦接到所述处理器子***的存储器电路和所述可编程逻辑子***的存储器电路;和
在所述可编程逻辑电路中实施的虚拟存储器块电路,其中所述虚拟存储器块电路响应于所述存储器地址空间的第二部分的子集的地址而返回恒定值;
其中:
所述缓存电路包括二级缓存以及与所述二级缓存的存储块相关联的锁定存储元件和标记存储元件,
多个所述标记存储元件被配置具有所述存储器地址空间的第二部分的子集的地址,
一个或多个所述锁定存储元件被配置有第一值,所述第一值指示一个或多个相关联的存储块被锁定到多个所述标记存储元件中的所述存储器地址空间的第二部分的子集的地址;和
所述缓存电路被配置和安排成:
响应于引用所述存储器地址空间的第二部分的子集的地址的存储器访问请求,访问被锁定到所述存储器地址空间的第二部分的子集的地址的存储块;和
对于对锁定到所述存储器地址空间的第二部分的子集的地址的存储块的更新,略过物理存储器的更新。
7.根据权利要求6所述的可编程集成电路IC,其特征在于:
所述处理器子***包括与所述存储器地址空间的地址相关联的标记存储元件;
所述标记存储元件的第一子集配置有第一值,所述第一值指示来自所述存储器地址空间的第一部分的数据的缓存是被禁用的;和
所述标记存储元件的第二子集被配置有第二值,所述第二值指示来自所述存储器地址空间的第二部分的数据的缓存是被启用的。
8.根据权利要求6或7所述的可编程集成电路IC,其特征在于,所述虚拟存储器块电路被配置为:响应于所述存储器地址空间的第二部分的子集中的任何输入地址,返回恒定值。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/712,744 | 2015-05-14 | ||
US14/712,744 US9356602B1 (en) | 2015-05-14 | 2015-05-14 | Management of memory resources in a programmable integrated circuit |
PCT/US2016/031907 WO2016183228A1 (en) | 2015-05-14 | 2016-05-11 | Management of memory resources in a programmable integrated circuit |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107771322A CN107771322A (zh) | 2018-03-06 |
CN107771322B true CN107771322B (zh) | 2021-06-29 |
Family
ID=56027957
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680027998.1A Active CN107771322B (zh) | 2015-05-14 | 2016-05-11 | 可编程集成电路中存储器资源的管理 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9356602B1 (zh) |
EP (1) | EP3295316B1 (zh) |
JP (1) | JP6793131B2 (zh) |
KR (1) | KR102534161B1 (zh) |
CN (1) | CN107771322B (zh) |
WO (1) | WO2016183228A1 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10152421B2 (en) * | 2015-11-23 | 2018-12-11 | Intel Corporation | Instruction and logic for cache control operations |
US10176096B2 (en) * | 2016-02-22 | 2019-01-08 | Qualcomm Incorporated | Providing scalable dynamic random access memory (DRAM) cache management using DRAM cache indicator caches |
US10657067B1 (en) | 2016-09-12 | 2020-05-19 | Xilinx, Inc. | Memory management unit with prefetch |
US10891228B2 (en) | 2018-02-12 | 2021-01-12 | International Business Machines Corporation | Cache line states identifying memory cache |
US20190286327A1 (en) * | 2018-03-15 | 2019-09-19 | Apple Inc. | Memory Objects |
US11768967B2 (en) * | 2018-03-15 | 2023-09-26 | Hewlett-Packard Development Company, L.P. | Address verification for direct memory access requests |
US10719452B2 (en) | 2018-06-22 | 2020-07-21 | Xilinx, Inc. | Hardware-based virtual-to-physical address translation for programmable logic masters in a system on chip |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1851675A (zh) * | 2006-04-04 | 2006-10-25 | 浙江大学 | 处理器高速数据缓存重配置方法 |
CN101772759A (zh) * | 2007-08-02 | 2010-07-07 | 飞思卡尔半导体公司 | 高速缓存锁定设备及其方法 |
US8392664B2 (en) * | 2008-05-09 | 2013-03-05 | International Business Machines Corporation | Network on chip |
CN103034593A (zh) * | 2012-12-11 | 2013-04-10 | 中国人民解放军国防科学技术大学 | 面向众核处理器的片上锁变量全局编址存储方法及装置 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6129458A (en) * | 1994-03-23 | 2000-10-10 | At&T Global Information Solutions Company | Cache optimization method |
DE10040267A1 (de) * | 2000-08-17 | 2002-02-28 | Philips Corp Intellectual Pty | Prozessor-Speicher-System |
US20040103272A1 (en) * | 2002-11-27 | 2004-05-27 | Zimmer Vincent J. | Using a processor cache as RAM during platform initialization |
US7500060B1 (en) * | 2007-03-16 | 2009-03-03 | Xilinx, Inc. | Hardware stack structure using programmable logic |
US8219758B2 (en) | 2009-07-10 | 2012-07-10 | Apple Inc. | Block-based non-transparent cache |
US8244981B2 (en) * | 2009-07-10 | 2012-08-14 | Apple Inc. | Combined transparent/non-transparent cache |
US8495299B2 (en) * | 2009-11-16 | 2013-07-23 | Microsoft Corporation | Non-blocking data transfer via memory cache manipulation |
US8694755B1 (en) * | 2010-03-17 | 2014-04-08 | Ambarella, Inc. | Virtual memory management for real-time embedded devices |
US8930647B1 (en) * | 2011-04-06 | 2015-01-06 | P4tents1, LLC | Multiple class memory systems |
US9195592B1 (en) * | 2011-05-12 | 2015-11-24 | Densbits Technologies Ltd. | Advanced management of a non-volatile memory |
US8819342B2 (en) | 2012-09-26 | 2014-08-26 | Qualcomm Incorporated | Methods and apparatus for managing page crossing instructions with different cacheability |
US9513904B2 (en) * | 2013-10-15 | 2016-12-06 | Mill Computing, Inc. | Computer processor employing cache memory with per-byte valid bits |
-
2015
- 2015-05-14 US US14/712,744 patent/US9356602B1/en active Active
-
2016
- 2016-05-11 KR KR1020177035954A patent/KR102534161B1/ko active IP Right Grant
- 2016-05-11 WO PCT/US2016/031907 patent/WO2016183228A1/en active Application Filing
- 2016-05-11 CN CN201680027998.1A patent/CN107771322B/zh active Active
- 2016-05-11 JP JP2017559378A patent/JP6793131B2/ja active Active
- 2016-05-11 EP EP16725679.1A patent/EP3295316B1/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1851675A (zh) * | 2006-04-04 | 2006-10-25 | 浙江大学 | 处理器高速数据缓存重配置方法 |
CN101772759A (zh) * | 2007-08-02 | 2010-07-07 | 飞思卡尔半导体公司 | 高速缓存锁定设备及其方法 |
US8392664B2 (en) * | 2008-05-09 | 2013-03-05 | International Business Machines Corporation | Network on chip |
CN103034593A (zh) * | 2012-12-11 | 2013-04-10 | 中国人民解放军国防科学技术大学 | 面向众核处理器的片上锁变量全局编址存储方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
EP3295316A1 (en) | 2018-03-21 |
CN107771322A (zh) | 2018-03-06 |
JP6793131B2 (ja) | 2020-12-02 |
WO2016183228A1 (en) | 2016-11-17 |
JP2018519571A (ja) | 2018-07-19 |
EP3295316B1 (en) | 2020-11-18 |
KR20180008625A (ko) | 2018-01-24 |
US9356602B1 (en) | 2016-05-31 |
KR102534161B1 (ko) | 2023-05-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107771322B (zh) | 可编程集成电路中存储器资源的管理 | |
KR101569160B1 (ko) | 캐시에서의 웨이 할당 및 웨이 로킹 방법 | |
US8392658B2 (en) | Cache implementing multiple replacement policies | |
US20090006756A1 (en) | Cache memory having configurable associativity | |
WO2010035425A1 (ja) | キャッシュメモリ、メモリシステム及びその制御方法 | |
EP2430551A2 (en) | Cache coherent support for flash in a memory hierarchy | |
EP2452265A2 (en) | Block-based non-transparent cache | |
US11853225B2 (en) | Software-hardware memory management modes | |
US9529730B2 (en) | Methods for cache line eviction | |
US7861041B2 (en) | Second chance replacement mechanism for a highly associative cache memory of a processor | |
US7809889B2 (en) | High performance multilevel cache hierarchy | |
US9965395B2 (en) | Memory attribute sharing between differing cache levels of multilevel cache | |
CN113874845A (zh) | 多请求者存储器存取管线和仲裁器 | |
CN113892090A (zh) | 多级高速缓存安全性 | |
EP3382558B1 (en) | Apparatus, method and system for just-in-time cache associativity | |
CN109196486B (zh) | 用于虚拟存储器的存储器预取 | |
US20070250669A1 (en) | Data processing system, processor and method of data processing that reduce store queue entry utilization for synchronizing operations | |
US20240168887A1 (en) | Criticality-Informed Caching Policies with Multiple Criticality Levels | |
US20070250668A1 (en) | Data processing system, processor and method of data processing that support memory access according to diverse memory models | |
US8533396B2 (en) | Memory elements for performing an allocation operation and related methods | |
US11755477B2 (en) | Cache allocation policy | |
US9454482B2 (en) | Duplicate tag structure employing single-port tag RAM and dual-port state RAM | |
JP2024069145A (ja) | 設定可能なメモリシステムおよびそのメモリ管理方法 | |
KR20080019234A (ko) | 유연한 구성을 가지는 캐시, 이를 이용하는 데이터 처리시스템 및 그 방법 |
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 |