Hardware partition of cloud server
The cloud computing system addresses inefficiencies and security issues by partitioning computing resources using DVM and interrupt interposers, ensuring efficient and secure resource use without hypervisor intervention.
Patent Information
- Application Number
- JP2025127196
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2024-07-31
- Filing Date
- 2025-07-30
- Publication Date
- 2026-02-16
AI Technical Summary
Existing cloud computing environments face inefficiencies in resource allocation and security vulnerabilities, with bare-metal environments leading to wasted resources and VM environments exposing users to security risks through shared computing resources and hypervisor management.
A cloud computing system that statically partitions computing resources using processor cores, DVM interposers, and interrupt interposers to ensure secure and efficient use of resources by different users without hypervisor intervention.
Reduces wasted resources and eliminates security vulnerabilities by allowing users to utilize only requested resources and preventing inter-partition communication, enhancing security and resource efficiency.
Smart Images

Figure 2026026002000001_ABST
Abstract
Description
[Technical Field]
[0001] This specification relates generally to computing devices, and more particularly to hardware partitions of cloud servers. [Background technology]
[0002] Cloud computing involves network-based computing in which a collection of computing devices (e.g., servers, processing units, data storage devices) and software (e.g., computer programs, database tools) provide computational resources and data storage to remote end users. A cloud server typically includes hardware (e.g., processor devices, memory devices, IO devices, etc.) used to execute software running on the cloud server. Summary of the Invention
[0003] Disclosed herein are systems and methods for hardware partitioning of a cloud server. One aspect of the present disclosure includes a system. The system includes one or more processor cores. A first processor core of the one or more processor cores executes instructions to partition at least a portion of the one or more processor cores into one or more partitions. The system includes one or more distributed virtual memory (DVM) interposers. Each DVM interposer includes a respective identifier that identifies one of the one or more partitions. Each DVM interposer performs a preventative action in response to receiving a first DVM message including a partition identifier that differs from the partition identifier of the DVM interposer. The system includes one or more interrupt interposers. Each interrupt interposer is associated with one of the one or more processor cores. Each interposer prevents a first interrupt originating from the associated processor core from being provided to a processor core outside the partition of the associated processor core.
[0004] Another aspect of the present disclosure includes a method. The method includes dividing one or more processor cores into one or more partitions. The method includes configuring a DVM interposer to include a first partition identifier associated with a first partition of the one or more partitions. The method includes configuring the DVM interposer to perform a preventative action in response to receiving, at the DVM interposer, a first DVM message including a second partition identifier different from the first partition identifier. The method includes configuring an interrupt interposer to be associated with a first processor core of the one or more processor cores. The first processor core belongs to the first partition. The method includes configuring the interrupt interposer to prevent a first interrupt originating from the first processor core from being provided to a processor core outside the first partition.
[0005] Another aspect of the present disclosure includes a non-transitory computer-readable storage medium including instructions that, when executed by a processing device, cause the processing device to perform operations. The operations include configuring a DVM interposer to include a first partition identifier associated with a first partition of one or more partitions. The operations include configuring the DVM interposer to perform a preventative action in response to receiving a DVM message including a second partition identifier different from the first partition identifier. The operations include configuring an interrupt interposer to be associated with a first processor core of the one or more processor cores. The first processor core belongs to the first partition. The operations include preventing, at the interrupt interposer, a first interrupt originating from the first processor core from being provided to a processor core outside the first partition.
[0006] Aspects and embodiments of the present disclosure will be more fully understood from the following detailed description of various aspects and embodiments of the disclosure and from the accompanying drawings, which should not be construed to limit the disclosure to any particular aspect or embodiment, but are for purposes of illustration and understanding only. [Brief explanation of the drawings]
[0007] [Figure 1] 1 illustrates, in accordance with one or more embodiments, an exemplary computing device for a hardware partition of a cloud server in which some aspects of the present disclosure may be implemented. [Figure 2] 1 illustrates, in accordance with one or more embodiments, an exemplary computing device for a hardware partition of a cloud server in which certain components are divided into multiple partitions and in which some aspects of the present disclosure may be implemented. [Figure 3]1 illustrates, in accordance with one or more embodiments, a portion of an exemplary computing device for a hardware partition of a cloud server in which some aspects of the present disclosure may be implemented. [Figure 4] 1 shows a flowchart illustrating an exemplary method for practicing some aspects of the present disclosure, according to one or more embodiments. [Figure 5] 1 shows a flowchart illustrating an exemplary method for practicing some aspects of the present disclosure, according to one or more embodiments. [Figure 6] 1 shows a flowchart illustrating an exemplary method for practicing some aspects of the present disclosure, according to one or more embodiments. [Figure 7] 1 illustrates a block diagram of an exemplary computing device capable of creating hardware partitions for cloud servers, according to some embodiments of the present disclosure. DETAILED DESCRIPTION OF THE INVENTION
[0008] Cloud providers can offer cloud computing environments to customer end users. Cloud providers typically offer two types of cloud computing environments: bare metal cloud computing environments and virtual machine (VM) cloud computing environments. In a bare metal cloud environment, the cloud provider dedicates an entire cloud server to a customer end user. The customer end user can then use all of the cloud server's computing resources (e.g., processor devices, memory devices, input / output (IO) devices, etc.). A customer end user using a bare metal cloud environment does not share any of the computing resources with other customers of the cloud provider; however, the customer end user must typically pay for the entire cloud server even if the customer end user does not use all of the cloud server's computing resources.
[0009] In a VM cloud environment, a customer end user may select a desired computing resource configuration for a VM (e.g., number and type of processor devices, amount of memory, amount of storage capacity, type of IO devices, etc.), and the cloud provider may use a hypervisor to create and run the VM with the selected configuration. The hypervisor may run the VM on multiple cloud servers depending on the availability of computing resources. If the customer end user uses only a portion of the cloud server's hardware required by the VM, the VM may share the cloud server's computing resources with other customers' VMs, which may use the computing resources and be used as a vector for attacks against the customer end user's VM. Furthermore, VMs are managed by a hypervisor, which may use the computing resources of the cloud server(s) and be used as a vector for attacks against the customer end user's VM.
[0010] Aspects and embodiments of the present disclosure address the above deficiencies by, among other things, providing a cloud computing system that statically partitions the computing resources of a cloud server, such that a customer end user uses only the computing resources it requests (unlike a bare-metal cloud environment), and different cloud provider customers do not use the same computing resources or hypervisors (unlike a VM cloud environment). The system may include multiple processor cores. For example, one of the processor cores, such as a management core, may execute instructions (e.g., firmware) that may partition at least some of the other processor cores into one or more partitions. The instructions may configure the processor cores such that the processor cores cannot communicate with or cause actions to be performed on processor cores outside of their respective partitions.
[0011] In some implementations, a system includes one or more distributed virtual memory (DVM) interposers. The DVM interposers can be associated with partitions. The DVM interposers may include a partition identifier that identifies the partition associated with the DVM interposer and is unique to that partition. In response to the DVM interposer receiving an instruction (e.g., a transaction lookaside buffer (TLB) invalidation instruction) that includes a partition identifier that is different from the DVM interposer's partition identifier (which may indicate that the instruction originated from outside the partition), the DVM interposer can perform preventative action (e.g., an action that prevents the instruction from executing within the partition).
[0012] In some embodiments, the system includes one or more interrupt interposers. The interrupt interposers can be associated with processor cores. The interposers can prevent interrupts originating from the associated processor cores from being provided to processor cores outside the partition to which the associated processor core belongs. The system can include other components that prevent components of one partition from affecting other partitions. For example, instructions to partition a processor core can configure the processor core's system address map (SAM) so that the processor core can access only blocks of memory assigned to the partition to which the processor core belongs. The system may include instructions (e.g., firmware) that cause the processor core to emulate one or more IO devices such that there is logical separation of partitions with respect to the IO devices.
[0013] Some advantages of the present disclosure may result from or provide technical effects resulting from a technical solution to a technical problem. For example, one technical problem may relate to inefficient use of computing resources resulting from a bare-metal cloud environment in which a customer end user is allocated an entire cloud server but may not use all of the cloud server's computing resources. One technical solution to the technical problem may include using a system disclosed herein in which computing resources are partitioned for efficient use by different customer end users. As a result, wasted computing resources are reduced or eliminated. One technical problem may relate to a hypervisor using computing resources that would otherwise be used by the customer end user's software. One technical solution to the technical problem may include a system disclosed herein that does not use a hypervisor and allows the customer end user to use the computing resources. As a result, computing resources used by the customer end user instead of the cloud provider increase. Another technical problem may relate to security vulnerabilities in the hypervisor or processor cores, which can serve as a vector for attack. One technical solution to the technical problem may include a system as disclosed herein in which a hypervisor is not used and communications, interrupts, etc. from one partition are not prolonged or tolerated by other partitions. Consequently, such security vulnerabilities are reduced or eliminated.
[0014] 1 is a block diagram illustrating an exemplary computing device 100, according to some embodiments. The computing device 100 may include a computing device 100 used in a cloud computing system. For example, the computing device 100 may include a cloud server, a cloud system-on-chip (SoC), or any other computing device 100 that may be included in a cloud computing system.
[0015] A cloud computing system may include one or more computing devices (or portions of a cloud computing system) provided by a cloud provider to end users. End users may utilize portions of the cloud computing system to host content for use or access by other parties or to perform other computational tasks. In some implementations, the cloud computing system is configured to allow end users to use only portions of the computing device 100 (e.g., specific hardware, software, or other computer system resources). A cloud computing system may include a private cloud, a public cloud, or a hybrid cloud. A cloud computing system may provide Infrastructure as a Service (IaaS), Platform as a Service (PaaS), or Software as a Service (SaaS) computing. A cloud computing system may provide serverless computing.
[0016] In one embodiment, computing device 100 includes one or more processor cores 110A-110F. One or more of processor cores 110A-110F may include a respective system address map (SAM) 112A-112F. Computing device 100 may include one or more distributed virtual memory (DVM) interposers 114A-114F. Computing device 100 may include one or more interrupt interposers 116A-116N. Computing system 100 may include one or more memory devices 120A-120B. Although computing device 100 of FIG. 1 includes six each of processor cores 110A-110F, SAMs 112A-112F, DVM interposers 114A-114F, and interrupt interposers 116A-116F, computing device 100 may include other numbers of such components. The computing system 100 may include other numbers of memory devices 120A-120B.
[0017] In some implementations, processor core 110 includes an electronic device that executes instructions. Processor core 110 may include an arithmetic logic unit (ALU) for performing calculations, a control unit for fetching and decoding instructions, or registers for temporary data storage. Processor core 110A can operate independently or in cooperation with other processing cores 110B-110F. Processor core 110 may also be referred to as a "processing element" or "PE."
[0018] In one embodiment, a first processor core 110A of the one or more processor cores 110A-110F includes instructions to divide at least a portion of the computing resources of computing device 100 into one or more partitions. The computing resources that may belong to a partition may include processor core 110, SAM 112, DVM interposer 114, interrupt interposer 116, blocks of memory in memory device 120, or other computing resources. The first processor core 110A may include instructions to manage one or more partitions. The instructions may include firmware or other software. The first processor core 110A may be referred to as a “management core.”
[0019] In some implementations, instructions for partitioning one or more computing resources of computing device 100 may execute on an electronic device separate from computing device 100. The separate electronic device may be dedicated to partitioning one or more processor cores 110A-110F and managing one or more partitions. The instructions may execute on a microcontroller located on computing device 100 or in data communication with components of computing device 100.
[0020] In one or more embodiments, as used herein, a "partition" refers to a collection of computing resources configured by instruction of a management core to not affect computing resources of other partitions and / or to not be affected by communications from computing resources of other partitions. In one or more embodiments, a computing resource belongs to only one partition.
[0021] In some implementations, management core 110A partitions one or more processor cores 110A-110F in response to receiving commands, instructions, etc. from a management computing device of the cloud computing system. The management computing device may include a cloud management computing device, a hypervisor, or some other management computing device of the cloud computing system. The management computing device may provide the commands, instructions, etc. in response to an end user of the cloud computing system requesting cloud computing resources. The commands, instructions, etc. may include data specifying the configuration of the requested partition (e.g., number of processor cores 110, type of processor cores 110, processing capabilities, etc., amount of memory, amount of storage, etc.).
[0022] In one or more embodiments, the management core 110A is further configured to terminate a partition. The management core 110A can terminate a partition in response to receiving a command, instruction, etc. from the management computing device. Terminating a partition may include rebooting components of the partition. Rebooting components of a partition may include returning the components to a state as if the computing device 100 had been rebooted. For example, rebooting the processor core 110 may include clearing one or more caches or registers, the SAM 112, or other components of the processor core 110. Rebooting the DVM interposer 114 or the interrupt interposer 116 may include clearing data from such interposers 114, 116. Rebooting blocks of memory allocated to a partition may include clearing the blocks of memory (e.g., overwriting the blocks of memory with null or garbage values, etc.). The rebooted components of the partition can then be used as components in one or more other partitions (e.g., newly created partitions).
[0023] In some embodiments, processor core 110A on which instructions that divide one or more components of computing device 100 into one or more partitions execute includes processor core 110 dedicated to executing such instructions. Processor core 110A may not form part of any partition. In one or more embodiments, processor core 110A dedicated to executing instructions does not include an associated DVM interposer 114A or interrupt interposer 116. In some embodiments, a managing computing device of a cloud computing system selects a processor core 110 that is not currently in use or currently part of a partition as the processor core on which to execute the instructions.
[0024] In one embodiment, computing device 100 includes one or more SAMs 112A-112F. For example, as seen in FIG. 1, each processor core 110A-110F may include a respective SAM 112A-112F. SAM 112 may include one or more entries, each of which may include a block of memory and a corresponding channel of a mesh interconnect, which may lead to a memory block. Further details regarding SAMs 112A-112F are described below with respect to FIG. 2.
[0025] Computing device 100 may include one or more DVM interposers 114A-114F. DVM may include a memory management technique used in multiprocessor systems (such as computing device 100) to efficiently and transparently manage memory across multiple processing cores 110A-110F. DVM can create an abstraction of a single, unified memory space accessible to multiple processors, even if the physical memory is physically distributed across different locations (e.g., across memory devices 120A-120B). In some implementations, first processor core 110B sends DVM messages (sometimes referred to as “DVM operations” or “transactions”) to other processor cores 110C to maintain the DVM of computing device 100. DVM interposer 114 may include components located between two of the one or more processor cores 110A-110F. In one implementation, management core 110A configures DVM interposer 114B to be associated with first processor core 110B. Management core 110A may configure DVM interposer 114B to perform preventative action in response to DVM interposer 114B receiving a DVM message originating from outside the partition to which associated first processor core 110B belongs. Management core 110A may configure DVM interposer 114B to modify DVM messages from associated processor core 110B so that such DVM messages do not affect processor cores 110C-110F outside the originating partition. More information regarding DVM interposers 114A-114F is provided further below.
[0026] The computing device 100 may include one or more interrupt interposers 116A-116F. The interrupt interposer 116B may include components disposed between an associated processor core 110B and the other processor cores 110A, 110C-110F of one or more processor cores 110A-110F. The management core 110A may configure the interrupt interposer 116B to prevent a first interrupt originating from the associated processor core 110B from being provided to a processor core 110A, 110C-110F that is outside the partition of the associated processor core 110B. The interrupt may include a request to pause code currently being executed by the processor core 110B to process an event. The interrupt may include a hardware interrupt or a software interrupt (e.g., a software-generated interrupt (SGI)). More information regarding the interrupt interposers 116A-116F is described further below.
[0027] In one embodiment, memory device 120 may include a data storage device capable of storing data for use by at least some of one or more processor cores 110A-110F of computing device 100. Memory device 120 may include random access memory (RAM) or some other type of volatile data storage. In some embodiments, computing device 100 may include other types of computing resources (e.g., non-volatile data storage, IO devices, or other types of computing resources) that management core 110A may allocate (or allocate portions of) to partitions.
[0028] 2 illustrates exemplary computing device 100 partitioned by firmware in management core 110A. The firmware in processor core 110A divides the remaining processor cores 110B-110F into three partitions 202A-202C: (1) a first partition 202A that includes processor cores 110B-110C, DVM interposers 114B-114C, interrupt interposers 116B-116C, and blocks 0x00000000-0x37FFFFFF of memory in memory device 120A; 2 includes three partitions 220A-220C having different numbers of processor cores 110B-110F and different sizes of memory blocks, and the partitions 202A-220C may have different numbers of processor cores 110B-110F, memory block sizes, or other component configurations.
[0029] As described above, the SAM 112 may include one or more entries, each of which can map a block of memory to a corresponding destination in the mesh interconnect. A destination may lead to a corresponding block of memory. For example, a first processor core 110A may access four blocks in a first memory device 120A. The SAM 112A of the processor core 110A may be as follows: [Table 1]
[0030] In some implementations, computing device 100 includes a mesh interconnect. The mesh interconnect may include one or more channels from one or more processor cores 110A-110F to one or more memory blocks of memory devices 120A-120B. A single processor core 110A may include multiple channels from processor core 110A to different memory blocks of memory devices 120A-120B. In some implementations, channels from different processor cores 110A-110F lead to the same block of memory.
[0031] In some implementations, the SAM 112 is associated with a partition 202 of one or more partitions 202A-220C. For example, as described above, each processor core of one or more processor cores 110A-110F may include a respective SAM 112. In other examples, a subset of one or more processor cores 110A-110F of a partition 202 may include a respective SAM 112. In some implementations, the SAM 112 is stored on a separate electronic device assigned to the associated partition 202.
[0032] The SAM 112 can restrict memory access to one or more blocks of physical address space allocated to the partition 202 associated with the SAM 112. The physical address space can refer to memory, memory-mapped IO devices, or any other component to which a physical address can refer. In one embodiment, the management core 110A, which divides the processor cores 110B-110F into one or more partitions 202A-202C, configures the SAMs 112B-112F to include only entries to the blocks of memory allocated to the partition 202 associated with the SAMs 112B-112F. For example, as described above, the first partition 202A may include the processor cores 110B-110C, the DVM interposers 114B-114C, the interrupt interposers 116B-116C, and blocks 0x00000000-0x37FFFFFF of memory in the memory device 120A. The management core 110A can delete from the SAMs 112B-112C any entry that includes a memory address outside the memory block 0x00000000-0x37FFFFFF.
[0033] In some embodiments, by removing entries from SAM 112 that reference portions of memory not allocated to a partition 202, processor cores 112A-112F assigned to that partition 202 cannot access portions of memory allocated to other partitions 202 and therefore cannot interfere with memory allocated to other partitions 202.
[0034] In one embodiment, management core 110A, which divides computing resources into one or more partitions 202A-202C, includes management core 110A assigning a partition identifier to each DVM interposer of one or more DVM interposers 114A-114F. The partition identifier may include data that uniquely identifies a partition 202. DVM interposers 114A-114F that belong to the same partition 202 may each include the same partition identifier. In response to DVM interposer 114 receiving a DVM message that includes a partition identifier that differs from the partition identifier of DVM interposer 114, DVM interposer 114 can take preventative action.
[0035] In some implementations, DVM interposer 114B is configured to receive a DVM message from processor core 110B associated with DVM interposer 114B. DVM interposer 114B can insert into the DVM message a partition identifier of partition 202A associated with processor core 110B (e.g., a partition identifier assigned to DVM interposer 114B by management core 110A). DVM interposer 114B can then provide the DVM message to one or more other DVM interposers 114C-114F as specified in the DVM message.
[0036] In one or more embodiments, the DVM message includes a translation lookaside buffer (TLB) invalidation instruction. The processor core 110 may include a memory cache that stores recent translations of the DVM to physical memory, which may be referred to as a TLB. From time to time, a first processor core 110B interacting with the DVM may cause its own TLB or the TLBs of the other processor cores 110C-110F to expire. Thus, the first processor core 110B may send TLB invalidation instructions to the other processor cores 110C-110F to prevent the other processor cores 110C-110F from using expired data in their respective TLBs.
[0037] In one embodiment, the DVM interposer 114 receives a TLB invalidation command. The DVM interposer 114 can analyze the TLB invalidation command to identify a partition identifier included in the TLB invalidation command. In response to the partition identifier of the TLB invalidation command being different from the partition identifier assigned to the DVM interposer 114 (indicating that the TLB invalidation command originated from a processor core 110 outside the partition 202 of the DVM interposer 114), the DVM interposer 114 can take preventative action. The preventative action can include the DVM interposer 114 sending a completion response to the processor core 110 that sent the TLB invalidation command. The preventative action can include the DVM interposer 114 not providing the TLB invalidation command to the associated processor core 110.
[0038] In some implementations, the DVM message includes a cache invalidation instruction. The processor core 110 may include a memory cache that stores the contents of an external memory (e.g., a portion of the contents stored in the first memory device 120A). From time to time, the first processor core 110B interacting with the external memory may cause its own memory cache or the memory caches of the other processor cores 110C-110F to become outdated. Thus, the first processor core 110B may send cache invalidation instructions to the other processor cores 110C-110F to prevent the other processor cores 110C-110F from using outdated data in their respective caches.
[0039] In one embodiment, the DVM interposer 114 receives a cache invalidation command. The DVM interposer 114 can analyze the cache invalidation command to identify a partition identifier included in the cache invalidation command. In response to the partition identifier of the cache invalidation command being different from the partition identifier assigned to the DVM interposer 114 (indicating that the cache invalidation command originated from a processor core 110 outside of the partition 202 of the DVM interposer 114), the DVM interposer 114 can take preventative action. The preventative action can include the DVM interposer 114 sending a completion response to the processor core 110 that sent the cache invalidation command. The preventative action can include the DVM interposer 114 not providing the cache invalidation command to the associated processor core 110.
[0040] In one or more embodiments, the DVM message includes a branch predictor disable instruction. The processor core 110 may include a branch predictor, which may include a component that attempts to predict the outcome of a branch instruction before executing the branch instruction. At times, the first processor core 110B may send a branch predictor disable instruction to the other processor cores 110C-110F so that the other processor cores 110C-110F do not use predictions generated by their respective branch predictors or so that other data associated with the branch predictors is invalidated.
[0041] In one embodiment, the DVM interposer 114 receives a branch predictor disable instruction. The DVM interposer 114 can analyze the branch predictor disable instruction to identify a partition identifier included in the branch predictor disable instruction. In response to the partition identifier of the branch predictor disable instruction being different from the partition identifier assigned to the DVM interposer 114 (indicating that the branch predictor disable instruction originated from a processor core 110 outside the partition 202 of the DVM interposer 114), the DVM interposer 114 can take preventative action. The preventative action can include the DVM interposer 114 sending a completion response to the processor core 110 that sent the branch predictor disable instruction. The preventative action can include the DVM interposer 114 not providing the branch predictor disable instruction to the associated processor core 110.
[0042] In one or more embodiments, the DVM message includes a DVM synchronization command. The first processor core 110B can send a DVM synchronization command to the other processor core 110C to determine whether a previously issued DVM operation has completed. In some embodiments, the DVM interposer 114 receives the DVM synchronization command. The DVM interposer 114 can analyze the DVM synchronization command to identify a partition identifier included in the DVM synchronization command. In response to the partition identifier of the DVM synchronization command being different from the partition identifier assigned to the DVM interposer 114 (indicating that the DVM synchronization command originated from a processor core 110 outside the partition 202 of the DVM interposer 114), the DVM interposer 114 can perform a preventative action. The preventative action can include the DVM interposer 114 sending a completion response to the processor core 110 that sent the DVM synchronization command. The preventative action can include the DVM interposer 114 not providing the DVM synchronization command to the associated processor core 110.
[0043] In some embodiments, the preventative action includes DVM interposer 114 or associated processor cores 110B-110F notifying management core 110A of a DVM message originating from a processor core 110B-110F outside partition 202. Receiving a DVM message from outside partition 202 may indicate a security issue, and management core 110A can take one or more actions to correct the security issue. For example, management core 110A can analyze the DVM interposer 114 associated with the processor core 110 that sent the DVM message to determine whether the DVM interposer 114A-114F is misconfigured. Management core 110A can analyze software running on the processor core 110 that sent the DVM message to determine whether the software is malicious. Management core 110A can perform other security-related actions.
[0044] In one embodiment, management core 110A configuring interrupt interposer 116 includes configuring interrupt interposer 116 to store a processor core identifier for each processor core 110 in the partition 202 to which the interrupt interposer 116 belongs. The processor core identifier may include data that uniquely identifies the associated processor core 110 among the other processor cores 110 of computing device 100. For example, interrupt interposer 116B of FIG. 2 may store a processor core identifier for processor core 110B and a processor core identifier for processor core 110C. In some embodiments, interrupt interposer 116B does not store the processor core identifier for processor core 110B associated with interrupt interposer 116B. The management core 110A can configure the interrupt interposer 116B to prevent interrupts generated by the processor core 110B or 110C from being provided to the processor cores 110A, 110D-110F that are outside the partition 202A to which the processor core 110B or 110C belongs.
[0045] FIG. 3 illustrates a portion of a computing device 100 including processor cores 110B-110F and interrupt interposers 116B-116F. The computing device 100 may further include one or more interrupt distribution units 302. The interrupt distribution unit 302 may include components that provide routing or priority configuration for interrupts. The computing device 100 may also include one or more interrupt redistribution units 304B-304F. The processor core 110B may be associated with the interrupt redistribution unit 304. The interrupt redistribution unit 304 may include components that manage the prioritization or delivery of interrupts to the processor core 110B, store configuration data related to the interrupts, or assist the associated processor core 110B with other interrupt-related functions. The interrupt interposer 116B may be disposed between the interrupt redistribution unit 304B and the associated processor core 110B. In one embodiment, the processor core 110B provides a first interrupt request to the interrupt interposer 116B. The interrupt interposer 116B can generate one or more second interrupt requests based on the first interrupt request to prevent the interrupt from being provided to a processor core 110C-110F outside the partition 202 to which the processor core 110B that provided the first interrupt request belongs. The interrupt interposer 116B can send the one or more second interrupt requests to the interrupt redistribution device 304B associated with the processor core 110B. For each second interrupt request, the interrupt redistribution device 304B can generate an interrupt based on the respective interrupt request, which can provide one or more interrupts to the interrupt redistribution device 302, which can route the one or more interrupts to one or more destination processor cores 110C-110F.
[0046] In one embodiment, the first interrupt comprises a broadcast interrupt. The broadcast interrupt may comprise an interrupt configured to be sent to all processor cores 110A-110F of the computing device 100, all processor cores 110A-110F in an affinity cluster of the computing device 100, or some other group of processor cores 110A-110F. Preventing the interrupt interposer 116B from providing the first interrupt originating from the associated processor core 110B to processor cores 110A-110F outside the partition 202A of the associated processor core 110B may include the interrupt interposer 116B generating an interrupt request directed to each processor core 110C in the partition 202A of the associated processor core 110B (the interrupt interposer 116B may not generate an interrupt request directed to the associated processor core 110B). Thus, the interrupt interposer 116B can replace the broadcast interrupt request with multiple interrupt requests, each of which can be configured to send a corresponding second interrupt to each processor core 110C in the partition 202A.
[0047] In some implementations, the first interrupt includes a non-broadcast interrupt. The non-broadcast interrupt may include an interrupt configured to be sent to a list of specific processor cores 110A-110F, and the interrupt may include the list of processor cores 110A-110F. Preventing the interrupt interposer 116B from providing the first interrupt originating from the associated processor core 110B to processor cores 110A-110F that are outside the partition 202A of the associated processor core 110B may include the interrupt interposer 116B removing, from the list of processor cores 110A-110F of the first interrupt request, a processor identifier that identifies a processor core 110A, 110D-110F that is not in the same partition 202A as the associated processor core 110B. Removing a processor core identifier from the list may include hiding the list against processor core identifiers of processor cores 110B-110C within partition 202A, filling the processor core identifiers of processor cores 110A, 110D-110F outside partition 202A in the list with zeros, or some other action.
[0048] In response to the interrupt interposer 116B generating one or more second interrupt requests, as described above, the interrupt interposer 116B can provide the second interrupt requests to an associated interrupt redistribution device 304B. The interrupt redistribution device 304B can generate one or more second interrupts such that the one or more second interrupts are provided to a destination one or more processor cores 110C-110F that belong to the same partition 202 as the associated processor core 110B. The interrupt redistribution device 304B can provide the one or more second interrupts to the interrupt distribution device 302, which can route the one or more second interrupts to their respective target processor cores 110C-110F.
[0049] In some embodiments, one or more processor cores 110A-110F include an IO processor core 110. IO processor core 110 can execute instructions to emulate one or more IO devices of computing device 100. In one embodiment, IO processor core 110 or management core 110A's execution of its respective instructions includes allocating one or more emulated IO devices to a partition 202 of one or more partitions 202A-202C. In this manner, each partition 202 may include a set of emulated IO devices that interact only with components of the partition 202 to which the emulated IO devices are allocated. IO processor cores 110 that emulate one or more emulated IO devices can be associated with different partitions 202A-202C to prevent data provided to or received from the emulated IO devices from being combined. The IO devices emulated by IO processor core 110 may include peripheral component interconnect (PCI) devices, memory management units (MMUs), interrupt distributors and redistributors, serial ports, clocks, power management interfaces, or any other IO device. In some embodiments, management core 110A blocks some accesses to memory devices 120A-120B where the memory accesses are associated with IO device functionality.
[0050] 4 is a flowchart illustrating one embodiment of a method 400 for hardware partitioning of a cloud server according to some implementations of the present disclosure. A processing device having one or more central processing units (CPU(s)), one or more graphics processing units (GPU(s)), and / or a memory device communicatively coupled to the one or more CPU(s) and / or GPU(s) may perform method 400 and / or one or more of the individual functions, routines, subroutines, or operations of method 400. In certain implementations, a single processing thread performs method 400. Alternatively, two or more processing threads may perform method 400, each thread performing one or more individual functions, routines, subroutines, or operations of the method. In illustrative examples, the processing threads performing method 400 may be synchronized (e.g., using semaphores, critical sections, and / or other thread synchronization mechanisms). Alternatively, the processing threads performing method 400 may execute asynchronously with respect to one another. Various operations of method 400 may be performed in a different (e.g., reversed) order compared to the order shown in FIG. 4. Some operations of method 400 may be performed concurrently with other operations. Some operations may be optional. In some implementations, management core 110A performs one or more operations of method 400 by executing firmware or other instructions as described herein. In other implementations, a separate electronic device in data communication with computing device 100 performs one or more operations of method 400 as described herein.
[0051] At block 410, processing logic divides one or more processor cores 110B-110F into one or more partitions 202A-202C. Dividing the processor cores 110B-110F into one or more partitions 202A-202C may include instructions (e.g., firmware executing on the management core 110) configuring one or more processors 110B-110F for use in one or more partitions 202A-202C. For example, as described above, the instructions may cause one or more processor cores 110B-110F included in one or more partitions 202A-202C to reboot. As described above, the first processor core 110B may include a SAM 112 that includes one or more entries, and each entry may include a block of memory and a corresponding channel leading to the block of memory. Dividing one or more processor cores 110B-110F into one or more partitions 202A-202C may include configuring SAM 112B by removing one entry from the one or more entries if the removed entry includes a channel to a block of memory not allocated to the first partition 202A.
[0052] At block 420, processing logic configures DVM interposer 114B to include a first partition identifier associated with a first partition 202A of one or more partitions 202A-202C. For example, as described above, instructions (e.g., firmware executing on management core 110A) may include instructions to assign the first partition identifier to DVM interposer 114B. The instructions may configure DVM interposer 114B to insert the partition identifier of the first partition 202A into DVM messages received from associated processor core 110B.
[0053] At block 430, the processing logic configures the DVM interposer 114B to perform a preventative action in response to receiving, at the DVM interposer 114B, a first DVM message including a second partition identifier that is different from the first partition identifier. For example, as described above, the preventive action may include DVM interposer 114B sending a completion response to processor core 110D-110F that sent the first DVM message, DVM interposer 114B not providing the first DVM message to associated processor core 110B, DVM interposer 114B dropping the first DVM message, DVM interposer 114B sending a response to processor core 110D-110F that sent the first DVM message (e.g., null data), DVM interposer 114B or associated processor core 110B notifying management core 110A of a DVM message from processor core 110D-110F outside partition 202A, or some other preventive action.
[0054] At block 440, processing logic configures the interrupt interposer 116B to be associated with a first processor core 110B (e.g., a processor core 110 associated with the interrupt interposer 116B). Configuring the interrupt interposer 116B may include configuring the interrupt interposer 116B such that instructions (e.g., firmware executing on the management core 110A) prevent a first interrupt originating from the associated processor core 110B from being provided to processor cores 110D-110F that are outside the partition 202A of the associated processor core 110B. Configuring the interrupt interposer 116B may include the interrupt interposer 116B storing a processor core identifier for each processor core 110B-110C that is within the partition 202A to which the interrupt interposer 116B belongs.
[0055] At block 450, the processing logic configures the interrupt interposer 116B to prevent a first interrupt originating from the first processor core 110B from being provided to processor cores 110C-110F outside the first partition 202A. As described above, in the case of a broadcast interrupt, the interrupt interposer 116B can cause one or more second interrupts based on the first interrupt to be provided to each processor core 110B-110C in the first partition 202A. The interrupt interposer 116B can generate interrupt requests directed to each processor core 110C-110F in the partition 202A and provide the interrupt requests to the interrupt redistribution unit 304B to generate one or more corresponding second interrupts, and the interrupt redistribution unit 304B and the interrupt distribution unit 302 can route the second interrupts to the respective processor core 110C in the partition 202A as described above. In the case of a non-broadcast interrupt, the interrupt interposer 116B may remove from the list of processor cores 110B-110F of the interrupt request any processor core identifier that identifies a processor core 110A, 110D-110F that is not in the same partition 202A as the associated processor core 110B.
[0056] FIG. 5 is a flowchart illustrating one embodiment of a method 500 for operating a DVM interposer 114 in accordance with some implementations of the present disclosure. The DVM interposer 114 may perform the method 500 and / or one or more of the individual functions, routines, subroutines, or operations of the method 500. In certain implementations, a single processing thread performs the method 500. Alternatively, two or more processing threads may perform the method 500, each thread performing one or more individual functions, routines, subroutines, or operations of the method. In illustrative examples, the processing threads performing the method 500 may be synchronized (e.g., using semaphores, critical sections, and / or other thread synchronization mechanisms). Alternatively, the processing threads performing the method 500 may execute asynchronously with respect to one another. Various operations of the method 500 may be performed in a different (e.g., reversed) order compared to the order shown in FIG. 5. Some operations of the method 500 may be performed concurrently with other operations. Some operations may be optional.
[0057] At block 510, the DVM interposer 114B obtains a first partition identifier. The first partition identifier may be associated with the first partition 202A, and the DVM interposer 114B may belong to the first partition 202A. For example, the DVM interposer 114B may receive the first partition identifier from the management core 110A. The DVM interposer 114B may store the first partition identifier.
[0058] At block 520, the DVM interposer 114B obtains a DVM message. For example, the first DVM interposer 114B may receive a DVM message from the processor core 110. At block 530, the DVM interposer 114B determines that the DVM message includes a second partition identifier. The second partition identifier may be different from the first partition identifier and indicates that the DVM message originates from outside the first partition 202A to which the DVM interposer 114B belongs.
[0059] At block 540, DVM interposer 114B performs preventative action. The preventative action may prevent the DVM message from affecting the computing resources of first partition 202A. For example, as described above, the DVM message may include a TLB invalidation instruction, and the preventative action may include DVM interposer 114B sending a completion response to processor core 110 that sent the TLB invalidation instruction. The preventative action may further include DVM interposer 114B not providing the TLB invalidation instruction to processor core 110B that belongs to first partition 202A.
[0060] FIG. 6 is a flowchart illustrating one embodiment of a method 600 for operating an interrupt interposer 116 in accordance with some implementations of the present disclosure. The interrupt interposer 116 may perform the method 600 and / or one or more of the individual functions, routines, subroutines, or operations of the method 600. In certain implementations, a single processing thread performs the method 600. Alternatively, two or more processing threads may perform the method 600, each thread performing one or more individual functions, routines, subroutines, or operations of the method. In illustrative examples, the processing threads performing the method 600 may be synchronized (e.g., using semaphores, critical sections, and / or other thread synchronization mechanisms). Alternatively, the processing threads performing the method 600 may execute asynchronously with respect to one another. The various operations of the method 600 may be performed in a different (e.g., reversed) order compared to the order shown in FIG. 6. Some operations of the method 600 may be performed concurrently with other operations. Some operations may be optional.
[0061] At block 610, the interrupt interposer 116B is associated with the processor core 110B. The processor core 110B may belong to the first partition 202A. If the first partition 202A includes multiple processor cores 110B-110C, block 610 may include associating the interrupt interposer 116B with each processor core 110B-110C that belongs to the first partition 202A. The associating with the processor core 110B may include the interrupt interposer 116B storing a processor core identifier of the associated processor core 110B.
[0062] At block 620, the interrupt interposer 116B obtains a first interrupt. The first interrupt may originate from a processor core 110B associated with the interrupt interposer 116B. At block 630, the interrupt interposer 116B determines that the first interrupt is directed to one or more processor cores 110 outside of the first partition 202A. Determining that the first interrupt is directed to one or more processor cores 110 outside of the first partition 202A may include examining a type of the first interrupt (e.g., broadcast, non-broadcast, etc.), a destination list of the first interrupt (e.g., a list of processor core identifiers corresponding to the processor cores 110 to which the interrupt is sent), or other data included in or associated with the first interrupt.
[0063] At block 640, the interrupt interposer 116B prevents the first interrupt from being provided to processor cores 110D-110F outside the first partition 202A. As described above, in the case of a broadcast interrupt, the interrupt interposer 116B may cause one or more second interrupts based on the first interrupt to be provided to each processor core 110B-110C in the first partition 202A. In the case of a non-broadcast interrupt, the interrupt interposer 116B may remove processor core identifiers identifying processor cores 110A, 110D-110F that are not in the same partition 202A as processor core 110B from the list of processor cores 110B-110F of the first interrupt.
[0064] In one embodiment, one or more processor cores 110A-110F are located on the same computing device 100. Computing device 100 may include a system on a chip (SoC), an application specific integrated circuit (ASIC), or other integrated circuit (IC). One or more DVM interposers 114A-114F, one or more interrupt interposers 116A-116F, or other components described herein may be located on the same computing device 100.
[0065] In some implementations, one or more processor cores 110 of a partition 202 execute firmware or a boot loader provided by an end user of the cloud computing system. For example, a management core 110A can create a partition 202 that includes one or more components (e.g., processor cores 110, memory blocks, etc.), and the management core 110A can receive the firmware or boot loader and store the firmware or boot loader in the memory blocks of the partition 202. The management core 110A can provide the memory location of the firmware or boot loader to the processor cores 110 of the partition so that the processor cores 110A can execute the firmware or boot loader.
[0066] In some implementations, partition 202 is configured to execute a confidential computing environment. Confidential computing includes providing a hardware-based trusted execution environment (TEE) that executes on one or more hardware components of a computing device. The TEE may include a secure enclave that is isolated from data and hardware outside the TEE, preventing data and processes within the TEE from being directly accessible by other hardware components of the computing device, including the TEE, the operating system, or other software. The TEE can be protected using embedded encryption keys, and embedded authentication operations can prevent access to those keys except by authorized application code. Attempts by unauthorized code can result in the key to the code being denied. Confidential computing can include the TEE receiving encrypted data, the TEE decrypting the encrypted data using the encryption key, the TEE processing the unencrypted data using the authorized code, the TEE encrypting data resulting from the processing, and the TEE outputting the encrypted data from the TEE. In this way, in some examples, encrypted data can be processed only in the TEE, where it is isolated and secure from the rest of the computing device.
[0067] In one implementation, partition 202 may include a TEE. The TEE may include one or more processor cores 110, one or more DVM interposers 114, one or more interrupt interposers, one or more memory blocks of one or more memory devices 120, or other components of partition 202. The TEE may authenticate the initial state of partition 202 and encrypt data in blocks of memory belonging to partition 202. The TEE may use the partition 202 isolation mechanisms and processes described herein to prevent access by unauthorized code associated with other partitions 202 or other computing devices. In some embodiments, the TEE includes a secure enclave within processor core 110 that is isolated from data and hardware outside of processor core 110, preventing other hardware or software on computing device 100 from directly accessing data and processes within the TEE.
[0068] 7 is a block diagram illustrating an exemplary computer system 700 according to an embodiment of the present disclosure. The computer system may be a computing device (e.g., computing device 100 of FIG. 1) or other devices described herein. The computer system 700 may operate in the capacity of a server or endpoint machine in an endpoint-server network environment, or as a peer machine in a peer-to-peer (or distributed) network environment. The machine may be any other type of machine capable of executing a set (series or otherwise) of instructions that specify actions to be performed by the machine. Furthermore, while only a single machine is illustrated, the term "machine" should also be interpreted to include any collection of machines that individually or jointly execute a set (or sets) of instructions to perform any one or more of the methodologies described herein.
[0069] The exemplary computer system 700 may include a processing device 702, a volatile memory 704, a non-volatile memory 706 (e.g., flash memory, static random access memory (SRAM), etc.), and / or a data storage device 716, which communicate with each other via a bus 730.
[0070] The processing device 702 may represent one or more general-purpose processing devices, such as a microprocessor, a CPU, a GPU, a processor core (e.g., processor core 110 of FIG. 1 ), etc. More specifically, the processing device 702 may be a complex instruction set computing (CISC) microprocessor, a reduced instruction set computing (RISC) microprocessor, a very long instruction word (VLIW) microprocessor, or a processor implementing other instruction sets or combinations of instruction sets. The processing device 702 may also be one or more special-purpose processing devices, such as an ASIC, a field programmable gate array (FPGA), a digital signal processor (DSP), or a network processor. The processing device 702 is configured to execute instructions 726 to perform one or more operations described herein.
[0071] The volatile memory 704 may include read-only memory (ROM), flash memory, dynamic random access memory (DRAM), such as synchronous dynamic random access memory (SDRAM), double data rate (DDR SDRAM), or dynamic random access memory (DRAM), or some other type of volatile memory. The volatile memory 704 may include memory devices 120A-120B of Figure 1. The volatile memory 704 may store at least a portion of the instructions 726.
[0072] The computer system 700 may further include a network interface device 708. The network interface device 708 may facilitate data communication between computing devices. The computer system 700 may also include a video display unit 710 (e.g., a liquid crystal display (LCD) or a cathode ray tube (CRT)), input devices 712 (e.g., a keyboard, an alphanumeric keyboard, a motion-sensing input device, a touch screen), a cursor control device 714 (e.g., a mouse), and a signal generation device 718 (e.g., a speaker).
[0073] Data storage device 716 may include a non-transitory machine-readable storage medium 724 (also a computer-readable storage medium) on which one or more sets of instructions 726 are stored. The instructions may embody any one or more of the methods or functions described herein. The instructions 726 may reside, completely or partially, within volatile memory 704 and / or within processing device 702 during execution of the instructions 726 by computer system 700, volatile memory 704, and processing device 702, which also constitute machine-readable storage media. The instructions 726 may further be transmitted or received over network 720 via network interface device 708.
[0074] In one embodiment, instructions 726 include instructions for hardware partitioning of a cloud server. Instructions 726 may include firmware (e.g., firmware of management core 110A). Instructions 726 may include instructions for dividing one or more components of computing device 100 into one or more partitions 202. Instructions 726 may include instructions provided to components of computing device 100, such as DVM interposer 114 or interrupt interposer 116, to perform operations as described herein.
[0075] Although the computer-readable storage medium 724 (machine-readable storage medium) is shown as a single medium in the exemplary embodiment, the terms "computer-readable storage medium" and "machine-readable storage medium" should be interpreted to include a single medium or multiple media (e.g., a centralized or distributed database and / or associated caches and servers) that store one or more sets of instructions. The terms "computer-readable storage medium" and "machine-readable storage medium" should also be interpreted to include any medium capable of storing, encoding, or carrying a set of instructions for execution by a machine, causing the machine to perform any one or more of the methods of this disclosure. Accordingly, the terms "computer-readable storage medium" and "machine-readable storage medium" should be interpreted to include, but not limited to, solid-state memory, optical media, and magnetic media.
[0076] In the above description, numerous details are set forth. However, it will be apparent to one skilled in the art having the benefit of this disclosure that the present disclosure may be practiced without these specific details. In some instances, well-known structures and devices are shown in block diagram form, rather than in detail, in order to avoid obscuring the present disclosure.
[0077] Some portions of the detailed description are presented in terms of algorithms and symbolic representations of operations on data bits within a computer memory. These algorithmic descriptions and representations are the means used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. An algorithm is here, and generally, conceived to be a self-consistent sequence of steps leading to a desired result. The steps are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated. It proves convenient at times, for reasons of common usage, to refer to these symbols as bits, values, elements, symbols, characters, terms, numbers, or the like.
[0078] It should be recognized, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless otherwise specified as will be apparent from the description that follows, throughout this specification, descriptions using terms such as "receive," "display," "transfer," "adjust," "replace," "determine," "reproduce," and the like will be understood to refer to the actions and processes of a computer system or similar electronic computing device that manipulates and converts data represented as physical (e.g., electronic) quantities in the computer system's registers and memory into other data that is also represented as physical quantities in the computer system's memory or registers, or other such information storage, transmission, or display device.
[0079] For ease of explanation, methods (e.g., methods 400, 500, or 600) are shown and described herein as a series of acts. However, acts in accordance with the present disclosure can be performed in various orders and / or simultaneously, as well as with other acts not shown and described herein. Moreover, not all illustrated acts are required to perform a method in accordance with the disclosed subject matter. Moreover, those skilled in the art will understand and appreciate that a method could alternatively be represented as a series of interrelated states via a state diagram or events. Furthermore, it will be appreciated that the methods disclosed herein can be stored on an article of manufacture to facilitate moving and transferring such methodologies to a computing device. The term article of manufacture, as used herein, is intended to encompass a computer program accessible from any computer-readable device or storage medium.
[0080] Certain embodiments of the present disclosure also relate to apparatus for performing the operations herein. This apparatus can be constructed for the intended purposes, or the apparatus can include a general-purpose computer selectively activated or reconfigured by a computer program stored in the computer. Such a computer program can be stored on a non-transitory computer-readable storage medium, including, but not limited to, any type of disk, including floppy disks, optical disks, CD-ROMs, and magnetic disks, read-only memory (ROM), random-access memory (RAM), EPROM, EEPROM, magnetic or optical cards, or any type of medium suitable for storing electronic instructions.
[0081] References throughout this specification to "one implementation," "an implementation," "some implementations," "one embodiment," "an embodiment," or "some embodiments" mean that a particular feature, structure, or characteristic described in connection with an implementation or embodiment is included in at least one implementation or embodiment. Thus, the appearances of the phrase "in one implementation" or "in an implementation" or other similar terms in various places throughout this specification do not necessarily all refer to the same implementation. In addition, the term "or" is intended to mean an inclusive "or" rather than an exclusive "or." Furthermore, the word "example" or similar terms are used herein to mean serving as an example, instance, or illustration. Any aspect or design described herein as "example" should not necessarily be construed as preferred or advantageous over other aspects or designs. Rather, use of the word "example" or similar terms is intended to present concepts in a concrete manner.
[0082] Throughout this disclosure, references to "first," "second," "third," etc. are used for purposes of clarity and distinction only and do not imply a particular order of assembly or operation. Furthermore, in some embodiments, references to a "first" component and a "second" component may refer to the same component unless expressly stated otherwise.
[0083] To the extent that the terms "includes," "including," "has," "contains," variations thereof, and other similar words are used in either the detailed description or the claims, these terms are intended to be inclusive in the same manner as the open transition word "comprising," without excluding additional or other elements.
[0084] As used herein, the terms "component," "module," or "system," etc., are intended to generally refer to a computer-related entity, either hardware (e.g., circuitry), software, a combination of hardware and software, or an entity related to an operable machine having one or more specific functions. For example, a component may be, but is not limited to, a process running on a processor (e.g., a digital signal processor), a processor, an object, an executable, a thread of execution, a program, and / or a computer. By way of example, both an application running on a controller and the controller may be a component. One or more components may reside within a process and / or thread of execution, and a component may be localized on one computer and / or distributed among two or more computers. Furthermore, a "device" may be in the form of specially designed hardware, general-purpose hardware specialized by software executing on the hardware that enables the hardware to perform specific functions (e.g., generating points of interest and / or descriptions), software on a computer-readable medium, or a combination thereof.
[0085] The aforementioned systems, circuits, modules, etc. are described with respect to interactions between certain components and / or blocks. It is understood that such systems, circuits, components, blocks, etc. may include those components or designated subcomponents, portions of the designated components or subcomponents, and / or additional components, according to the various permutations and combinations described above. Subcomponents may also be implemented as components communicatively coupled to other components rather than being contained within a parent component (hierarchical). In addition, it should be noted that one or more components may be combined into a single component providing integrated functionality or may be divided into several separate subcomponents, and that any one or more intermediate layers, such as a management layer, may be provided to communicatively couple such subcomponents to provide integrated functionality. Any component described herein may also interact with one or more other components not specifically described herein but known to those skilled in the art.
[0086] It should be understood that the foregoing description is intended to be illustrative, and not limiting. Many other embodiments will become apparent to those skilled in the art upon reading and understanding the above description. The scope of the present disclosure should, therefore, be determined with reference to the appended claims, along with the full scope of equivalents to which such claims are entitled.
Claims
1. 1. A system comprising: Multiple processor cores; a first processor core of the plurality of processor cores, wherein the first processor core executes instructions for dividing at least a portion of the plurality of processor cores into one or more partitions, and the system further comprises: a plurality of distributed virtual memory (DVM) interposers, each DVM interposer of the plurality of DVM interposers comprising: a respective identifier that identifies one of the one or more partitions; performing a preventative action in response to receiving a first DVM message including a partition identifier that is different from the partition identifier of the DVM interposer, the system further comprising: a plurality of interrupt interposers, each of the plurality of interrupt interposers comprising: associated with one processor core of the plurality of processor cores, The system prevents a first interrupt originating from the associated processor core from being provided to a processor core outside the partition of the associated processor core.
2. The system further comprises a plurality of system address maps (SAMs), each SAM comprising: associated with one of the one or more partitions; The system of claim 1 , further comprising: restricting memory access to a block of physical address space allocated to the associated partition.
3. a mesh interconnect coupled to the plurality of processor cores and a memory device; 3. The system of claim 2, wherein each SAM of said plurality of SAMs includes a plurality of entries, each entry including a block of memory and a corresponding channel of said mesh interconnect leading to said block of memory.
4. the first DVM message includes a translation lookaside buffer (TLB) invalidation instruction; The system of claim 1 , wherein the preventative action includes sending a completion response to one of the processor cores that sent the first DVM message.
5. the first DVM message includes a cache invalidation command; The system of claim 1 , wherein the preventative action includes sending a completion response to one of the processor cores that sent the first DVM message.
6. Each DVM interposer of the plurality of DVM interposers further comprises: receiving a second DVM message from the processor core associated with the DVM interposer; The system of claim 1 , further comprising inserting the partition identifier of the partition associated with the associated processor core into the second DVM message.
7. 2. The system of claim 1, wherein the first interrupt comprises a software generated interrupt (SGI).
8. the first interrupt includes a broadcast interrupt; 2. The system of claim 1, wherein preventing the first interrupt from being provided to a processor core outside the partition of the associated processor core includes causing one or more second interrupts based on the first interrupt to be provided to each processor core within the partition of the associated processor core.
9. the system further comprises an input / output (IO) processor core that executes instructions to emulate one or more IO devices; 2. The system of claim 1, wherein the first processor core executing the instructions to divide the at least some of the plurality of processor cores into the one or more partitions includes allocating an emulated IO device of the one or more emulated IO devices to one of the one or more partitions.
10. The system of claim 1 , wherein the first processor core of the plurality of processor cores is not included in any of the one or more partitions.
11. 2. The system of claim 1, wherein each DVM interposer of the plurality of DVM interposers is associated with a processor core that belongs to the partition identified by the partition identifier of the DVM interposer.
12. 1. A method comprising: Dividing a plurality of processor cores into one or more partitions; configuring a distributed virtual memory (DVM) interposer to include a first partition identifier associated with a first partition of the one or more partitions; configuring the DVM interposer to perform a preventative action in response to receiving a first DVM message including a second partition identifier that is different from the first partition identifier; and configuring an interrupt interposer to be associated with a first processor core of the plurality of processor cores, the first processor core belonging to the first partition, the method further comprising: configuring an interrupt interposer to be associated with a first processor core of the plurality of processor cores, the first processor core belonging to the first partition, the method further comprising: configuring the interrupt interposer to prevent a first interrupt originating from the first processor core from being provided to a processor core outside of the first partition.
13. The method of claim 12 , wherein the multiple processor cores are located on the same system-on-chip (SoC).
14. the first processor core includes a system address map (SAM) including a plurality of entries, each entry including a block of memory and a corresponding channel leading to the block of memory; 13. The method of claim 12, wherein dividing the plurality of processor cores into the one or more partitions includes configuring the SAM by deleting an entry from the plurality of entries, the deleted entry including a channel to a block of memory not allocated to the first partition.
15. the first DVM message includes a translation lookaside buffer (TLB) invalidation instruction; 13. The method of claim 12, wherein performing the preventative action includes sending a completion response to one of the processor cores that sent the first DVM message.
16. the first DVM message includes a branch predictor disable instruction; 13. The method of claim 12, wherein the preventative action includes sending a completion response to one of the processor cores that sent the first DVM message.
17. receiving, at the DVM interposer, a second DVM message from one of the plurality of processor cores associated with the first partition; and inserting the first partition identifier into the second DVM message.
18. the first interrupt includes a broadcast interrupt; 13. The method of claim 12, wherein preventing, at the interrupt interposer, the first interrupt from being provided to a processor core outside the first partition comprises causing one or more second interrupts based on the first interrupt to be provided to each processor core in the first partition.
19. 1. A non-transitory computer-readable storage medium comprising instructions that, when executed by a processing device, cause the processing device to perform operations, the operations including: Dividing a plurality of processor cores into one or more partitions; configuring a distributed virtual memory (DVM) interposer to include a first partition identifier associated with a first partition of the one or more partitions; configuring the DVM interposer to perform a preventative action in response to receiving a first DVM message including a second partition identifier that is different from the first partition identifier; and configuring an interrupt interposer to be associated with a first processor core of the plurality of processor cores, the first processor core belonging to the first partition, the operations further comprising: configuring an interrupt interposer to be associated with a first processor core of the plurality of processor cores, the first processor core belonging to the first partition, the operations further comprising: configuring the interrupt interposer to prevent a first interrupt originating from the first processor core from being provided to a processor core outside of the first partition.
20. the first DVM message includes a translation lookaside buffer (TLB) invalidation instruction; 20. The computer-readable storage medium of claim 19, wherein performing the preventative action includes sending a completion response to one processor core of the plurality of processor cores that sent the first DVM message.