CN112149143A - 用于存储器标记的低存储器开销堆管理 - Google Patents

用于存储器标记的低存储器开销堆管理 Download PDF

Info

Publication number
CN112149143A
CN112149143A CN202010211610.1A CN202010211610A CN112149143A CN 112149143 A CN112149143 A CN 112149143A CN 202010211610 A CN202010211610 A CN 202010211610A CN 112149143 A CN112149143 A CN 112149143A
Authority
CN
China
Prior art keywords
tag
data block
memory
data
block
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202010211610.1A
Other languages
English (en)
Inventor
D·M·德拉姆
R·贾亚拉姆马斯蒂
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN112149143A publication Critical patent/CN112149143A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0207Addressing or allocation; Relocation with multidimensional access, e.g. row/column, matrix
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1466Key-lock mechanism
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/54Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6227Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database where protection concerns the structure of data, e.g. records, types, queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting 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/79Protecting 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • G06F9/30178Runtime instruction translation, e.g. macros of compressed or encrypted instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/321Program or instruction counter, e.g. incrementing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation 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/5016Allocation 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0631Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0637Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/0822Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using key encryption key
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/083Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) involving central third party, e.g. key distribution center [KDC] or trusted third party [TTP]
    • H04L9/0833Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) involving central third party, e.g. key distribution center [KDC] or trusted third party [TTP] involving conference or group key
    • H04L9/0836Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) involving central third party, e.g. key distribution center [KDC] or trusted third party [TTP] involving conference or group key using tree structure or hierarchical structure
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic 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
    • H04L9/3236Cryptographic 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 using cryptographic hash functions
    • H04L9/3242Cryptographic 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 using cryptographic hash functions involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45587Isolation or security of virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/556Detecting local intrusion or implementing counter-measures involving covert channels, i.e. data leakage between processes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/402Encrypted data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2107File encryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/125Parallelization or pipelining, e.g. for accelerating processing of cryptographic operations
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Mathematical Physics (AREA)
  • Databases & Information Systems (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Power Engineering (AREA)
  • Storage Device Security (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

一种方法,包括响应于请求存储器堆操作的第一指令:识别存储器堆的数据块;访问用于数据块的标签历史,该标签历史包括先前分配给数据块的多个标签;将标签分配给数据块,其中,分配标签包括:验证标签与标签历史的多个标签中的任何一个标签都不匹配;以及提供分配的标签和对数据块位置的引用。

Description

用于存储器标记的低存储器开销堆管理
技术领域
本公开总体上涉及计算系统领域,并且更具体地涉及用于存储器标记的低存储器开销堆管理。
背景技术
保护计算机系统中的存储器免受软件错误和安全漏洞的影响是一个重大问题。在计算系统中,堆管理器可以在运行时服务来自各种应用程序的存储器分配请求。除非堆管理器采取预防措施,否则先前分配给第一个应用程序的一部分存储器中的内容可能会被另一个应用程序访问。
附图说明
图1示出了根据某些实施例的计算设备。
图2示出了根据某些实施例的存储器堆。
图3A和图3B示出了根据某些实施例的用于存储器碎片整理的流程。
图4示出了根据某些实施例的用于存储器分块的流程。
图5示出了根据某些实施例的用于利用加密存储器指针格式的流程。
图6示出了根据某些实施例的用于分配堆存储器的流程。
图7是示出根据某些实施例的示例处理器核和存储器的框图。
图8A是示出根据某些实施例的示例性顺序流水线和示例性寄存器重命名、乱序发射/执行流水线的框图。
图8B是示出了根据某些实施例的将包括在处理器中的顺序架构核心的示例性实施例和示例性寄存器重命名、乱序发射/执行架构核心的框图。
图9是根据某些实施例的示例计算机架构的框图。
图10是根据某些实施例的对比使用软件指令转换器将源指令集中的二进制指令转换为目标指令集中的二进制指令的框图。
图11描绘了根据某些实施例的用于将加密标签与分配的数据块的对应子部分相关联的流程。
在各个附图中,相似的附图标记和标记指示相似的元件。
具体实施方式
存储器标记是一种存储器安全技术,该技术通过维护包括用于存储器位置的标签的参考元数据并且将传入存储器访问请求中的标签与用于包括作为存储器访问请求的主题的存储器位置的数据块的分配标签进行比较来降低运行时存储器安全违规的风险。如果传入标签与分配的标签不匹配,则不执行存储器访问请求。存储器标记解决方案主要旨在实现堆保护,例如,防止损坏或非法访问软件程序中动态分配的存储器。堆管理器可负责在存储器分配和释放期间管理堆空间。堆管理器可以在存储器分配期间生成用于数据块的标签,并在释放或重新分配存储器时将标签更改为不同值。堆管理器可以防止标签重用,例如通过该数据块的后续分配将相同标签分配给特定数据块。
用于存储器标记的各种堆管理解决方案(例如,用于Linux的堆分配器)依赖于隔离释放的存储器以防止标记重用。当释放数据块时,该数据块在释放之后的一定持续时间内将无法重用。此类堆管理方法可以在数据块被释放并重用后,防止使用指向数据块一部分的指针,但是会导致隔离的存储器在很长一段时间内仍然无法使用,从而导致较低的总体存储器利用率。
本公开的各种实施例提供了一种安全堆管理解决方案,该解决方案防止标签重用而不会引起大的存储器开销。例如,堆管理器可以维护先前标签的历史作为堆管理元数据的一部分,并且在存储器堆操作(例如,存储器分配和/或释放操作)期间考虑该历史。这允许释放一个数据块后立即重用该数据块,前提是可以分配与如由标签历史所示的先前标签值不同的标签值。还可以以防止堆中紧邻的数据块具有相同标签(例如,以防止由于存储器溢出而导致的非法存储器访问)的方式将标签分配给数据块。在各种示例中,可以以随机的方式或以被优化以减少标签复制的确定性方式来分配标签。各种实施例可以显著减少隔离堆块的需要,并且从而减少用于存储器标记解决方案的堆管理的存储器开销。
在一些实施例中,大小(size)信息可以被编码到分配的数据块的指针中,描述对象分配的范围,作为标签的替代或补充。本公开的各个方面可以提供存储器标记的加密形式,其中,从存储器分配的数据块与标记或设定大小的指针编码加密绑定。
具体地参考图1,计算设备100可以被体现为用于执行本文描述的功能的任何类型的电子设备。例如,计算设备100可以体现为但不限于智能电话、平板计算机、可穿戴计算设备、膝上型计算机、笔记本计算机、移动计算设备、蜂窝电话、手机、消息传递设备、车辆远程信息处理设备、服务器计算机、工作站、分布式计算系统、多处理器系统、消费电子设备和/或配置为执行本文所述功能的任何其它计算设备。
如图1中所示,示例计算设备100包括至少一个处理器102。处理器102包括运行时标签生成器105和运行时标签检查器106,以及其它组件(图1中未示出),诸如用于实现组件(例如,软件或其它组件)的电路,诸如堆管理器104。堆管理器104可操作以接收对存储器堆操作的请求,诸如存储器分配请求和存储器释放请求。堆管理器104可以服务于此类请求。当响应于分配请求时,堆管理器104可以将对所请求的数据块的位置的引用以及分配给该数据块的标签返回给请求存储器堆操作的应用程序(其中,该标签由运行时标签生成器105生成)。当应用程序尝试访问分配的存储器时,它可以将数据块的位置以及标签提供给运行时标签检查器106。运行时标签检查器106可以验证所提供的标签是否与分配给数据块的标签相匹配,并且如果标签匹配,则可以允许为存储器请求服务;并且如果标签不匹配,则可以阻止访问。
计算设备100还包括存储器122、输入/输出子系统124、数据存储设备126、显示设备128、用户界面(UI)子系统130、通信子系统132、至少一个用户空间应用程序134以及特权系统组件142。在其它实施例中,计算设备100可以包括其它或附加组件,诸如在移动和/或固定计算机(例如,各种传感器和输入/输出设备)中常见的组件。另外,在一些实施例中,一个或多个示例组件可以被并入另一组件或以其它方式形成另一组件的一部分。计算设备100的组件中的每个组件可以体现为软件、固件、硬件或软件和硬件的组合。
处理器102可以体现为能够执行本文所述功能的任何类型的处理器。例如,处理器102可以体现为单核或多核中央处理单元(CPU)、多CPU处理器、处理/控制电路或多个不同的处理单元或电路(例如,CPU和图形处理单元(GPU)等)。
计算设备100的存储器122可以体现为能够执行本文所述功能的任何类型的易失性或非易失性存储器或数据存储设备。易失性存储器是一种存储介质,该存储介质需要电源来维持该介质存储的数据状态。易失性存储器的示例可以包括各种类型的随机存取存储器(RAM),诸如动态随机存取存储器(DRAM)或静态随机存取存储器(SRAM)。可以在存储器中使用的一种特定类型的DRAM是同步动态随机存取存储器(SDRAM)。在特定实施例中,存储器122的DRAM符合联合电子设备工程委员会(JEDEC)颁布的标准,诸如用于双倍数据速率(DDR)SDRAM的JESD79F,用于DDR2 SDRAM的JESD79-2F,用于DDR3 SDRAM的JESD79-3F,或用于DDR4 SDRAM的JESD79-4A(这些标准可从www.jedec.org获得)。非易失性存储器是不需要电源来维持由该介质存储的数据状态的存储介质。非易失性存储器的非限制性示例可以包括以下中的任何一项或组合:固态存储器(诸如平面或3D NAND闪存或NOR闪存)、3D交叉点存储器、使用硫族化物相变材料(例如,硫族化物玻璃)的存储器设备、字节可寻址非易失性存储器设备、铁电存储器、氧化硅-氮化物-氧化物-硅(SONOS)存储器、聚合物存储器(例如,铁电聚合物存储器)、铁电晶体管随机存取存储器(Fe-TRAM)奥氏存储器、纳米线存储器、电可擦除可编程只读存储器(EEPROM)、其它各种类型的非易失性随机存取存储器(RAM)和磁存储存储器。
在一些实施例中,存储器122包括一个或多个存储器模块,诸如双列直插式存储器模块(DIMM)。在一些实施例中,存储器122可以位于与包括处理器102的集成电路芯片不同的一个或多个集成电路芯片上,或者可以位于与处理器102相同的集成电路芯片上。存储器122可以包括任何合适类型的存储器,并且在各种实施例中不限于特定的速度或存储器技术。
在操作中,存储器122可以存储在计算设备100的操作期间使用的各种数据和软件,以及由计算设备100使用的软件应用程序,诸如操作系统、用户应用程序、程序、库和驱动器。存储器122可以存储由处理器102执行的数据和/或指令序列。在各种实施例中,堆可以存储在存储器122或计算设备100的其它合适的存储器中。
存储器122例如经由I/O子系统124通信地耦合到处理器102。I/O子系统124可以体现为电路和/或组件,以促进处理器102、存储器122和计算设备100的其它组件的输入/输出操作。例如,I/O子系统124可以体现为或以其它方式包括存储器控制器集线器、输入/输出控制集线器、固件设备、通信链路(即,点-点对点链路、总线链路、电线、电缆、光导、印刷电路板迹线等)和/或便于输入/输出操作的其它组件和子系统。在一些实施例中,I/O子系统124可以形成片上系统(SoC)的一部分,并且与处理器102、存储器122和/或计算设备100的其它组件中的一个或多个一起被合并在单个集成电路芯片上。
数据存储设备126可以体现为任何类型的物理设备或配置用于短期或长期存储数据的设备,诸如例如存储器设备和电路、存储卡、硬盘驱动器、固态驱动器、闪存或其它只读存储器、由只读存储器和随机存取存储器组合的存储器设备或其它数据存储器设备。在各种实施例中,存储器122可以缓存存储在数据存储设备126上的数据。
显示设备128可被实现为能够显示数字信息的任何类型的显示器,诸如液晶显示器(LCD)、发光二极管(LED)、等离子显示器、阴极射线管(CRT),或其它类型的显示设备。在一些实施例中,显示设备128可以耦合到触摸屏或其它人机接口设备,以允许用户与计算设备100的交互。显示设备128可以是用户界面(UI)子系统130的一部分。用户界面子系统130可以包括多个附加设备,以促进用户与计算设备100的交互,包括物理或虚拟控制按钮或键、麦克风、扬声器、单向或双向静止和/或摄像机和/或其它。用户界面子系统130还可以包括诸如运动传感器、接近传感器和眼睛跟踪设备的设备,其可以被配置为检测、捕获和处理涉及计算设备100的各种其它形式的人机交互。
计算设备100进一步包括通信子系统132,该通信子系统132可以体现为能够实现计算设备100与其它电子设备之间的通信的任何通信电路、设备或其集合。通信子系统132可以被配置为使用任何一种或多种通信技术(例如,无线或有线通信)和相关协议(例如,以太网、蓝牙TM、Wi-FiTM、WiMAX、3G/LTE等)来实现此类通信。在一些实施例中,通信子系统132可以体现为网络适配器,诸如无线网络适配器。
示例计算设备100还包括多个计算机程序组件,诸如一个或多个用户空间应用程序134或其它应用程序。用户空间应用程序134可以体现为经由例如显示设备128或UI子系统130与最终用户直接或间接交互的任何计算机应用程序(例如,软件、固件、硬件或其组合)。用户空间应用程序134的一些示例包括文字处理程序、文档查看器/阅读器、Web浏览器、电子邮件程序、消息传递服务、计算机游戏、相机和视频应用程序等。除其它事项外,特权系统组件142促进了用户空间应用程序134和计算设备100的硬件组件之间的通信。特权系统组件142的一部分可以体现为能够执行本文所述功能的任何操作系统,诸如MicrosoftCorporation的WINDOWS版本、Google公司的ANDROID版本,和/或其它。可替代地或另外,特权系统组件142的一部分可以体现为能够执行本文所述功能的任何类型的虚拟机监视器(例如,I型或II型管理程序)。
图2示出了根据某些实施例的存储器堆200。存储器堆200可以存储在任何合适的存储器中,诸如存储器122。存储器堆200包括多个块,其中的一些块被使用(例如,分配给应用程序)或释放(例如,可用于分配给请求的应用程序)。存储器堆200还可包括存储器的其它可分配部分,诸如稍后变得可用的隔离块或未分配给块的其它存储器。存储器堆200被描绘为散布的一组可变大小的已使用和空闲块。
存储器堆200可用于在运行时为应用程序分配动态对象(例如,未存储在应用程序堆栈中的对象)。可使存储器堆200的一部分可用于请求存储器分配的每个应用程序。堆管理器104可以接收来自应用程序的请求并服务于该请求。例如,请求可以包括分配特定大小的数据块的请求、调整分配的数据块的大小的请求(其可以包括调节的大小)或释放分配的数据块的请求。例如,在C编程语言中,此类请求可以包括与malloc()、calloc()、dealloc()、realloc()和free()函数调用相关联的指令,尽管本公开考虑了任何合适的存储器分配请求。响应于来自应用程序的存储器分配请求,堆管理器104可以返回与分配的块相关联的信息。例如,堆管理器104可以返回指向该块的指针、分配给该块的标签、该块的大小以及与该块相关联的加密密钥或调整中的一个或多个。在一些实施例中,标签、大小或密钥或调整可以被嵌入在返回的指针内。此类指针的示例格式将在下面结合图5进一步详细讨论。
堆的块可以与元数据相关联。用于块的元数据可以与该块连续地存储在存储器堆中、在存储器堆中的一些其它位置,或在处理器102内或耦合到处理器102的存储器中的其它合适位置处。例如,在一些实施例中,元数据的各种集合可以一起存储在表中,或者每个集合可以与它所关联的块一起存储。在所示的实施例中,示出了与使用块相关联的元数据202的集合和与空闲块相关联的元数据204的集合。元数据202包括标签历史206和其它元数据210,而元数据204包括标签历史208和其它元数据212。元数据204可以类似于元数据202,但是特定于相关联的空闲块,而不是与元数据202相关联的使用块。
其它元数据210和其它元数据212可以包括与相应块相关联的任何合适的数据。例如,其它元数据210或212可以包括指示相关联的块的大小、要存储在相关联的块中的对象的数据类型,或与该块相关联的加密密钥或调整(下面将更详细地说明)的数据。例如,数据类型可以包括由编程语言定义的一类数据或代码。例如,数据类型可以包括用于整数的类型ID“0”、用于浮点值的类型ID“1”、用于特定复杂结构类型的类型ID“2”,等等。在一些实施例中,与块相关联的加密密钥或调整可以包括或以其它方式基于元数据的其它部分。
标签历史206包括分配给与元数据202相关联的数据块的多个先前标签(T1至TK,其中K是任何合适的整数)。例如,TK可以是当前分配的标签,TK-1可以是紧接在TK之前分配的标签,TK-2可以是紧接在TK-1之前分配的标签,依此类推。在其它实施例中,当前标签可以与标签历史206分开存储,并且因此标签T1至TK可以是先前分配给该块的标签。标签可以包括任何合适的标识符,诸如位序列。当第一次分配块时,可以将第一标签分配给该块。每次重新分配块时(例如,在释放时或在将其分配给相同或新的应用程序时),都可以为其分配不同的标签,以便防止未授权的访问。可替代地,如果使用来自标签的信息结合加密密钥来对块进行加密(例如,作为密码调整),则相同的标签可以被重用于该块,只要它每次与不同的密钥一起使用即可。在各种实施例中,如果在标签历史中可存储的标签数量受到限制,则当标签历史206已满时,可以删除最旧的标签以为最新的标签腾出空间。在另一个实施例中,标签历史的大小没有限制。在各种实施例中,触发事件(例如,设备100的重置、块的大小改变、与该块相关联的加密密钥的改变等)可以重置标签历史。
在各种实施例中,标签的大小和标签历史的大小可以是任何合适的大小。仅作为一个示例,标签可以是一个字节(例如8位数据),并且标签历史可以包括8个标签。在特定实施例中,标签的大小在所有块上是一致的,并且标签历史的大小横跨所有块是一致的,尽管在其它实施例中,大小可以在堆的各个块之间变化。
当第一次初始化块时(例如,在系统加电之后或甚至导致标签历史重置的一些其它事件之后),可以将标签历史206中的所有标记初始化为不用作标记的保留值(例如,全零、全一或其它合适的值)。
当堆管理器104接收到存储器分配请求时(例如,调用了malloc()),堆管理器104可以从释放堆块中搜索正确大小的堆块(例如,匹配或大于请求中包括的大小)。如果未找到此类块,则可以生成新的块来满足请求。可以以任何合适的方式来生成新块。例如,可以通过对多个较小的块进行碎片整理(defragmenting)或对较大的块进行分块(fragmenting)来形成新块(下面将结合图3A、3B和4进一步详细描述新块的标签历史的生成)。
被识别或生成为满足请求的块可以被分配标签,该标签不是该块的标签历史的一部分。在各种实施例中,可以响应于存储器分配请求来分配标签(例如,当由于分块或碎片整理而创建新的块时,第一次分配块时,或当块被重新分配时),或可以预先分配标签(例如,与在重新分配期间分配标签相反,响应于所识别的块先前被释放)。在各种实施例中,所分配的标签还与堆中的块物理上相邻的任何块(例如,具有次低物理地址的块和具有次高物理地址的块)的当前标签不同。如果找不到满足约束(例如,不能在标签历史中,不能与相邻块的标签匹配,和/或其它指定的约束)的新标签,则可以隔离该块,标识或生成附加块(例如,使用上述方法),并且确定是否可以将满足约束的标签分配给附加块。可以重复这些操作,直到找到可行的块为止。
在各种实施例中,如果满足约束的标签不可用于特定块,则可以将该块隔离一段时间。隔离该块时,将认为该块不可用于分配。可以出于任何适当的原因从隔离中删除该块。在各种实施例中,如果满足多个条件中的任何一个条件,则可以从隔离中删除该块。例如,如果经过了特定时间量,则可以从隔离中删除该块。作为另一示例,如果相邻块的标签已经改变,则可以从隔离中删除该块,从而允许将先前的标签用于隔离块。作为另一示例,当与用于该块的加密操作相关联的加密密钥或调整已改变时,可以从隔离中删除该块。在一些实施例中,当一个或多个物理页面的所有标签和大小值均已用完时,堆管理器104可以取消映射用于物理页面的线性地址,并将同一物理页面别名为新线性地址映射,并且然后从一个或多个新的存储器页面继续进行分配,从而提供针对新线性地址分配的非重复标记值。
当堆管理器104接收到存储器释放请求(例如,调用free())时,堆管理器104可以向该块分配不作为该块的标签历史的一部分(并且满足其它潜在约束)的新标签。这可以保护释放的块免受引用先前分配的标签的未授权访问。如果找不到满足约束(例如,不能在标签历史中,不能与相邻块的标签匹配,和/或其他指定的约束)的新标签,则可以如上所述隔离该块。
当堆管理器104接收到存储器大小调整请求时(例如,调用realloc()),堆管理器可以从释放堆块中搜索正确大小的堆块(例如,匹配或大于请求中包括的大小)。如果未找到此类块,则可以生成新的块来满足请求。可以以任何合适的方式来生成新块。例如,可以通过对多个较小的块进行碎片整理或对较大的块进行分块来形成新块。已识别或生成满足请求的块可被分配(或可能已经分配,例如,当最后释放时)满足所有约束集的标签(例如,标签不是该块的标签历史的一部分,该标签与相邻块的标签不匹配,和/或其它指定的约束)。如果找不到满足约束的标签,则可以隔离该块,识别或生成其它块(例如,使用上述方法),并确定满足约束的标签是否可以分配到附加块。可以重复这些操作,直到找到可行的调整大小操作块为止。
图3A和图3B示出了根据某些实施例的用于存储器碎片整理的流程。块的动态分配和释放可导致运行时堆200内的碎片块。此外,堆200可包含许多不同大小的块。因此,可能有必要通过将多个块(可以具有或不具有不同的大小)组合在一起来对它们进行碎片整理。例如,当只有较小的数据块可用时,传入的存储器请求可请求较大的数据块。因此,堆管理器104可以将多个小数据块组合成单个较大的块。
当将多个块组合成单个块时,生成用于新块的元数据的集合。例如,当与元数据302相关联的块与与元数据304相关联的块组合时,形成元数据306的新集合并与组合的块相关联。类似地,当将与元数据320相关联的块与与元数据322相关联的块组合时,形成元数据324的新集合并将其与组合的块相关联。
元数据的新集合可以包括用于形成新块的相应块的标签历史的组合。例如,标签历史312包括标签历史308和310的组合,而标签历史330包括标签历史326和328的组合。可以以任何合适的方式组合标签历史。例如,在图3A中,组合标签历史312包括来自标签历史308和310的每个标签。因此,在所示的实施例中,新标签历史312包括总共K+N个标签(其中,N是标签历史310中的标签数量),并保留所有标签历史。类似地,如果将多于两个的块组合以形成新块,则来自块中的每个块的标签历史的标签可以保留在用于新块的标签历史中。在一个实施例中,如果在被组合的多个标签历史中存在相同的标签值,则该标签值的单个实例被包括在组合的标签历史中。
在图3B的实施例中,通过合并标签历史并删除一些标签(例如,由于每个块的标签历史的大小的限制)来组合标签历史326和328。因此,尽管标签历史326和标签历史328各自包括K个标签,但是组合标签历史330仅包括K个标签(假设标签历史被限制为K个大小)。当由于大小限制而必须在合并中省略标签时,可以以任何合适的方式确定保留哪些标签。在一个实施例中,标签可以交错,使得来自标签历史326的最新标签被放置在标签历史330中,来自标签历史328的最新标签被放置在标签历史330中,来自标签历史326的次新标签被放置在标签历史330中,来自标签历史328的次新标签被放置在标签历史330中,依此类推。在另一个实施例中,可以考虑使用某些标签的相对频率,并且选择更频繁使用的标签以包括在组合标签历史330中。在另一个实施例中,来自与特定块相关联的标签历史326的标签可比来自其它块(例如,将形成组合块中具有最低地址的块的块可保留其标签,或者保留相对于其它块的更多标签,因为在一些情况下此类块最容易被非法寻址)的标签历史的标签更优选。在一个实施例中,如果在被组合的多个标签历史中存在相同的标签值,则选择该标签值的单个实例以包括在组合的标签历史中。
当多个块被组合时,还生成其它元数据的新集合。例如,当其它元数据318和其它元数据336的相关联块由多个其它块形成时,可以生成其它元数据318和元数据336(并且元数据318和336可以至少部分地与其它元数据314、316、332和334分别不同)。例如,新的其它元数据可以包括特定于组合块的元数据,诸如该块的新标签(尽管在一些实施例中,当前标签存储在标签历史中而不是单独存储)、组合块的大小、要存储在组合块中的数据类型、组合块的加密密钥或调整或其它合适的元数据。
图4示出了根据某些实施例的用于存储器分块的流程。有时,在某些堆管理操作期间,给定的空闲块可能会拆分为两部分。例如,当只有大的空闲块可用时,可以将较大的块拆分为两个较小的块,以便满足较小的存储器分配请求。作为另一示例,指定比主题块的大小更小的块大小的大小调整操作可以导致块拆分。
在此类拆分期间,用于新形成的块的元数据集合各自存储来自父块的标签历史的副本。例如,在所描绘的实施例中,与元数据402相关联的块被拆分以形成与元数据404相关联的块和与元数据406相关联的块。因此,标签历史408在元数据404以及元数据406内被复制。
当块被拆分时,还为结果块中的每个结果块生成其它元数据的新集合。例如,其它元数据412和其它元数据414可以在从拆分中形成它们的相关联块时生成(并且它们可以至少部分地与其它元数据410不同)。其它元数据的新集合可以包括特定于其相应块的元数据,诸如用于该块的新标签(例如,在其中当前标签被分开存储而不是存储在标签历史中的实施例中)、新块的大小、要存储在新块中的数据类型、用于新块的加密密钥或调整或其它合适的元数据。
虽然大标签历史由于防止通过持久的悬空指针进行访问而更加安全,但是大标签历史可能会在找到用于块的新标签时带来挑战,尤其是在碎片整理之后(其中来自每个块的标签历史一起组合成用于新块的标签历史)。在标签历史长度没有被限制(或对于不同的块是不同的)的一些实施例中,为了减轻这个问题,堆管理器104可以限制在碎片整理操作期间可以组合成新的块的块的数量。
在各种实施例中,用于每个块的标签历史的最大大小(例如,当所有块具有相同的最大标签历史大小时)可以由设备100的用户配置或者在运行时期间基于堆管理器104观察到的分配行为进行动态修改。如果处理器使用的密钥频繁改变(每次改变密钥时,标签历史可以重新初始化),则标签历史的最大大小可以保持相对较短,而如果密钥很少改变,则标签历史的最大大小可更大,以便减少隔离。
在各种实施例中,不是块的随机串,而是用于块的标签可以包括与块相关联的其它元数据或基于块的信息(或者可以具有专用于此类元数据的部分和随机的另一部分)。例如,标签可以包括与块相关联的数据类型的ID(例如,上述数据类型或其它合适的数据类型)或该数据类型的ID的一部分。此类实施例可以减少隔离,因为其允许将相同数据块重用于涉及不同数据类型的分配。在一些实施例中,可以在存储器分配请求中指定数据类型的ID,从而允许堆管理器104在标签中包括数据类型的ID(或其一部分)。
作为另一示例,标签可以包括块的大小(或指示块的大小的其它信息)。此类实施例还可以减少隔离,因为只要分配具有不同的大小,它就允许重用给定的数据块进行分配(在一些情况下甚至是相同的数据类型)。在一些实施例中,堆管理器104可以通过分配相同的块,但是改变块的大小,来响应对特定大小的块的存储器分配请求,使得用于该块的标签与先前分配的块不同。在一些实施例中,堆管理器可以响应于确定保持相同的块大小将导致块的隔离(例如,因为没有可允许标签值可用)而改变块的大小。可以以任何合适的方式来实现改变块的大小。例如,数据块可以分块,并且结果数据块之一被分配。作为另一示例,数据块可以与相邻数据块组合,并且可以分配组合的数据块。在一些实施例中,可以通过针对各种分配大小请求分配相同的数据块来改变数据块的大小。例如,给定的块可以用于请求等于或小于该块的大小的大小的分配。例如,可以将32字节的块用于4、8、16或32字节的数据块大小。只要将大小信息编码在标签中,分配给数据块的标签在各种大小的分配中都是唯一的。
图5描绘了根据本公开的某些实施例的用于利用示例加密编码的指针510的流程500,该指针510包括嵌入大小502和嵌入标签501。在各种实施例中,可以将嵌入大小位502与加密编码的指针510(或本文中描述的其它数据)中的一个或多个其它位(例如,嵌入标签501或其它位)结合起来视为标签(如上文结合标签历史所述)或可以结合用于与指针相关联的数据块的此类标签用作增加的安全性度量。
图5示出了使用指数(幂)大小的元数据以其基本格式进行加密编码的64位指针(地址)。此类指针可以由堆管理器104响应于堆中的块的分配以最接近的2的幂的分配大小拟合而被返回给调用应用程序。在所示示例中,编码指针包括指示指针510的可变明文部分508(例如所示示例中的6位)的大小的大小元数据部分502(例如所示示例中的5位)(例如,包括指针510的可变明文部分508的多个低阶地址位,当应用程序访问块内的存储器时,这些位可以由用于指针算术的应用程序自由地进行操纵,并且因此,可变明文部分508的位数指示由指向最接近的2的幂的指针寻址的已分配块的大小)。在一些实施例中,大小部分502可以包括指示基于2的幂的大小的幂(指数)大小元数据位。其它实施例可以提供更多粒度大小的元数据或元数据偏移以更好地适合数据分配大小。
如图5中所示,大小元数据部分502可以指示组成不可变明文部分506和可变明文部分508的位数。在某些实施例中,组成不可变明文部分506和可变明文部分508的总位数可以是恒定的,相应部分的大小由大小元数据部分502决定。例如,如果幂元数据值为0,则不存在可变明文位,而所有27个剩余地址位(即,不可变明文部分506)用作调整以根据地址片(即,线性地址位的子集)生成密文部分504,其中,密文部分504与不可变明文部分506相邻并比其更重要。另外,可以使用与地址的密文部分相同的块密码对嵌入标签501进行加密,同时将地址506的不可变明文部分用作调整,从而对嵌入标签501和地址504的组合进行加密。作为另一个示例,如果幂元数据值为1,则存在一个可变明文位,如果幂元数据值为2,则存在2个可变明文位,至多27个可变明文位,不会导致不可变明文位(506)。可变明文部分508可以由软件来操纵,例如,用于指针算术或其它运算。同时,一些实施例可以保留大小字段502的特殊值以指示遗留规范线性地址(例如,其中所有位均被设置为零或所有位均被设置为一的大小值指示可用于以明文访问存储器的非编码或常规线性地址)。指针510的密文部分504(例如,在所示示例中为32位)可以用小的可调整块密码(例如32位块大小的k密码、SIMON、PRINCE或SPECK密码,或其它可变位大小的块密码)来加密。剩余地址位组成不可变明文部分506(例如,在所示示例中为21位),并用作对用于加密密文部分504的可调整块密码进行调整的一部分。尽管这些位也是地址的明文(未加密)部分,但是它们不能由如可变明文部分508的位的应用程序(例如,使用指针算术)修改而不导致密文部分504和501错误地解密,从而破坏结果地址524和标签521二者的值(可能导致页面故障和/或标签不匹配)。图5中所示的基本指针格式允许加密描述对象大小及其在存储器中的位置。在一些情况下,指数/幂/大小元数据部分502除了指针之外,还可以作为单独的参数提供。然而,在一些情况下(例如,如图所示),大小元数据部分502的位可以与指针510集成以提供遗留兼容性。
在替代实施例中,大小元数据部分502可以指示组成不可变明文部分506的位数,并因此指示组成可变明文部分508的剩余位数。例如,如果幂元数据值是1,则不存在不可变明文位(506),并且所有27个剩余的地址位(即,可变明文部分508)都可以通过软件操纵。作为另一示例,如果幂元数据值为2,则存在一位的不可变明文506,如果幂元数据值为3,则存在2位的不可变明文506,至多27位的不可变明文,导致没有可变明文位(508),并且因此,没有可以由软件操纵的位。
此外,尽管基于使用用于密文部分504的32位来示出和描述了指针510,但是指针格式并不旨在限于此。可以基于容易获得的32位块加密密码来选择要加密的地址片。然而,可以替代地使用使用任何其它块大小(例如27、16、变量等)的加密密码。如果密文位数被调节(向上或向下),则要编码的剩余地址位(例如,不可变和可变部分)可以被相应地调节。例如,如果将密文部分调节为16位,则可以将组合的不可变和可变的明文部分(506和508)编码为43位。然而,在这种情况下,可以将附加位添加到大小元数据部分502,将组合的不可变和可变的部分减少到42位,使得大小元数据部分502可以指示任何可能的位数(例如,0-42位)组成不可变明文部分506和可变明文部分508。
当处理器以加密模式运行并且使用编码的指针(地址)(例如,以与图5的指针510相同或相似的方式格式化的指针)访问存储器以获得实际的线性/虚拟地址存储器位置时,处理器采用编码的地址格式,并使用由大小/幂/指数元数据位(例如图5的502)和秘密密钥确定的可变数量的不可变明文位(例如图5的506)来解密密文部分(例如图5的504)。在一些情况下,大小/幂/指数元数据和/或其它元数据或上下文信息可以作为用于解密密文部分504的调整的一部分而包括在内。如果地址解密不正确,则处理器可导致一般性保护故障(#GP)或页面故障,这是由于尝试采用损坏的线性/虚拟地址或以其它方式不正确的标签值进行的存储器访问。
在各种实施例中,可以使用来自指针510的数据(例如,包括或取决于大小的数据)(例如,作为密钥或调整)来加密指针所引用的块中的数据(因此,指针可以引用数据,也可以描述如何加密数据)。因此,如果改变了指针510中的大小,则将对该块的数据进行不同的加密,并且先前用于引用该块的指针(在该块的先前分配中)不能用于对该块的数据进行解密。
在三个阶段中描述了流程500的操作:地址解密(阶段I)、地址形成(阶段II)和数据解密(阶段III)。在阶段I中,嵌入在指针510中的线性地址被解密。具体地,编码的线性地址和嵌入标签501的密文部分504由解密算法诸如可调整块密码520使用地址密钥518和地址调整516解密。在所示的实施例中,除了零填充511之外,地址调整516还包括大小元数据部分502和不可变明文部分506的位。大小元数据部分502用于确定不可变明文部分506中的位数和可变明文部分508中的位数,该位数等于地址调整516中用于填充511的位数。在至少一些实施例中,可变长度元数据的附加一项或多项也可以用作用于可调整块密码520的地址调整516的一部分。例如,可变长度元数据可以包括其它上下文信息或元数据(例如,权限、特权级别、类型、位置、所有权等)。块密码520可以是任何合适的解密算法(例如可以使用32位块大小密码的可调整版本,诸如SIMON、SPECK、K-CIPHER、或者对于较大的地址,为PRINCE、XTS-AES块密码、LRW、AES-CTR模式等)。
当编码的线性地址和嵌入标签501的密文504部分已通过可调整块密码520解密为解密地址片524和标签521时,则可以在阶段II中形成解码线性地址530。在至少一个实施例中,最高位(例如,大小部分502)可以被设置为相同的位值(例如,0或1)以表示规范的线性地址。另外,不可变明文部分506和可变明文部分508的位组成解码线性地址530的较低位。在一些实施例中,处理器可以检查解密地址片524中的较高位片是否具有预期规范值作为解密地址片524是否被错误解密的指示。例如,在某些寻呼模式中,所有相同的值(即全0或全1)都需要一定数量的较高地址位。如果解密的地址片524中的对应位具有不同的值,则指示解密的地址片524被错误地解密。在这种情况下,一些实施例可生成故障。在使用解码的线性地址530的情况下,一些其它实施例可以依靠现有的规范检查来生成故障。即使较高位确实具有相同的值,也可能没有结论性地指示解密的地址片524已被正确解密。一些实施例可以针对在当前操作中要访问的最小和最大地址二者的预期位值执行上述检查,使得如果访问的任何部分超出范围,则很可能生成故障。其它实施例可以仅要求访问的特定部分(例如第一字节)位于指针的范围内,并且因此对于访问的那部分,仅对指针上的预期位值执行上述检查。其它实施例可以检查最小和最大地址以进行写操作,但是仅检查单个指针值以进行读取,这依赖于数据加密来防止部分越界读取返回正确的明文。给定线性地址空间的稀疏性质,由于页面表中不存在页面,所以错误解密的地址片524将最有可能导致页面故障。最后,解密的标签521(例如,示为三位标签,但是其它实施例可以使用更大或更小的标签字段)也必须正确地匹配与存储器分配相关联的标签值。
解码的线性地址530用于查找要在阶段III中解密的加密数据的存储器位置(加密数据可以存储在高速缓存中)。加密数据通过诸如计数器模式密钥流生成器550的解密算法来解密。在至少一个实施例中,密钥流生成器550可以以特定的大小粒度(任何合适的大小)实现为AES-CTR模式块密码。在该实施例中,密码编码的指针的内容被用作初始化矢量(IV)或数据调整544,而明文偏移(例如508)被用作计数器值(CTR)。密钥流551的生成可以开始而无需等待加密的地址片504完成。密钥流生成器550基于数据密钥542对数据调整544进行加密以生成密钥流551。在被用作密钥流生成器的输入之前,数据调整544的值可以被调节为等于0(以密钥流生成器550的块大小为模)。数据调整544的值可以具有一些合适数量的最低有效位,其被设置为0以满足该要求,并且可以丢弃密钥流551的前缀以考虑该调节。可以通过从数据调整544的未调节值中减去数据调整544的调节值来计算要丢弃的密钥流551的字节数。该调节可以修改指向小于块大小的对象的指针中的不可变明文506的值。然而,数据加密可以间接绑定到修改的不可变位的值,因为这些位可以合并到用于生成密文504的调整中。如果要加密的存储器跨越一个或多个块对齐的边界,则密钥流生成器550可以针对随后的块重新调用,其中数据调整544每次重新调用时增加等于块大小的量。可能不需要生成的密钥流551的后缀,并且因此将其丢弃。然后可以对密钥流551和从由解码的线性地址530引用的存储器位置中选择的加密的输入数据块(或高速缓存行)546执行XOR操作552。加密的输入数据块546的粒度与从密钥流生成器550输出的密钥流551相匹配,并且XOR操作552产生解密的输出数据块554。同样,当将数据存储回高速缓存/存储器时,可以执行相同的操作,其中可以将来自处理器寄存器的明文数据与用于编码地址544的密钥流输出551进行XOR运算,并将所得的加密数据写回到存储器中。
当在密码编码中包括嵌入的大小和标签时(例如,如图5或类似实施例所示),标签是按对象大小和对象在存储器中的位置。因此,如果堆管理器104关于对象大小是一致的(例如总是用相同大小的对象但具有不同嵌入标签的另一个对象替换释放的对象,例如,通过递增最后一个标签值),则堆管理器104不必担心标签的相邻性,也不必保留这些标签分配的历史。如果访问对象超出其边界,则指针解码逻辑将捕获该错误。然后可以简单地使用标签来防止释放后使用攻击。此外,如果存储在存储器中的标签值也如本文所示作为数据被加密,则存储器标签本身变得取决于对象的大小和在存储器中的位置,从而允许堆管理器104针对不同的对象大小自由地分配相同的标签值,随着时间推移(多次分配和释放),占用了存储器中的相同位置。在加密标签方案中,对数据的每个存储器访问还包括对存储在存储器中的相应标签值的解密和验证。
当标签在存储器中被加密时,堆管理器104准备绑定到加密编码的指针的正确的加密标签值。例如,这可以使用SetTag处理器指令(或等效指令)来完成,该指令将加密编码地址510作为用于相关联数据的输入。因此,SetTag指令可以在存储器中针对编码的线性地址510产生适当的加密标签值,基于编码的地址对存储器标签进行加密,基于解码的(例如,解密的)线性地址530来确定标签值并在存储器中定位标签条目(例如,当线性存储器中存储有标签值的表时)。例如,如果存储在存储器中的每个4位标签表示16字节分配,则通过针对每个16字节偏移508的开头调用四次SetTag指令,可以设置4个标签以覆盖存储器中64个字节的分配,以确保针对相应的数据偏移加密每个标签。然后,标签表将具有用于线性地址的每16个字节的条目,并将其大小设置为可寻址线性存储器的1/32,其中每个条目均包括相同标签(例如521)的加密版本,但是由于每个条目都基于不同的加密编码地址510加密(例如,由于可变明文位508可横跨用于加密标签条目的地址510改变),因此与相同分配的数据块相对应的条目可具有不同的值。类似地,GetTag指令可以为输入的编码线性地址510提供解密的存储器标签值,在给定了解码地址530的情况下从存储器返回解密的标签。在各种实施例中,通过使用编码的线性地址510作为调整(或作为计数器初始化值)来执行存储器标签的加密和解密。
图11描绘了根据某些实施例的用于将加密标签与分配的数据块的对应子部分相关联的流程。该图描绘了示出在上一段中描述的一些实施例的示例。编码线性地址510对应于由编码线性地址510表示的地址处的大小位枚举的可变地址位数所定义的数据块分配(在此示例中,四个16个字节的部分或64个字节的分配被502大小值的6个最低有效地址位覆盖,指示6个地址位是可变的,并且不用于地址调整,因为64=2^6)。在一些实施例中,大小字段502通过指定要使用多少个明文地址位506计算地址504的加密部分的调整而间接地与数据分配大小相关。余数(508)对应于可以针对指针算术而操纵的地址位。只要数组索引停留在其边界之内,请求者就不会将其大小递增超过大小字段502指示的地址位数。然而,如果确实发生了此类增加,则504将不正确地解密,可能生成故障或其它错误。数据块的每个不同部分与存储器标签表1104中的4位存储器标签值(各种实施例可以选择不同的标签大小)相关联(在各种实施例中,存储标签表1104可以存储在与数据1102相同的存储器中,也可以存储在单独的存储器中)。因此,分配的数据块包括4个部分,每个部分与不同的存储器标签值相关联。如上所述,可以基于分配的数据块的对应的16字节部分的加密编码地址来加密每个存储器标签值。因此,尽管所分配的数据块的四个子部分的四个存储器标签值表示相同的值(即,明文标签值),但是每个存储器标签值可以不同地加密(因为每个存储器标签值使用不同的编码地址偏移进行加密)。当在存储器访问指令中引用了数据块的一部分(例如16字节部分)时,与该部分相关联的存储器标签值可以被解密,并通过存储器加载/存储访问请求将其与解密地址530中提供的标签进行比较(至少在一些实施例中,标签还可以在地址解密操作520期间解密)。因此,在1104中对存储器标签值的正确解密取决于相关联的数据分配的大小、其在存储器中的位置、加密的地址片504以及地址中的标签值。如果解密的标签值匹配,则执行存储器访问指令。如果没有,则可触发异常或故障(或其它错误)。在所示的实施例中,其它分配的数据块具有对应的存储器标签值,该存储器标签值包括分配给它们相应的数据块的标签的加密版本。
访问存储器标签表1104的指令(例如,SetTag、GetTag或类似指令)可以被特权化或仅由堆管理器104调用(例如,基于代码在存储器中的位置),或以其它方式限制以防止恶意篡改存储在存储器中的标签值(例如,通过要求只有诸如堆管理器104的授权软件才知道的授权码)。为了确保对手无法通过观察加密的存储器标签来推断密钥流(例如551),当加密(例如使用SetTag指令)或解密(例如使用GetTag指令)存储器标签值以在执行数据存储和/或加载指令期间进行验证时,可以使用不同的数据密钥542。其它实施例可以调节密钥流输入544以指示存储器访问是针对分配的数据还是存储器标签。
其中基于加密指针510对标签进行加密和存储的实施例可以提供对抗敌对参与者的附加保护。例如,当标签未被加密时,可以为与分配的数据块的一部分(例如16字节部分)相对应的每个条目重复相同的标签值(例如,未加密的标签值)。因此,如果对手能够猜测标签值,则对手可以使用相同的标签值访问整个缓冲器。然而,当对存储器标签进行加密时,每个加密标签将取决于其位置而具有不同的加密值(因此,每个未正确解密的存储器标签将产生不同的随机值),因此,对手将必须正确猜测数据块的一部分的每次访问的标签值,因此显著增加捕获无效或恶意缓冲器访问的几率。
在各种实施例中,可以在逐个密钥的基础上考虑上述标记约束。例如,堆管理器104可以使用存储在处理器102的寄存器中的加密密钥来对响应于存储器分配请求而返回的指针的一部分进行加密,和/或处理器102可以对存储在堆块中的数据进行加密。因此,当使用特定密钥时,分配给特定数据块的标签必须与该块的标签历史的标签不同,并且可能与相邻数据块使用的标签不同。然而,如果改变了正在使用的密钥,则可以重置或以其它方式修改与密钥相关联的各个块的标签历史,使得使用前一个密钥时生成的标签历史不会影响使用新密钥时分配的数据块的标签选择。在一些实施例中,标签历史可以各自与相应的密钥相关联。例如,用于数据块的第一组标签历史可以生成并用于约束基于第一密钥加密的分配块的标签分配,而第二组标签历史可以生成并用于约束基于第二密钥加密的分配块的标签分配。
在特定实施例中,请求存储器分配的应用程序可以提供密钥,该密钥应当用于对所得块的数据进行加密(通过使用密钥直接加密数据或通过加密指针的一部分并可能使用来自指针的数据,以加密要存储在块中的数据)。在接收到密钥的标识之后,堆管理器104可以查找与该密钥相关联的标签历史以寻找要分配的块,并且可以分配不作为该标签历史的一部分的标签。
上面的描述涉及密钥和调整。如本文所使用的,术语“密钥”可以指代作为输入被传递到加密模式的加密秘密,并且可以支持机密性和数据完整性的功能中的至少一个。例如,密钥可以指代秘密比特串,该秘密比特串如典型的块密码所执行的那样被扩展为圆形密钥调度串。如本文所使用的,“调整”可以指代包括用于定制块密码或密码哈希函数的操作的一个或多个位的值。例如,除其它事项外,调整可以指代对块密码的额外输入(例如,除通常的明文或密文输入和加密密钥以外的输入)。当使用相同的加密密钥对相同的明文进行加密时,不同的调整值将导致不同的加密数据输出。类似地,当使用相同的加密密钥解密相同的密文时,不同的调整值将导致不同的明文输出。任何合适的密码模式可以用于执行本文描述的加密和解密操作。例如,处理器102可以利用高级加密标准电子密码本(AES-ECB)、具有密文窃取(AES-XTS)的基于AES xor-encrypt-xor(XEX)的调整码本模式、AES计数器(AES-CTR)、k密码、SIMON、PRINCE或SPECK密码,或其它合适的加密操作模式。
图6示出了根据某些实施例的用于分配堆存储器的流程。该流程的操作可以由任何适当的逻辑(诸如处理器102)来执行。
在602处,请求存储器堆操作。例如,存储器堆操作可以包括请求以在堆存储器中分配数据块,在堆存储器中释放数据块,或调整堆存储器中的数据块大小。在604处,识别存储器堆的数据块。例如,当该请求是分配数据块的请求时,所识别的数据块可以是与该请求中包括的大小匹配的数据块。作为另一示例,当该请求是释放数据块的请求时,所识别的数据块可以是该请求所识别的数据块。
在606处,识别用于数据块的候选标签。在608处,确定候选标签是否与数据块的标签历史中的标签匹配,或者候选标签是否违反任何其它约束(例如,与相邻数据块的标签匹配)。如果没有违反约束,则在610处将标签分配给数据块。如果候选标签违反约束,则在612处确定附加候选标签是否可用。如果附加候选标签可用,则流程返回到606。如果已经用尽了所有可能的标签并且该数据块没有合适的标签可用,则可以在614处隔离该数据块。
在图3、4和6中描述的流程仅表示在特定实施例中可能发生的操作或通信。在其它实施例中,可以在流程中执行附加操作或通信。本公开的各种实施例预期用于实现本文描述的功能的任何合适的信令机制。图3、4和6中示出的一些操作在适当情况下可以重复、组合、修改或删除。另外,可以以任何合适的顺序执行操作,而不脱离特定实施例的范围。
图7-10是可以根据本文公开的任何实施例使用的示例性计算机架构的框图。通常,可以使用本领域已知的用于处理器和计算系统的任何计算机架构设计。在示例中,本领域已知的用于膝上型计算机、台式计算机、手持式PC、个人数字助理、平板计算机、工程工作站、服务器、网络设备、服务器、设备、网络集线器、路由器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、智能电话、移动设备、可穿戴电子设备、便携式媒体播放器、手持设备以及各种其它电子设备的系统设计和配置也适用于本文描述的计算系统的实施例。通常,用于本文公开的实施例的合适的计算机架构可以包括但不限于图7-10中所示的配置。
图7是根据实施例的处理器的示例说明。处理器700是可以与本文所示和所述的实现方式结合使用的一种类型硬件设备的示例(例如,处理器102)。处理器700可以是任何类型的处理器,诸如微处理器、嵌入式处理器、数字信号处理器(DSP)、网络处理器、多核处理器、单核处理器或执行代码的其它设备。尽管在图7中仅示出了一个处理器700,但是处理元件可以可替代地包括图7中所示的处理器700中的多于一个的处理器。处理器700可以是单线程核心,或者对于至少一个实施例,处理器700可以是多线程核心,在于每个核心可包含多于一个的硬件线程上下文(或“逻辑处理器”)。
图7还示出了根据实施例的耦合至处理器700的存储器702。存储器702是可以与本文所示和所述的实现方式结合使用的一种类型的硬件设备的示例(例如,存储器122)。存储器702可以是本领域技术人员已知或以其它方式可用的各种各样的存储器中的任何一个存储器(包括存储器层次结构的各个层)。此类存储器元件可以包括但不限于随机存取存储器(RAM)、只读存储器(ROM)、现场可编程门阵列(FPGA)的逻辑块、可擦除可编程只读存储器(EPROM)和电可擦除可编程ROM(EEPROM)。
处理器700可以执行与本文详述的算法、过程或操作相关联的任何类型的指令。通常,处理器700可以将元素或物品(例如,数据)从一种状态或事物转换为另一种状态或事物。
可以作为将由处理器700执行的一个或多个指令的代码704在适当的情况下并根据特定需要,可以存储在存储器702中,或者可以存储在软件、硬件、固件或其任何适当的组合中,或存储在任何其它内部或外部组件、设备、元件或对象中。在一个示例中,处理器700可以遵循由代码704指示的指令的程序序列。每个指令进入前端逻辑706,并且由一个或多个解码器708进行处理。解码器可以以预定格式生成诸如固定宽度微操作的微操作作为其输出,或者可以生成反映原始代码指令的其它指令、微指令或控制信号。前端逻辑706还包括寄存器重命名逻辑710和调度逻辑712,它们通常分配资源并将与该指令相对应的操作排队以用于执行。
处理器700还可包括具有一组执行单元716a、716b、716n等的执行逻辑714。一些实施例可包括专用于特定功能或功能集的多个执行单元。其它实施例可以仅包括一个执行单元或可以执行特定功能的一个执行单元。执行逻辑714执行由代码指令指定的操作。
在完成由代码指令指定的操作的执行之后,后端逻辑718可以撤消代码704的指令。在一个实施例中,处理器700允许乱序执行但是需要按顺序撤消指令。退出逻辑720可以采用各种已知形式(例如,重新排序缓冲器等)。以该方式,至少在解码器生成的输出、寄存器重命名逻辑710所利用的硬件寄存器和表以及执行逻辑714所修改的任何寄存器(未示出)方面,在代码704的执行期间对处理器700进行变换。
尽管未在图7中示出,处理元件可以包括具有处理器700的芯片上的其它元件。例如,处理元件可以与处理器700一起包括存储器控制逻辑。处理元件可以包括I/O控制逻辑和/或可以包括与存储器控制逻辑集成在一起的I/O控制逻辑。该处理元件还可包括一个或多个高速缓存。在一些实施例中,非易失性存储器(诸如闪存或保险丝)也可以被包括在具有处理器700的芯片上。
图8A是示出根据本公开的一个或多个实施例的示例性顺序流水线和示例性寄存器重命名、乱序发射/执行流水线二者的框图。图8B是示出根据本公开的一个或多个实施例的将被包括在处理器中的顺序架构核心的示例性实施例和示例性寄存器重命名、乱序发射/执行架构核心的框图。图8A-8B中的实线框示出了顺序流水线和顺序核心,而虚线框的可选添加示出了寄存器重命名、乱序发射/执行流水线和核心。假定顺序方面是无序方面的子集,将描述无序方面。
在图8A中,处理器流水线800包括获取级802、长度解码级804、解码级806、分配级808、重命名级810、调度(也称为分派或发布)级812、寄存器读取/存储器读取级814、执行级816、回写/存储器写级818、异常处理级822和提交级824。
图8B示出了处理器核心890,该处理器核心890包括耦合至执行引擎单元850的前端单元830,并且两者均耦合至存储器单元870。处理器核心890和存储器单元870是可结合本文示出和描述的实施方式使用的硬件类型的示例(例如,处理器102、存储器122)。核心890可以是精简指令集计算(RISC)核心、复杂指令集计算(CISC)核心、超长指令字(VLIW)核心或混合或替代核心类型。作为另一种选择,核心890可以是专用核心,诸如例如网络或通信核心、压缩引擎、协处理器核心、通用计算图形处理单元(GPGPU)核心、图形核心等。另外,处理器核心890及其组件表示可用于实现逻辑处理器及其相应组件的示例架构。
前端单元830包括分支预测单元832,该分支预测单元832耦合到指令高速缓存单元834,该指令高速缓存单元834耦合到指令翻译后备缓冲器(TLB)单元836,该指令翻译后备缓冲器(TLB)单元836耦合到指令获取单元838,该指令获取单元838耦合到解码单元840。解码单元840(或解码器)可以对指令进行解码,并生成一个或多个微操作、微码入口点、微指令、其它指令或其它控制信号作为输出,该微操作、微指令入口点、微指令、其它指令或其它控制信号从原始指令解码,或以其它方式反映原始指令,或从原始指令导出。可以使用各种不同的机制来实现解码单元840。合适的机制的示例包括但不限于查找表、硬件实现方式、可编程逻辑阵列(PLA)、微码只读存储器(ROM)等。在一个实施例中,核心890包括微码ROM或存储用于某些宏指令的微码的其它介质(例如,在解码单元840中或以其它方式在前端单元830内)。解码单元840耦合到执行引擎单元850中的重命名/分配器单元852。
执行引擎单元850包括耦合到退出单元854的重命名/分配器单元852和一组一个或多个调度器单元856。调度器单元856表示任何数量的不同调度器,包括预约站、中央指示窗口等。调度器单元856耦合到物理寄存器文件单元858。物理寄存器文件单元858中的每个物理寄存器文件单元858表示一个或多个物理寄存器文件,其中的不同物理寄存器文件存储一个或多个不同的数据类型,诸如标量整数、标量浮点、打包整数、打包浮点、矢量整数、矢量浮点、状态(例如,指令指针,它是要执行的下一条指令的地址)等。在一个实施例中,一个或多个物理寄存器文件单元858包括矢量寄存器单元、写掩码寄存器单元和标量寄存器单元。这些寄存器单元可以提供架构矢量寄存器、矢量掩码寄存器和通用寄存器(GPR)。在本文所述的至少一些实施例中,寄存器单元858是可结合本文所示和所述的实现方式使用的硬件类型的示例(例如,寄存器112)。退出单元854将物理寄存器文件单元858重叠,以示出可以实现寄存器重命名和无序执行的各种方式(例如,使用重新排序缓冲器和退出寄存器文件;使用将来的文件、历史缓冲器和退出寄存器文件;使用寄存器映射和寄存器池;等等)。退出单元854和物理寄存器文件单元858耦合到执行集群860。执行集群860包括一组一个或多个执行单元862和一组一个或多个存储器访问单元864。执行单元862可以对各种类型的数据(例如标量浮点、压缩整数、压缩浮点、矢量整数、矢量浮点)执行各种操作(例如,移位、加法、减法、乘法)。尽管一些实施例可以包括专用于特定功能或一组功能的多个执行单元,但是其它实施例可以仅包括一个执行单元或全部执行所有功能的多个执行单元。执行单元862还可包括地址生成单元(例如822),以计算由核心用于访问主存储器(例如,存储器单元870)和页面未命中处理程序(PMH)(例如,826)的地址。
调度器单元856、物理寄存器文件单元858和执行集群860被示为可能是复数的,因为某些实施例针对某些类型的数据/操作创建了单独的流水线(例如标量整数流水线、标量浮点/压缩整数/压缩浮点/矢量整数/矢量浮点流水线和/或存储器访问流水线,它们各自具有自己的调度器单元、物理寄存器文件单元,和/或执行群集-并且在单独的存储器访问流水线的情况下,实施某些实施例,其中仅该流水线的执行集群具有存储器访问单元864)。还应该理解,在使用单独的流水线的情况下,这些流水线中的一个或多个可能是乱序发射/执行,而其余是顺序的。
该组存储器访问单元864耦合到存储器单元870,该存储器单元870包括数据TLB单元872,该数据TLB单元872耦合到数据高速缓存单元874,该数据高速缓存单元874耦合到二级(L2)高速缓存单元876。在一个示例性实施例中,存储器访问单元864可以包括加载单元、存储地址单元和存储数据单元,它们中的每一个都耦合到存储器单元870中的数据TLB单元872。指令高速缓存单元834进一步耦合到存储器单元870中的二级(L2)高速缓存单元876。L2高速缓存单元876耦合到一个或多个其它级别的高速缓存并且最终耦合到主存储器。另外,如果在数据TLB单元872中未找到匹配,则页面缺失处理程序(例如,页面缺失处理程序826)也可以包括在核心890中以在页面表中查找地址映射。
作为示例,示例性寄存器重命名、乱序发射/执行核心架构可以如下实现流水线800:1)指令获取838执行获取和长度解码级802和804;2)解码单元840执行解码级806;3)重命名/分配器单元852执行分配级808和重命名级810;4)调度器单元856执行调度级812;5)物理寄存器文件单元858和存储器单元870执行寄存器读取/存储器读取级814;执行集群860执行执行级816;6)存储器单元870和物理寄存器文件单元858执行回写/存储器写级818;7)异常处理级822中可能涉及各种单元;8)退出单元854和物理寄存器文件单元858执行提交级824。
核心890可以支持一个或多个指令集(例如x86指令集(具有一些扩展,这些扩展已经添加有较新版本);加利福尼亚州桑尼维尔的MIPS Technologies的MIPS指令集;加利福尼亚州桑尼维尔的ARM Holdings的ARM指令集(带有可选的附加扩展,诸如NEON),包括本文所述的指令。在一个实施例中,核心890包括支持压缩数据指令集扩展(例如,AVX1、AVX2)的逻辑,从而允许使用压缩数据来执行许多多媒体应用程序所使用的操作。
应该理解,核心可以支持多线程(执行两个或更多个并行的操作或线程集),并且可以以多种方式来做到这一点,包括时间片多线程、同时多线程(其中单个物理核心为每个线程同时提供多线程的逻辑核心),或其组合(例如,时间片的获取和解码以及此后的同时多线程,诸如
Figure BDA0002423012730000281
超线程技术)。因此,在至少一些实施例中,可以支持多线程飞地(multi-threaded enclave)。
虽然在无序执行的上下文中描述了寄存器重命名,但是应该理解,寄存器重命名可以在顺序架构中使用。虽然处理器的所示实施例还包括单独的指令和数据高速缓存单元834/874和共享的L2高速缓存单元876,但是替代实施例可以具有用于指令和数据二者的单个内部高速缓存,诸如例如1级(L1)内部高速缓存,或多个级别的内部高速缓存。在一些实施例中,系统可以包括内部高速缓存和在核心和/或处理器外部的外部高速缓存的组合。可替代地,所有高速缓存可以在核心和/或处理器的外部。
图9示出了根据实施例的以点对点(PtP)配置布置的计算系统900。特别地,图9示出了其中处理器、存储器和输入/输出设备通过多个点对点接口互连的系统。通常,可以以与计算系统900相同或相似的方式来配置本文所述的一个或多个计算系统或计算设备(例如,计算设备100)。
处理器970和980可以被实现为单核处理器974a和984a或多核处理器974a-974b和984a-984b。处理器970和980每个可以包括由它们相应的一个或多个核心使用的高速缓存971和981。共享高速缓存(未示出)可以包括在一个处理器中或两个处理器之外,但仍经由PP互连与这些处理器连接,使得如果将处理器置于低功耗模式,则一个或两个处理器的本地高速缓存信息可存储在共享高速缓存中。应当注意,可以在诸如计算系统900的计算系统中实现本文描述的一个或多个实施例。此外,处理器970和980是可以结合本文示出和描述的实现方式使用的硬件类型的示例(例如,处理器102)。
处理器970和980还可各自包括集成存储器控制器逻辑(MC)972和982以与存储器元件932和934通信,该存储器元件932和934可以是主存储器的本地附接到相应处理器的部分。在替代实施例中,存储器控制器逻辑972和982可以是与处理器970和980分离的分立逻辑。存储器元件932和/或934可以存储要由处理器970和980使用的各种数据,以实现本文概述的操作和功能。
处理器970和980可以是任何类型的处理器,诸如结合其它附图所讨论的那些处理器。处理器970和980可以分别使用点对点接口电路978和988经由点对点(PtP)接口950交换数据。处理器970和980可各自使用点对点接口电路976、986、994和998经由单独的点对点接口952和954与输入/输出(I/O)子系统990交换数据。子系统990还可以使用可以是PtP接口电路的接口电路992经由高性能图形接口939与高性能图形电路938交换数据。在一个实施例中,高性能图形电路938是专用处理器,诸如例如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器或处理器等。I/O子系统990还可以与显示器933通信,以显示人类用户可见的数据。在替代实施例中,图9中所示的任何或所有PtP链路可以被实现为多点总线而不是PtP链路。
I/O子系统990可以经由接口电路996与总线910通信。总线910可以具有通过其进行通信的一个或多个设备,诸如总线桥接器918、I/O设备916、音频I/O 924和处理器915。总线桥接器918可经由总线920与其它设备通信,诸如用户界面922(诸如键盘、鼠标、触摸屏或其它输入设备)、通信设备926(诸如调制解调器、网络接口设备或可通过计算机网络960通信的其它类型的通信设备)和/或数据存储设备928。数据存储设备928可存储代码和数据930,该代码和数据可由处理器970和/或980执行。在替代实施例中,总线架构的任何部分可以采用一个或多个PtP链路来实现。
诸如代码930的程序代码可以应用于输入指令以执行本文所述的功能并生成输出信息。可以以已知方式将输出信息应用于一个或多个输出设备。为了本申请的目的,处理系统可以是计算系统900的一部分,并且包括具有处理器(诸如例如数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器)的任何系统。
可以以高级过程或面向对象的编程语言来实现程序代码(例如930),以与处理系统进行通信。如果需要,程序代码也可以用汇编或机器语言来实现。实际上,本文描述的机制的范围不限于任何特定的编程语言。在任何情况下,该语言都可以是编译语言或解释语言。
至少一个实施例的一个或多个方面可以通过存储在机器可读介质上的代表性指令来实现,该机器可读介质表示处理器内的各种逻辑,该指令当由机器读取时,使机器制造逻辑以执行本文所述的一种或多种技术。可以将此类表示(称为“IP核心”)存储在有形的机器可读介质上,并提供给各种客户或制造设施,以加载到实际制造逻辑或处理器的制造机器中。
此类机器可读存储介质可以包括但不限于由机器或设备制造或形成的物品的非暂态有形排列,包括存储介质,诸如硬盘,任何其它类型的盘,包括软盘、光盘、压缩光盘只读存储器(CD-ROM)、压缩光盘可擦写(CD-RW)和磁光盘,半导体设备,诸如只读存储器(ROM)、随机存取存储器(RAM),诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、可擦可编程只读存储器(EPROM)、闪存、电可擦可编程只读存储器(EEPROM)、相变存储器(PCM)、磁卡或光卡,或适合存储电子指令的任何其它类型的介质。
因此,本公开的实施例还包括非暂态有形机器可读介质,其包含指令或包含设计数据,诸如硬件描述语言(HDL),其定义了结构、电路、装置、处理器和/或本文所述的系统特征。此类实施例也可以被称为程序产品。
图9中描绘的计算系统是可以被用来实现本文所讨论的各种实施例的计算系统的实施例的示意图。将意识到,图9中描绘的系统的各种组件可以以片上系统(SoC)架构或能够实现本文提供的示例和实现方式的功能和特征的任何其它合适的配置来组合。
在一些情况下,指令转换器可以用于将指令从源指令集转换为目标指令集。例如,指令转换器可翻译(例如,使用静态二进制翻译,包括动态编译的动态二进制翻译),对指令进行变形、仿真或以其它方式将其转换为将由核心处理的一个或多个其它指令。指令转换器可以以软件、硬件、固件或其组合来实现。指令转换器可以在处理器上,在处理器外,或部分在处理器上和部分在处理器外。
图10是根据本公开的实施例的对比使用软件指令转换器将源指令集中的二进制指令转换为目标指令集中的二进制指令的框图。在示出的实施例中,指令转换器是软件指令转换器,但是可替代地,指令转换器可以以软件、固件、硬件或其各种组合来实现。图10示出了可以使用x86编译器1004来编译高级语言1002以生成可以由具有至少一个x86指令集核心1016的处理器本机执行的x86二进制代码1006的程序。具有至少一个x86指令集核心1016的处理器表示可以通过兼容执行或以其它方式处理(1)Intel x86指令集核心的指令集的大部分,或(2)针对在具有至少一个x86指令集核心的Intel处理器上运行的应用程序或其它软件的目标代码版本,而可以执行与具有至少一个x86指令集核心的intel处理器基本上相同功能的任何处理器,以便实现与具有至少一个x86指令集核心的Intel处理器基本上相同的结果。x86编译器1004表示可操作以生成x86二进制代码1006(例如,对象代码)的编译器,该x86二进制代码可以在具有或不具有附加链接处理的情况下在具有至少一个x86指令集核心1016的处理器上执行。类似地,图10示出了可以使用替代指令集编译器1008来编译高级语言1002以生成可以由不具有至少一个x86指令集核心1014(例如,具有核心的处理器,该核心执行加利福尼亚州桑尼维尔的MIPS Technologies的MIPS指令集和/或执行加利福尼亚州桑尼维尔的ARM Holdings的ARM指令集)的处理器本机执行的替代指令集二进制代码1010的程序。指令转换器1012用于将x86二进制代码1006转换为可以由不具有x86指令集核心1014的处理器本机执行的代码。该转换代码不太可能与替代指令集二进制代码1010相同,因为具有这种能力的指令转换器很难制造;然而,转换的代码将完成常规操作,并由来自备用指令集中的指令组成。因此,指令转换器1012表示软件、固件、硬件或其组合,其通过仿真、模拟或任何其它过程,允许不具有x86指令集处理器或核心的处理器或其它电子设备执行x86二进制代码1006。
逻辑可以用于实现本文描述的任何流程或各种组件的功能,诸如堆管理器104、运行时标签生成器105、运行时标签检查器106、计算设备100的其它组件、处理器700、流水线800、核心890、系统900、其中任何一个的子组件(例如堆管理器104)或本文描述的其它实体或组件。“逻辑”可以指代执行一个或多个功能的硬件、固件、软件和/或每一个的组合。在各种实施例中,逻辑可包括可操作以执行软件指令的微处理器或其它处理元件,诸如专用集成电路(ASIC)的分立逻辑、诸如现场可编程门阵列(FPGA)的编程逻辑设备、包含指令的存储设备、逻辑设备的组合(例如,将在印刷电路板上找到的)或其它合适的硬件和/或软件。逻辑可以包括一个或多个门或其它电路组件。在一些实施例中,逻辑也可以完全体现为软件。软件可以体现为记录在非暂态计算机可读存储介质上的软件包、代码、指令、指令集和/或数据。固件可以体现为在存储设备中硬编码(例如,非易失性)的代码、指令或指令集和/或数据。
尽管已经根据某些实施方式和通常相关联的方法描述了本公开,但是这些实施方式和方法的变更和置换对于本领域技术人员将是显而易见的。例如,本文所描述的动作可以以与所描述的顺序不同的顺序执行,并且仍然实现所需的结果。作为一个示例,附图中描绘的过程不一定需要所示的特定顺序或连续顺序来实现所需的结果。在某些实施方式中,多任务和并行处理可能是有利的。其它变型在所附权利要求的范围内。
本文提出的架构仅以示例的方式提供,并且旨在是非排他的和非限制性的。此外,所公开的各个部分仅旨在是逻辑划分,并且不一定表示物理上分开的硬件和/或软件组件。某些计算系统可以在单个物理存储设备中提供存储器元件,并且在其它情况下,存储器元件可以在功能上横跨许多物理设备分布。在虚拟机管理器或虚拟机管理程序的情况下,可以以在虚拟化层上运行的软件或固件的形式来提供功能的全部或部分,以提供所公开的逻辑功能。
注意,采用本文提供的示例,可以根据单个计算系统来描述交互。然而,这样做只是出于清楚和示例的目的。在某些情况下,仅参考单个计算系统来描述一组给定流的一个或多个功能可能会更容易。此外,用于深度学习和恶意软件检测的系统易于扩展,并且可以跨大量组件(例如,多个计算系统)以及更复杂/精密的布置和配置来实现。因此,所提供的示例不应限制或潜在地应用于无数其它架构的计算系统的广泛教导。
如本文所用,除非明确相反地指出,否则短语“至少一个”的使用是指所命名的项目、元素、条件或活动的任何组合。例如,“X、Y和Z中的至少一个”旨在表示以下中的任意一项:1)至少一个X,但不是Y而不是Z;2)至少一个Y,但不是X而不是Z;3)至少一个Z,但不是X而不是Y;4)至少一个X和至少一个Y,但不是Z;5)至少一个X和至少一个Z,但不是Y;6)至少一个Y和至少一个Z,但不是X;或7)至少一个X、至少一个Y和至少一个Z。
另外,除非有相反的明确说明,否则术语“第一”、“第二”、“第三”等旨在区分特定名词(例如,元素、条件、模块、活动、操作、权利要求元素等),它们进行修改,但并不旨在指示修改的名词的任何类型的顺序、等级、重要性、时间顺序或层次。例如,“第一个X”和“第二个X”旨在表示两个单独的X元素,它们不一定受两个元素的任何顺序、等级、重要性、时间顺序或层次结构限制。
在说明书中对“一个实施例”、“实施例”、“一些实施例”等的引用指示所描述的实施例可以包括特定的特征、结构或特性,但是每个实施例可以或可能不一定包括该特定特征、结构或特性。此外,此类短语不一定指相同的实施例。
尽管本说明书包含许多特定的实施细节,但是这些不应被解释为对任何实施例或可要求保护的范围的限制,而是对特定实施例特定的特征的描述。在单独的实施例的上下文中在本说明书中描述的某些特征也可以在单个实施例中组合实现。相反,在单个实施例的上下文中描述的各种特征也可以分别在多个实施例中或在任何合适的子组合中来实现。此外,尽管以上可以将特征描述为以某些组合起作用并且甚至最初如此声称,但是在一些情况下,可以从该组合中切除所要求保护的组合中的一个或多个特征,并且所要求保护的组合可以涉及子组合或子组合的变体。
类似地,上述实施例中的各种系统组件和模块的分离不应理解为在所有实施例中都需要这种分离。应当理解,所描述的程序组件、模块和系统通常可以被集成在一起在单个软件产品中,或者被包装成多个软件产品。
因此,已经描述了本主题的特定实施例。其它实施例在本公开的范围内。本领域技术人员可以确定许多其它改变、替换、变化、变更和修改,并且意图是本公开涵盖落入所附权利要求范围内的所有此类改变、替换、变化、变更和修改。
示例1可以包括处理器,该处理器包括:解码器,该解码器对请求存储器堆操作的第一指令进行解码;以及包括电路的堆管理器,该堆管理器用于:响应于请求存储器堆操作的第一指令,识别存储器堆的数据块;访问用于数据块的标签历史,该标签历史包括先前分配给数据块的多个标签;将标签分配给数据块,其中分配标签包括验证标签与标签历史的多个标签中的任何一个都不匹配;并提供分配的标签和对数据块位置的引用。
示例2可以包括示例1的主题,其中,将标签分配给数据块还包括验证标签与与数据块相邻的数据块的标签不匹配。
示例3可以包括示例1-2中任何一个示例的主题,其中,所请求的存储器堆操作是存储器分配操作。
示例4可以包括示例1-2中任何一个示例的主题,其中,所请求的存储器堆操作是存储器释放操作。
示例5可以包括示例1-4中任何一个示例的主题,其中,解码器对请求第二存储器堆操作的第二指令进行解码;以及堆管理器用于:响应于请求第二存储器堆操作的第二指令:识别存储器堆的第二数据块;访问用于第二数据块的标签历史,该标签历史包括先前分配给第二数据块的多个标签;以及响应于确定没有标签可用于第二数据块来隔离第二数据块,所述确定没有标签可用于第二数据块至少部分地基于用于第二数据块的标签历史。
示例6可以包括示例1-5中任何一个示例的主题,其中,堆管理器还用于响应于加密密钥中的切换来重置标签历史。
示例7可以包括示例1-6中任何一个示例的主题,其中,堆管理器用于:响应于请求存储器堆操作的第一指令,对多个数据块进行碎片整理以形成数据块;以及组合多个数据块的标签历史以形成用于数据块的标签历史。
示例8可以包括示例1-6中任何一个示例的主题,其中,堆管理器用于:响应于请求存储器堆操作的第一指令,将第二数据块分块为数据块和第三数据块;以及复制第二数据块的标签历史以形成用于数据块的标签历史和用于第三数据块的标签历史。
示例9可以包括示例1-8中任何一个示例的主题,其中,标签的至少一部分指示数据块的大小。
示例10可以包括示例1-9中任何一个示例的主题,其中,标签的至少一部分指示数据块的数据类型。
示例11可以包括示例1-10中任何一个示例的主题,其中,处理器用于:接收访问数据块的请求,该请求指示数据块的位置和第二标签;以及响应于确定第二标签与分配给数据块的标签相匹配,来授予对数据块的访问。
示例12可以包括示例1-11中任何一个示例的主题,还包括以下中的一项或多项:可通信地耦合到处理器的电池,可通信地耦合到处理器的显示器,或可通信地耦合到处理器的网络接口。
示例13可以包括一种方法,该方法包括:响应于请求存储器堆操作的第一指令,识别存储器堆的数据块;访问用于数据块的标签历史,该标签历史包括先前分配给数据块的多个标签;将标签分配给数据块,其中,分配标签包括:验证标签与标签历史的多个标签中的任何一个标签都不匹配;以及提供分配的标签和对数据块位置的引用。
示例14可以包括示例13的主题,其中,将标签分配给数据块还包括:验证标签和与数据块相邻的数据块的标签不匹配。
示例15可以包括示例13-14中任何一个示例的主题,其中,所请求的存储器堆操作是存储器分配操作。
示例16可以包括示例13-14中任何一个示例的主题,其中,所请求的存储器堆操作是存储器释放操作。
示例17可以包括示例13-16中任何一个示例的主题,其中,该方法还包括:响应于请求第二存储器堆操作的第二指令,识别存储器堆的第二数据块;访问用于第二数据块的标签历史,该标签历史包括先前分配给第二数据块的多个标签;以及响应于没有标签可用于第二数据块的确定来隔离第二数据块,没有标签可用于第二数据块的确定至少部分地基于用于第二数据块的标签历史。
示例18可以包括示例13-17中任何一个示例的主题,该方法还包括响应于加密密钥中的切换来重置标签历史。
示例19可以包括示例13-18中任何一个示例的主题,还包括:响应于请求存储器堆操作的第一指令,对多个数据块进行碎片整理以形成数据块;以及组合多个数据块的标签历史以形成用于数据块的标签历史。
示例20可以包括示例13-18中任何一个示例的主题,还包括:响应于请求存储器堆操作的第一指令,将第二数据块分块为数据块和第三数据块;以及复制第二数据块的标签历史以形成用于数据块的标签历史和用于第三数据块的标签历史。
示例21可以包括示例13-20中任何一个示例的主题,其中,标签的至少一部分指示数据块的大小。
示例22可以包括示例13-21中任何一个示例的主题,其中,标签的至少一部分指示数据块的数据类型。
示例23可以包括示例13-22中任何一个示例的主题,其中,处理器接收访问数据块的请求,该请求指示数据块的位置和第二标签;以及响应于确定第二标签与分配给数据块的标签相匹配,授权对所述数据块的访问。
示例24可以包括其上存储有代码的一个或多个非暂态计算机可读介质,其中,代码可执行以使机器响应于请求存储器堆操作的第一指令:识别存储器堆的数据块;访问用于数据块的标签历史,该标签历史包括先前分配给数据块的多个标签;将标签分配给数据块,其中,分配标签包括:验证标签与标签历史的多个标签中的任何一个标签都不匹配;以及提供分配的标签和对数据块位置的引用。
示例25可以包括示例24的主题,其中,将标签分配给数据块还包括:验证标签与与数据块相邻的数据块的标签不匹配。
示例26可以包括示例24-25中任何一个示例的主题,其中,所请求的存储器堆操作是存储器分配操作。
示例27可以包括示例24-25中任何一个示例的主题,其中,所请求的存储器堆操作是存储器释放操作。
示例28可以包括示例24-27中任何一个示例的主题,其中,该代码可执行以使机器:响应于请求第二存储器堆操作的第二指令:识别存储器堆的第二数据块;访问用于第二数据块的标签历史,该标签历史包括先前分配给第二数据块的多个标签;以及响应于确定没有标签可用于第二数据块来隔离第二数据块,所述确定没有标签可用于第二数据块至少部分地基于用于第二数据块的标签历史。
示例29可以包括示例24-28中任何一个示例的主题,其中,该代码可执行以使机器响应于加密密钥的切换而重置标签历史。
示例30可以包括示例24-29中任何一个示例的主题,其中,代码可执行以响应于请求存储器堆操作的第一指令,对多个数据块进行碎片整理以形成数据块;以及组合多个数据块的标签历史以形成用于数据块的标签历史。
示例31可以包括示例24-29中任何一个示例的主题,其中,代码可执行以响应于请求存储器堆操作的第一指令,将第二数据块分块为数据块和第三数据块;以及复制第二数据块的标签历史以形成用于数据块的标签历史和用于第三数据块的标签历史。
示例32可以包括示例24-31中任何一个示例的主题,其中,标签的至少一部分指示数据块的大小。
示例33可以包括示例24-32中任何一个示例的主题,其中,标签的至少一部分指示数据块的数据类型。
示例34可以包括示例24-33中任何一个示例的主题,其中,代码可执行以使机器接收访问数据块的请求,该请求指示数据块的位置和第二标签;以及响应于确定第二标签与分配给数据块的标签相匹配,授权对所述数据块的访问。
示例35可以包括示例1-12中任何一个示例的主题,其中,堆管理器将请求第一加密标签与数据块的第一子部分的关联以及请求第二加密标签与数据块的第二子部分的关联,其中,第一加密标签包括基于第一子部分的地址加密的分配标签,并且其中,第二加密标签包括基于第二子部分的地址加密的分配标签。
示例36可以包括示例35的主题,其中,第一子部分的地址和第二子部分的地址每个都包括加密编码的地址位。
示例37可以包括示例13-23中任何一个示例的主题,还包括:将请求第一加密标签与数据块的第一子部分的关联,以及请求第二加密标签与数据块的第二子部分的关联,其中,第一加密标签包括基于第一子部分的地址加密的分配标签,并且其中,第二加密标签包括基于第二子部分的地址加密的分配标签。
示例38可以包括示例37的主题,其中,第一子部分的地址和第二子部分的地址每个都包括加密编码的地址位。
示例39可以包括示例24-34中任何一个示例的主题,其中,代码可执行以使机器请求第一加密标签与数据块的第一子部分的关联,并请求第二加密标签与数据块的第二子部分的关联,其中,第一加密标签包括基于第一子部分的地址加密的分配标签,并且其中,第二加密标签包括基于第二子部分的地址加密的分配标签。
示例40可以包括示例39的主题,其中,第一子部分的地址和第二子部分的地址每个都包括加密编码的地址位。

Claims (27)

1.一种处理器,包括:
解码器,对请求存储器堆操作的第一指令进行解码;以及
实现堆管理器的电路,所述堆管理器用于:
响应于请求所述存储器堆操作的所述第一指令:
识别存储器堆的数据块;
访问用于所述数据块的标签历史,所述标签历史包括先前分配给所述数据块的多个标签;
将标签分配给所述数据块,其中,分配所述标签包括:验证所述标签与所述标签历史的所述多个标签中的任何一个标签都不匹配;以及
提供所述分配的标签和对所述数据块位置的引用。
2.根据权利要求1所述的处理器,其中,将所述标签分配给所述数据块还包括:验证所述标签和与所述数据块相邻的数据块的标签不匹配。
3.根据权利要求1-2任意一项所述的处理器,其中,所请求的存储器堆操作是存储器分配操作。
4.根据权利要求1-2任意一项所述的处理器,其中,所请求的存储器堆操作是存储器释放操作。
5.根据权利要求1-4任意一项所述的处理器,其中:
所述解码器对请求第二存储器堆操作的第二指令进行解码;以及
所述堆管理器用于:
响应于请求所述第二存储器堆操作的所述第二指令:
识别所述存储器堆的第二数据块;
访问用于所述第二数据块的标签历史,所述标签历史包括先前分配给所述第二数据块的多个标签;以及
响应于确定没有标签可用于所述第二数据块来隔离所述第二数据块,所述确定没有标签可用于所述第二数据块至少部分地基于用于所述第二数据块的所述标签历史。
6.根据权利要求1-5任意一项所述的处理器,其中,所述堆管理器还用于:响应于加密密钥中的切换而重置所述标签历史。
7.根据权利要求1-6任意一项所述的处理器,其中,所述堆管理器用于:
响应于请求所述存储器堆操作的所述第一指令,对多个数据块进行碎片整理以形成所述数据块;以及
组合所述多个数据块的标签历史以形成用于所述数据块的所述标签历史。
8.根据权利要求1-6任意一项所述的处理器,其中,所述堆管理器用于:
响应于请求所述存储器堆操作的所述第一指令,将第二数据块分块为所述数据块和第三数据块;以及
复制所述第二数据块的标签历史以形成用于所述数据块的所述标签历史和用于所述第三数据块的标签历史。
9.根据权利要求1-8任意一项所述的处理器,其中,所述标签的至少一部分指示所述数据块的大小。
10.根据权利要求1-9任意一项所述的处理器,其中,所述标签的至少一部分指示所述数据块的数据类型。
11.根据权利要求1-10任意一项所述的处理器,其中,所述处理器用于:
接收访问所述数据块的请求,所述请求指示所述数据块的所述位置和第二标签;以及
响应于确定所述第二标签与分配给所述数据块的所述标签相匹配,授权对所述数据块的访问。
12.根据权利要求1-11任意一项所述的处理器,其还包括以下中的一项或多项:可通信地耦合到所述处理器的电池,可通信地耦合到所述处理器的显示器,或可通信地耦合到所述处理器的网络接口。
13.根据权利要求1-12任意一项所述的处理器,其中,所述堆管理器用于请求第一加密标签与所述数据块的第一子部分的关联以及请求第二加密标签与所述数据块的第二子部分的关联,其中,所述第一加密标签包括基于所述第一子部分的地址加密的所述分配标签,并且其中,所述第二加密标签包括基于所述第二子部分的地址加密的所述分配标签。
14.根据权利要求13所述的处理器,其中,所述第一子部分的所述地址和所述第二子部分的所述地址各自包括加密编码的地址位。
15.一种方法,包括:
响应于请求存储器堆操作的第一指令:
识别存储器堆的数据块;
访问用于所述数据块的标签历史,所述标签历史包括先前分配给所述数据块的多个标签;
将标签分配给所述数据块,其中,分配所述标签包括:验证所述标签与所述标签历史的所述多个标签中的任何一个标签都不匹配;以及
提供所述分配的标签和对所述数据块位置的引用。
16.根据权利要求15所述的方法,其中将标签分配给所述数据块还包括:验证所述标签和与所述数据块相邻的数据块的标签不匹配。
17.根据权利要求15-16任意一项所述的方法,其中,所请求的存储器堆操作是存储器分配操作。
18.根据权利要求15-16任意一项所述的方法,所请求的存储器堆操作是存储器释放操作。
19.根据权利要求15-18任意一项所述的方法,其中所述方法还包括:
响应于请求所述第二存储器堆操作的所述第二指令:
识别所述存储器堆的第二数据块;
访问用于所述第二数据块的标签历史,所述标签历史包括先前分配给所述第二数据块的多个标签;以及
响应于确定没有标签可用于所述第二数据块来隔离所述第二数据块,所述确定没有标签可用于所述第二数据块至少部分地基于用于所述第二数据块的所述标签历史。
20.根据权利要求15-19任意一项所述的方法,所述方法还包括:响应于加密密钥的切换而重置标签历史。
21.根据权利要求15-20任意一项所述的方法,还包括:
响应于请求所述存储器堆操作的所述第一指令,对多个数据块进行碎片整理以形成所述数据块;以及
组合所述多个数据块的标签历史以形成用于所述数据块的所述标签历史。
22.根据权利要求15-20任意一项所述的方法,还包括:
响应于请求所述存储器堆操作的所述第一指令,将第二数据块分块为所述数据块和第三数据块;以及
复制所述第二数据块的标签历史以形成用于所述数据块的所述标签历史和用于所述第三数据块的标签历史。
23.根据权利要求15-22任意一项所述的方法,其中,标签的至少一部分指示数据块的大小。
24.根据权利要求15-23任意一项所述的方法,其中,标签的至少一部分指示数据块的数据类型。
25.根据权利要求15-24任意一项所述的方法,还包括:
接收访问数据块的请求,该请求指示数据块的位置和第二标签;以及
响应于确定第二标签与分配给数据块的标签相匹配,授权对所述数据块的访问。
26.一种系统,包括执行权利要求14-25中任一项的方法的装置。
27.根据权利要求26所述的系统,其中,所述装置包括机器可读代码,所述机器可读代码在被执行时使机器执行根据权利要求14-25中任一项所述的方法的一个或多个步骤。
CN202010211610.1A 2019-06-29 2020-03-24 用于存储器标记的低存储器开销堆管理 Pending CN112149143A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201962868884P 2019-06-29 2019-06-29
US62/868,884 2019-06-29
US16/723,871 2019-12-20
US16/723,871 US11768946B2 (en) 2019-06-29 2019-12-20 Low memory overhead heap management for memory tagging

Publications (1)

Publication Number Publication Date
CN112149143A true CN112149143A (zh) 2020-12-29

Family

ID=70159013

Family Applications (7)

Application Number Title Priority Date Filing Date
CN202010211440.7A Pending CN112149188A (zh) 2019-06-29 2020-03-24 支持加密计算的微处理器流水线电路
CN202010211610.1A Pending CN112149143A (zh) 2019-06-29 2020-03-24 用于存储器标记的低存储器开销堆管理
CN202010223442.8A Pending CN112149145A (zh) 2019-06-29 2020-03-26 基于不变指针的数据加密
CN202010224151.0A Pending CN112149148A (zh) 2019-06-29 2020-03-26 计算环境中存储器隔间的密码隔离
CN202010223760.4A Pending CN112149147A (zh) 2019-06-29 2020-03-26 用于密码计算的隐式完整性
CN202010224565.3A Pending CN112149149A (zh) 2019-06-29 2020-03-26 基于指针的数据加密
CN202010227190.6A Pending CN112149150A (zh) 2019-06-29 2020-03-27 用于密码计算的密钥管理

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN202010211440.7A Pending CN112149188A (zh) 2019-06-29 2020-03-24 支持加密计算的微处理器流水线电路

Family Applications After (5)

Application Number Title Priority Date Filing Date
CN202010223442.8A Pending CN112149145A (zh) 2019-06-29 2020-03-26 基于不变指针的数据加密
CN202010224151.0A Pending CN112149148A (zh) 2019-06-29 2020-03-26 计算环境中存储器隔间的密码隔离
CN202010223760.4A Pending CN112149147A (zh) 2019-06-29 2020-03-26 用于密码计算的隐式完整性
CN202010224565.3A Pending CN112149149A (zh) 2019-06-29 2020-03-26 基于指针的数据加密
CN202010227190.6A Pending CN112149150A (zh) 2019-06-29 2020-03-27 用于密码计算的密钥管理

Country Status (3)

Country Link
US (11) US11580234B2 (zh)
EP (7) EP3757833B1 (zh)
CN (7) CN112149188A (zh)

Families Citing this family (108)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9378560B2 (en) * 2011-06-17 2016-06-28 Advanced Micro Devices, Inc. Real time on-chip texture decompression using shader processors
US11212097B2 (en) * 2015-05-17 2021-12-28 Gideon Samid Mixed unary cryptography
US11843597B2 (en) * 2016-05-18 2023-12-12 Vercrio, Inc. Automated scalable identity-proofing and authentication process
US11321471B2 (en) * 2017-12-18 2022-05-03 Beijing Sankuai Online Technology Co., Ltd Encrypted storage of data
WO2019152805A1 (en) 2018-02-02 2019-08-08 Dover Microsystems, Inc. System and method for translating mapping policy into code
TW201945971A (zh) 2018-04-30 2019-12-01 美商多佛微系統公司 用於檢查安全性能的系統和方法
US10860709B2 (en) 2018-06-29 2020-12-08 Intel Corporation Encoded inline capabilities
US11106441B2 (en) * 2018-09-14 2021-08-31 Microsoft Technology Licensing, Llc Secure device-bound edge workload delivery
WO2020097177A1 (en) 2018-11-06 2020-05-14 Dover Microsystems, Inc. Systems and methods for stalling host processor
US11841956B2 (en) 2018-12-18 2023-12-12 Dover Microsystems, Inc. Systems and methods for data lifecycle protection
US11212085B2 (en) * 2019-03-29 2021-12-28 Intel Corporation Technologies for accelerated hierarchical key caching in edge systems
KR102266342B1 (ko) * 2019-05-27 2021-06-16 고려대학교 산학협력단 소프트웨어 보안을 위한 메모리 데이터의 암호화 및 복호화 방법, 이를 수행하기 위한 기록매체 및 장치
US11403234B2 (en) 2019-06-29 2022-08-02 Intel Corporation Cryptographic computing using encrypted base addresses and used in multi-tenant environments
US11575504B2 (en) 2019-06-29 2023-02-07 Intel Corporation Cryptographic computing engine for memory load and store units of a microarchitecture pipeline
US11580234B2 (en) 2019-06-29 2023-02-14 Intel Corporation Implicit integrity for cryptographic computing
US11250165B2 (en) 2019-12-20 2022-02-15 Intel Corporation Binding of cryptographic operations to context or speculative execution restrictions
GB2601666B (en) * 2019-08-06 2023-04-26 Ictk Holdings Co Ltd Processor, processor operation method and electronic device comprising same
US11386101B2 (en) 2019-08-08 2022-07-12 Cisco Technology, Inc. Systems and methods for fuzzy search without full text
US11558312B2 (en) 2019-08-09 2023-01-17 Oracle International Corporation System and method for supporting a usage calculation process in a cloud infrastructure environment
US11546271B2 (en) 2019-08-09 2023-01-03 Oracle International Corporation System and method for tag based request context in a cloud infrastructure environment
US20210049036A1 (en) * 2019-08-13 2021-02-18 Facebook Technologies, Llc Capability Space
WO2021034753A2 (en) * 2019-08-16 2021-02-25 The Regents Of The University Of Michigan Thwarting control plane attacks with displaced and dilated address spaces
US11424920B2 (en) 2019-08-19 2022-08-23 Red Hat, Inc. Proof-of-work key wrapping for cryptographically controlling data access
US11303437B2 (en) 2019-08-19 2022-04-12 Red Hat, Inc. Proof-of-work key wrapping with key thresholding
US11411728B2 (en) 2019-08-19 2022-08-09 Red Hat, Inc. Proof-of-work key wrapping with individual key fragments
US11436352B2 (en) 2019-08-19 2022-09-06 Red Hat, Inc. Proof-of-work key wrapping for restricting data execution based on device capabilities
US11316839B2 (en) 2019-08-19 2022-04-26 Red Hat, Inc. Proof-of-work key wrapping for temporally restricting data access
US11411938B2 (en) 2019-08-19 2022-08-09 Red Hat, Inc. Proof-of-work key wrapping with integrated key fragments
US11271734B2 (en) * 2019-08-19 2022-03-08 Red Hat, Inc. Proof-of-work key wrapping for verifying device capabilities
US11294715B2 (en) 2019-08-28 2022-04-05 Marvell Asia Pte, Ltd. System and method for queuing work within a virtualized scheduler based on in-unit accounting of in-unit entries
US11397621B2 (en) 2019-08-30 2022-07-26 Oracle International Corporation System and method for service limit increase for a multi-tenant cloud infrastructure environment
US11409553B1 (en) * 2019-09-26 2022-08-09 Marvell Asia Pte, Ltd. System and method for isolating work within a virtualized scheduler using tag-spaces
US11681806B2 (en) * 2019-10-15 2023-06-20 International Business Machines Corporation Protecting against out-of-bounds buffer references
US12079197B2 (en) 2019-10-18 2024-09-03 Dover Microsystems, Inc. Systems and methods for updating metadata
US11520878B2 (en) * 2019-11-26 2022-12-06 Red Hat, Inc. Using a trusted execution environment for a proof-of-work key wrapping scheme that restricts execution based on device capabilities
US11263310B2 (en) * 2019-11-26 2022-03-01 Red Hat, Inc. Using a trusted execution environment for a proof-of-work key wrapping scheme that verifies remote device capabilities
EP4083837A4 (en) * 2020-01-14 2023-01-04 Huawei Technologies Co., Ltd. SAFETY ISOLATION METHOD AND DEVICE, AND COMPUTER SYSTEM
US11176058B2 (en) * 2020-01-22 2021-11-16 Arm Limited Address decryption for memory storage
JP7310938B2 (ja) * 2020-01-28 2023-07-19 日本電信電話株式会社 暗号システム、暗号化方法、復号方法及びプログラム
US11216366B2 (en) * 2020-02-13 2022-01-04 Intel Corporation Security check systems and methods for memory allocations
WO2021162439A1 (en) * 2020-02-14 2021-08-19 Samsung Electronics Co., Ltd. Electronic device performing restoration on basis of comparison of constant value and control method thereof
US11249976B1 (en) 2020-02-18 2022-02-15 Wells Fargo Bank, N.A. Data structures for computationally efficient data promulgation among devices in decentralized networks
US11500981B2 (en) * 2020-03-24 2022-11-15 Microsoft Technology Licensing, Llc Shadow stack enforcement range for dynamic code
US11861364B2 (en) * 2020-03-24 2024-01-02 Microsoft Technology Licensing, Llc Circular shadow stack in audit mode
US11379579B2 (en) * 2020-03-24 2022-07-05 Microsoft Technology Licensing, Llc Shadow stack violation enforcement at module granularity
US11429580B2 (en) 2020-06-25 2022-08-30 Intel Corporation Collision-free hashing for accessing cryptographic computing metadata and for cache expansion
US11070621B1 (en) 2020-07-21 2021-07-20 Cisco Technology, Inc. Reuse of execution environments while guaranteeing isolation in serverless computing
WO2022051189A1 (en) * 2020-09-01 2022-03-10 Intel Corporation Creating, using, and managing protected cryptography keys
US11494356B2 (en) * 2020-09-23 2022-11-08 Salesforce.Com, Inc. Key permission distribution
US11816228B2 (en) * 2020-09-25 2023-11-14 Advanced Micro Devices, Inc. Metadata tweak for channel encryption differentiation
US11928472B2 (en) 2020-09-26 2024-03-12 Intel Corporation Branch prefetch mechanisms for mitigating frontend branch resteers
US11886332B2 (en) 2020-10-30 2024-01-30 Universitat Politecnica De Valencia Dynamic memory allocation methods and systems
CN112492580B (zh) * 2020-11-25 2023-08-18 北京小米移动软件有限公司 信息处理方法及装置、通信设备及存储介质
US11604740B2 (en) * 2020-12-01 2023-03-14 Capital One Services, Llc Obfuscating cryptographic material in memory
US12008149B2 (en) 2020-12-16 2024-06-11 International Business Machines Corporation Method and system for on demand control of hardware support for software pointer authentification in a computing system
US11797713B2 (en) 2020-12-16 2023-10-24 International Business Machines Corporation Systems and methods for dynamic control of a secure mode of operation in a processor
US12032485B2 (en) * 2020-12-23 2024-07-09 Intel Corporation 64-bit virtual addresses having metadata bit(s) and canonicality check that does not fail due to non-canonical values of metadata bit(s)
WO2022133860A1 (en) * 2020-12-24 2022-06-30 Intel Corporation Key management for crypto processors attached to other processing units
US20210120077A1 (en) * 2020-12-26 2021-04-22 Intel Corporation Multi-tenant isolated data regions for collaborative platform architectures
US20210117341A1 (en) * 2020-12-26 2021-04-22 Intel Corporation Cache line slot level encryption based on context information
US11625337B2 (en) * 2020-12-26 2023-04-11 Intel Corporation Encoded pointer based data encryption
US11580035B2 (en) * 2020-12-26 2023-02-14 Intel Corporation Fine-grained stack protection using cryptographic computing
US11669625B2 (en) 2020-12-26 2023-06-06 Intel Corporation Data type based cryptographic computing
US11755500B2 (en) 2020-12-26 2023-09-12 Intel Corporation Cryptographic computing with disaggregated memory
WO2022139850A1 (en) * 2020-12-26 2022-06-30 Intel Corporation Cryptographic computing including enhanced cryptographic addresses
CN112738219B (zh) * 2020-12-28 2022-06-10 中国第一汽车股份有限公司 程序运行方法、装置、车辆及存储介质
EP4248323B1 (en) * 2021-02-12 2024-08-21 Huawei Technologies Co., Ltd. Low overhead active mitigation of security vulnerabilities by memory tagging
US20220261509A1 (en) * 2021-02-13 2022-08-18 Intel Corporation Region-based deterministic memory safety
US11223489B1 (en) 2021-02-23 2022-01-11 Garantir LLC Advanced security control implementation of proxied cryptographic keys
EP4060537A1 (en) * 2021-03-17 2022-09-21 Secure Thingz Limited A method and system for securely provisioning electronic devices
US11972126B2 (en) 2021-03-26 2024-04-30 Intel Corporation Data relocation for inline metadata
US11218317B1 (en) 2021-05-28 2022-01-04 Garantir LLC Secure enclave implementation of proxied cryptographic keys
US11418329B1 (en) 2021-05-28 2022-08-16 Garantir LLC Shared secret implementation of proxied cryptographic keys
US12008150B2 (en) * 2021-06-24 2024-06-11 International Business Machines Corporation Encrypted data processing design including cleartext register files
US11868275B2 (en) 2021-06-24 2024-01-09 International Business Machines Corporation Encrypted data processing design including local buffers
US20230029331A1 (en) * 2021-07-26 2023-01-26 Microsoft Technology Licensing, Llc Dynamically allocatable physically addressed metadata storage
WO2023025370A1 (en) * 2021-08-24 2023-03-02 Huawei Technologies Co., Ltd. Control flow integrity
CN113722702A (zh) * 2021-09-01 2021-11-30 上海兆芯集成电路有限公司 具备分组密码算法的处理器及其处理方法
US11502827B1 (en) 2021-09-03 2022-11-15 Garantir LLC Exporting remote cryptographic keys
WO2023034586A1 (en) * 2021-09-03 2023-03-09 Dover Microsystems, Inc. Systems and methods for on-demand loading of metadata
JP2023039697A (ja) 2021-09-09 2023-03-22 キオクシア株式会社 メモリシステム
US11372969B1 (en) * 2021-09-17 2022-06-28 Polyverse Corporation Randomized canary and shadow stack for JIT-ROP defense
US11954045B2 (en) 2021-09-24 2024-04-09 Intel Corporation Object and cacheline granularity cryptographic memory integrity
CN118614039A (zh) * 2021-11-24 2024-09-06 海岛科技有限公司 企业浏览器使用的实施
US20220100911A1 (en) * 2021-12-10 2022-03-31 Intel Corporation Cryptographic computing with legacy peripheral devices
US20220114285A1 (en) * 2021-12-22 2022-04-14 Intel Corporation Data oblivious cryptographic computing
EP4207679A1 (en) * 2021-12-31 2023-07-05 G-Innovations Viet Nam Joint Stock Company Method, mobile equipment, and system for keystream protection
CN114357488B (zh) * 2022-01-04 2022-09-16 深圳市智百威科技发展有限公司 一种数据加密系统及方法
US20230251782A1 (en) * 2022-02-10 2023-08-10 Macronix International Co., Ltd. Memory device and associated control method
WO2023164167A2 (en) * 2022-02-25 2023-08-31 Cryptography Research, Inc. Techniques and devices for configurable memory encryption and authentication
US20220179949A1 (en) * 2022-02-28 2022-06-09 Intel Corporation Compiler-directed selection of objects for capability protection
US12008374B2 (en) 2022-03-16 2024-06-11 Intel Corporation Cryptographic enforcement of borrow checking
US20220214881A1 (en) * 2022-03-16 2022-07-07 Intel Corporation Ratchet pointers to enforce byte-granular bounds checks on multiple views of an object
US12039033B2 (en) 2022-03-16 2024-07-16 Intel Corporation Cryptographic enforcement of borrow checking across groups of pointers
US11836094B2 (en) * 2022-03-21 2023-12-05 Intel Corporation Cryptographic data objects page conversion
US11789737B2 (en) 2022-03-24 2023-10-17 Intel Corporation Capability-based stack protection for software fault isolation
US12045174B2 (en) 2022-03-25 2024-07-23 Intel Corporation Tagless implicit integrity with multi-perspective pattern search
CN114968088B (zh) * 2022-04-08 2023-09-05 中移互联网有限公司 文件存储方法、文件读取方法及装置
WO2023212149A1 (en) * 2022-04-28 2023-11-02 Dover Microsystems, Inc. Systems and methods for enforcing encoded policies
US11949593B2 (en) * 2022-05-10 2024-04-02 Cisco Technology, Inc. Stateless address translation at an autonomous system (AS) boundary for host privacy
US20230418478A1 (en) * 2022-06-23 2023-12-28 Nxp B.V. Tweakable block cipher encryption using buffer identifier and memory address
TWI816456B (zh) * 2022-06-30 2023-09-21 新唐科技股份有限公司 密碼裝置及其密碼方法
EP4325387A1 (de) * 2022-08-19 2024-02-21 Steen Harbach AG Verfahren zum bereitstellen eines digitalen schlüssels
US20240104013A1 (en) * 2022-09-28 2024-03-28 Intel Corporation Deterministic adjacent overflow detection for slotted memory pointers
US20240129264A1 (en) * 2022-10-14 2024-04-18 Oracle International Corporation Managing digital message transmission via a proxy digital mailbox
US20240193178A1 (en) * 2022-12-12 2024-06-13 Maxlinear, Inc. Data transform acceleration using metadata stored in accelerator memory
US20240202859A1 (en) * 2022-12-20 2024-06-20 Tencent America LLC Apparatus and method for a framework for gpu-driven data loading
CN117667423B (zh) * 2023-12-21 2024-08-09 摩尔线程智能科技(北京)有限责任公司 编解码器访问存储设备的方法、系统、装置、设备和介质

Family Cites Families (105)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6570989B1 (en) 1998-04-27 2003-05-27 Matsushita Electric Industrial Co., Ltd. Cryptographic processing apparatus, cryptographic processing method, and storage medium storing cryptographic processing program for realizing high-speed cryptographic processing without impairing security
AU2001269086A1 (en) 2000-07-04 2002-01-14 Koninklijke Philips Electronics N.V. Substitution-box for symmetric-key ciphers
US7684565B2 (en) 2001-01-16 2010-03-23 General Instrument Corporation System for securely communicating information packets
JP4199937B2 (ja) 2001-03-06 2008-12-24 株式会社日立製作所 耐タンパー暗号処理方法
US7043017B2 (en) 2001-09-13 2006-05-09 Freescale Semiconductor, Inc. Key stream cipher device
US6792551B2 (en) * 2001-11-26 2004-09-14 Intel Corporation Method and apparatus for enabling a self suspend mode for a processor
US6694401B2 (en) * 2001-12-28 2004-02-17 Intel Corporation Method and apparatus for executing real-mode interrupts from within extended SMRAM handler
US20030149869A1 (en) 2002-02-01 2003-08-07 Paul Gleichauf Method and system for securely storing and trasmitting data by applying a one-time pad
US7793286B2 (en) * 2002-12-19 2010-09-07 Intel Corporation Methods and systems to manage machine state in virtual machine operations
US7225298B2 (en) 2003-04-11 2007-05-29 Sun Microsystems, Inc. Multi-node computer system in which networks in different nodes implement different conveyance modes
US8024526B2 (en) 2003-04-11 2011-09-20 Oracle America, Inc. Multi-node system with global access states
US20070152854A1 (en) * 2005-12-29 2007-07-05 Drew Copley Forgery detection using entropy modeling
JP2007235323A (ja) 2006-02-28 2007-09-13 Toshiba Corp 高度機密情報の保存/記録方法、高度機密情報を利用する再生装置および高度機密情報を格納するメモリ
EP1870829B1 (en) 2006-06-23 2014-12-03 Microsoft Corporation Securing software by enforcing data flow integrity
US20080080708A1 (en) 2006-09-29 2008-04-03 Mcalister Donald Kent Key wrapping system and method using encryption
US8155308B1 (en) 2006-10-10 2012-04-10 Marvell International Ltd. Advanced encryption system hardware architecture
US7907723B2 (en) 2006-10-11 2011-03-15 Frank Rubin Device, system and method for fast secure message encryption without key distribution
EP2080314A2 (en) 2006-10-25 2009-07-22 Spyrus, Inc. Method and system for deploying advanced cryptographic algorithms
US7761676B2 (en) 2006-12-12 2010-07-20 Intel Corporation Protecting memory by containing pointer accesses
US20080263117A1 (en) * 2007-04-23 2008-10-23 Gregory Gordon Rose Initial seed management for pseudorandom number generator
US8085934B1 (en) 2007-07-11 2011-12-27 Marvell International Ltd. Reverse cryptographic key expansion
US9424315B2 (en) 2007-08-27 2016-08-23 Teradata Us, Inc. Methods and systems for run-time scheduling database operations that are executed in hardware
JP5044848B2 (ja) 2007-12-04 2012-10-10 剣 竜沢 Pi++ストリーム暗号の暗号方法および復号方法、並びにパイ・データに基づく暗号算法及び復号化算法
EP2073430B1 (en) 2007-12-21 2013-07-24 Research In Motion Limited Methods and systems for secure channel initialization transaction security based on a low entropy shared secret
US20090172393A1 (en) 2007-12-31 2009-07-02 Haluk Kent Tanik Method And System For Transferring Data And Instructions Through A Host File System
US8879725B2 (en) 2008-02-29 2014-11-04 Intel Corporation Combining instructions including an instruction that performs a sequence of transformations to isolate one transformation
US8675868B1 (en) 2008-07-01 2014-03-18 Maxim Integrated Products, Inc. Encrypting an address-dependent value along with code to prevent execution or use of moved code
EP2332043B1 (en) * 2008-07-28 2018-06-13 Advanced Micro Devices, Inc. Virtualizable advanced synchronization facility
US8156385B2 (en) 2009-10-28 2012-04-10 International Business Machines Corporation Systems and methods for backward-compatible constant-time exception-protection memory
US8762343B2 (en) 2009-12-29 2014-06-24 Cleversafe, Inc. Dispersed storage of software
US9892283B2 (en) 2010-05-25 2018-02-13 Via Technologies, Inc. Decryption of encrypted instructions using keys selected on basis of instruction fetch address
US8645714B2 (en) 2010-05-25 2014-02-04 Via Technologies, Inc. Branch target address cache for predicting instruction decryption keys in a microprocessor that fetches and decrypts encrypted instructions
US9060174B2 (en) * 2010-12-28 2015-06-16 Fish Dive, Inc. Method and system for selectively breaking prediction in video coding
EP2506487B1 (en) 2011-03-30 2013-10-23 Nagravision S.A. Method of encryption with bidirectional difference propagation
US9201652B2 (en) 2011-05-03 2015-12-01 Qualcomm Incorporated Methods and apparatus for storage and translation of entropy encoded software embedded within a memory hierarchy
EP2653992A1 (en) 2012-04-17 2013-10-23 Itron, Inc. Microcontroller configured for external memory decryption
US9904788B2 (en) 2012-08-08 2018-02-27 Amazon Technologies, Inc. Redundant key management
US9037872B2 (en) 2012-12-17 2015-05-19 Advanced Micro Devices, Inc. Hardware based return pointer encryption
KR101795771B1 (ko) 2013-03-18 2017-11-09 한국전자통신연구원 정수 기반 준동형 암호 기법에서 압축 암복호화를 제공하는 시스템 및 방법
US9053216B1 (en) * 2013-08-09 2015-06-09 Datto, Inc. CPU register assisted virtual machine screenshot capture timing apparatuses, methods and systems
US10700856B2 (en) 2013-11-19 2020-06-30 Network-1 Technologies, Inc. Key derivation for a module using an embedded universal integrated circuit card
US9213653B2 (en) 2013-12-05 2015-12-15 Intel Corporation Memory integrity
KR101516574B1 (ko) 2014-02-21 2015-05-04 한국전자통신연구원 형태보존 암호화를 위한 가변길이 블록암호 장치 및 방법
US9703733B2 (en) 2014-06-27 2017-07-11 Intel Corporation Instructions and logic to interrupt and resume paging in a secure enclave page cache
KR101593169B1 (ko) 2014-08-20 2016-02-15 한국전자통신연구원 페이스텔 구조의 가변길이 블록암호 장치 및 방법
US9436847B2 (en) 2014-09-26 2016-09-06 Intel Corporation Cryptographic pointer address encoding
US9514285B2 (en) 2014-09-26 2016-12-06 Intel Corporation Creating stack position dependent cryptographic return address to mitigate return oriented programming attacks
US9830162B2 (en) 2014-12-15 2017-11-28 Intel Corporation Technologies for indirect branch target security
US9852301B2 (en) 2014-12-24 2017-12-26 Intel Corporation Creating secure channels between a protected execution environment and fixed-function endpoints
US9792229B2 (en) 2015-03-27 2017-10-17 Intel Corporation Protecting a memory
IN2015DE01753A (zh) 2015-06-11 2015-08-28 Pradeep Varma
US9893881B2 (en) 2015-06-29 2018-02-13 Intel Corporation Efficient sharing of hardware encryption pipeline for multiple security solutions
US10181946B2 (en) 2015-07-20 2019-01-15 Intel Corporation Cryptographic protection of I/O data for DMA capable I/O controllers
US10235176B2 (en) 2015-12-17 2019-03-19 The Charles Stark Draper Laboratory, Inc. Techniques for metadata processing
US9990249B2 (en) 2015-12-24 2018-06-05 Intel Corporation Memory integrity with error detection and correction
GB2547249B (en) 2016-02-12 2019-09-11 Advanced Risc Mach Ltd An apparatus and method for generating signed bounded pointers
US10585809B2 (en) 2016-04-01 2020-03-10 Intel Corporation Convolutional memory integrity
RU2634173C1 (ru) 2016-06-24 2017-10-24 Акционерное общество "Лаборатория Касперского" Система и способ обнаружения приложения удалённого администрирования
US11989332B2 (en) 2016-08-11 2024-05-21 Intel Corporation Secure public cloud with protected guest-verified host control
US20180082057A1 (en) 2016-09-22 2018-03-22 Intel Corporation Access control
US20180095906A1 (en) 2016-09-30 2018-04-05 Intel Corporation Hardware-based shared data coherency
US10261854B2 (en) 2016-09-30 2019-04-16 Intel Corporation Memory integrity violation analysis method and apparatus
US10235304B2 (en) 2016-10-01 2019-03-19 Intel Corporation Multi-crypto-color-group VM/enclave memory integrity method and apparatus
US11005650B2 (en) 2016-10-19 2021-05-11 Stripe, Inc. Systems and methods for data management and the use of salts and keys in data encryption/decryption
US10387305B2 (en) 2016-12-23 2019-08-20 Intel Corporation Techniques for compression memory coloring
US10469254B2 (en) 2017-03-29 2019-11-05 Intuit Inc. Method and system for hierarchical cryptographic key management
US10536266B2 (en) * 2017-05-02 2020-01-14 Seagate Technology Llc Cryptographically securing entropy for later use
US10877806B2 (en) 2017-06-14 2020-12-29 Intel Corporation Method and apparatus for securely binding a first processor to a second processor
US10657071B2 (en) 2017-09-25 2020-05-19 Intel Corporation System, apparatus and method for page granular, software controlled multiple key memory encryption
US10776525B2 (en) 2017-09-29 2020-09-15 Intel Corporation Multi-tenant cryptographic memory isolation
US10706164B2 (en) 2017-09-29 2020-07-07 Intel Corporation Crypto-enforced capabilities for isolation
US10769272B2 (en) 2017-09-29 2020-09-08 Intel Corporation Technology to protect virtual machines from malicious virtual machine managers
DE102018125786A1 (de) * 2017-11-17 2019-05-23 Intel Corporation Verschlüsselte Systemspeicherverwaltung
US11082432B2 (en) 2017-12-05 2021-08-03 Intel Corporation Methods and apparatus to support reliable digital communications without integrity metadata
US10929527B2 (en) 2017-12-20 2021-02-23 Intel Corporation Methods and arrangements for implicit integrity
CN110490008B (zh) 2018-05-14 2021-08-10 英韧科技(上海)有限公司 安全装置及安全芯片
IT201800005506A1 (it) 2018-05-18 2019-11-18 Sistema di elaborazione, relativo circuito integrato e procedimento
EP3752945B1 (en) 2018-05-21 2024-09-25 Google LLC Automatic generation of patches for security violations
US10871983B2 (en) 2018-05-31 2020-12-22 Intel Corporation Process-based multi-key total memory encryption
US11630920B2 (en) 2018-06-29 2023-04-18 Intel Corporation Memory tagging for side-channel defense, memory safety, and sandboxing
US10922439B2 (en) 2018-06-29 2021-02-16 Intel Corporation Technologies for verifying memory integrity across multiple memory regions
US10785028B2 (en) 2018-06-29 2020-09-22 Intel Corporation Protection of keys and sensitive data from attack within microprocessor architecture
US10860709B2 (en) 2018-06-29 2020-12-08 Intel Corporation Encoded inline capabilities
US11258861B2 (en) * 2018-06-29 2022-02-22 Intel Corporation Secure reporting of platform state information to a remote server
US11188639B2 (en) 2018-07-19 2021-11-30 Intel Corporation System, method and apparatus for automatic program compartmentalization
US11126733B2 (en) 2018-08-27 2021-09-21 Intel Corporation System, apparatus and method for configurable trusted input/output access from authorized software
US11991273B2 (en) 2018-09-04 2024-05-21 International Business Machines Corporation Storage device key management for encrypted host data
US10802910B2 (en) * 2018-09-17 2020-10-13 Intel Corporation System for identifying and correcting data errors
US11288213B2 (en) 2019-03-29 2022-03-29 Intel Corporation Memory protection with hidden inline metadata
US11398899B2 (en) 2019-05-28 2022-07-26 Shanghai Zhaoxin Semiconductor Co., Ltd. Data processing device and data processing method
US11295025B2 (en) 2019-05-31 2022-04-05 Nxp B.V Probabilistic memory safety using cryptography
US20190319781A1 (en) 2019-06-27 2019-10-17 Intel Corporation Deterministic Encryption Key Rotation
US20220382885A1 (en) 2019-06-29 2022-12-01 David M. Durham Cryptographic computing using encrypted base addresses and used in multi-tenant environments
US20200257827A1 (en) 2019-06-29 2020-08-13 Intel Corporation Memory write for ownership access in a core
US11403234B2 (en) 2019-06-29 2022-08-02 Intel Corporation Cryptographic computing using encrypted base addresses and used in multi-tenant environments
US11575504B2 (en) 2019-06-29 2023-02-07 Intel Corporation Cryptographic computing engine for memory load and store units of a microarchitecture pipeline
US20200145187A1 (en) 2019-12-20 2020-05-07 Intel Corporation Bit-length parameterizable cipher
US11580234B2 (en) 2019-06-29 2023-02-14 Intel Corporation Implicit integrity for cryptographic computing
US11250165B2 (en) 2019-12-20 2022-02-15 Intel Corporation Binding of cryptographic operations to context or speculative execution restrictions
US11411938B2 (en) 2019-08-19 2022-08-09 Red Hat, Inc. Proof-of-work key wrapping with integrated key fragments
US11784786B2 (en) 2020-08-14 2023-10-10 Intel Corporation Mitigating security vulnerabilities with memory allocation markers in cryptographic computing systems
US11669625B2 (en) 2020-12-26 2023-06-06 Intel Corporation Data type based cryptographic computing
US11625337B2 (en) 2020-12-26 2023-04-11 Intel Corporation Encoded pointer based data encryption
US11755500B2 (en) 2020-12-26 2023-09-12 Intel Corporation Cryptographic computing with disaggregated memory
US11580035B2 (en) 2020-12-26 2023-02-14 Intel Corporation Fine-grained stack protection using cryptographic computing

Also Published As

Publication number Publication date
US20200145199A1 (en) 2020-05-07
US20200117810A1 (en) 2020-04-16
US20200125770A1 (en) 2020-04-23
CN112149145A (zh) 2020-12-29
EP3757851A1 (en) 2020-12-30
US11620391B2 (en) 2023-04-04
US20240061943A1 (en) 2024-02-22
EP3757856B1 (en) 2023-06-14
EP3757833B1 (en) 2022-12-07
US11354423B2 (en) 2022-06-07
US11416624B2 (en) 2022-08-16
US12050701B2 (en) 2024-07-30
US11829488B2 (en) 2023-11-28
EP3757833A1 (en) 2020-12-30
US11580234B2 (en) 2023-02-14
CN112149147A (zh) 2020-12-29
EP3757851B1 (en) 2023-05-24
US20220138329A1 (en) 2022-05-05
EP3757856A1 (en) 2020-12-30
EP3757855A1 (en) 2020-12-30
EP3757850A1 (en) 2020-12-30
CN112149149A (zh) 2020-12-29
US20200125742A1 (en) 2020-04-23
EP3757852B1 (en) 2022-11-02
EP3757850B1 (en) 2023-05-03
EP3757854B1 (en) 2023-07-12
US20200125502A1 (en) 2020-04-23
CN112149188A (zh) 2020-12-29
CN112149148A (zh) 2020-12-29
EP3757852A1 (en) 2020-12-30
US20200125501A1 (en) 2020-04-23
US11768946B2 (en) 2023-09-26
CN112149150A (zh) 2020-12-29
US20200125769A1 (en) 2020-04-23
US11308225B2 (en) 2022-04-19
US20220300626A1 (en) 2022-09-22
US20200159676A1 (en) 2020-05-21
EP3757854A1 (en) 2020-12-30
US11321469B2 (en) 2022-05-03

Similar Documents

Publication Publication Date Title
US11768946B2 (en) Low memory overhead heap management for memory tagging
US11575504B2 (en) Cryptographic computing engine for memory load and store units of a microarchitecture pipeline
US11625337B2 (en) Encoded pointer based data encryption
US20200257827A1 (en) Memory write for ownership access in a core
US20200210070A1 (en) Defense against speculative side-channel analysis of a computer system
US11250165B2 (en) Binding of cryptographic operations to context or speculative execution restrictions
CN117332461A (zh) 利用隐藏内联元数据的存储器保护
CN112149114A (zh) 利用用于指示数据类型的隐藏内联元数据的存储器保护
CN114692130A (zh) 使用密码式计算的精细粒度式栈保护
US20220121447A1 (en) Hardening cpu predictors with cryptographic computing context information
US20220100907A1 (en) Cryptographic computing with context information for transient side channel security
US20210117341A1 (en) Cache line slot level encryption based on context information
US20240104027A1 (en) Temporal information leakage protection mechanism for cryptographic computing
US12032486B2 (en) Transient side-channel aware architecture for cryptographic computing

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