CN114490444A - 用于与缓存数据相对应的元数据的选择性存储的隔离存储器 - Google Patents
用于与缓存数据相对应的元数据的选择性存储的隔离存储器 Download PDFInfo
- Publication number
- CN114490444A CN114490444A CN202111181566.5A CN202111181566A CN114490444A CN 114490444 A CN114490444 A CN 114490444A CN 202111181566 A CN202111181566 A CN 202111181566A CN 114490444 A CN114490444 A CN 114490444A
- Authority
- CN
- China
- Prior art keywords
- data
- metadata
- representation
- memory region
- cache
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000015654 memory Effects 0.000 title claims abstract description 325
- 238000000034 method Methods 0.000 claims abstract description 122
- 238000011156 evaluation Methods 0.000 claims description 65
- 230000008569 process Effects 0.000 claims description 56
- 230000004044 response Effects 0.000 claims description 23
- 230000006837 decompression Effects 0.000 claims description 11
- 238000012360 testing method Methods 0.000 claims description 11
- 230000008859 change Effects 0.000 claims description 9
- 230000007246 mechanism Effects 0.000 abstract description 7
- 230000006870 function Effects 0.000 description 81
- 238000012545 processing Methods 0.000 description 69
- 238000010586 diagram Methods 0.000 description 36
- 238000007792 addition Methods 0.000 description 27
- 239000000463 material Substances 0.000 description 26
- 238000002156 mixing Methods 0.000 description 21
- 238000011157 data evaluation Methods 0.000 description 14
- 230000006835 compression Effects 0.000 description 13
- 238000007906 compression Methods 0.000 description 13
- 238000007667 floating Methods 0.000 description 12
- 238000004891 communication Methods 0.000 description 9
- 239000003795 chemical substances by application Substances 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 7
- 238000012937 correction Methods 0.000 description 5
- 238000013461 design Methods 0.000 description 5
- 238000006243 chemical reaction Methods 0.000 description 4
- 238000001514 detection method Methods 0.000 description 4
- 239000011159 matrix material Substances 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 239000007787 solid Substances 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 238000013519 translation Methods 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 230000001413 cellular effect Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 230000007717 exclusion Effects 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 230000002829 reductive effect Effects 0.000 description 3
- 229920000147 Styrene maleic anhydride Polymers 0.000 description 2
- 230000007423 decrease Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000000670 limiting effect Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000003416 augmentation Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000004069 differentiation Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000012005 ligant binding assay Methods 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 229910052754 neon Inorganic materials 0.000 description 1
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000001502 supplementing effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/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/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- 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
-
- 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/0284—Multiple user address space allocation, e.g. using different base addresses
-
- 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/0842—Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
-
- 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/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0871—Allocation or management of cache space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0895—Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0894—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- 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/28—Using a specific disk cache architecture
- G06F2212/282—Partitioned cache
-
- 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/30—Providing cache or TLB in specific location of a processing system
- G06F2212/305—Providing cache or TLB in specific location of a processing system being part of a memory device, e.g. cache DRAM
-
- 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/40—Specific encoding of data in memory or cache
- G06F2212/401—Compressed data
-
- 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/50—Control mechanisms for virtual memory, cache or TLB
- G06F2212/502—Control mechanisms for virtual memory, cache or TLB using adaptive policy
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/601—Reconfiguration of cache memory
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请公开了用于与缓存数据相对应的元数据的选择性存储的隔离存储器。用于将与缓存的数据相对应的元数据选择性地存储到隔离存储器区域的技术和机制。在一个实施例中,集成电路评估缓存的行是否能够容纳数据和一些对应的元数据两者的第一表示。在缓存行能够容纳第一表示的情况下,所述第一表示被生成并存储到该行。否则,数据的第二表示被生成并存储到缓存行,并且元数据被存储到在缓存外部的隔离存储器区域。缓存行包括关于元数据是被表示在缓存行中,还是被存储在隔离存储器区域中的指示。在另一实施例中,向软件提供隔离存储器区域的利用率的度量,该软件确定隔离存储器区域的容量是否要被修改。
Description
技术领域
本公开总体上涉及存储器缓存,并且更具体地涉及但不仅限于用于与缓存的数据相对应的元数据的存储库。
背景技术
存储子系统是计算机系统的最慢子系统之一,尤其是当存储子系统利用诸如硬盘驱动器(hard-disk drive,HDD)之类的存储介质时。通常,HDD需要相对较长的访问时间,因为读取/写入头需要被机械地移动到HDD的盘片上的特定位置,以便读取/写入数据。
为了提高这种存储设备的性能,经常使用缓存存储器来保存最近从存储设备读取和向存储设备写入的结果。通过缓存这样的数据,可以提高计算机系统的性能,并且存储设备可以在较长的持续时间内保持在相对较低的功率状态中,以减少计算机系统的功率消耗。
随着连续几代的存储器技术在速度、容量和能量效率方面的不断改进,预期将越来越重视对用于确定缓存数据的可访问性和使用的存储器资源分配的改进。
发明内容
根据本公开的第一方面,提供了一种用于操作缓存存储器的装置,所述装置包括:第一电路,用于检测数据要被缓存,并且基于所述数据和预定义标准,对缓存的行是否能够容纳所述数据和对应于所述数据的元数据两者的第一表示进行评估;以及耦合到所述第一电路的第二电路,其中,在基于所述评估确定所述行能够容纳所述第一表示的情况下,所述第二电路用于:基于所述数据和所述元数据生成所述第一表示;并且将所述第一表示存储到所述行中;其中,在其他情况下,所述第二电路用于:基于所述数据生成第二表示;将所述第二表示存储到所述行;并且将所述元数据存储到所述缓存外部的隔离存储器区域。
根据本公开的第二方面,提供了一种用于操作缓存存储器的系统,所述系统包括:装置,包括:第一电路,用于检测数据要被缓存,并且基于所述数据和预定义标准,对缓存的行是否能够容纳所述数据和对应于所述数据的元数据两者的第一表示进行评估;以及耦合到所述第一电路的第二电路,其中,在基于所述评估确定所述行能够容纳所述第一表示的情况下,所述第二电路用于:基于所述数据和所述元数据生成所述第一表示;并且将所述第一表示存储到所述行中;其中,在其他情况下,所述第二电路用于:基于所述数据生成第二表示;将所述第二表示存储到所述行;并且将所述元数据存储到所述缓存外部的隔离存储器区域;以及耦合到所述装置的显示设备,所述显示设备包括基于与所述装置通信的信号显示图像的像素。
根据本公开的第三方面,提供了一种用于管理存储器的方法,所述方法包括:访问隔离存储器区域的利用率的度量,该隔离存储器区域存储元数据,所述元数据对应于在该隔离存储器区域外部的缓存中表示的数据,其中,所述隔离存储器区域包括对应于第一数据的第一元数据,并且其中,缓存的行包括所述第一数据的表示和所述第一元数据存储在所述隔离存储器区域的指示;基于所述度量确定所述隔离存储器区域的利用率满足预定高利用率测试条件或预定低利用率测试条件之一;和基于所述确定,修改所述隔离存储器区域的未使用部分的容量。
根据本公开的第四方面,提供了一种用于操作缓存存储器的方法,所述方法包括:检测数据要被缓存,并且基于所述数据和预定义标准,对缓存的行是否能够容纳所述数据和对应于所述数据的元数据两者的第一表示进行评估;以及在基于所述评估确定所述行能够容纳所述第一表示的情况下,执行以下操作:基于所述数据和所述元数据生成所述第一表示;并且将所述第一表示存储到所述行中;在其他情况下,执行以下操作:基于所述数据生成第二表示;将所述第二表示存储到所述行;并且将所述元数据存储到所述缓存外部的隔离存储器区域。
附图说明
在附图中以示例方式而非限制方式图示了本发明的各种实施例,在附图中:
图1图示了根据一个实施例的示出提供对元数据的访问的系统的特征的功能框图。
图2A图示了根据一个实施例的示出确定用于接收元数据的存储库的方法的特征的流程图。
图2B图示了根据一个实施例的示出取回与缓存行中的数据相对应的元数据的方法的特征的流程图。
图3图示了根据一个实施例的示出提供对数据和相应元数据的访问的系统的特征的功能框图。
图4图示了根据一个实施例的示出提供用于存储元数据的隔离存储器的方法的特征的流程图。
图5图示了根据一个实施例的示出确定缓存的一行是否要存储数据和相应元数据两者的设备的特征的功能框图。
图6图示了根据一个实施例的示出被生成来提供对元数据的访问的信息的特征的数据图。
图7图示了根据一个实施例的示出改变隔离存储器区域的容量的方法的特征的流程图。
图8图示了根据一个实施例的示出利用散列表提供对元数据的访问的方法的特征的流程图。
图9图示了根据一个实施例的示出使用散列函数来表示元数据的方法的特征的功能框图。
图10A是根据本发明的实施例的图示出示例性有序管线和示例性寄存器重命名、无序发出/执行管线两者的框图。
图10B是根据本发明的实施例的图示出要被包括在处理器中的有序架构核心的示例性实施例和示例性寄存器重命名、无序发出/执行架构核心两者的框图。
图11A-11B图示了更具体的示例性有序核心架构的框图,该核心将是芯片中的若干个逻辑块(包括相同类型和/或不同类型的其他核心)之一。
图12是根据本发明的实施例的处理器的框图,该处理器可以具有多于一个核心、可以具有集成的存储器控制器并且可以具有集成的图形。
图13-16是示例性计算机架构的框图。
图17是根据本发明的实施例的与使用软件指令转换器来将源指令集中的二进制指令转换成目标指令集中的二进制指令相对比的框图。
具体实施方式
本文论述的实施例以各种方式提供了用于将与缓存的数据相对应的元数据选择性地存储到隔离存储器区域的技术和机制。本文描述的技术可以被实现在一个或多个电子设备中。可利用本文描述的技术的电子设备的非限制性示例包括任何种类的移动设备和/或固定设备,例如相机、蜂窝电话、计算机终端、桌面型计算机、电子阅读器、传真机、一体机(kiosk)、膝上型计算机、上网本计算机、笔记本计算机、互联网设备、支付终端、个人数字助理、媒体播放器和/或记录器、服务器(例如,刀片式服务器、机架安装式服务器、其组合,等等)、机顶盒、智能电话、平板个人计算机、超便携个人计算机、有线电话、其组合,等等。更一般而言,本文描述的技术可用于各种电子设备的任何一种中,这些电子设备包括用于在不同的存储器区域中以各种方式存储数据和相应元数据的电路。
在接下来的描述中,论述了许多细节以提供对本公开的实施例的更透彻说明。然而,本领域技术人员将会清楚,可以在没有这些具体细节的情况下实践本公开的实施例。在其他实例中,以框图形式而不是详细地示出公知的结构和设备,以避免模糊本公开的实施例。
注意,在实施例的相应附图中,以线条来表示信号。一些线条可能更粗,以指示出更大数目的构成信号路径,和/或在一端或多端具有箭头,以指示出信息流的方向。这种指示并不旨在是限制性的。更确切地说,这些线条与一个或多个示例性实施例结合使用以便于更容易理解电路或逻辑单元。由设计需要或偏好决定的任何所表示的信号可实际上包括可在任一方向上行进并且可利用任何适当类型的信号方案来实现的一个或多个信号。
在整个说明书中,以及在权利要求中,术语“连接”意指直接连接,例如连接的事物之间的电连接、机械连接或磁连接,而没有任何中间设备。术语“耦合”意指直接或间接连接,例如连接的事物之间的直接电连接、机械连接或磁连接,或者通过一个或多个无源或有源中间设备的间接连接。术语“电路”或“模块”可以指被布置为彼此协作以提供期望的功能的一个或多个无源和/或有源组件。术语“信号”可以指至少一个电流信号、电压信号、磁信号、或者数据/时钟信号。“一”、“一个”和“该”的含义包括复数引用。“在……中”的含义包括“在……中”和“在……上”。
术语“设备”通常可以指的是根据该术语的使用的上下文的装置。例如,设备可以指层或结构的堆叠、单个结构或层、具有有源和/或无源元件的各种结构的连接,等等。一般而言,设备是三维结构,该三维结构具有x-y-z笛卡儿坐标系中沿着x-y方向的平面和沿着z方向的高度。设备的平面也可以是包括该设备的装置的平面。
术语“缩放”一般是指将一设计(图解和布局)从一个工艺技术转换到另一工艺技术并随后减小布局面积。术语“缩放”一般也指在同一技术节点内减小布局和设备的大小。术语“缩放”还可以指相对于另一参数(例如电源电平)调整信号频率(例如,减慢或加速——即分别是缩小或放大)。
术语“基本上”、“接近”、“大致”、“近似”和“大约”一般指在目标值的+/-10%内。例如,除非在其使用的明确上下文中另有指明,否则术语“基本上等于”、“大约等于”和“大致等于”意指在这样描述的事物之间没有超过偶然的差异。在本领域中,这种差异通常不超过预定目标值的+/-10%。
要理解,这样使用的术语在适当的情况下是可互换的,使得本文描述的发明的实施例例如能够按与本文所示或以其他方式描述的那些不同的其他朝向来操作。
除非另有指明,否则使用序数形容词“第一”、“第二”和“第三”等等来描述共同对象只是表明相似对象的不同实例被引用,而并不是要暗示这样描述的对象必须在时间上、空间上、排名上或者以任何其他方式处于给定的序列中。
说明书中和权利要求中的术语“左”、“右”、“前”、“后”、“顶部”、“底部”、“之上”、“之下”等等(如果有的话)是用于描述性目的的,而并不一定用于描述永久的相对位置。例如,本文使用的术语“之上”、“之下”、“前侧”、“后侧”、“顶部”、“底部”、“上方”、“下方”和“在……上”指的是一个组件、结构或材料相对于设备内的其他引用的组件、结构或材料的相对位置,其中这种物理关系是值得注意的。这些术语在本文中仅用于描述性目的,并且主要是在设备z轴的上下文中使用的,因此可相对于设备的朝向。因此,如果该设备相对于提供的附图的上下文被上下颠倒的话,在本文提供的附图的上下文中在第二材料“之方”的第一材料也可以在第二材料的“之下”。在材料的上下文中,将一种材料设置在另一材料之上或之下可以是直接接触或者可以具有一种或多种居间的材料。另外,将一种材料设置在两种材料之间可以与这两个层直接接触或者可以具有一个或多个居间的层。相比之下,在第二材料“上”的第一材料是与该第二材料直接接触的。在组件装配的上下文中要做出类似的区分。
术语“在……之间”可以用于设备的z轴、x轴或y轴的上下文中。在两种其他材料之间的材料可以与这些材料的一者或两者接触,或者该材料可以通过一种或多种居间的材料与其他两种材料间隔开。在两种其他材料“之间”的材料因此可以与其他两种材料的任一者接触,或者该材料可以通过居间的材料耦合到其他两种材料。在两个其他设备之间的设备可以与这些设备的一者或两者直接连接,或者该设备可以通过一个或多个居间的设备与其他两个设备间隔开。
如在整个本说明书中和权利要求中所使用的,由术语“……中的至少一个”或者“……中的一个或多个”联接的项目的列表可以意指列出的术语的任何组合。例如,短语“A、B或C中的至少一个”可以意指A;B;C;A和B;A和C;B和C;或者A、B和C。要指出,附图的具有与任何其他图中的元素相同的标号(或名称)的那些元素可以按与所描述的方式相似的任何方式来操作或工作,但不限于此。
此外,本公开中论述的组合逻辑和时序逻辑的各种元素既可涉及物理结构(例如,与门、或门或者异或门),也可涉及实现逻辑结构(是所论述的逻辑的布尔等同物)的设备的合成的或者以其他方式优化的集合。
参考使用隔离存储器区域结合另一存储器区域(其将作为缓存来操作)来促进对数据和相应元数据的访问,本文描述了各种实施例的特定特征。例如,元数据包括媒体访问控制(media access control,MAC)值、许可信息、纠错信息(例如,纠错码)、版本信息或者类似信息中的一者或多者。在一些实施例中,缓存的一行用于存储至少一些数据的表示,其中提供了隔离存储器区域(受制于一个或多个条件)来存储与所述数据相对应的元数据。在一个这样的实施例中,在隔离存储器区域处存储这种元数据是基于根据一个或多个标准确定该缓存行无法同时容纳数据和元数据两者的表示。替代地,在一个或多个标准允许这种存储的情况下,该缓存行存储数据和元数据两者的表示。
除非另有指明,否则“隔离存储器区域”(sequestered memory region)在本文中是指被分配来用于存储元数据的存储器区域,该元数据对应于已经或将要被存储在或以其他方式表示在缓存中的数据。此外,如本文中在存储器缓存的上下文中所使用的,“表示”一般是指给定缓存行的至少一些内容,其中所述内容等于或以其他方式代表包括数据以及在一些实施例中包括与所述数据相对应的至少一些元数据的信息(例如,是基于这种信息生成的)。例如,一个这样的缓存行的内容表示已被压缩、加密和/或以其他方式处理的信息,其中,由于这种处理,该表示的格式和/或其他特性与原始信息的格式和/或其他特性不同。这样的表示容纳了解压缩、解密和/或其他逆处理,以计算或以其他方式生成先前用来确定该表示的数据(以及在一些实施例中,相应的元数据)。在一个这样的实施例中,信息(例如,数据和例如元数据)是基于对其在缓存行中的表示的读取而确定的,并且独立于对所述信息的一些其他附加或替代表示的任何访问。
在本文中,参考都在处理器外部的隔离存储器区域和缓存来描述了各种实施例的特定特征。然而,替代实施例以各种方式提供了隔离存储器区域,该隔离存储器区域是对处理器内的一个或多个缓存的补充,例如,包括L0缓存、L1缓存、LLC(例如,共享缓存)或类似的缓存之一。此外,在本文中参考硬件(例如,电路结构)描述了各种实施例的特定特征,该硬件选择性地确定元数据的表示是否要被存储到缓存或隔离存储器区域中的特定一者,并且进一步参考软件描述了各种实施例的特定特征,该软件确定隔离存储器区域的可用容量的改变。然而,关于对于一些或所有这种操作,是否要仅用硬件、用软件或者用硬件和软件的特定组合来执行(一个或多个)操作,一些实施例并不受限制。
图1是根据一个实施例图示出利用有条件地存储元数据的隔离存储器区域来补充数据缓存的系统100的框图。系统100包括各种计算设备,或者支持在各种计算设备的任何一者中的操作,所述计算设备包括手持式设备和用于嵌入式应用的设备。例如,系统100提供或者充当各种设备中的任何一者的组件,所述设备包括但不限于桌面型计算机、平板计算机、膝上型计算机、上网本、笔记本计算机、个人数字助理(personal digitalassistant,PDA)、服务器、工作站、蜂窝电话、移动计算设备、智能电话、互联网协议设备、数码相机,等等。在一些实施例中,系统100的一些或全部被实现在片上系统(system on achip,SoC)中。
系统100包括处理器102和与之耦合的存储器150,例如,经由示出的说明性处理器总线103来耦合。存储器150为系统100包括或者替代地与之耦合的一个或多个其他存储器资源(未示出)中的数据提供缓存,例如,其中一个或多个其他存储器资源包括固态驱动器(solid state drive,SSD)、硬盘驱动器(hard disk drive,HDD)或者各种其他合适的存储器设备中的任何一者。
一个实施例是在单个处理器桌面或服务器系统的上下文中描述的,但替代实施例被包括在多处理器系统中。处理器102作为一个说明性示例包括复杂指令集计算机(complex instruction set computer,CISC)微处理器、精简指令集计算(reducedinstruction set computing,RISC)微处理器、超长指令字(very long instructionword,VLIW)微处理器、实现指令集的组合的处理器,或者任何其他处理器设备,例如数字信号处理器。处理器102耦合到处理器总线103,该处理器总线103在处理器102和系统100中的另一组件之间传输数据信号,该另一组件例如是用于存储指令、数据或者这些的任何组合的存储器150。
处理器102包括一个或多个核心106a,...,106n来执行系统100的指令。核心106a,...,106n包括但不限于预取逻辑以提取指令,解码逻辑以对指令解码,执行逻辑以执行指令,等等。处理器102包括缓存108,来缓存指令和/或数据。缓存108包括但不限于第一级、第二级和最后一级缓存(last level cache,LLC),或者处理器102内的缓存存储器的任何其他配置。取决于架构,处理器102具有单个内部缓存或者多个级别的内部缓存。其他实施例包括内部和外部缓存两者的组合。寄存器文件是将不同类型的数据存储在寄存器中,包括整数寄存器、浮点寄存器、向量寄存器、联组寄存器、影子寄存器、检查点寄存器、状态寄存器、配置寄存器、以及指令指针寄存器。
在一个示例中,核心106a,...,106n中的一个或多个各自包括浮点单元。在另一个示例中,处理器102没有浮点单元。在一个实施例中,处理器102包括微代码(ucode)ROM,以用于存储微代码,该微代码当被执行时,执行特定宏指令的算法或者应对复杂的场景。这里,微代码有可能是可更新的,以应对处理器102的逻辑错误/修复。还使用了执行单元的替代实施例(例如,而不是设有核心106a,...,106n的执行单元),例如,在微控制器、嵌入式处理器、图形设备、DSP和其他类型的逻辑电路中。
在一个实施例中,处理器102包括(替代地,耦合到)存储器控制器110,该存储器控制器110要执行使得处理器102能够访问存储器150并且与之通信的功能。存储器150包括固定或可移除格式的随机访问存储器(random access memory,RAM)。RAM包括被配置为在系统100的操作期间保存信息的易失性存储器,例如,静态RAM(SRAM)或动态RAM(DRAM)。其他固定/可移除存储器包括但不限于磁性存储器,例如软盘、硬盘驱动器等等,电子存储器,例如固态闪存(例如,嵌入式多媒体卡(embedded multimedia card,eMMC),等等),可移除存储卡或记忆棒(例如,微型存储设备(micro storage device,uSD)、USB,等等),光学存储器,例如基于致密盘的ROM(compact disc-based ROM,CD-ROM)、数字视频盘(DigitalVideo Disk,DVD)、蓝光盘,等等。
存储器150示出了各种各样的一个或多个存储器设备中的任何一者,这些存储器设备要提供第一存储器区域,以用于作为缓存操作,以及第二存储器区域,该第二存储器区域被隔离,以用于存储与缓存中表示的数据相对应的元数据。在根据一个实施例的说明性场景中,存储器150的各种分区和/或其他分配区域被设置,例如,在启动时由基本输入-输出系统(basic input-output system,BIOS)设置。替代地,处理器102执行操作系统(operating system,OS)、虚拟机监视器(virtual machine monitor,VMM)或其他软件代理的指令,该软件代理提供初始化、修改或以其他方式确定存储器资源的分配的功能。
在所示出的示例实施例中,存储器150被配置为提供要充当隔离存储器区域151的第一逻辑段,以及要充当缓存152的第二逻辑段。存储器150的块宽度155显示了存储器150的数据位宽度。在一些实施例中,存储器150的配置还包括其他逻辑段(未示出),这些其他逻辑段用于其他目的,例如数据存储、数据索引,等等。
作为示例,缓存152的逻辑段被图示为至少具有八个缓存行170-177,这些缓存行被用于以各种方式地存储来自硬盘驱动器(HDD)、固态驱动器(SSD)或者系统100包括或者替代地耦合到的其他相对长期的存储装置(未示出)的数据的表示。例如,缓存行170-177中给定的一者将存储数据和与所述数据相对应的元数据两者的表示。相关领域的普通技术人员很容易理解,存储器150可以具有多于八个缓存行。块宽度155不限于特定的位宽度。在一个实施例中,块宽度155是处理器总线103的总线宽度。在另一实施例中,块宽度155被设置为存储存储驱动器(例如HDD或SSD)的逻辑块地址(logical block address,LBA)的倍数。例如,缓存设备的每个缓存行被设置为可以存储存储驱动器的四个LBA的块宽度155。
隔离存储器区域151的逻辑段被分配来存储元数据(包括例如所示出的说明性元数据值160,...,162),这些元数据的每一者对应于在缓存行170-177之一中表示的相应数据。隔离存储器区域151例如是用一个或多个指针、寄存器或其他这种资源来定义的,这些资源提供隔离存储器区域151的开始的标识符SMAs,以及隔离存储器区域151的结束的标识符SMAe。
在一些实施例中,系统100提供功能来选择性地将仅用于在缓存152的一行或多行中表示的一些数据的元数据存储到隔离存储器区域151,例如,其中缓存152的一个或多个其他行各自存储数据和相应元数据两者的相应表示。作为说明而非限制,系统100包括电路,例如所示出的说明性元数据访问引擎(metadata access engine,MDAE)140,该电路根据一个或多个预定的标准,识别将存储与已被(或者将被)表示在缓存152的一行中的数据相对应的至少一些元数据的表示的存储器资源。MDAE 140包括一个或多个微控制器、专用集成电路(application specific integrated circuitry,ASIC)、状态机、可编程门阵列、存储器资源、模式寄存器、熔丝、和/或各种其他合适的电路结构中的任何一者,以提供例如本文所述那样的功能。
在一些实施例中,MDAE 140的数据评估电路142被耦合以检测一些数据(例如,将被核心106a,...,106n使用)将被缓存,例如,其中缓存错失导致这样的数据被从存储设备取回并且被提供给数据评估电路142。基于这样的检测,数据评估电路142执行对数据的评估,以根据一些预定的标准,确定缓存152的一行是否能够容纳数据和与该数据相对应的一些元数据两者的表示。在一个这样的实施例中,数据评估电路142确定数据的大小是否允许将数据与所述元数据存储在同一行中。替代地或附加地,数据评估电路142确定该数据的一个或多个特性是否表明该数据是充分可压缩的,以便缓存行容纳该数据和元数据两者的表示。在一些实施例中,数据评估电路142确定各种附加或替代过程中的任何一者(例如,用来加密或以其他方式操纵数据)是否可允许缓存行存储数据和元数据两者的表示。
在一个这样的实施例中,MDAE 140还包括行处理电路144,该电路基于由数据评估电路142进行的评估,生成数据的表示(以及在适用时,生成相应元数据的表示)以存储到缓存行170-177之一。在根据一个实施例的说明性场景中,行处理电路144利用数据以及至少一些相应的元数据执行压缩操作和/或加密操作以生成表示,例如,其中MDAE 140放弃将至少一些元数据存储到隔离存储器区域151。在替代场景中,行处理电路144将数据(或者其某种其他表示)存储到缓存行170-177之一,并且进一步将至少一些元数据存储到隔离存储器区域151。
在一些实施例中,MDAE 140附加地或者替代地提供功能,以通过选择性地从隔离存储器区域151和缓存152中的一者或两者读取来访问数据和相应的元数据。例如,MDAE140被耦合以接收请求数据的消息(例如,来自核心106a,...,106n之一),并且基于该消息从缓存行170-177之一读取所述数据的表示。在一个这样的实施例中,数据评估电路142(或者MDAE 140的其他合适的电路)执行评估以确定缓存行是否存储了所请求的数据和一些相应的元数据两者的表示。
作为说明而非限制,在一些实施例中,数据评估电路142对于该表示的特定单个位(在本文中称为“扩展位”)进行检测,其中所述位的值指定是否要从隔离存储器区域151取回一些元数据。替代地或者附加地,行处理电路144执行解密、解压缩和/或其他这种处理,以将该表示转换为更明确地识别该数据(以及例如一些相应的元数据)的形式。随后,数据评估电路142执行对经转换的信息的评估,以检测第一元数据的存在(或不存在),例如,其中经转换的信息包括第二元数据,该第二元数据指定或以其他方式指示出第一元数据是否需要被从隔离存储器区域151中取回。
在仅在某些条件下选择性地将元数据存储到隔离存储器区域151时,一些实施例以各种方式使得隔离存储器区域151的容量(例如,其未使用的容量)在系统100的操作期间的各种时间被改变。例如,在一些实施例中,MDAE 140还包括监视电路146(替代地,耦合到监视电路146以与之一起操作),该监视电路146维护隔离存储器区域151的利用率的一个或多个度量。例如,这样的一个或多个度量包括或者以其他方式基于隔离存储器区域151的已使用(或未使用)部分的计数。在一个这样的实施例中,所述一个或多个度量可用于提供给操作系统或者利用核心106a,...,106n执行的其他软件进程。在一些实施例中,软件进程基于由监视电路146维护的一个或多个度量改变标识符SMAs、SMAe中的一者或两者,以改变隔离存储器区域151的可用(例如,未使用)容量。
图2A根据一个实施例示出了确定用于存储表示元数据的信息的存储库的方法200的特征。方法200是一个实施例的一个示例,其中缓存或隔离存储器区域之一被选择来存储元数据的表示,其中这种选择是基于对要在缓存的行中表示的相应数据的评估的。在一个实施例中,方法200是用诸如系统100那样的功能来执行的。
如图2A所示,方法200(在210处)确定数据是否要被存储到缓存。作为说明而非限制,在210处的确定包括
数据评估电路142确定是否已从存储器150为其提供缓存功能的存储设备取回数据(例如,响应于由核心106a,...,106n之一的读取请求所导致的缓存错失)。如果在210处确定没有这样的数据要被缓存,则方法200在210处重复这种确定,直到检测到一些下一个数据为止。
如果相反在210处确定一些数据要被缓存,则方法200(在212处)执行对数据的评估以确定所述数据是否满足预定的标准,该标准指示出缓存的一行能够容纳数据和与该数据相对应的一些第一元数据两者的表示。在各种实施例中,第一元数据包括媒体访问控制(MAC)值、许可信息、纠错信息、版本信息或者类似信息中的一者或多者。然而,一些实施例并不限于考虑在缓存中可能表示的元数据的特定类型。
在根据一个实施例的说明性场景中,在212处的确定包括执行对数据是否表现出某种模式(例如,一种或多种可能模式中的任何一种)的评估,该模式指示出数据可压缩性的某个阈值量。作为说明而非限制,在212处的确定包括评估该数据是否包括某个阈值最小数目的彼此相等的字节(或者例如字)。替代地或者附加地,在212处的确定包括评估该数据是否包括某个阈值最小数目的彼此相等的连续(相邻)字节。相等的字节(或字)允许了在缓存行中提供附加的空间,例如,在缓存行中只需要存储该字节(或字)的一个实例。替代地或者附加地,在212处的确定包括评估该数据是否包括某个阈值最小数目的采取特殊值的字节,该特殊值服从特定类型的压缩。在不同的实施例中,在212处的确定附加地或者替代地基于各种其他这样的标准中的任何一者。
如果在212处确定数据满足预定标准,则方法200(在214处)生成数据和第一元数据两者的第一表示。例如,在214处的生成包括用数据和第一元数据中的一者或两者执行处理,该处理包括压缩操作和/或加密操作。在各种实施例中,在214处的生成包括以下操作或者是以其他方式结合以下操作来执行的:确定扩展位值(或者其他合适的信息),该扩展位值将被提供在缓存行的内容中,作为指出所述缓存行内容包括数据和第一元数据两者的表示的标记。例如,这样的标记将被附加到在214处生成的表示,或者被包括或以其他方式表示在其中,例如,其中扩展位值(或者各种合适的多位值中的任何一者)被用于压缩操作、加密操作和/或其他处理中,该处理也是基于数据和/或第一元数据的。在一个实施例中,缓存行内容进一步包括或者以其他方式进一步表示多位值,作为指出在隔离存储器区域中是否有其他元数据可用、是否至少一些缓存行内容被压缩、是否至少一些缓存行内容被加密等等的标记。
如果相反在212处确定该数据不满足预定的标准,则方法200(在216处)生成该数据的第二表示,例如,其中第二表示省略了相应的第一元数据的任何表示。此外,方法200(在218处)将第一元数据存储到隔离存储器区域。类似于214处的生成,在各种实施例中,在216处的生成包括以下操作或者是以其他方式结合以下操作来执行的:确定将在缓存行的内容中提供的信息,作为指出隔离存储器区域存储第一元数据(其在所述缓存行内容中没有被进一步表示)的标记。例如,扩展位或者各种合适的多位值中的任何一者将被附加到在216处生成的表示或者被包括或以其他方式表示在其中。
在一些实施例中,不管212处的评估的结果如何,方法200(在220处)进一步将在214处或216处生成的表示(即,所生成的第一表示或第二表示中的一个)存储到缓存。在220处的存储之后,缓存行的内容包括或以其他方式进一步表示一标记,该标记指出该内容也表示第一元数据,或者替代地该第一元数据被存储在隔离存储器区域。
在各种实施例中,隔离存储器区域包括散列表,该散列表包括在缓存中表示的各种数据的元数据。在一个这样的实施例中,在218处存储第一元数据包括以下操作或者是结合以下操作来执行的:生成散列索引,以将数据(和/或包括数据的表示的缓存行)与包括相应的第一元数据的散列表中的位置相对应。替代地,在218处存储第一元数据包括以下操作或者是结合以下操作来执行的:在查找表中存储一条目,以定义缓存行与隔离存储器区域中存储第一元数据的位置的对应关系。
图2B示出了根据一个实施例的访问存储表示元数据的信息的存储库的方法250的特征。方法200是一个实施例的一个示例,其中,缓存的行被读取,并且内容被评估以确定是否要从隔离存储器区域取回与所述内容所表示的数据相对应的元数据。在一个实施例中,方法250是用例如系统100那样的功能来执行的,例如,其中,方法200包括方法200或者是与方法200结合来执行的。
如图2B所示,方法250包括(在260处)确定是否接收到从缓存读取数据的请求。作为说明而非限制,在260处的确定包括MDAE 140确定核心106a,...,106n之一是否已请求了在缓存152的一行中表示的数据。如果在260处确定没有指示出这种读取请求,则方法250重复在260处的确定,直到检测到某个读取请求为止。
如果相反在260处确定检测到读取缓存数据的请求,则方法250(在262处)读取包括该数据的表示的缓存行,并且确定(在264处)该行是否满足测试条件,该测试条件指示出至少一些相应的第一元数据被存储在隔离存储器区域。作为说明而非限制,在264处的确定包括处理从缓存行取回的信息,以检测扩展位或者其他合适的标记,该标记指出该行是否包括数据和第一元数据两者的表示。替代地或者附加地,这种处理包括执行解压缩操作和/或解密操作,以生成该数据(以及例如,相应的第一元数据)。
如果在264处确定该行不满足测试条件,则方法250(在266处)基于在262处读取的缓存行信息来识别数据和第一元数据两者。在一个这样的实施例中,266处的识别包括或以其他方式基于对一些或所有缓存行信息的解压缩和/或解密。替代地或者附加地,266处的识别是基于某个预定的配置状态的——例如,包括参考信息——其指定或以其他方式指示出格式,根据该格式,将在缓存行的各个不同部分(或者在通过处理缓存行而生成的信息的各个不同部分)提供数据和第一元数据。
如果相反在264处确定该行满足测试条件,则方法250(在268处)基于缓存行信息识别数据,例如,其中在266处的这种识别是基于对一些或所有缓存行信息的解压缩、解密和/或其他处理的。此外,方法250(在270处)从隔离存储器区域读取第一元数据。作为说明而非限制,隔离存储器区域包括散列表,该散列表包括第一元数据,其中用散列表索引来执行散列表的查找,该散列表索引是基于数据和/或包括数据的表示的缓存行的。在一些实施例中,缓存行(或者通过处理缓存行而生成的信息)包括指向隔离存储器区域中第一元数据的位置的指针。替代地或者附加地,在270处读取第一元数据包括访问查找表,该查找表指定或以其他方式指示出缓存行和/或数据与隔离存储器区域中的位置的对应关系。
在一些实施例中,不管在264处确定的结果如何,方法250(在272处)进一步基于读取请求提供数据和第一元数据。在一些实施例中,响应于读取请求而提供数据和第一元数据两者(例如,提供给核心106a,...,106n之一)。替代地,第一元数据和数据被提供给电路,该电路基于第一元数据来确定是否(以及如果是的话,如何)响应于对读取请求而提供数据。
图3示出了根据一个实施例的提供对数据和相应元数据的访问的设备300的特征。在各种实施例中,设备300包括系统100的特征,例如,其中设备300提供功能以执行方法200和/或方法250。
如图3所示,设备300包括接口310、写入评估/处理电路320、读取评估/处理电路350、缓存访问电路330、以及SMR访问电路340。接口310支持与一个或多个处理器核心(例如,核心106a,...,106n中的一些或全部)的通信。在一个这样的实施例中,例如,写入评估/处理电路320和读取评估/处理电路350以各种方式提供数据评估电路142的功能和/或行处理电路144的功能。替代地或者附加地,缓存访问电路330和/或SMR访问电路340提供例如存储器控制器110那样的功能。
在一个这样的实施例中,设备300还包括(替代地,耦合到)存储器资源,这些存储器资源被分区或以其他方式被配置为提供缓存和支持所述缓存的隔离存储器区域。例如,设备300促进了将存储器区域370、380分别作为缓存和隔离存储器区域(例如,缓存152和隔离存储器区域151)进行操作。
在所示出的示例实施例中,存储器(例如存储器150)的每一行是可以用各种地址302中相应的一个来寻址的,例如,其中存储器区域370的一些缓存行对应于所示出的说明性地址371-377,并且存储器区域370的其他行对应于所示出的说明性地址381-384,...,385。此外,存储器区域370的缓存行各自包括相应的部分306,该部分用于存储数据的表示(以及在一些实例中,与所述数据相对应的元数据的表示)。在一个这样的实施例中,存储器区域370的缓存行还存储或以其他方式表示值,例如所示出的说明性扩展位304,每个值指定或以其他方式指示出存储器区域380是否存储与该缓存行中表示的数据相对应的元数据。
作为说明而非限制,图3示出了设备300的状态,在此状态期间,地址371、373、374和377处的缓存行各自存储数据和与所述数据相对应的元数据两者的相应表示。对于每个这样的缓存行,其排除位被设置为某个值(在本示例中为“0”),该值指示出存储器区域380没有为所表示的数据存储任何相应的元数据。相比之下,地址372、375和376处的缓存行各自存储了数据的相应表示,但不存储至少一些相应元数据的表示(该元数据相反被存储或以其他方式表示在存储器区域380中)。对于每个这样的缓存行,其排除位(例如,用“1”值)指示出存储器区域380存储与表示的数据相对应的至少一些元数据,例如,其中地址381、382、383处的行各自存储相应的元数据值。
在根据一个实施例的一个示例场景中,写入评估/处理电路320从接口310接收消息312,该消息312指示出一些第一数据要被缓存,例如,其中消息312包括第一数据和与第一数据相对应的一些第一元数据。基于消息312,写入评估/处理电路320执行评估(例如方法200的212处的评估),在示例场景中,该评估确定存储器区域370的一行能够容纳第一数据和第一元数据两者的第一表示。基于这样的确定,写入评估/处理电路320执行一个或多个操作(例如,包括第一数据与第一元数据的串接、第一数据和/或第一元数据的压缩、加密和/或类似操作)以生成第一数据和第一元数据两者的这种第一表示。然后,写入评估/处理电路320在消息322中向缓存访问电路330传达该第一表示,例如,其中,基于消息322,缓存访问电路330生成信号332以将该第一表示存储到存储器区域370的一行。
在另一说明性场景中,消息312向写入评估/处理电路320指示出一些第二数据要被缓存,例如,写入评估/处理电路320相反基于第二数据确定存储器区域370的一行无法容纳第二数据和与该第二数据相对应的一些第二元数据两者的表示。基于这样的确定,写入评估/处理电路320转而生成该数据的第二表示(但不是也包括例如第二元数据的表示)。在一个这样的实施例中,生成第二表示包括写入评估/处理电路320将该数据与排除位或其他适当的标记串接起来,该标记指出第二元数据将在存储器区域380处可用。在一些实施例中,生成第二表示还包括写入评估/处理电路320对第二数据进行压缩、加密和/或其他处理。然后,写入评估/处理电路320经由消息322将第二表示传达给缓存访问电路330,例如,其中,基于消息322,缓存访问电路330生成信号332以将第二表示存储到存储器区域370的一行。此外,写入评估/处理电路320将消息324中的第二元数据传达给SMR访问电路340,其中SMR访问电路340生成信号342以将第二元数据存储到存储器区域380的一行。
由于这种向隔离存储器区域的选择性写入,一些实施例提供了对元数据的各种实例的不同类型的访问,这些实例各自属于相同的元数据类型。在根据一个实施例的说明性场景中,在给定的时间,存储器区域370的第一缓存行存储第一数据和与第一数据相对应的第一元数据两者的表示,其中第一元数据属于特定的元数据类型(例如,纠错类型、媒体访问控制值类型、用户权限信息类型等等中的一者)。在同一给定时间,存储器区域370的第二缓存行存储第二数据的表示,而存储器区域380存储与第二数据相对应的一些第二元数据,其中第二元数据和第一元数据各自属于该同一特定元数据类型。在一个这样的实施例中,选择性地将第二元数据存储到存储器区域380,而不是也将第一元数据存储到存储器区域380是由于例如,第一数据和第二数据的相应的大小和/或相应的压缩性之间的差异。
在根据另一实施例的示例场景中,设备300执行操作以基于对存储器区域370中的缓存行的读取而提供数据和元数据两者。作为说明而非限制,读取评估/处理电路350从接口310接收消息314,该消息314(例如)请求上文参考不同场景描述的第一数据。基于消息314,读取评估/处理电路350取回表示第一数据的缓存信息,例如,其中来自读取评估/处理电路350的消息352请求缓存访问电路330搜索存储器区域370以获得所述表示。响应于消息352,缓存访问电路330(例如,使用从常规缓存查找技术改编的操作)识别包括第一数据(以及在此情况下,与第一数据相对应的第一元数据)的第一表示的缓存行。然后,缓存访问电路330生成信号332以读取第一表示,该第一表示进而经由信号334提供给缓存访问电路330。然后,缓存访问电路330经由消息336将第一表示传达给读取评估/处理电路350。在一些实施例中,读取评估/处理电路350执行评估(例如在方法250的264处执行的评估),该评估识别出第一表示表示第一数据和第一元数据两者。基于确定没有其他与第一数据相关联的元数据需要被从隔离存储器区域380取回,读取评估/处理电路350在消息356中向接口310提供第一数据和第一元数据。
在根据一个实施例的又一场景中,消息314转而请求第二数据,这在上文是参考不同场景来描述的。基于这样的消息314,执行各种通信,例如,包括消息352、信号332、信号334和信号336,以转而向读取评估/处理电路350提供上述的第二数据的(但不是与第二数据相对应的第二元数据的)第二表示。然后,读取评估/处理电路350执行对第二表示的评估(例如在方法250的264处执行的评估),该评估识别出第二表示表示第二数据,但不表示第二元数据。读取评估/处理电路350从而检测到第二元数据要被从存储器区域380读取。基于这样的检测,读取评估/处理电路350传达消息354,该消息354请求SMR访问电路340访问存储器区域380中的第二元数据。基于消息354,信号342、344以各种方式传达来使得SMR访问电路340读取第二元数据,该第二元数据随后经由消息346传达给读取评估/处理电路350。读取评估/处理电路350在消息356中向接口310提供第二数据和第二元数据。
尽管一些实施例在这方面不受限制,但设备300还包括电路(例如所示出的说明性SMR管理器360),该电路例如提供识别存储器区域380的界限的功能,和/或提供用于改变所述界限的利用率度量。在一个这样的实施例中,SMR管理器360提供例如监视电路146那样的功能。例如,SMR管理器360包括或以其他方式能够访问范围信息364,该范围信息364识别出,至少在所示出的状态期间,存储器区域380包括从地址381到地址385的行。在各种实施例中,范围信息364是基于由BIOS进程、操作系统和/或其他软件对一个或多个模式寄存器的设置的,这促进了存储器资源的分配(例如,包括重分配)。
随着元数据被以各种方式写入到存储器区域380、被从存储器区域380读取或者在存储器区域380处被以其他方式访问,SMR管理器360的监视器362检测这种访问,例如,通过窥探或以其他方式检测被传达给SMR访问电路340、从SMR访问电路340传达或者在SMR访问电路340内传达的信号。基于检测到的对存储器区域380的访问,监视器362保持最新的一个或多个值,每个值表示SMR管理器360的利用率的相应度量。例如,监视器362维持计数器366的更新值,该更新值指定或以其他方式指示出存储器区域380中的可用行(或其部分)的当前计数,这些可用行当前没有存储用于存储器区域370中表示的有效数据的元数据。在一些实施例中,监视器362(或者SMR管理器360的其他合适电路)将一些或所有这样的利用率度量提供给操作系统或其他软件进程,例如,其中,基于一个或多个利用率度量,软件改变存储器区域380的界限。在一个示例场景中,存储器区域380被扩展以进一步包括另一存储器区域390中的一行或多行。
图4示出了根据一个实施例的提供用于存储元数据的隔离存储器的方法400的特征。在一个实施例中,方法400是用例如系统100或设备300那样的功能来执行的,例如,其中,方法200包括方法400的一些或全部或者是与其相结合来执行的。
如图4所示,方法400包括操作401,以隔离存储器区域来用于存储与在另一存储器区域中缓存的其他数据相对应的元数据。操作401包括(在410处)检测来自二进制输入/输出系统(BIOS)的存储器区域要被隔离的指示。例如,BIOS向存储器映射电路指示出(例如,在启动序列期间)一些存储器资源将被最初分配来用作隔离存储器,例如隔离存储器区域151或存储器区域380。在一个实施例中,最初分配的空间是某个默认大小(例如16兆字节)。
基于在410处检测到的这种指示,信息(在412处)被提供给一个或多个模式寄存器和/或其他合适的电路,以定义隔离存储器区域的界限。例如,在412处的注册使得MDAE 140(或者其他这样的电路)能够识别出对于在缓存中表示的数据在各种条件下元数据将被存储在何处。在一些实施例中,在410处的检测和/或在412处的注册包括从常规存储器映射技术改编来的操作。随后(在414处)操作401初始化计数器(例如计数器366),该计数器将指定或以其他方式指示出当前使用的(替代地,未使用的)行、字节、字或者隔离存储器区域的其他部分的当前计数。
附加地或者替代地,方法400包括操作402,以维持经更新的计数值(例如,使用例如在414处初始化的那个那样的计数器),该计数值将充当隔离存储器区域的利用率的度量。在所示出的示例实施例中,操作402包括(在420处)确定下一个缓存访问事件是否已发生(或将要发生)。例如,在420处的检测包括数据评估电路142(或者写入评估/处理电路320或读取评估/处理电路350之一)检测是否正在提供数据来缓存,或者是否已接收到读取缓存的一行的请求。如果在420处确定没有指示出这样的下一个访问事件,则操作402重复420处的确定,直到检测到这样的事件为止。
如果相反在420处确定指示出下一个访问事件,则操作402(在422处)确定一些元数据(与在缓存中将要表示的数据相对应)是否已被(或将被)写入到隔离存储器区域。如果在422处指示出元数据到隔离存储器的这种写入,则操作402相应地递增(或者以其他方式更新)计数器(在424处),并且返回到在420处检测下一个缓存事件。如果相反在422处确定没有指示出向隔离存储器添加元数据,则操作402(在426处)确定元数据是否已被从隔离存储器区域移除(或将被移除)。例如,在一些实施例中,将基于从缓存中逐出相应的行而自动移除元数据。
如果在426处确定没有指示出元数据的这种移除,则操作402返回到在420处检测下一个缓存事件。相比之下,如果相反在426处确定元数据已被(或将被)从隔离存储器区域移除,则操作402(在428处)相应地递减或以其他方式更新计数器,并且返回到在420处检测下一个缓存事件。
图5示出了根据一个实施例的确定缓存的一行是否要存储数据和相应元数据两者的设备500的特征。设备500是一个实施例的一个示例,其中各种标准中的任何一者被用于确定缓存的一行是否能够容纳数据和与所述数据相对应的一些特定元数据两者的表示。在各种实施例中,设备500包括数据评估电路142或者写入评估/处理电路320的特征,例如,其中设备500的功能是根据方法200来提供的。
如图5所示,设备500包括电路,以检测要在缓存的一行中表示的数据是否满足各种标准中的任何一者,例如,其中给定的标准包括特定的数据模式,该模式(例如)指示出数据的可压缩性。设备500考虑各种模式。模式包括数据的子集,例如字节、字、半字节或者双字彼此相等。模式包括数据的子集彼此相等,相邻的数据彼此相等,数据等于特殊值,例如最小值(例如,0x00)或最大值(例如,0xFF),或者展示n个最高数据的总和高于阈值的值直方图。
设备500包括在功能块504处确定输入数据502的彼此相等的字节的数目是否超过阈值T1。设备500在功能块506处确定输入数据502的彼此相等的相邻字节的数目是否超过阈值T2。设备500包括在功能块508处确定输入数据502的具有特定值的字节的数目是否超过阈值T3。设备500还在功能块510处确定输入数据502的彼此相等的字的数目是否超过阈值T4。设备500还在功能块512处确定输入数据502的两个最高双频之和是否超过阈值T5。功能块504、506和508对字节(八个连续位)进行操作。功能块510和512对字(十六个连续位)或双字(三十二个连续位)进行操作。数据块(例如,双字、字、字节、半字节,等等)与输入数据502对齐。
响应于在功能块504处确定彼此相等的字节的数目超过T1(如线505所指示),在功能块516处确定通过压缩彼此相等的字节而释放的空间量。响应于在功能块506处确定彼此相等的相邻字节的数目超过T2(如线507所指示),在功能块518处确定通过压缩彼此相等的相邻字节而释放的空间量。响应于在功能块508处确定等于特定值的字节的数目超过T3(如线509所指示),在功能块520处确定通过压缩等于特定值(例如,0x00、0xFF,等等)的字节而释放的空间量。
响应于在功能块510处确定彼此相等的字(或双字)的数目超过T4(如线511所指示),在功能块522处确定通过压缩彼此相等的字而释放的空间量。响应于在功能块512处确定两个最高双字频率之和超过T5(如线513所指示),在功能块524处确定通过压缩与两个最高双字频率相对应的双字而释放的空间量。
在功能块516、518、520、522或524处确定的每个量被提供来在功能块528处确定如何压缩输入数据502。在线517、519、521、523和525上提供释放的空间。响应于功能块528,提供所得的输出529。
由设备500提供的处理使得能够对缓存行中通常提供的相对少量的数据进行压缩。释放的空间足够让这样的给定缓存行除了数据以外还表示相应的元数据,例如32位或64位截断MAC、访问控制信息、安全性策略元数据,等等。许多实施例也能有效地在硬件中实现。一个或多个实施例需要不超过1-3个时钟周期来进行解压缩,以及2-8个时钟周期来进行压缩。在各种实施例中,设备500提供了单时钟吞吐量的管线化实施方式,在硬件中产生了合理的小面积成本。
图6根据相应的实施例示出了框图600,该框图600图示出各自将被包括在相应缓存行中的数据(以及例如,相应的元数据)的各种表示。例如框图中所示那样的信息被系统100或设备300生成、写入、读取和/或以其他方式访问,例如,其中这种访问是根据方法200、250之一进行的。
块610表示缓存行的内容,其容纳数据614的表示,但没有容纳数据614和与数据614相对应的至少一些元数据两者的表示。为了促进在隔离存储器区域中访问这种元数据,块610进一步包括扩展位612,其值(在本例中为“0”)指示出该元数据在块610中不被表示。
块620表示缓存行的内容,其容纳了压缩数据624和与压缩数据624相对应的压缩数据元数据626两者的表示。例如,各种公开可用的压缩算法中的任何一种被用于压缩数据和/或元数据以生成块620。为了指示出块620包括与压缩数据624相对应的元数据的表示,块610进一步包括扩展位622,其值(例如,“1”)指示出不需要从某个隔离存储器区域取回元数据。块621表示块620的替代版本,例如,其中块621的加密元数据和数据628是通过对压缩数据624和压缩数据元数据626的加密来生成的。例如,各种公开可用的加密算法中的任何一种用于对数据和/或元数据加密以生成块621。
块630表示缓存行的内容,其容纳加密数据634,但没有容纳加密数据634和与加密数据634相对应的至少一些元数据的表示两者。为了促进在隔离存储器区域中访问这种元数据,块630进一步包括密钥标识符636,其例如促进了在隔离存储器区域的散列表结构中访问元数据。作为说明而非限制,MDAE 140、读取评估/处理电路350或者其他合适的电路资源读取和处理由块630表示的缓存行以确定密钥标识符636。在一个这样的实施例中,电路资源包括、被耦合以访问、或者以其他方式使用查找表、散列函数、或者其他合适的机制来确定用于访问散列表结构的散列表索引。在一些实施例中,块630附加地或者替代地包括多位字段632,其值指定或以其他方式指示出块630的其他内容的一个或多个特性(例如,其中这种其他内容包括密钥标识符636和/或加密数据634)。在一个这样的实施例中,多位字段632的值识别出其他内容是否被压缩,其他内容是否被加密,其他内容是否表示元数据,等等。块631表示块630的替代版本,例如,其中块631的加密密钥标识符和数据638是通过用密钥标识符636对加密数据634进一步加密而生成的。
图7示出了根据一个实施例的改变隔离存储器区域的容量的方法700的特征。在一个实施例中,方法700是用软件进程来执行的,该软件进程由处理器核心106a,...,106n之一执行,例如,其中方法700使用基于方法200或方法250生成的度量信息。
在一些实施例中,方法700包括操作701以有条件地增大隔离存储器区域的容量,和/或其他操作702以有条件地减小这种隔离存储器区域的容量。关于操作701是在操作702之前还是在操作702之后,一些实施例是不受限制的。
如图7所示,方法700包括(在710处)评估隔离存储器区域的利用率的度量。例如,监视电路146、SMR管理器360或其他这种电路资源向执行软件提供一个或多个度量,这些度量例如包括或以其他方式基于隔离存储器区域的当前未使用(替代地,当前已使用)部分的计数。在一个这样的实施例中,一个或多个度量指定或以其他方式指示出隔离存储器区域的未使用部分的容量的变化率,例如,一阶变化率、二阶变化率等等中的一者或多者。
操作701包括(在720处)确定在710处的评估是否指示出隔离存储器区域的高利用率的某个预定条件,例如,其中利用率处于或高于上限阈值水平。例如,在720处的确定包括根据某个预定的标准检测隔离存储器区域的可用(例如,未使用)部分的数目是否低。替代地或者附加地,在720处的确定包括检测这样的数目是否按某个速率在减小,并且该速率根据另一预定的标准而言太高了。在720处的确定中使用的标准根据具体实施方式细节在不同的实施例中差异很大,并且一些实施例不限于特定的一个或多个这种标准。
如果在720处确定指示出高利用率条件,则操作701(在722处)中断以各种方式缓存数据(对于这些数据,元数据被以各种方式有条件地存储在隔离存储器区域中)的一个或多个软件进程的执行。此外,(在724处)操作701在一个或多个软件进程被中断的同时,增大隔离存储器区域的容量。例如,在724处的增大包括操作系统、虚拟机(virtual machine,VM)或虚拟机管理器(virtual machine manager,VMM)更新一个或多个模式寄存器和/或值的其他存储库,例如范围信息364的那些。再进一步(在726处),操作701向处理器电路(例如核心106a,...,106n的处理器电路)发信号,通知一个或多个软件进程的执行要恢复,在此之后方法700返回以重复在710处的评估。
如果相反在720处确定未指示出高利用率条件,则操作702(在730处)确定在710处的评估是否指示出隔离存储器区域的低利用率的条件,例如,其中利用率处于或低于更低的阈值水平。例如,在730处的确定包括检测根据一个或多个预定的标准,隔离存储器区域的可用部分的数目是否很高,和/或这样的数目是否以被认为太高的速率在增大。这样的一个或多个标准根据具体实施方式细节在不同的实施例中差异很大,并且对所述实施例没有限制。
如果在730处确定没有指示出这种低利用率条件,则方法700返回以重复在710处的评估。相比之下,如果相反在730处确定指示出低利用率条件,则操作702(在732处)中断一个或多个软件进程的执行,这些软件进程以各种方式缓存数据,从而有条件地将元数据存储到隔离存储器区域。此外,(在734处)操作702在一个或多个软件进程被中断的同时,减小隔离存储器区域的容量。再进一步(在736处),操作702向处理器电路发信号,通知一个或多个软件进程的执行要恢复,在此之后方法700返回以重复在710处的评估。
一些实施例提供了一种无冲突的方法来在隔离存储器区域中建立用于存储元数据的散列表。这种元数据包括但不限于检错/纠错信息、权限位、策略元数据、MAC、完整性检查值,等等。所述实施例以各种方式实现了从这样的散列表访问元数据的无冲突方法。在一些实施例中,这样的散列表支持开放寻址,例如,其中散列表的条目各自包括相应的一个或多个键-值对。在各种实施例中,对散列表的访问是通过多个强加密的散列函数来促进的,这些散列函数例如结合了带进位加法、位级重排序、对于多个散列函数中的每一者不同的位线性混合、以及少量的回合中的宽幅置换。在一些实施例中,多个散列函数是键控的散列函数,它们共享包括带进位加法、位级重排序和宽幅置换在内的操作,但利用不同的密钥。
例如,现在参考图8,一个示意图详述了根据一个实施例的用于访问元数据的无冲突散列的示例散列函数过程800。在一个实施方式中,散列函数过程800被系统100的行处理电路144(替代地,例如,被写入评估/处理电路320和/或读取评估/处理电路350)利用来生成多个(N个)不同的散列函数,这些散列函数用于解析到散列表的位置,例如,在隔离存储器区域151或存储器区域380的一者中。“N”的值在不同的实施例中是不同的,这取决于散列表和散列函数过程的特定实施方式。例如,散列函数过程800的N个不同的散列函数被示为散列函数1 840,散列函数2 842,等等依此类推,直到散列函数N 844。
在示例散列函数过程800中,第一阶段810是共同回合密钥加法和置换。在一个实施方式中,第一阶段810的回合密钥加法和置换被称为“共同”,因为回合密钥加法和置换处理可以被一致地应用于使用散列函数过程800生成的N个不同的散列函数840、842、844的每一者中。第一阶段810的共同回合密钥加法和置换包括多个过程,包括但不限于带进位的加法、位级重排序、以及宽幅置换。第一阶段810的共同回合密钥加法和置换利用秘密信息,例如密钥,来调整散列函数的计算。下文将参考图9论述关于共同回合密钥和置换过程的进一步细节。
第一阶段810之后是位线性混合的第二阶段820。位线性混合的第二阶段820(即,统称为位线性混合1 820-1,位线性混合2 820-2,直到位线性混合N 820-N)对于使用散列函数过程800生成的每个散列函数840、842、844而言可以是不同的。例如,多个散列函数中的第一散列函数1840使用位线性混合1 820-1操作,多个散列函数中的第二散列函数2 842使用位线性混合2 820-2操作,等等依此类推,直到最后的散列函数N 844使用位线性混合N820-N操作。在第二阶段820使用位线性混合的这种区分是由散列函数过程800为多个(N个)不同的散列函数840、842、844提供的。第二阶段820的位线性混合过程指的是将输入向量与产生较小维度的输出向量的矩阵相乘。下文将参考图9论述关于位线性混合过程的进一步细节。
在一些实施例中,第二阶段820之后是另一组共同回合密钥加法和置换过程的第三阶段830。第三阶段830的共同回合密钥加法和置换包括多个过程,包括但不限于带进位的加法、位级重排序、以及宽幅置换。下文将参考图9论述关于共同回合密钥和置换过程的进一步细节。
图9图示了根据一些实施例的实现无冲突散列以访问元数据的示例散列函数900的流程图。散列函数900是参考图8描述的散列函数过程800的一个示例实施方式。尽管是以特定的顺序示出的,但散列函数900的过程和/或阶段被以不同的组合或子组合排序,并且不限于本文描述的过程的特定顺序或集合。在一个实施方式中,散列函数900被图1的行处理电路144利用以生成多个(N个)不同的散列函数,这些散列函数用于解析到例如在隔离存储器区域151处提供的散列表中的位置。
散列函数900开始于第一阶段910的加法。第一阶段910的加法提取一个状态作为输入,然后向此状态添加提供的密钥和第一回合密钥的值。所执行的加法例如是整数算术。如果被看作是位逻辑操作,则整数加法对其输入位执行强混合,以产生输出的位。由于使用了进位值,所执行的混合展现出规律性。术语“混合”是指对单个位值的计算,涉及多个AND、OR、NAND、NOR或者XOR操作。第一阶段910的带进位加法可以是独立于位长度的操作。因此,其规格是独立于输入的长度的。该操作也是可逆的,它的逆是带借位的减法。在一个实施方式中,从这种操作产生的任何最终进位或借位信号都可以被忽略。
为了去除表征第一阶段910处的带进位加法的规律性,在第一阶段910的加法输出上执行第二阶段920的位级重排序。第二阶段920的这种位级重排序操作将来自第一阶段910的输出位置于看似随机的顺序中,使得结果的逻辑方程的伽罗瓦域GF(2)乘积的数目不再单调地增大,而是以伪随机的方式增大和减小。
此外,第二阶段920的位级重排序操作辅助了随后的第三阶段930的宽幅置换阶段,有助于将输入的所有位与密钥的所有位混合而产生的散列函数900的输出的每个位。第三阶段930的宽幅置换是基于GF转换的置换盒(substitution box,S盒)层。
在一个示例中,第三阶段930的S盒层操作如下。首先,S盒层将其输入的N位划分成M位的块。可以假设N是M的倍数。下面将进一步论述N不是M的倍数的情况。如果N是M的倍数,则S盒层可以采用GF(2M)算术中的N=M反相器的阵列,这些反相器用GF(2M)中的逆的位来替代其输入位。伽罗瓦域算术GF(2M)中的逆是一种支持强位混合的操作。散列函数900所采用的伽罗瓦域反相器所执行的混合并没有展现出带进位加法的规律性,并且事实上是伪随机的。散列函数900被设计为通过采用两种不相关的算术类型(即,伽罗瓦域和整数)中的加法和逆转,并且将这些组合成几回合的序列,来支持强加密安全性。
第三阶段930的S盒层是独立于位长度的,前提是密码的状态的长度N是所采用的反相器的宽度M的倍数。在这种情况下,密码的规格是通用的,并且每个宽幅置换阶段采用N=M个反相器。如果N不是M的倍数,那么有m个宽度为M的置换盒被采用,再加上一个宽度为K=(N–m)*M的置换盒,其中K为非零。在一个实施方式中,第三阶段930的S盒层的置换阶段可以采用GF(2M)算术中的m个反相器和GF(2K)算术中的一个反相器来处理密码状态的最后K位。
散列函数900的处理采用了至少两个回合的加法和位级重排序。因此,散列函数900的第四阶段940包括回合密钥加法的第二过程,其中第二回合密钥被添加到输入状态,类似于关于第一阶段910描述的过程。在第五阶段950,对第四阶段940的加法的输出执行第二回合的位级重排序。
第六阶段960提取第五阶段950的输出,并且在该输出上执行位线性混合函数。虽然散列函数900的阶段910-950的集合901以及阶段970-980的集合902对于散列函数900的每次迭代都是相同的,但是阶段960的位线性混合函数对于由散列函数900生成的散列函数的每次迭代是不同的。位线性混合指的是矩阵乘法,其中位线性混合函数的输入向量被与产生较小维度的输出向量的矩阵相乘。在一些实施例中,用于与输入向量相乘的矩阵对于散列函数900的每次迭代是不同的。
如上所述,第六阶段960的位线性混合函数的输出包括状态长度,该状态长度被减小到输出索引长度。散列函数900的第七阶段970接收这个输出,并且使用基于GF逆转的S盒来应用另一个宽幅置换。这个阶段在操作上与上述的第三阶段930是相似的。最后的第八阶段980使用具有提供给第八阶段980的输入状态的第三回合密钥来执行最后回合密钥加法。
在一个实施方式中,由散列函数900采用的支持位级重排序(例如在阶段920、950处)的索引序列的生成,可以通过以下索引序列过程来完成:索引序列过程首先确定它应当在置换盒的位上迭代的次数d,以便将这些位分布在所有置换盒上。置换盒的这些位被称为“要重排序的位”。参数d等于ceil(M/b)。然后,对于d个迭代中的每一者,该算法会生成随机的数字序列。这些数字是与当前迭代相关联的“要重排序的位”所处的置换盒的索引。随后,对于每个“要重排序的位”,索引序列过程从输入位的目标置换盒中的空位位置之中随机挑选位位置,并且将这个位置指派给该位。这最后一步可以对索引序列过程执行的三重嵌套循环的所有迭代重复。
索引序列过程产生索引的序列,其中输入的每个位都被置于输出的不同位位置中,并且不存在从输出中省略的输入。此外,索引序列过程产生索引的序列,其中,如果这种重排序操作与宽幅置换操作相结合,那么,在logMN回合之后,输入的所有位都已经与彼此完全混合,即使没有带进位的加法。在一些实施例中,图9的整个步骤序列被重复了不止一次。
返回参考图3,写入评估/处理电路320提供散列函数生成器来执行无冲突散列,用于访问存储在存储器区域380中的加密计算元数据。在一个实施方式中,读取评估/处理电路350利用所述散列函数生成器来应用散列函数,例如参考图9描述的散列函数900,以便访问存储器区域380。
本文描述的附图详述了实现上述的实施例的示例性架构和系统。在一些实施例中,本文描述的一个或多个硬件组件和/或指令被如下详述那样来模拟,或者被实现为软件模块。
示例性核心架构、处理器和计算机架构
可以按不同的方式、为了不同的目的、在不同的处理器中实现处理器核心。例如,这种核心的实施方式可以包括:1)旨在用于通用计算的通用有序核心;2)旨在用于通用计算的高性能通用无序核心;3)主要旨在用于图形和/或科学(吞吐量)计算的专用核心。不同处理器的实施方式可以包括:1)包括旨在用于通用计算的一个或多个通用有序核心和/或旨在用于通用计算的一个或多个通用无序核心的CPU;以及2)包括主要旨在用于图形和/或科学(吞吐量)的一个或多个专用核心的协处理器。这样的不同处理器导致不同的计算机系统架构,这些架构可以包括:1)协处理器在与CPU分开的芯片上;2)协处理器在与CPU相同的封装中、分开的管芯上;3)协处理器与CPU在同一管芯上(在此情况下,这种协处理器有时被称为专用逻辑,例如集成图形和/或科学(吞吐量)逻辑,或者被称为专用核心);以及4)片上系统,其可以在同一管芯上包括所描述的CPU(有时称为(一个或多个)应用核心或者(一个或多个)应用处理器)、上述的协处理器以及额外的功能。接下来描述示例性核心架构,然后是对示例性处理器和计算机架构的描述。
示例性核心架构
有序和无序核心框图
图10A是根据本发明的实施例图示出示例性有序管线和示例性寄存器重命名、无序发出/执行管线两者的框图。图10B是根据本发明的实施例图示出要被包括在处理器中的有序架构核心的示例性实施例和示例性寄存器重命名、无序发出/执行架构核心两者的框图。图10A-10B中的实线框图示了有序管线和有序核心,而虚线框的可选添加图示了寄存器重命名、无序发出/执行管线和核心。考虑到有序方面是无序方面的子集,将描述无序方面。
在图10A中,处理器管线1000包括提取级1002、长度解码级1004、解码级1006、分配级1008、重命名级1010、调度(也称为调遣或发出)级1012、寄存器读取/存储器读取级1014、执行级1016、写回/存储器写入级1018、异常处理级1022、以及提交级1024。
图10B示出了处理器核心1090包括耦合到执行引擎单元1050的前端单元1030,并且执行引擎单元1050和前端单元1030这两者都耦合到存储器单元1070。核心1090可以是精简指令集计算(reduced instruction set computing,RISC)核心、复杂指令集计算(complex instruction set computing,CISC)核心、超长指令字(very long instructionword,VLIW)核心、或者混合或替代核心类型。作为又一选项,核心1090可以是专用核心,例如,网络或通信核心、压缩引擎、协处理器核心、通用计算图形处理单元(general purposecomputing graphics processing unit,GPGPU)核心、图形核心,等等。
前端单元1030包括分支预测单元1032,该分支预测单元1032耦合到指令缓存单元1034,指令缓存单元1034耦合到指令转化后备缓冲器(translation lookaside buffer,TLB)1036,指令TLB 1036耦合到指令提取单元1038,指令提取单元1038耦合到解码单元1040。解码单元1040(或解码器)可以对指令进行解码,并且生成一个或多个微操作、微代码入口点、微指令、其他指令或其他控制信号作为输出,这些微操作、微代码入口点、微指令、其他指令或其他控制信号是从原始指令解码来的,或者以其他方式反映原始指令,或者是从原始指令得出的。可以利用各种不同的机制来实现解码单元1040。合适机制的示例包括但不限于查找表、硬件实施方式、可编程逻辑阵列(programmable logic array,PLA)、微代码只读存储器(read only memory,ROM),等等。在一个实施例中,核心1090包括微代码ROM或其他介质,其为特定宏指令存储微代码(例如,在解码单元1040中或者以其他方式在前端单元1030内)。解码单元1040耦合到执行引擎单元1050中的重命名/分配器单元1052。
执行引擎单元1050包括重命名/分配器单元1052,该重命名/分配器单元1052耦合到引退单元1054和一组一个或多个调度器单元1056。(一个或多个)调度器单元1056表示任何数目的不同调度器,包括预留站、中央指令窗口,等等。(一个或多个)调度器单元1056耦合到(一个或多个)物理寄存器文件单元1058。(一个或多个)物理寄存器文件单元1058中的每一者表示一个或多个物理寄存器文件,这些物理寄存器文件中的不同物理寄存器文件存储一个或多个不同的数据类型,例如标量整数、标量浮点、压缩整数、压缩浮点、向量整数、向量浮点、状态(例如,作为要执行的下一指令的地址的指令指针),等等。在一个实施例中,(一个或多个)物理寄存器文件单元1058包括向量寄存器单元、写入掩码寄存器单元、以及标量寄存器单元。这些寄存器单元可以提供架构式向量寄存器、向量掩码寄存器、以及通用寄存器。(一个或多个)物理寄存器文件单元1058与引退单元1054交叠以说明可用来实现寄存器重命名和无序执行的各种方式(例如,利用(一个或多个)重排序缓冲器和(一个或多个)引退寄存器文件;利用(一个或多个)未来文件、(一个或多个)历史缓冲器、以及(一个或多个)引退寄存器文件;利用寄存器图和寄存器的池;等等)。引退单元1054和(一个或多个)物理寄存器文件单元1058耦合到(一个或多个)执行集群1060。(一个或多个)执行集群1060包括一组一个或多个执行单元1062和一组一个或多个存储器访问单元1064。执行单元1062可以在各种类型的数据(例如,标量浮点、压缩整数、压缩浮点、向量整数、向量浮点)上执行各种操作(例如,移位、加法、减法、乘法)。虽然一些实施例可以包括专用于特定功能或功能集合的若干个执行单元,但其他实施例可以只包括一个执行单元或者全部执行所有功能的多个执行单元。(一个或多个)调度器单元1056、(一个或多个)物理寄存器文件单元1058、以及(一个或多个)执行集群1060被示为可能是多个,因为特定实施例为特定类型的数据/操作创建单独的管线(例如,标量整数管线、标量浮点/压缩整数/压缩浮点/向量整数/向量浮点管线和/或存储器访问管线,它们各自具有其自身的调度器单元、物理寄存器文件单元和/或执行集群——并且在单独的存储器访问管线的情况下,实现了特定实施例,其中只有此管线的执行集群具有(一个或多个)存储器访问单元1064)。还应当理解,在使用分开管线的情况下,这些管线中的一个或多个可以是无序发出/执行,并且其余的是有序的。
存储器访问单元1064的集合耦合到存储器单元1070,存储器单元1070包括数据TLB单元1072,数据TLB单元1072耦合到数据缓存单元1074,数据缓存单元1074耦合到第2级(L2)缓存单元1076。在一个示例性实施例中,存储器访问单元1064可以包括加载单元、存储地址单元、以及存储数据单元,它们中的每一者耦合到存储器单元1070中的数据TLB单元1072。指令缓存单元1034进一步耦合到存储器单元1070中的第2级(L2)缓存单元1076。L2缓存单元1076耦合到一个或多个其他级别的缓存并且最终耦合到主存储器。
作为示例,示例性寄存器重命名、无序发出/执行核心架构可以实现管线1000如下:1)指令提取1038执行提取和长度解码级1002和1004;2)解码单元1040执行解码级1006;3)重命名/分配器单元1052执行分配级1008和重命名级1010;4)(一个或多个)调度器单元1056执行调度级1012;5)(一个或多个)物理寄存器文件单元1058和存储器单元1070执行寄存器读取/存储器读取级1014;执行集群1060执行执行级1016;6)存储器单元1070和(一个或多个)物理寄存器文件单元1058执行写回/存储器写入级1018;7)在异常处理级1022中可涉及各种单元;并且8)引退单元1054和(一个或多个)物理寄存器文件单元1058执行提交级1024。
核心1090可以支持一个或多个指令集(例如,x86指令集(带有已随着较新版本添加的一些扩展);加州森尼维尔市的MIPS技术公司的MIPS指令集;加州森尼维尔市的ARM控股公司的ARM指令集(带有可选的额外扩展,例如NEON)),包括本文描述的(一个或多个)指令。在一个实施例中,核心1090包括逻辑以支持压缩数据指令集扩展(例如,AVX1、AVX2),从而允许由许多多媒体应用使用的操作利用压缩数据来执行。
应当理解,核心可以支持多线程处理(执行操作或线程的两个或更多个并行集合),并且可以按各种方式来支持多线程处理,包括时间切片式多线程处理、同时多线程处理(其中单个物理核心针对该物理核心在同时多线程处理的每个线程提供逻辑核心),或者这些的组合(例如,时间切片式提取和解码,然后是同时多线程处理,例如像Hyperthreading技术中那样)。
虽然在无序执行的上下文中描述寄存器重命名,但应当理解寄存器重命名可以用于有序架构中。虽然处理器的图示实施例还包括分开的指令和数据缓存单元1034/1074和共享的L2缓存单元1076,但替代实施例可以针对指令和数据两者具有单个内部缓存,例如,第1级(L1)内部缓存或者多级别的内部缓存。在一些实施例中,系统可以包括内部缓存与在核心和/或处理器外部的外部缓存的组合。替代地,所有缓存可以在核心和/或处理器外部。
具体示例性有序核心架构
图11A-11B图示出更具体的示例性有序核心架构的框图,该核心将是芯片中的若干个逻辑块(包括相同类型和/或不同类型的其他核心)之一。逻辑块通过高带宽互连网络(例如,环状网络)与某些固定功能逻辑、存储器I/O接口和其他必要I/O逻辑进行通信,这取决于应用。
图11A是根据本发明的实施例的单个处理器核心及其与片上互连网络1102的连接以及其第2级(L2)缓存的本地子集1104的框图。在一个实施例中,指令解码器1100支持具有压缩数据指令集扩展的x86指令集。L1缓存1106允许低时延访问以将存储器缓存到标量和向量单元中。虽然在一个实施例中(为了简化设计),标量单元1108和向量单元1110使用分开的寄存器集合(分别是标量寄存器1112和向量寄存器1114)并且将在它们之间传送的数据写入到存储器,然后从第1级(L1)缓存1106中读回这些数据,但本发明的替代实施例可以使用不同的方案(例如,使用单个寄存器集合或者包括允许数据在两个寄存器文件之间传送而不被写入和读回的通信路径)。
L2缓存的本地子集1104是全局L2缓存的一部分,全局L2缓存被划分成单独的本地子集,每个处理器核心有一个本地子集。每个处理器核心具有到其自身的L2缓存本地子集1104的直接访问路径。处理器核心所读取的数据被存储在其L2缓存子集1104中并且可以被快速访问,这与其他处理器核心访问其自身的本地L2缓存子集并行地进行。处理器核心所写入的数据被存储在其自身的L2缓存子集1104中并且在必要时从其他子集冲刷出。环状网络确保了共享数据的一致性。环状网络是双向的,以允许诸如处理器核心、L2缓存和其他逻辑块之类的代理在芯片内与彼此通信。每个环状数据路径在每方向上是1012位宽的。
图11B是根据本发明的实施例的图11A中的处理器核心的一部分的扩展视图。图11B包括L1缓存1106的L1数据缓存1106A部分,以及关于向量单元1110和向量寄存器1114的更多细节。具体而言,向量单元1110是16宽向量处理单元(vector processing unit,VPU)(参见16宽ALU1128),其执行整数、单精度浮点和双精度浮点指令中的一个或多个。VPU支持利用调配单元1120调配寄存器输入,利用数值转换单元1122A-B进行数值转换,以及利用复制单元1124对存储器输入进行复制。写入掩码寄存器1126允许断言结果向量(predicatingresulting vector)写入。
图12是根据本发明的实施例的处理器1200的框图,该处理器1200可以具有多于一个核心,可以具有集成的存储器控制器,并且可以具有集成的图形。图12中的实线框图示了具有单个核心1202A、系统代理1210和一组一个或多个总线控制器单元1216的处理器1200,而虚线框的可选添加图示了具有多个核心1202A-N、系统代理单元1210中的一组一个或多个集成存储器控制单元1214以及专用逻辑1208的替代处理器1200。
因此,处理器1200的不同实施方式可以包括:1)其中专用逻辑1208是集成图形和/或科学(吞吐量)逻辑(其可以包括一个或多个核心),并且核心1202A-N是一个或多个通用核心(例如,通用有序核心、通用无序核心、或者两者的组合)的CPU;2)其中核心1202A-N是大量的主要旨在用于图形和/或科学(吞吐量)的专用核心的协处理器;以及3)其中核心1202A-N是大量的通用有序核心的协处理器。因此,处理器1200可以是通用处理器、协处理器或专用处理器,例如,网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量集成众核(many integrated core,MIC)协处理器(包括30个或更多个核心)、嵌入式处理器,等等。处理器可以被实现在一个或多个芯片上。处理器1200可以是一个或多个衬底的一部分和/或可以利用若干个工艺技术中的任何一者被实现在一个或多个衬底上,这些技术例如是BiCMOS、CMOS或NMOS。
存储器层次体系可以包括核心1202A-N内的相应的一个或多个级别的缓存1204A-N、一组或者一个或多个共享缓存单元1206、以及耦合到该组集成存储器控制器单元1214的外部存储器(未示出)。该组共享缓存单元1206可以包括一个或多个中间级别缓存(例如第2级(L2)、第3级(L3)、第4级(4)或者其他级别的缓存),最后一级缓存(last level cache,LLC),和/或这些的组合。虽然在一个实施例中基于环的互连单元1212互连集成图形逻辑1208、该组共享缓存单元1206以及系统代理单元1210/(一个或多个)集成存储器控制器单元1214,但替代实施例也可以使用任何数目的公知技术来互连这种单元。在一个实施例中,在一个或多个缓存单元1206和核心1202A-N之间维持一致性。
在一些实施例中,核心1202A-N中的一个或多个能够进行多线程处理。系统代理1210包括协调和操作核心1202A-N的那些组件。系统代理单元1210可以包括例如功率控制单元(power control unit,PCU)和显示单元。PCU可以是或者可以包括对核心1202A-N和集成图形逻辑1208的功率状态进行调节所需要的逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。
核心1202A-N就架构指令集而言可以是同构的或者异构的;也就是说,核心1202A-N中的两个或更多个可以能够执行同一指令集,而其他的核心可以能够只执行该指令集的子集或者不同的指令集。
示例性计算机架构
图13-16是示例性计算机架构的框图。本领域中已知的用于膝上型电脑、桌面型电脑、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络中心、交换机、嵌入式处理器、数字信号处理器(digital signal processor,DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备、以及各种其他电子设备的其他系统设计和配置,也是适当的。一般而言,能够包含本文公开的处理器和/或其他执行逻辑的各种各样的系统或电子设备一般是合适的。
现在参考图13,示出了根据本发明的一个实施例的系统1300的框图。系统1300可以包括一个或多个处理器1310、1315,它们耦合到控制器中心1320。在一个实施例中,控制器中心1320包括图形存储器控制器中心(graphics memory controller hub,GMCH)1390和输入/输出中心(Input/Output Hub,IOH)1350(它们可以在分开的芯片上);GMCH1390包括与存储器1340和协处理器1345耦合的存储器和图形控制器;IOH 1350将输入/输出(I/O)设备1360耦合到GMCH 1390。替代地,存储器和图形控制器中的一者或两者被集成在处理器内(如本文所述),存储器1340和协处理器1345直接耦合到处理器1310,并且控制器中心1320与IOH 1350在单个芯片中。
附加的处理器1315的可选性在图13中用虚线表示。每个处理器1310、1315可以包括本文描述的处理核心中的一个或多个并且可以是处理器1200的某个版本。
存储器1340可例如是动态随机访问存储器(dynamic random access memory,DRAM)、相变存储器(phase change memory,PCM)、或者两者的组合。对于至少一个实施例,控制器中心1320经由多点分支总线(例如前端总线(frontside bus,FSB))、点到点接口(例如QuickPath Interconnect(QPI))或者类似的连接1395与(一个或多个)处理器1310、1315进行通信。
在一个实施例中,协处理器1345是专用处理器,例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器,等等。在一个实施例中,控制器中心1320可以包括集成的图形加速器。
在处理器1310、1315之间,就包括架构特性、微架构特性、热特性、功率消耗特性等等在内的价值度量的范围而言,可以有各种差异。
在一个实施例中,处理器1310执行控制一般类型的数据处理操作的指令。嵌入在这些指令内的可以是协处理器指令。处理器1310将这些协处理器指令识别为应当由附接的协处理器1345执行的类型。因此,处理器1310在协处理器总线或其他互连上向协处理器1345发出这些协处理器指令(或者表示协处理器指令的控制信号)。(一个或多个)协处理器1345接受并且执行接收到的协处理器指令。
现在参考图14,其中示出了根据本发明的实施例的第一更具体示例性系统1400的框图。如图14中所示,多处理器系统1400是点到点互连系统,并且包括经由点到点互连1450耦合的第一处理器1470和第二处理器1480。处理器1470和1480的每一者可以是处理器1200的某个版本。在本发明的一个实施例中,处理器1470和1480分别是处理器1310和1315,而协处理器1438是协处理器1345。在另一实施例中,处理器1470和1480分别是处理器1310和协处理器1345。
处理器1470和1480被示为分别包括集成存储器控制器(integrated memorycontroller,IMC)单元1472和1482。处理器1470还包括点到点(P-P)接口1476和1478作为其总线控制器单元的一部分;类似地,第二处理器1480包括P-P接口1486和1488。处理器1470、1480可以利用P-P接口电路1478、1488经由点到点(P-P)接口1450交换信息。如图14中所示,IMC 1472和1482将处理器耦合到各自的存储器,即存储器1432和存储器1434,存储器1432和存储器1434可以是在本地附接到各自处理器的主存储器的一部分。
处理器1470、1480可以各自利用点到点接口电路1476、1494、1486、1498经由个体P-P接口1452、1454与芯片组1490交换信息。芯片组1490可以可选地经由高性能接口1492和互连1439与协处理器1438交换信息。在一个实施例中,协处理器1438是专用处理器,例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器,等等。
共享缓存(未示出)可以被包括在任一处理器中,或者在两个处理器之外,但经由P-P互连与处理器连接,从而使得任一个或两个处理器的本地缓存信息在处理器被置于低功率模式中的情况下可以被存储在该共享缓存中。
芯片组1490可以经由接口1496耦合到第一总线1416。在一个实施例中,第一总线1416可以是外围组件互连(Peripheral Component Interconnect,PCI)总线,或者诸如快速PCI总线或另一种第三代I/O互连总线之类的总线,虽然本发明的范围不限于此。
如图14中所示,各种I/O设备1414可以耦合到第一总线1416以及总线桥1418,总线桥1418将第一总线1416耦合到第二总线1420。在一个实施例中,一个或多个附加的处理器1415(例如,协处理器、高吞吐量MIC处理器、GPGPU、加速器(例如,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或者任何其他处理器)耦合到第一总线1416。在一个实施例中,第二总线1420可以是低引脚数(low pin count,LPC)总线。各种设备可以耦合到第二总线1420,包括例如键盘和/或鼠标1422、通信设备1427和存储单元1428,例如硬盘驱动器或者其他大容量存储设备,其中该存储单元1428在一个实施例中可以包括指令/代码和数据1430。另外,音频I/O 1424可以耦合到第二总线1420。注意其他架构是可能的。例如,取代图14的点到点架构,系统可以实现多点分支总线或者其他这种架构。
现在参考图15,其中示出了根据本发明的实施例的第二更具体示例性系统1500的框图。图14和图15中的相似元素带有相似的标号,并且图14的某些方面被从图15中省略以避免模糊图15的其他方面。
图15图示出处理器1470、1480可以分别包括集成存储器和I/O控制逻辑(“CL”)1572和1582。因此,CL 1572、1582包括集成存储器控制器单元并且包括I/O控制逻辑。图15图示出不仅存储器1432、1434耦合到CL 1572、1582,而且I/O设备1514也耦合到控制逻辑1572、1582。传统I/O设备1515耦合到芯片组1490。
现在参考图16,其中示出了根据本发明的实施例的SoC 1600的框图。图12中的相似元素带有相似的标号。另外,虚线框是更先进SoC上的可选特征。在图16中,(一个或多个)互连单元1602耦合到:应用处理器1610,其包括一组一个或多个核心1202A-N和(一个或多个)共享缓存单元1206;系统代理单元1210;(一个或多个)总线控制器单元1216;(一个或多个)集成存储器控制器单元1214;一组或一个或多个协处理器1620,其可以包括集成图形逻辑、图像处理器、音频处理器、以及视频处理器;静态随机访问存储器(static randomaccess memory,SRAM)单元1630;直接存储器访问(direct memory access,DMA)单元1632;以及显示单元1640,以用于耦合到一个或多个外部显示器。在一个实施例中,(一个或多个)协处理器1620包括专用处理器,例如网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、嵌入式处理器,等等。
可以用硬件、软件、固件或者这种实现方案的组合来实现本文公开的机制的实施例。本发明的实施例可以被实现为在包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备、以及至少一个输出设备的可编程系统上执行的计算机程序或程序代码。
程序代码(例如图14中所示的代码1430)可以被应用到输入指令以执行本文描述的功能并且生成输出信息。输出信息可以按已知的方式被应用到一个或多个输出设备。对于本申请的目的,处理系统包括具有处理器的任何系统,例如:数字信号处理器(digitalsignal processor,DSP)、微控制器、专用集成电路(application specific integratedcircuit,ASIC)、或者微处理器。
可以用高级别程式或面向对象的编程语言来实现程序代码以与处理系统进行通信。如果期望,也可以用汇编或机器语言来实现程序代码。实际上,本文描述的机制在范围上不限于任何特定的编程语言。在任何情况下,该语言可以是经编译或者解译的语言。
至少一个实施例的一个或多个方面可以由被存储在机器可读介质上的表示处理器内的各种逻辑的代表性指令来实现,这些代表性指令当被机器读取时使得该机器制作逻辑来执行本文描述的技术。这种被称为“IP核心”的表现形式可以被存储在有形机器可读介质上并且被提供到各种客户或制造设施以加载到实际制作该逻辑或处理器的制作机器中。
这种机器可读存储介质可以包括但不限于由机器或设备制造或形成的物品的非暂时性有形布置,包括诸如以下项之类的存储介质:硬盘,任何其他类型的盘(包括软盘、光盘、致密盘只读存储器(compact disk read-only memory,CD-ROM)、可改写致密盘(compact disk rewritable,CD-RW)、以及磁光盘),半导体设备(诸如,只读存储器(read-only memory,ROM),诸如动态随机访问存储器(dynamic random access memory,DRAM)、静态随机访问存储器(static random access memory,SRAM)之类的随机访问存储器(randomaccess memory,RAM),可擦除可编程只读存储器(erasable programmable read-onlymemory,EPROM),闪速存储器,电可擦除可编程只读存储器(electrically erasableprogrammable read-only memory,EEPROM),相变存储器(phase change memory,PCM)),磁卡或光卡,或者适合用于存储电子指令的任何其他类型的介质。
因此,本发明的实施例还包括非暂时性有形机器可读介质,其包含指令或者包含定义本文描述的结构、电路、装置、处理器和/或系统特征的设计数据,例如硬件描述语言(Hardware Description Language,HDL)。这种实施例也可被称为程序产品。
仿真(包括二进制转化、代码变形等等)
在一些情况下,指令转换器可被用于将指令从源指令集转换到目标指令集。例如,指令转换器可以将指令转化(例如,利用静态二进制转化、包括动态编译的动态二进制转化)、变形、仿真或者以其他方式转换到要被核心处理的一个或多个其他指令。可以用软件、硬件、固件或者其组合来实现指令转换器。指令转换器可以在处理器上、在处理器外、或者一部分在处理器上一部分在处理器外。
图17是根据本发明的实施例的与使用软件指令转换器来将源指令集中的二进制指令转换成目标指令集中的二进制指令相对比的框图。在图示的实施例中,指令转换器是软件指令转换器,虽然替代地,可以用软件、固件、硬件或者其各种组合来实现指令转换器。图17示出了高级别语言1702的程序可被利用x86编译器1704来编译以生成x86二进制代码1706,x86二进制代码1706可以由具有至少一个x86指令集核心的处理器1716原生执行。具有至少一个x86指令集核心的处理器1716表示任何这样的处理器:这种处理器可以通过兼容地执行或以其他方式处理(1)英特尔x86指令集核心的指令集的实质部分或者(2)目标为在具有至少一个x86指令集核心的英特尔处理器上运行的应用或其他软件的目标代码版本,来执行与具有至少一个x86指令集核心的英特尔处理器基本上相同的功能,以便实现与具有至少一个x86指令集核心的英特尔处理器基本上相同的结果。x86编译器1704表示可操作来生成x86二进制代码1706(例如,目标代码)的编译器,x86二进制代码1706在带有或不带有附加的链接处理的情况下可以在具有至少一个x86指令集核心的处理器1716上被执行。类似地,图17示出了高级别语言1702的程序可以利用替代指令集编译器1708来编译以生成替代指令集二进制代码1710,替代指令集二进制代码1710可以由没有至少一个x86指令集核心的处理器1714(例如,具有执行加州森尼维尔市的MIPS技术公司的MIPS指令集和/或执行加州森尼维尔市的ARM控股公司的ARM指令集的核心的处理器)原生执行。指令转换器1712用于将x86二进制代码1706转换成可由没有x86指令集核心的处理器1714原生执行的代码。这个经转换的代码不太可能与替代指令集二进制代码1710相同,因为能够做到这一点的指令转换器是难以制作的;然而,经转换的代码将实现一般操作并且由来自替代指令集的指令构成。从而,指令转换器1712表示通过仿真、模拟或任何其他过程允许不具有x86指令集处理器或核心的处理器或其他电子设备执行x86二进制代码1706的软件、固件、硬件或者其组合。
在一个或多个第一实施例中,一种装置包括第一电路来检测到数据要被缓存,并且基于所述数据和预定的标准,对于缓存的行是否能够容纳所述数据和与所述元数据相对应的元数据两者的第一表示执行评估,以及与所述第一电路耦合的第二电路。在基于所述评估确定所述行能够容纳所述第一表示的情况下,所述第二电路基于所述数据和所述元数据来生成所述第一表示,并且将所述第一表示存储到所述行,其中,否则,所述第二电路基于所述数据来生成第二表示,将所述第二表示存储到所述行,并且将所述元数据存储到在所述缓存外部的隔离存储器区域。
在一个或多个第二实施例中,关于所述第一实施例,又及,所述装置还包括与所述第二电路耦合的第三电路,来基于所述元数据被存储到所述隔离存储器区域而更新所述隔离存储器区域的利用率的度量。
在一个或多个第三实施例中,关于所述第二实施例,又及,所述装置还包括第四电路来将所述利用率的度量提供给软件进程,其中,基于所述度量,所述软件进程修改所述隔离存储器区域的可用容量。
在一个或多个第四实施例中,关于所述第一实施例或所述第二实施例,又及,所述装置还包括第五电路,来接收请求所述数据的消息,并且基于所述消息而从所述行读取所述第二表示,以及与所述第五电路耦合的第六电路,来基于所述第二表示而检测到所述元数据被存储在所述隔离存储器区域,从所述隔离存储器区域取回所述元数据,并且响应于所述消息而提供所述数据和所述元数据。
在一个或多个第五实施例中,关于所述第四实施例,又及,所述第六电路检测到所述元数据被存储在所述隔离存储器区域包括所述第六电路利用所述第二表示执行解密操作或解压缩操作之一,以生成所述数据和所述元数据两者的第三表示,并且将所述第三表示的一部分识别为指出所述元数据被存储在所述隔离存储器区域的指示符。
在一个或多个第六实施例中,关于所述第五实施例,又及,所述指示符包括指向所述隔离存储器区域中的位置的指针。
在一个或多个第七实施例中,关于所述第四实施例,又及,所述第六电路从所述隔离存储器区域取回所述元数据包括所述第六电路执行散列表查找。
在一个或多个第八实施例中,关于所述第一至第七实施例中的任何一者,又及,所述装置还包括第七电路,来接收请求所述数据的消息,并且基于所述消息而从所述行读取所述第一表示,以及与所述第七电路耦合的第八电路,来基于所述第一表示而识别所述数据和所述元数据两者,并且响应于所述消息而提供所述数据和所述元数据。
在一个或多个第九实施例中,关于所述第一至第八实施例中的任何一者,又及,所述第二电路在所述第一表示或所述第二表示之一中提供指定所述元数据是否被存储在所述行之外的位值。
在一个或多个第十实施例中,关于所述第一至第九实施例中的任何一者,又及,所述预定标准对应于所述数据的可压缩性。
在一个或多个第十一实施例中,一种系统一种装置,该装置包括第一电路来检测到数据要被缓存,并且基于所述数据和预定的标准,对于缓存的行是否能够容纳所述数据和与所述元数据相对应的元数据两者的第一表示执行评估,以及与所述第一电路耦合的第二电路。在基于所述评估确定所述行能够容纳所述第一表示的情况下,所述第二电路基于所述数据和所述元数据来生成所述第一表示,并且将所述第一表示存储到所述行,其中,否则,所述第二电路基于所述数据来生成第二表示,将所述第二表示存储到所述行,并且将所述元数据存储到在所述缓存外部的隔离存储器区域。所述系统还包括与所述装置耦合的显示设备,所述显示设备包括像素,来基于与所述装置传达的信号来显示图像。
在一个或多个第十二实施例中,关于所述第十一实施例,又及,所述装置还包括与所述第二电路耦合的第三电路,来基于所述元数据被存储到所述隔离存储器区域而更新所述隔离存储器区域的利用率的度量。
在一个或多个第十三实施例中,关于所述第十二实施例,又及,所述装置还包括第四电路来将所述利用率的度量提供给软件进程,其中,基于所述度量,所述软件进程修改所述隔离存储器区域的可用容量。
在一个或多个第十四实施例中,关于所述第十一实施例或所述第十二实施例,又及,所述装置还包括第五电路,来接收请求所述数据的消息,并且基于所述消息而从所述行读取所述第二表示,以及与所述第五电路耦合的第六电路,来基于所述第二表示而检测到所述元数据被存储在所述隔离存储器区域,从所述隔离存储器区域取回所述元数据,并且响应于所述消息而提供所述数据和所述元数据。
在一个或多个第十五实施例中,关于所述第十四实施例,又及,所述第六电路检测到所述元数据被存储在所述隔离存储器区域包括所述第六电路利用所述第二表示执行解密操作或解压缩操作之一,以生成所述数据和所述元数据两者的第三表示,并且将所述第三表示的一部分识别为指出所述元数据被存储在所述隔离存储器区域的指示符。
在一个或多个第十六实施例中,关于所述第十五实施例,又及,所述指示符包括指向所述隔离存储器区域中的位置的指针。
在一个或多个第十七实施例中,关于所述第十四实施例,又及,所述第六电路从所述隔离存储器区域取回所述元数据包括所述第六电路执行散列表查找。
在一个或多个第十八实施例中,关于所述第十一至第十四实施例中的任何一者,又及,所述装置还包括第七电路,来接收请求所述数据的消息,并且基于所述消息而从所述行读取所述第一表示,以及与所述第七电路耦合的第八电路,来基于所述第一表示而识别所述数据和所述元数据两者,并且响应于所述消息而提供所述数据和所述元数据。
在一个或多个第十九实施例中,关于所述第十一至第十四实施例中的任何一者,又及,所述第二电路在所述第一表示或所述第二表示之一中提供指定所述元数据是否被存储在所述行之外的位值。
在一个或多个第二十实施例中,关于所述第十一至第十四实施例中的任何一者,又及,所述预定标准对应于所述数据的可压缩性。
在一个或多个第二十一实施例中,一个或多个计算机可读存储介质上存储有指令,所述指令当被一个或多个处理单元执行时,使得所述一个或多个处理单元执行一种方法,该方法包括访问隔离存储器区域的利用率的度量,所述隔离存储器区域存储与在缓存中表示的数据相对应的元数据,所述缓存在所述隔离存储器区域外部,其中所述隔离存储器区域包括与第一数据相对应的第一元数据,并且其中所述缓存的行包括所述第一数据的表示和指出所述第一元数据被存储在所述隔离存储器区域的指示,基于所述度量,确定隔离存储器区域的利用率满足预定的高利用率测试条件或者预定的低利用率测试条件之一,并且基于所述确定,修改所述隔离存储器区域的未使用部分的容量。
在一个或多个第二十二实施例中,关于所述第二十一实施例,又及,所述度量是基于响应于以下各项的任一者而对计数器的更新的:将第一元数据写入到所述隔离存储器区域,或者从所述隔离存储器区域移除第一元数据。
在一个或多个第二十三实施例中,关于所述第二十一实施例或所述第二十二实施例,又及,确定是基于以下各项之一的:所述隔离存储器区域的阈值最大可用容量,所述隔离存储器区域的阈值最小可用容量,或者所述隔离存储器区域的可用容量的变化率。
在一个或多个第二十四实施例中,一种方法包括检测到数据要被缓存,并且基于所述数据和预定的标准,对于缓存的行是否能够容纳所述数据和与所述元数据相对应的元数据两者的第一表示执行评估,并且在基于所述评估确定所述行能够容纳所述第一表示的情况下,基于所述数据和所述元数据来生成所述第一表示,并且将所述第一表示存储到所述行,否则基于所述数据来生成第二表示,将所述第二表示存储到所述行,并且将所述元数据存储到在所述缓存外部的隔离存储器区域。
在一个或多个第二十五实施例中,关于所述第二十四实施例,又及,所述方法还包括更新所述隔离存储器区域的利用率的度量。
在一个或多个第二十六实施例中,关于所述第二十五实施例,又及,所述方法还包括将所述利用率的度量提供给软件进程,其中,基于所述度量,所述软件进程修改所述隔离存储器区域的可用容量。
在一个或多个第二十七实施例中,关于所述第二十六实施例,又及,所述方法还包括,利用所述软件进程,基于所述度量,确定隔离存储器区域的利用率满足预定的高利用率测试条件或者预定的低利用率测试条件之一,并且基于所述确定,生成消息来修改所述隔离存储器区域的可用容量。
在一个或多个第二十八实施例中,关于所述第二十四实施例或所述第二十五实施例,又及,所述方法还包括接收请求所述数据的消息,基于所述消息而从所述行读取所述第二表示,并且基于所述第二表示而检测到所述元数据被存储在所述隔离存储器区域,从所述隔离存储器区域取回所述元数据,并且响应于所述消息而提供所述数据和所述元数据。
在一个或多个第二十九实施例中,关于所述第二十八实施例,又及,检测到所述元数据被存储在所述隔离存储器区域包括利用所述第二表示执行解密操作或解压缩操作之一,以生成所述数据和所述元数据两者的第三表示,并且将所述第三表示的一部分识别为指出所述元数据被存储在所述隔离存储器区域的指示符。
在一个或多个第三十实施例中,关于所述第二十九实施例,又及,所述指示符包括指向所述隔离存储器区域中的位置的指针。
在一个或多个第三十一实施例中,关于所述第二十八实施例,又及,所述第四电路从所述隔离存储器区域取回所述元数据包括所述第四电路执行散列表查找。
在一个或多个第三十二实施例中,关于所述第二十四至第二十五实施例中的任何一者,又及,所述方法还包括接收请求所述数据的消息,基于所述消息而从所述行读取所述第一表示,基于所述第一表示而识别所述数据和所述元数据两者,并且响应于所述消息而提供所述数据和所述元数据。
在一个或多个第三十三实施例中,关于所述第二十四至第二十五实施例中的任何一者,又及,所述第一表示或所述第二表示包括指定所述元数据是否被存储在所述行之外的位值。
在一个或多个第三十四实施例中,关于所述第二十四至第二十五实施例中的任何一者,又及,所述预定标准对应于所述数据的可压缩性。
本文描述了用于提供与缓存的数据相对应的元数据的技术和架构。在以上描述中,出于说明目的,记载了许多具体细节以便提供对某些实施例的透彻理解。然而,本领域技术人员将会清楚,没有这些具体细节也可实现某些实施例。在其他情况中,以框图形式示出了结构和设备以避免模糊描述。
本说明书中提及“一个实施例”或“一实施例”的意思是联系该实施例描述的特定特征、结构或特性被包括在本发明的至少一个实施例中。在本说明书中各种地方出现短语“在一个实施例中”不一定都指的是同一实施例。
这里的详细描述的一些部分是按计算机存储器内的数据位上的操作的算法和符号表示来呈现的。这些算法描述和表示是被计算领域的技术人员用来最有效地将其工作的实质传达给本领域的其他技术人员的手段。算法在这里并且一般而言被设想为是通向期望结果的步骤的自洽序列。这些步骤是要求对物理量的物理操纵的那些步骤。通常(但并非一定),这些量采取能够被存储、传送、组合、比较和以其他方式操纵的电信号或磁信号的形式。已证明有时,主要是出于习惯用法的原因,将这些信号称为位、值、元素、符号、字符、项、数字等等,是方便的。
然而,应当记住,所有这些和类似的术语都将与适当的物理量相关联,并且只是应用到这些量的方便标签。除非从这里的论述清楚看出另有具体声明,否则要明白在整个说明书各处,利用诸如“处理”或“计算”或“运算”或“确定”或“显示”之类的术语的论述指的是计算机系统或类似的电子计算设备的动作和过程,这些动作和过程将计算机系统的寄存器和存储器内的被表示为物理(电子)量的数据操纵和变换成计算机系统存储器或寄存器或其他这种信息存储、传输或显示设备内的被类似地表示为物理量的其他数据。
某些实施例还涉及用于执行这里的操作的装置。此装置可以是为要求的目的而专门构造的,或者其可包括由存储在计算机中的计算机程序选择性地激活或重配置的通用计算机。这种计算机程序可被存储在计算机可读存储介质中,例如但不限于任何类型的盘(包括软盘、光盘、CD-ROM和磁光盘)、只读存储器(read-only memory,ROM)、随机访问存储器(random access memory,RAM)(例如动态RAM(dynamic RAM,DRAM))、EPROM、EEPROM、磁卡或光卡、或者适合用于存储电子指令并且耦合到计算机系统总线的任何类型的介质。
本文给出的算法和显示并不内在地与任何特定的计算机或其他装置相关。各种通用系统可与根据本文的教导的程序一起使用,或者可证明,构造更专门的装置来执行所要求的方法步骤,是方便的。各种这些系统的必需结构将从本文的描述中显现。此外,某些实施例不是参考任何特定的编程语言来描述的。将会明白,可以使用各种编程语言来实现如本文所述的这种实施例的教导。
除了本文描述的以外,还可对公开的实施例及其实施方式做出各种修改,而不脱离其范围。因此,应当从说明意义而不是限制意义上来解释本文的图示和示例。应当仅通过参考所附权利要求来衡量本发明的范围。
Claims (25)
1.一种用于操作缓存存储器的装置,所述装置包括:
第一电路,用于检测数据要被缓存,并且基于所述数据和预定义标准,对缓存的行是否能够容纳所述数据和对应于所述数据的元数据两者的第一表示进行评估;以及
耦合到所述第一电路的第二电路,其中,在基于所述评估确定所述行能够容纳所述第一表示的情况下,所述第二电路用于:
基于所述数据和所述元数据生成所述第一表示;并且
将所述第一表示存储到所述行中;
其中,在其他情况下,所述第二电路用于:
基于所述数据生成第二表示;
将所述第二表示存储到所述行;并且
将所述元数据存储到所述缓存外部的隔离存储器区域。
2.根据权利要求1所述的装置,还包括:
耦合到所述第二电路的第三电路,用于基于所述元数据被存储到所述隔离存储器区域而更新所述隔离存储器区域的利用率的度量。
3.根据权利要求2所述的装置,还包括:
第四电路,用于向软件进程提供所述利用率的度量,其中,基于所述度量,所述软件进程修改所述隔离存储器区域的可用容量。
4.根据权利要求1或2所述的装置,还包括:
第五电路,用于:
接收请求所述数据的消息;并且
基于所述消息从所述行中读取所述第二表示;和
耦合到所述第五电路的第六电路,用于:
基于所述第二表示,检测所述元数据存储在所述隔离存储器区域;
从所述隔离存储器区域取回所述元数据;并且
响应于所述消息提供所述数据和所述元数据。
5.根据权利要求4所述的装置,其中,用于检测所述元数据存储在所述隔离存储器区域的第六电路包括用于以下操作的第六电路:
使用所述第二表示执行解密操作或解压缩操作之一,以生成所述数据和所述元数据两者的第三表示;并且
将所述第三表示的一部分标识为指示所述元数据存储在所述隔离存储器区域的指示符。
6.根据权利要求5所述的装置,其中,所述指示符包括指向所述隔离存储器区域中的位置的指针。
7.根据权利要求4所述的装置,其中,用于从所述隔离存储器区域取回所述元数据的第六电路包括用于执行散列表查找的第六电路。
8.根据权利要求1所述的装置,还包括:
第七电路,用于:
接收请求所述数据的消息;并且
基于所述消息从所述行中读取所述第一表示;和
耦合到所述第七电路的第八电路,用于:
基于所述第一表示识别所述数据和所述元数据两者中的每一者;并且
响应于所述消息提供所述数据和所述元数据。
9.根据权利要求1或2所述的装置,其中,所述第二电路用于在所述第一表示或所述第二表示之一中提供位值,所述位值指定所述元数据是否存储在所述行之外。
10.根据权利要求1或2所述的装置,其中,所述预定义标准对应于所述数据的可压缩性。
11.一种用于操作缓存存储器的系统,所述系统包括:
装置,包括:
第一电路,用于检测数据要被缓存,并且基于所述数据和预定义标准,对缓存的行是否能够容纳所述数据和对应于所述数据的元数据两者的第一表示进行评估;以及
耦合到所述第一电路的第二电路,其中,在基于所述评估确定所述行能够容纳所述第一表示的情况下,所述第二电路用于:
基于所述数据和所述元数据生成所述第一表示;并且
将所述第一表示存储到所述行中;
其中,在其他情况下,所述第二电路用于:
基于所述数据生成第二表示;
将所述第二表示存储到所述行;并且
将所述元数据存储到所述缓存外部的隔离存储器区域;以及
耦合到所述装置的显示设备,所述显示设备包括基于与所述装置通信的信号显示图像的像素。
12.根据权利要求11所述的系统,所述装置还包括:
耦合到所述第二电路的第三电路,用于基于所述元数据被存储到所述隔离存储器区域而更新所述隔离存储器区域的利用率的度量。
13.根据权利要求12所述的系统,所述装置还包括:
第四电路,用于向软件进程提供所述利用率的度量,其中,基于所述度量,所述软件进程修改所述隔离存储器区域的可用容量。
14.根据权利要求11或12所述的系统,所述装置还包括:
第五电路,用于:
接收请求所述数据的消息;并且
基于所述消息从所述行中读取所述第二表示;和
耦合到所述第五电路的第六电路,用于:
基于所述第二表示,检测所述元数据存储在所述隔离存储器区域;
从所述隔离存储器区域取回所述元数据;并且
响应于所述消息提供所述数据和所述元数据。
15.根据权利要求14所述的系统,其中,用于检测所述元数据存储在所述隔离存储器区域的第六电路包括用于以下操作的第六电路:
使用所述第二表示执行解密操作或解压缩操作之一,以生成所述数据和所述元数据两者的第三表示;并且
将所述第三表示的一部分标识为指示所述元数据存储在所述隔离存储器区域的指示符。
16.根据权利要求11所述的系统,所述装置还包括:
第七电路,用于:
接收请求所述数据的消息;并且
基于所述消息从所述行中读取所述第一表示;和
耦合到所述第七电路的第八电路,用于:
基于所述第一表示识别所述数据和所述元数据两者中的每一者;并且
响应于所述消息提供所述数据和所述元数据。
17.根据权利要求11或12所述的系统,其中,所述预定义标准对应于所述数据的可压缩性。
18.一种用于管理存储器的方法,所述方法包括:
访问隔离存储器区域的利用率的度量,该隔离存储器区域存储元数据,所述元数据对应于在该隔离存储器区域外部的缓存中表示的数据,其中,所述隔离存储器区域包括对应于第一数据的第一元数据,并且其中,缓存的行包括所述第一数据的表示和所述第一元数据存储在所述隔离存储器区域的指示;
基于所述度量确定所述隔离存储器区域的利用率满足预定高利用率测试条件或预定低利用率测试条件之一;和
基于所述确定,修改所述隔离存储器区域的未使用部分的容量。
19.根据权利要求18所述的方法,其中,所述度量基于计数器更新,所述计数器更新响应于以下任一项:
将第一元数据写入所述隔离存储器区域;或
从所述隔离存储器区域中移除第一元数据。
20.根据权利要求18或19所述的方法,其中,所述确定是基于以下各项之一的:所述隔离存储器区域的阈值最大可用容量、所述隔离存储器区域的阈值最小可用容量、或所述隔离存储器区域的可用容量的变化率。
21.一种机器可读介质,包括代码,所述代码在被执行时使机器执行根据权利要求18至20中任一项所述的方法。
22.一种用于操作缓存存储器的方法,所述方法包括:
检测数据要被缓存,并且基于所述数据和预定义标准,对缓存的行是否能够容纳所述数据和对应于所述数据的元数据两者的第一表示进行评估;以及
在基于所述评估确定所述行能够容纳所述第一表示的情况下,执行以下操作:
基于所述数据和所述元数据生成所述第一表示;并且
将所述第一表示存储到所述行中;
在其他情况下,执行以下操作:
基于所述数据生成第二表示;
将所述第二表示存储到所述行;并且
将所述元数据存储到所述缓存外部的隔离存储器区域。
23.根据权利要求22所述的方法,还包括:
更新所述隔离存储器区域的利用率的度量。
24.根据权利要求22或23所述的方法,还包括:
接收请求所述数据的消息;
基于所述消息从所述行中读取所述第二表示;
基于所述第二表示,检测所述元数据存储在所述隔离存储器区域;
从所述隔离存储器区域取回所述元数据;以及
响应于所述消息提供所述数据和所述元数据。
25.根据权利要求22至23中任一项所述的方法,还包括:
接收请求所述数据的消息;
基于所述消息从所述行中读取所述第一表示;
基于所述第一表示识别所述数据和所述元数据两者中的每一者;以及
响应于所述消息提供所述数据和所述元数据。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/096,274 US20220147453A1 (en) | 2020-11-12 | 2020-11-12 | Sequestered memory for selective storage of metadata corresponding to cached data |
US17/096,274 | 2020-11-12 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114490444A true CN114490444A (zh) | 2022-05-13 |
Family
ID=77897527
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111181566.5A Pending CN114490444A (zh) | 2020-11-12 | 2021-10-11 | 用于与缓存数据相对应的元数据的选择性存储的隔离存储器 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20220147453A1 (zh) |
EP (1) | EP4002131A3 (zh) |
CN (1) | CN114490444A (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US12001338B2 (en) * | 2021-10-29 | 2024-06-04 | Nutanix, Inc. | Method and system for implementing metadata compression in a virtualization environment |
US12093208B2 (en) * | 2022-05-27 | 2024-09-17 | Nvidia Corporation | Remote descriptor to enable remote direct memory access (RDMA) transport of a serialized object |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5666114A (en) * | 1994-11-22 | 1997-09-09 | International Business Machines Corporation | Method and means for managing linear mapped address spaces storing compressed data at the storage subsystem control unit or device level |
WO2012106362A2 (en) * | 2011-01-31 | 2012-08-09 | Fusion-Io, Inc. | Apparatus, system, and method for managing eviction of data |
US10474584B2 (en) * | 2012-04-30 | 2019-11-12 | Hewlett Packard Enterprise Development Lp | Storing cache metadata separately from integrated circuit containing cache controller |
US10296255B1 (en) * | 2015-12-16 | 2019-05-21 | EMC IP Holding Company LLC | Data migration techniques |
US9996471B2 (en) * | 2016-06-28 | 2018-06-12 | Arm Limited | Cache with compressed data and tag |
US10657071B2 (en) * | 2017-09-25 | 2020-05-19 | Intel Corporation | System, apparatus and method for page granular, software controlled multiple key memory encryption |
KR102557993B1 (ko) * | 2018-10-02 | 2023-07-20 | 삼성전자주식회사 | 메모리 이용 효율을 향상한 보안 처리기를 포함하는 시스템 온 칩, 메모리 시스템 및 시스템 온 칩의 동작방법 |
-
2020
- 2020-11-12 US US17/096,274 patent/US20220147453A1/en active Pending
-
2021
- 2021-09-22 EP EP21198156.8A patent/EP4002131A3/en active Pending
- 2021-10-11 CN CN202111181566.5A patent/CN114490444A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
EP4002131A3 (en) | 2022-08-10 |
US20220147453A1 (en) | 2022-05-12 |
EP4002131A2 (en) | 2022-05-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11645135B2 (en) | Hardware apparatuses and methods for memory corruption detection | |
CN108292215B (zh) | 用于加载-索引和预取-聚集操作的指令和逻辑 | |
CN112149143A (zh) | 用于存储器标记的低存储器开销堆管理 | |
CN108369516B (zh) | 用于加载-索引和预取-分散操作的指令和逻辑 | |
TW202240387A (zh) | 用於異質計算之系統,方法,及設備 | |
US9361233B2 (en) | Method and apparatus for shared line unified cache | |
WO2017172354A1 (en) | Hardware apparatuses and methods for memory performance monitoring | |
US10289752B2 (en) | Accelerator for gather-update-scatter operations including a content-addressable memory (CAM) and CAM controller | |
US20200201787A1 (en) | Scalable multi-key total memory encryption engine | |
TWI752034B (zh) | 用以校驗具有指示校驗位元值之位元的位元校驗處理器、方法、系統與指令 | |
CN111164581A (zh) | 用于修补页的系统、方法和装置 | |
EP2798471A1 (en) | Structure access processors, methods, systems, and instructions | |
EP4002131A2 (en) | Sequestered memory for selective storage of metadata corresponding to cached data | |
BR102014006118A2 (pt) | sistemas, equipamentos e métodos para determinar um bit de mascaramento menos significativo à direita de um registrador writemask | |
US20230093247A1 (en) | Memory access tracker in device private memory | |
US12066945B2 (en) | Dynamic shared cache partition for workload with large code footprint | |
CN114691551A (zh) | 自动化转换后备缓冲器集合再平衡 | |
US12130738B2 (en) | Compressed cache memory with decompress on fault | |
EP4020221A1 (en) | Compressed cache memory with decompress on fault | |
US20220197816A1 (en) | Compressed cache memory with parallel decompress on fault | |
US20240202125A1 (en) | Coherency bypass tagging for read-shared data | |
WO2022271143A1 (en) | Inter-cluster shared data management in sub-numa cluster | |
CN116340034A (zh) | 用于压缩操作期间的常量检测的装置和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |