US20260037337A1
CORE DISTRIBUTION OPTIMIZER FOR MULTI-CORE CPU
Publication
Application
Classifications
IPC Classifications
CPC Classifications
Applicants
ORACLE INTERNATIONAL CORPORATION
Inventors
Muthu Kumar SATHIYANESAN, Benjamin J. FULLER
Abstract
Systems, methods, and other embodiments associated with distributing cores in a multi-core and/or multi-die CPU are described. In one embodiment, a core distribution system is configured to determine a physical arrangement of a plurality of cores in one or more core clusters of a CPU including rows and columns of cores. Enabled cores and disabled cores are identified within the physical arrangement. A number of target cores to be disabled from the physical arrangement are identified by selecting the target cores to create a uniform physical distribution of disabled cores and enabled cores throughout the physical arrangement of the enabled cores and the disabled cores. The system then disables the identified target cores.
Get a summary, plain-language explanation, or ask your own question.
Figures
Description
BACKGROUND
[0001]In modern CPU architecture, a processor may include multiple silicon dies, each containing multiple processing cores. A die is a small block of semiconducting material on which a given functional circuit is fabricated. When multiple dies are packaged together in a single processor, it is referred to as a multi-die or chiplet architecture. Each die contains several cores, which are the individual processing units capable of executing instructions independently.
[0002]One common physical layout used with compute dies is to organize the cores into a mesh (or grid) configuration. A mesh layout is used to optimize space, power distribution, and inter-core communication. The mesh configuration allows for an efficient design in terms of both physical layout and electrical connections.
[0003]During manufacturing, some cores may be identified as defective. The manufacturer typically fuse disables the defective cores, which permanently disables the defective cores. This ensures that the fused cores can never be enabled/activated to control which cores are functional and allow the rest of the chip to function normally.
[0004]Many common implementations provide an interface through which a specific core(s) within the mesh can be dynamically enabled or disabled. The UEFI/BIOS (Unified Extensible Firmware Interface/Basic Input/Output System) of a computer system can provide a setup option that enables customers to control the number of cores to activate in a server system's CPU. A user typically reduces the number of cores activated in the CPU to reduce power consumption or for other reasons. In many common BIOS implementations, CPU cores are deactivated in a sequential top-down fashion, starting with the highest core ID numbers.
[0005]This can result in an imbalanced distribution of cores across the CPU dies and across the mesh fabric, potentially limiting overall CPU performance and creating other technical problems. For example, an imbalanced distribution of cores can result in overloading interconnect resources in some portions of the mesh while interconnect utilization in other portions of the mesh remains low. Sequentially disabling cores can also cause certain areas of the CPU to become hotspots while others remain cool, leading to thermal imbalance and potential thermal throttling. An improved technique to disable and distribute cores may be beneficial to processing units and computing systems.
SUMMARY
[0006]In one embodiment, a computing system is described with a non-transitory computer-readable medium including stored thereon computer-executable instructions that when executed by at least a processor of the computing system, wherein the computing system includes one or more computing devices, cause the computing system to perform core distribution operations including: receive a request to disable a number of cores in a processing unit, wherein the processing unit includes a physical arrangement of one or more core clusters, wherein each core cluster includes a plurality of cores; determine the physical arrangement of the plurality of cores including rows and columns of cores; determine an association of each core within the plurality of cores to a specific core cluster; identify enabled cores and disabled cores within the physical arrangement; identify a number of target cores to disable from the physical arrangement by selecting the target cores to create a uniform distribution of enabled and disabled cores across of the one or more core clusters; and disable the identified target cores.
[0007]In one embodiment, the core distribution operations are configured to distribute cores in two different dimensions. One dimension is across the core clusters and the second dimension is the physical layout of the cores (e.g., across the mesh rows and columns of cores).
BRIEF DESCRIPTION OF THE DRAWINGS
[0008]The accompanying drawings, which are incorporated in and constitute a part of the specification, illustrate various systems, methods, and other embodiments of the disclosure. It will be appreciated that the illustrated element boundaries (e.g., boxes, groups of boxes, or other shapes) in the figures represent one embodiment of the boundaries. In some embodiments one element may be implemented as multiple elements or that multiple elements may be implemented as one element. In some embodiments, an element shown as an internal component of another element may be implemented as an external component and vice versa. Furthermore, elements may not be drawn to scale.
[0009]
[0010]
[0011]
[0012]
[0013]
[0014]
[0015]
[0016]
[0017]
[0018]
[0019]
DETAILED DESCRIPTION
[0020]Systems and methods are described herein that optimize distribution of cores in a multi-core CPU or a multi-die CPU. In one embodiment, a core distribution optimizer implements a novel technique and algorithm for distributing cores across core clusters (e.g., across dies) in a more even and balanced manner that considers physical locations and arrangement between enabled cores and disabled cores. For example, the core distribution optimizer executes during a downcoring operation that disables one or more cores on a single die, multi-core CPU or multi-die CPU.
[0021]The present system and method address the issue of imbalanced cores in a CPU and aims to enhance overall CPU performance. In one embodiment, the optimized distribution of enabled and disabled cores improves the performance of cache-bound transactions associated with the cores and improves overall signal traffic with a balanced arrangement of cores. The present technique ensures a more equitable distribution of processing power and fosters optimal utilization of a CPU's capabilities, which improves upon the prior core distribution techniques and core arrangements.
[0022]With reference to
[0023]For example, a central processing unit CPU 105 is illustrated as a multi-die CPU. CPU 105 includes, but is not limited to, four (4) dies labeled die 0, die 1, die 2, and die 3. In general, a die refers to a single, continuous piece of semiconductor material, typically silicon, that contains one or more cores, along with cache memory, control units, and interfaces for connecting to other parts of the system.
[0024]In the example CPU 105, each die includes multiple cores (e.g., grouped as a core cluster), for example, sixteen (16) cores labeled core 0 to core 15. Different numbering schemes or core IDs may be used to identify the cores. For example, the cores in CPU 105 may be numbered 000 to 063 so that each core has a unique ID. In the illustrated example, each die has a physical arrangement of cores that is a 4×4 matrix, and the overall arrangement of the CPU is an 8×8 matrix. Of course, a CPU and/or each die may have different amounts of rows and columns of cores. Typical commercial CPUs may have between 64 to 256 cores, while others may have tens of thousands of cores. In another embodiment, the CPU may have multi-layers of cores that form a 3-Dimensional matrix of cores.
[0025]A core map may be used to define or represent the physical arrangement/locations of the cores and identify a current state of each core such as enabled or disabled. Disabled states may further be identified as disabled by software (which is reversible), fused disabled by CPU design/architecture to create different CPU product tiers (which is irreversible), or fused disabled during CPU manufacturing to eliminate defective cores (which is irreversible). The core map may use different numbering schemes and/or labels to identify the current state of a core. Examples are provided below.
[0026]With continued reference to
[0027]In general, a CPU has a total number of cores physically present that are created during manufacturing. In any point in time, a current state of the CPU includes a number of enabled/active cores and a number of disabled/non-active cores (e.g., zero or more). One or more cores may be disabled for different reasons. For example, cores may be permanently disabled by fusing during manufacturing when the cores are determined to be defective or to create different product tiers. Cores may be temporarily disabled by BIOS or UEFI settings, which allows the cores to be re-enabled when desired.
[0028]As an overview, for example in a downcoring operation, the core distribution system 100 may receive a request via UEFI/BIOS to disable X number of cores. For example, a user may select via a user interface how many cores to disable or enable. The request may identify a total number of cores to enable, which results in disabling X number of cores when the requested number is less than the current number of enabled cores. The core distribution system 100 may be configured to identify, select, and disable the X number of cores based on at least a physical arrangement of enabled and disabled cores to create a balanced distribution of enabled and disabled cores throughout the physical arrangement of the multi-core CPU. For example, a balanced distribution attempts to create a uniform distribution of enabled cores and/or disabled cores.
[0029]In one embodiment, the balanced distribution considers the physical locations of currently enabled cores relative to each other and to currently disabled cores that may exist when selecting the next core to disable. For example, the core distribution system 100 may be configured to identify an area in the mesh architecture that includes the greatest number of enabled/active cores (e.g., area with the most heavily utilized cores in the CPU). One enabled core in this area is then selected to be disabled. Upon disabling a core, the current state of the physical arrangement of enabled and disabled cores is changed and impacted.
[0030]The core distribution system 100 then repeats the process to select the next core to disable based on the current locations of enable and disabled cores. In general, the core distribution system 100 may include and execute an algorithm that uniformly distributes the selected cores to disable throughout the physical architecture based on physical locations of currently enabled cores and currently disabled cores.
[0031]With reference to
[0032]The example core map 200 shows a 6 row x 8 column matrix of cores. To assist in the following examples, the matrix in the core map 200 is labeled in
[0033]As referred to herein, core map 200 shows that the CPU has a “regular shape” or “in-shape” configuration of cores (e.g., a regular mesh topology). In general, this means the CPU has a core in each (row, column) location in the overall mesh/matrix. When a die in the CPU has one or more cores that are missing in the mesh topology, then the core clusters/dies and/or the CPU have an incomplete matrix of cores or irregular mesh topology of cores, which is referred to as an “out-of-shape” configuration of cores. For example, one or more cores may be missing in the matrix because the cores were intentionally not included for a particular CPU design. In one embodiment, the core distribution system 100 may be configured to perform a core disabling operation in a different manner for an out-of-shape CPU than an in-shape CPU. This will be described below in other embodiments.
[0034]With reference to
[0035]Core map 300 will be used to describe a core disabling and distribution method in
Distributing Disabled Cores First Embodiment
[0036]With reference to
[0037]At block 410, a request is received to disable a number of cores in the processing unit, for example, via the UEFI/BIOS of a computing system. The processing unit may include a physical arrangement of one or more core clusters, wherein each core cluster includes a plurality of cores. In general, a cluster includes a group of cores that share resources in the processing unit. The processing unit may include one or more dies and each die may comprise a physical arrangement of a plurality of cores. In one example, a core cluster may be defined to include one die or multiple dies. The request triggers the core distribution system 100 to execute a core distribution algorithm (described in the following steps) that determines which cores to disable in an optimized manner to provide an optimized distribution of enabled and disabled cores.
[0038]In one embodiment, method 400 may be configured to attempt to distribute cores in two different dimensions. One dimension is across the core clusters, the second dimension is the physical layout of the cores (e.g., across the mesh rows and columns of cores). Note that these two dimensions are independent of the number of dimensions used to describe the physical layout of the cores.
[0039]At block 420, the physical arrangement of the plurality of cores is determined. As previously described, this may include accessing a core map (e.g., core map 300 in
[0040]In the following example, the four dies in
[0041]At block 430, a current state of each available core is determined, which identifies the enabled cores and disabled cores within the physical arrangement across the selected core cluster(s). For example, hardware configuration settings and/or tables such as the core map 300, may be accessed. The core map 300 labels the current state of each core, which may include for example, enabled/active or disabled. The core map 300 may be accessed by the operating system of the computing system.
[0042]There may be different types of disabled states as previously described such as disabled by software (which is reversible), fused disabled by CPU design/architecture to create different CPU product tiers (which is irreversible), or fused disabled during CPU manufacturing to eliminate defective cores (which is irreversible). The core map may use different numbering schemes and/or labels to identify the current state of a core. For example, a currently enabled core may be labeled by its actual core ID number. Disabled cores are labeled differently. For purposes of the present example, method 400 treats all different disabled states of a core as simply a disabled core.
[0043]Using the core map 300 of
[0044]At block 440, for example, a number of target cores to disable are identified from the physical arrangement by selecting the target cores in a manner to create a uniform distribution of enabled and disabled cores across of the core clusters. In one embodiment, the target cores to be selected for disabling are based on creating a balanced physical distribution of disabled cores and enabled cores throughout the physical arrangement of the enabled cores and the disabled cores. Based on the physical distribution of enabled cores and disabled cores, the core distribution algorithm attempts to uniformly distribute the newly disabled cores (e.g., the next core to disable) throughout the physical architecture based on the physical locations of currently enabled cores and currently disabled cores.
[0045]In one embodiment, block 440 may be executed in an iterative manner. For example, in each iteration, one target core is identified from the most heavily utilized row and column in the core map that has the greatest number of enabled cores. The target core is selected from this location and the process repeats for the next target core, and so on. In one embodiment, the algorithm of method 400 is configured to satisfy two criteria when selecting a core to disable: (1) ensuring uniformity amongst core clusters (e.g., amongst dies) and (2) ensuring cores are uniformly distributed within the mesh.
[0046]At block 450, the identified target cores are disabled. In one embodiment, that disabling may be performed by the UEFI firmware disabling the identified cores by updating configuration registers to configure the identified cores as disabled. In another embodiment, this may be performed by sending instructions to the operating system. The operating system may then communicate with the hardware to disable the identified target core(s). This may involve updating configuration registers or Advanced Configuration and Power Interface (ACPI) tables to reflect the new CPU configuration of enabled cores. Once disabled, the disabled cores are no longer available for executing tasks.
[0047]In one embodiment, disabling the target cores includes labeling the target cores to be disabled until all target cores are identified. Then upon completion, the UEFI/BIOS updates the configuration registers to configure the identified cores as disabled. In another embodiment, each target core may be labeled and disabled individually.
[0048]With the present system 100 and method 400, a novel methodology for distributing cores across dies is provided that address an issue of core imbalance and enhances overall CPU performance. The present method ensures a more equitable distribution of processing power across a CPU and fosters an optimal utilization of the CPU's capabilities. In another embodiment, the CPU may have multi-layers of cores that form a 3-Dimensional matrix of cores (or 3D matrix of clusters). Method 400 may be adjusted and applied to the 3-D matrix of cores/clusters by considering the row x column x depth arrangement and distribution of enabled and disabled cores. In another embodiment, method 400 may be adjusted and applied in a hierarchical manner and spread across different attributes of a CPU, for example, across different dies or clusters.
Distribution of Disabled Cores Second Embodiment
[0049]With reference to
[0050]In this example, a request to disable eight (8) cores is described. Of course, any number of available cores may be requested to be disabled, which is less than the total available cores. As such, method 500 will have eight iterations where each iteration identifies and selects one core to disable based on a current physical distribution of disabled cores and enabled cores in the physical arrangement.
[0051]At block 510, the method identifies a max cores cluster from the present clusters/dies that contains a greatest number of enabled cores (max enabled cores) relative to the other clusters/dies. This is to ensure disabling is evenly distributed across all clusters/dies (across the entire CPU mesh). The cluster/die with the most enabled cores is selected as the target cluster/die during each iteration to ensure that the maximum difference in enabled core count between all of the dies is no more than one, in one embodiment. One core will be disabled on this target cluster/die first.
[0052]Looking at the core map 300 of
[0053]At block 520, the rows of Max Die 3 are traversed to find a total number of enabled cores in each row across the entire CPU mesh. In
[0054]At block 530, the columns of Max Die 3 are traversed to find a total number of enabled cores in each column across the entire CPU mesh. Again, looking at the core map 300 in
[0055]At block 540, the row and column results are combined (e.g., added together) for each row and column combination. This provides a summed combination of enabled cores from the rows and columns, which is used to identify an area in the core map that includes a greatest number of enabled cores. Table 1 shows example results from each step.
Table 1
First Iteration-Based on Max Die 3
- [0056]Block 520: Row Results based on Max Die 3
- [0057]Row [3]=7 enabled cores
- [0058]Row [4]=8 enabled cores
- [0059]Row [5]=7 enabled cores
- [0060]Block 530: Column Results based on Max Die 3
- [0061]Column [4]=6 enabled cores
- [0062]Column [5]=5 enabled cores
- [0063]Column [6]=6 enabled cores
- [0064]Column [7]=5 enabled cores
- [0065]Add for Each Row/Column Combination
- [0066]Row [3] (7)+Column [4] (6)=13<- - - Current Max=13
- [0067]Row [3] (7)+Column [5] (5)=12
- [0068]Row [3] (7)+Column [6] (6)=13
- [0069]Row [3] (7)+Column [7] (5)=12
- [0070]Row [4] (8)+Column [4] (6)=14<- - - Current Max=14
- [0071]Row [4] (8)+Column [5] (5)=13
- [0072]Row [4] (8)+Column [6] (6)=14
- [0073]Row [4] (8)+Column [7] (5)=13
- [0074]Row [5] (7)+Column [4] (6)=13
- [0075]Row [5] (7)+Column [5] (5)=12
- [0076]Row [5] (7)+Column [6] (6)=13
- [0077]Row [5] (7)+Column [7] (5)=12
- [0078]Result: Disabling Row [4] Column [4]=Core 040
- [0056]Block 520: Row Results based on Max Die 3
[0079]During each row/column combination, the core distribution algorithm tracks the current maximum value and updates the max value if the value is exceeded. After all combinations are added, the Max combined value of enabled cores is found at row 4, column 4. The core identified at this physical location in the core map 300 is core 040. Thus, in this iteration, this is the location/area with the greatest number of enabled cores. This physical location/area in the CPU may also be considered the highest concentration or ratio of enabled cores, and thus, is the target area to disable a core. As such, core 040 is the target core and is selected to be disabled at block 550.
[0080]
[0081]With reference again to
[0082]For the second iteration, the current state 600 of the core map is used. With reference to
[0083]Table 2 shows the core distribution algorithm steps and determinations during the second iteration for Max Die 2. Based on the core map 300 (
Table 2
Second Iteration-Based on Max Die 2
- [0084]Block 520: Row Results based on Max Die 2
- [0085]Row [0]=8 enabled cores
- [0086]Row [1]=7 enabled cores
- [0087]Row [2]=7 enabled cores
- [0088]Block 530: Column Results based on Max Die 2
- [0089]Column [4]=5 enabled cores
- [0090]Column [5]=5 enabled cores
- [0091]Column [6]=6 enabled cores
- [0092]Column [7]=5 enabled cores
- [0093]Add for Each Row/Column Combination
- [0094]Row [0] (8)+Column [4] (5)=13<- - - Current Max=13
- [0095]Row [0] (8)+Column [5] (5)=13
- [0096]Row [0] (8)+Column [6] (6)=14<- - - Current Max=14
- [0097]Row [0] (8)+Column [7] (5)=13
- [0098]Row [1] (7)+Column [4] (5)=12
- [0099]Row [1] (7)+Column [5] (5)=12
- [0100]Row [1] (7)+Column [6] (6)=13
- [0101]Row [1] (7)+Column [7] (5)=12
- [0102]Row [2] (7)+Column [4] (5)=12
- [0103]Row [2] (7)+Column [5] (5)=12
- [0104]Row [2] (7)+Column [6] (6)=13
- [0105]Row [2] (7)+Column [7] (5)=12
- [0106]Result: Disabling Row [0] Column [6]=Core 026
- [0084]Block 520: Row Results based on Max Die 2
[0107]After all row/column combinations of enabled cores across all dies are added based on Max Die 2, the Max combined value of enabled cores is found at row 0, column 6. The core identified at this physical location in the core map 300 is core 026. Thus, in the second iteration, this is the location/area with the greatest number of enabled cores. As such, core 026 is the target core and is selected to be disabled at block 550.
[0108]
- [0110]Iteration 3:
- [0111]Target Max Die 1: Disabling Row 3: Column 0-Core 012
- [0112]Iteration 4:
- [0113]Target Max Die 0: Disabling Row 0: Column 2=Core 002
- [0114]Iteration 5:
- [0115]Target Max Die 3: Disabling Row 4: Column 5=Core 041
- [0116]Iteration 6:
- [0117]Target Max Die 2: Disabling Row 1: Column 4=Core 028
- [0118]Iteration 7:
- [0119]Target Max Die 1: Disabling Row 5: Column 3=Core 023
- [0120]Iteration 8:
- [0121]Target Max Die 0: Disabling Row 2: Column 0=Core 008
- [0110]Iteration 3:
[0122]With Reference to
[0123]In another embodiment, the core distribution system 100 may be triggered by a user request to modify the number of active cores in response to increased or decreased system load. For example, if the load on the system is reduced the user may disable a subset of the currently enabled cores to reduce power consumption or software licensing costs tied to the number of active cores.
[0124]The core distribution system 100 may access the core map, identify a current set of core IDs that are currently disabled by software (e.g., reversible state, not fused disabled), and determine the number of core IDs that are currently disabled by software. The core distribution system 100 may then start with an initial core map that enables the software disabled cores (e.g., treats them as enabled) and executes the core distribution algorithm to disable the same number of cores using method 400 and/or method 500. Thus, the current number of disabled cores are redistributed in the physical arrangement. Upon completion, a new arrangement of enabled and disabled cores may result, which may resolve the detected trigger condition that initiated the process.
Distribution of Disabled Cores in Out-of-Shape CPU Embodiment
[0125]In another embodiment, the core distribution system 100 may be configured to distribute disabled cores in an out-of-shape CPU that includes out-of-shape dies by first converting the CPU to an in-shape CPU with in-shape dies. As previously stated, an out-of-shape CPU is a CPU with an irregular mesh topology and an in-shape CPU is a CPU with a regular mesh topology. This also applies to an irregular core cluster, which is a single die that has one or more missing cores. Once the CPU (or core cluster) is converted to be in-shape, the previous core disabling and distribution methods may be applied as described with reference to
[0126]With reference to
[0127]In
[0128]In one embodiment, the core distribution system 100 may include a shape module 810 configured to determine whether a target CPU is in-shape or out-of-shape and convert out-of-shape dies to be in-shape. For example, the shape module 810 may be configured to access a core map and determine the physical arrangement of the entire CPU mesh including a number of rows and columns that include a core. Determining the physical arrangement may also include determining the number of dies, the number of physically present cores (which include fused disabled cores) based on core ID, and a 2-Dimensional size of the CPU matrix/grid based on rows and columns. Using this information, the shape module 810 can determine whether any (row, column) locations do not include a core.
[0129]When the shape module 810 determines that the CPU is out-of-shape, any out-of-shape dies are converted to be in-shape for the purpose of applying method 400. The same function may be applied to one or more irregular core clusters that may be present. In one embodiment, the shape module 810 inserts simulated disabled core IDs into the core map 800 to fill locations that do not include a core ID. Of course, these simulated disabled core IDs represent simulated cores that are non-existent and are not physically present in the CPU. They mimic an actual core. As such, the physical arrangement of the CPU appears to have been changed but has only changed logically in system settings.
[0130]With continued reference to
[0131]Upon completion of the shape conversion, the core map 820 now has a complete 6×8 matrix of cores. The core distribution algorithms of method 400 (
[0132]In another embodiment, the core distribution algorithms of method 400 or method 500 may be performed on an out-of-shape CPU directly without conversion. For example, any missing cores in an N×M matrix are treated as disabled cores by default without adding simulated cores to the core map.
[0133]With reference to
[0134]Initial core map 900 is based on the converted core map 820 (now in-shape) that includes the simulated disabled core IDs 255. The core map 900 further includes four (4) additional fused disabled cores to provide a different starting configuration and relationship of enabled cores and disabled cores. Here, the fused disabled cores are labeled with IDs “254” representing cores 005, 021, 035, and 037 that were fused during CPU manufacturing.
[0135]The core distribution method 500 (
[0136]With reference to method 500 of
[0137]As seen in the initial core map 900, the CPU has four dies with a total of 40 actual cores in the CPU labeled with core IDs 000 to 039. Note that cores labeled 255 are simulated from the previous conversion process. Additionally, four cores were fused during manufacturing, which are identified by the core IDs “254.” Therefore, the total available number of enabled/active cores is 36. The following example will process a request to disable 4 cores, or conversely, to enable 32 cores out of the total 36 enabled cores.
[0138]As previously described with reference to method 500, there will be four iterations to disable cores. Each iteration identifies one core to disable based on the current state of the physical arrangement/locations of enable cores and disabled cores in the CPU.
[0139]At block 510, method 500 identifies a max die from the present dies that contains a greatest number of enabled cores (max enabled cores) relative to the other dies. From the four dies (Die 0, Die 1, Die 2, and Die 3) in the initial core map 900 (
[0140]At block 520, the rows of Max Die 1 are traversed to find a total number of enabled cores in each row across the entire CPU mesh. In
[0141]At block 530, the columns of Max Die 1 are traversed to find a total number of enabled cores in each column across the entire CPU mesh. Again, looking at the core map 900 in
[0142]At block 540, the row and column results are combined (e.g., added together) for each row and column combination. This provides a summed combination of enabled cores from the rows and columns, which is used to identify an area in the core map that includes a greatest number of enabled cores. Table 3 shows example results from each step.
Table 3
First Iteration-Based on Max Die 1
- [0143]Block 520: Row Results based on Max Die 1
- [0144]Row [3]=8 enabled cores
- [0145]Row [4]=6 enabled cores
- [0146]Row [5]=4 enabled cores
- [0147]Block 530: Column Results based on Max Die 1
- [0148]Column [0]=4 enabled cores
- [0149]Column [1]=3 enabled cores
- [0150]Column [2]=6 enabled cores
- [0151]Column [3]=6 enabled cores
- [0152]Add for Each Row/Column Combination
- [0153]Row [3] (8)+Column [0] (4)=12<- - - Current Max=12
- [0154]Row [3] (8)+Column [1] (3)=11
- [0155]Row [3] (8)+Column [2] (6)=14<- - - Current Max=14
- [0156]Row [3] (8)+Column [3] (6)=14
- [0157]Row [4] (6)+Column [0] (4)=10
- [0158]Row [4] (6)+Column [1] (3)=9
- [0159]Row [4] (6)+Column [2] (6)=12
- [0160]Row [4] (6)+Column [3] (6)=12
- [0161]Row [5] (4)+Column [0] (4)=8
- [0162]Row [5] (4)+Column [1] (3)=7
- [0163]Row [5] (4)+Column [2] (6)=10
- [0164]Row [5] (4)+Column [3] (6)=10
- [0165]Result: Disabling Row [3] Column [2]=Core 012
- [0143]Block 520: Row Results based on Max Die 1
[0166]As previously explained, during each row/column combination, the algorithm tracks the current maximum value and updates the max value if the value is exceeded. After all combinations are added, the Max combined value of enabled cores is found at row 3, column 2. The core identified at this physical location in the core map is core 012. Thus, in this iteration, this is the location/area with the greatest number of enabled cores. This physical location/area in the CPU may also be considered the highest concentration or ratio of enabled cores, and thus, is the target area to disable a core. As such, core 012 is the target core and is selected to be disabled at block 550 (
[0167]With reference to
[0168]With reference again to
[0169]Method 500 is repeated for the three (3) remaining cores to disable. Table 4 illustrates the result of each iteration.
Table 4
Results of Four Iterations to Disable Four Cores
Based On Initial Core Map 900
- [0170]Iteration 1:
- [0171]Target Max Die 1: Number of enable cores=9
- [0172]Disabling Row 3: Column 2=Core 012
- [0173]Iteration 2:
- [0174]Target Max Die 2: Number of enabled cores=9
- [0175]Disabling Row 0: Column 4=Core 020
- [0176]Iteration 3:
- [0177]Target Max Die 1: Number of enabled cores=9
- [0178]Disabling Row 3: Column 3=Core 013
- [0179]Iteration 4:
- [0180]Target Max Die 0: Number of enabled cores=9
- [0181]Disabling Row 1: Column 2=Core 006
- [0170]Iteration 1:
[0182]Overall, the disabled cores are uniformly distributed and/or balanced throughout the physical arrangement of the multi-die CPU. This also creates a uniform distribution of the enabled cores throughout the CPU. By identifying target cores to disable based on a current (real-time) state of enabled core locations and disabled core locations, the core distribution system 100 creates a balanced physical distribution of disabled cores and enabled cores upon completion regardless of how many cores are disabled. The balanced physical distribution of cores is a more uniform distribution as compared to prior techniques.
[0183]The present core distribution system 100 and associated methods provide advantages and improvements to previous core disabling techniques. For example, the present system allows the ability to apply cores distribution to irregular shaped CPU dies (out-of-shape) and provide a balanced distribution of enabled and disabled cores in a multi-die CPU. The balanced distribution of the present system and method further improves the performance of cache-bound transactions between cores and between dies, as well as improves overall signal traffic across the entire CPU.
[0184]As previously explained, prior core disabling techniques that selected cores in a sequential manner by core ID created an imbalanced distribution of cores. This caused certain areas of the CPU to become hotspots while other areas remain cool due to excessive disabled cores in one area. This prior type of core distribution has led to thermal imbalance and potential thermal throttling, which is resolved by the present system and method.
Cloud or Enterprise Embodiments
[0185]In one embodiment, the core distribution system 100 may be a computing/data processing system including an application or collection of distributed applications for enterprise organizations. The applications and computing system 100 may be configured to operate with or be implemented as a cloud-based networking system, a software as a service (SaaS) architecture, or other type of networked computing solution. In one embodiment, the core distribution system is a centralized server-side application that provides at least the functions disclosed herein and that is accessed by many users via computing devices/terminals communicating with a computing system (functioning as the server) over a computer/communication network.
[0186]In one embodiment, one or more of the components described herein are configured as program modules stored in a non-transitory computer readable medium. The program modules are configured with stored instructions that when executed by at least a processor cause a computing system to perform the corresponding function(s) as described herein.
Computing Device Embodiment
[0187]
[0188]In different examples, the core distribution logic 1130 may be implemented in hardware, a non-transitory computer-readable medium 1137 with stored instructions, firmware, and/or combinations thereof. While the logic 1130 is illustrated as a hardware component attached to the bus 1108, it is to be appreciated that in other embodiments, the core distribution logic 1130 could be implemented in the processor 1102, stored in memory 1104, or stored in disk 1106.
[0189]In one embodiment, logic 1130 or the computer is a means (e.g., structure: hardware, non-transitory computer-readable medium, firmware) for performing the actions described. In some embodiments, the computing device may be a server operating in a cloud computing system, a server configured in a Software as a Service (SaaS) architecture, a smart phone, laptop, tablet computing device, and so on.
[0190]The means may be implemented, for example, as an ASIC programmed to facilitate core distribution of disabled and enabled cores similar to core distribution system 100. The means may also be implemented as stored computer executable instructions that are presented to computer 1100 as data 1116 that are temporarily stored in memory 1104 and then executed by processor 1102.
[0191]Logic 1130 may also provide means (e.g., hardware, non-transitory computer-readable medium that stores executable instructions, firmware) for performing one or more of the disclosed functions and/or combinations of the functions.
[0192]Generally describing an example configuration of the computer 1100, the processor 1102 may be a variety of various processors including dual microprocessor and other multi-processor architectures. Memory 1104 may include volatile memory and/or non-volatile memory. Non-volatile memory may include, for example, ROM, PROM, and so on. Volatile memory may include, for example, RAM, SRAM, DRAM, and so on.
[0193]A storage disk 1106 may be operably connected to the computer 1100 via, for example, an input/output (I/O) interface (e.g., card, device) 1118 and an input/output port 1110 that are controlled by at least an input/output (I/O) controller 1140. The disk 1106 may be, for example, a magnetic disk drive, a solid state disk drive, a floppy disk drive, a tape drive, a Zip drive, a flash memory card, a memory stick, and so on. Furthermore, the disk 1106 may be a CD-ROM drive, a CD-R drive, a CD-RW drive, a DVD ROM, and so on. The memory 1104 can store a process 1114 and/or a data 1116, for example. The disk 1106 and/or the memory 1104 can store an operating system that controls and allocates resources of the computer 1100.
[0194]The computer 1100 may interact with, control, and/or be controlled by input/output (I/O) devices via the input/output (I/O) controller 1140, the I/O interfaces 1118, and the input/output ports 1110. Input/output devices may include, for example, one or more displays 1170, printers 1172 (such as inkjet, laser, or 3D printers), audio output devices 1174 (such as speakers or headphones), text input devices 1180 (such as keyboards), cursor control devices 1182 for pointing and selection inputs (such as mice, trackballs, touch screens, joysticks, pointing sticks, electronic styluses, electronic pen tablets), audio input devices 1184 (such as microphones or external audio players), video input devices 1186 (such as video and still cameras, or external video players), image scanners 1188, video cards (not shown), disks 1106, network devices 1120, and so on. The input/output ports 1110 may include, for example, serial ports, parallel ports, and USB ports.
[0195]The computer 1100 can operate in a communication network environment and thus may be connected to the network devices 1120 via the I/O interfaces 1118, and/or the I/O ports 1110. Through the network devices 1120, the computer 1100 may interact with a network 1160. Through the network, the computer 1100 may be logically connected to remote computers 1165. Networks with which the computer 1100 may interact include, but are not limited to, a LAN, a WAN, and other networks.
Definitions and Other Embodiments
[0196]In another embodiment, the described methods and/or their equivalents may be implemented with computer executable instructions. Thus, in one embodiment, a non-transitory computer readable/storage medium is configured with stored computer executable instructions of an algorithm/executable application that when executed by a machine(s) cause the machine(s) (and/or associated components) to perform the method. Example machines include but are not limited to a processor, a computer, a server operating in a cloud computing system, a server configured in a Software as a Service (Saas) architecture, a smart phone, and so on). In one embodiment, a computing device is implemented with one or more executable algorithms that are configured to perform any of the disclosed methods.
[0197]In one or more embodiments, the disclosed methods or their equivalents are performed by either: computer hardware configured to perform the method; or computer instructions embodied in a module stored in a non-transitory computer-readable medium where the instructions are configured as an executable algorithm configured to perform the method when executed by at least a processor of a computing device.
[0198]While for purposes of simplicity of explanation, the illustrated methodologies in the figures are shown and described as a series of blocks of an algorithm, it is to be appreciated that the methodologies are not limited by the order of the blocks. Some blocks can occur in different orders and/or concurrently with other blocks from that shown and described. Moreover, less than all the illustrated blocks may be used to implement an example methodology. Blocks may be combined or separated into multiple actions/components. Furthermore, additional and/or alternative methodologies can employ additional actions that are not illustrated in blocks.
[0199]The following includes definitions of selected terms employed herein. The definitions include various examples and/or forms of components that fall within the scope of a term and that may be used for implementation. The examples are not intended to be limiting. Both singular and plural forms of terms may be within the definitions.
[0200]References to “one embodiment”, “an embodiment”, “one example”, “an example”, and so on, indicate that the embodiment(s) or example(s) so described may include a particular feature, structure, characteristic, property, element, or limitation, but that not every embodiment or example necessarily includes that particular feature, structure, characteristic, property, element or limitation. Furthermore, repeated use of the phrase “in one embodiment” does not necessarily refer to the same embodiment, though it may.
[0201]A “data structure”, as used herein, is an organization of data in a computing system that is stored in a memory, a storage device, or other computerized system. A data structure may be any one of, for example, a data field, a data file, a data array, a data record, a database, a data table, a graph, a tree, a linked list, and so on. A data structure may be formed from and contain many other data structures (e.g., a database includes many data records). Other examples of data structures are possible as well, in accordance with other embodiments.
[0202]“Computer-readable medium” or “computer storage medium”, as used herein, refers to a non-transitory medium that stores instructions and/or data configured to perform one or more of the disclosed functions when executed. Data may function as instructions in some embodiments. A computer-readable medium may take forms, including, but not limited to, non-volatile media, and volatile media. Non-volatile media may include, for example, optical disks, magnetic disks, and so on. Volatile media may include, for example, semiconductor memories, dynamic memory, and so on. Common forms of a computer-readable medium may include, but are not limited to, a floppy disk, a flexible disk, a hard disk, a magnetic tape, other magnetic medium, an application specific integrated circuit (ASIC), a programmable logic device, a compact disk (CD), other optical medium, a random access memory (RAM), a read only memory (ROM), a memory chip or card, a memory stick, solid state storage device (SSD), flash drive, and other media from which a computer, a processor or other electronic device can function with. Each type of media, if selected for implementation in one embodiment, may include stored instructions of an algorithm configured to perform one or more of the disclosed and/or claimed functions.
[0203]“Logic”, as used herein, represents a component that is implemented with computer or electrical hardware, a non-transitory medium with stored instructions of an executable application or program module, and/or combinations of these to perform any of the functions or actions as disclosed herein, and/or to cause a function or action from another logic, method, and/or system to be performed as disclosed herein. Equivalent logic may include firmware, a microprocessor programmed with an algorithm, a discrete logic (e.g., ASIC), at least one circuit, an analog circuit, a digital circuit, a programmed logic device, a memory device containing instructions of an algorithm, and so on, any of which may be configured to perform one or more of the disclosed functions. In one embodiment, logic may include one or more gates, combinations of gates, or other circuit components configured to perform one or more of the disclosed functions. Where multiple logics are described, it may be possible to incorporate the multiple logics into one logic. Similarly, where a single logic is described, it may be possible to distribute that single logic between multiple logics. In one embodiment, one or more of these logics are corresponding structure associated with performing the disclosed and/or claimed functions. Choice of which type of logic to implement may be based on desired system conditions or specifications. For example, if greater speed is a consideration, then hardware would be selected to implement functions. If a lower cost is a consideration, then stored instructions/executable application would be selected to implement the functions.
[0204]An “operable connection”, or a connection by which entities are “operably connected”, is one in which one or more communication channels are established that allow signals, data, messages, physical communications, and/or logical communications to be sent and/or received between the entities. An operable connection may include a physical interface, an electrical interface, and/or a data interface with one or more transmitters/receivers that communicate with wired and/or wireless signals. An operable connection may include differing combinations of interfaces and/or connections sufficient to establish and allow communication. For example, two entities can be operably connected to communicate signals to each other directly or through one or more intermediate entities (e.g., processor, operating system, logic, non-transitory computer-readable medium, internet communication devices, local network, etc.). Logical and/or physical communication channels can be used to create an operable connection.
[0205]“User”, as used herein, includes but is not limited to one or more persons, computers or other devices, or combinations of these. In one embodiment, a user request may include a request generated by an algorithm or other component of a computing device.
[0206]While the disclosed embodiments have been illustrated and described in considerable detail, it is not the intention to restrict or in any way limit the scope of the appended claims to such detail. It is, of course, not possible to describe every conceivable combination of components or methodologies for purposes of describing the various aspects of the subject matter. Therefore, the disclosure is not limited to the specific details or the illustrative examples shown and described. Thus, this disclosure is intended to embrace alterations, modifications, and variations that fall within the scope of the appended claims.
[0207]To the extent that the term “includes” or “including” is employed in the detailed description or the claims, it is intended to be inclusive in a manner similar to the term “comprising” as that term is interpreted when employed as a transitional word in a claim.
[0208]To the extent that the term “or” is used in the detailed description or claims (e.g., A or B) it is intended to mean “A or B or both”. When the applicants intend to indicate “only A or B but not both” then the phrase “only A or B but not both” will be used. Thus, use of the term “or” herein is the inclusive, and not the exclusive use.
Claims
What is claimed is:
1. A non-transitory computer-readable medium that includes stored thereon computer-executable instructions that when executed by at least a processor of a computing system, wherein the computing system includes one or more computing devices, cause the computing system to:
receive a request to disable a number of cores in a processing unit, wherein the processing unit includes a physical arrangement of one or more core clusters, wherein each core cluster includes a plurality of cores;
determine the physical arrangement of the plurality of cores including rows and columns of cores;
determine an association of each core within the plurality of cores to a specific core cluster;
identify enabled cores and disabled cores within the physical arrangement;
identify a number of target cores to disable from the physical arrangement by selecting the target cores to create a uniform distribution of enabled and disabled cores across of the one or more core clusters; and
disable the target cores selected.
2. The non-transitory computer-readable medium of
wherein selecting the target cores to create the uniform distribution of disabled cores and enabled cores comprises:
executing an algorithm that uniformly distributes the selected cores to disable throughout the physical arrangement based on physical locations of currently enabled cores and currently disabled cores.
3. The non-transitory computer-readable medium of
(i) identify a max cores cluster from one or more core clusters of the processing unit that includes a greatest number of enabled cores in relation to the other core clusters;
(ii) within the max cores cluster, identify a target core at a location based on the rows and the columns across the processing unit that include a greatest number of enabled cores;
(iii) disable the target core; and
repeat functions (i), (ii), and (iii) until the requested number of cores to disable are disabled.
4. The non-transitory computer-readable medium of
determine the physical arrangement of the plurality of cores from a core map that defines the plurality of cores arranged in rows and columns in the processing unit;
identify an area in the core map that includes a greatest number of enabled cores based on a summed combination of enabled cores from the rows and columns; and
select a target enabled core in the area and disable the target enabled core.
5. The non-transitory computer-readable medium of
select a first core cluster from one or more core clusters in the processing unit that includes a greatest number of enabled cores from the plurality of cores;
in the selected first core cluster, identify and select a most heavily utilized row and column in a core map including a row and column combination having a maximum number of enabled cores, where the row and column identifies a target core; and
disabling the target core associated with the row and column location.
6. The non-transitory computer-readable medium of
determine whether the physical arrangement represented by a core map includes an irregular core cluster;
wherein the irregular core cluster has one or more missing cores that are not present in one or more locations on the irregular core cluster causing the irregular core cluster to have an incomplete matrix of cores; and
for the one or more locations that do not have a core present, insert a simulated disabled core into the core map to convert the irregular core cluster to a regular core cluster.
7. The non-transitory computer-readable medium of
distribute cores in two different dimensions including a first dimension across the one or more core clusters and a second dimension across a physical layout of the plurality of cores.
8. A computing system, comprising:
one or more computing devices operably connected to communicate over one or more communication networks via one or more network interfaces;
at least one processing unit connected to at least one memory, wherein the at least one processing unit is operably connected to at least one of the one or more computing devices; and
a core distribution system configured on a non-transitory computer readable medium including instructions stored thereon that when executed by at least the processing unit cause the computing system to:
receive a request to disable a number of cores in a processing unit, wherein the processing unit includes a physical arrangement of one or more core clusters including a plurality of cores;
determine the physical arrangement of the plurality of cores including rows and columns of cores;
determine an association of each core within the plurality of cores to a specific core cluster from the one or more core clusters;
identify enabled cores and disabled cores within the physical arrangement;
identify a number of target cores to disable from the physical arrangement by selecting the target cores to create a uniform distribution of enabled and disabled cores across of the one or more core clusters; and
disable the target cores selected.
9. The computing system of
executing an algorithm that uniformly distributes the selected cores to disable throughout the physical arrangement based on physical locations of currently enabled cores and currently disabled cores.
10. The computing system of
wherein the core distribution system is configured to select the cores to create the uniform distribution of disabled cores and enabled cores by:
(i) identifying a max cores cluster from the one or more core clusters that includes a greatest number of enabled cores in relation to the other core clusters;
(ii) within the max cores cluster, identifying a target core at a location based on the rows and the columns across the processing unit that include a greatest number of enabled cores;
(iii) disabling the target core; and
repeating functions (i), (ii), and (iii) until the requested number of cores to disable are disabled.
11. The computing system of
determine the physical arrangement of the plurality of cores from a core map that defines the plurality of cores arranged in rows and columns;
identify an area in the core map that includes a greatest number of enabled cores based on a summed combination of enabled cores from the rows and columns; and
select a target enabled core in the area and disable the target enabled core.
12. The computing system of
determine whether the physical arrangement of the plurality of cores includes an irregular core cluster;
wherein the irregular core cluster has one or more missing cores that are not present in one or more locations on a die associated with the irregular core cluster causing the irregular core cluster to have an incomplete matrix of cores; and
for the one or more locations that do not have a core present, insert a simulated disabled core into a core map to convert the irregular core cluster to a regular core cluster.
13. The computing system of
14. A computer-implemented method, the method comprising:
receiving a request to disable a number of cores in a processing unit, wherein the processing unit includes one or more core clusters, wherein each core cluster of the one or more core clusters comprises a physical arrangement of a plurality of cores;
distributing plurality of cores across the one or more core clusters and across the physical arrangement of the plurality of cores, wherein the distributing comprises:
determining the physical arrangement of the plurality of cores including rows and columns of cores;
identifying enabled cores and disabled cores within the physical arrangement;
identifying a number of target cores to disable from the physical arrangement by selecting the target cores to create a uniform physical distribution of the disabled cores and the enabled cores throughout the physical arrangement of the plurality of cores; and
disabling the identified target cores.
15. The method of
executing an algorithm that uniformly distributes the selected cores to disable throughout the physical arrangement based on physical locations of currently enabled cores and currently disabled cores.
16. The method of
(i) identifying a max cores cluster from the one or more core clusters that includes a greatest number of enabled cores in relation to the other dies;
(ii) within the max cores cluster, identifying a target core at a location based on the rows and the columns across the processing unit that include a greatest number of enabled cores;
(iii) disabling the target core; and
repeating (i), (ii), and (iii) until the requested number of cores to disable are disabled.
17. The method of
determining the physical arrangement of the plurality of cores from a core map that defines the plurality of cores for the one or more core clusters arranged in rows and columns;
identifying an area in the core map that includes a greatest number of enabled cores based on a summed combination of enabled cores from the rows and columns; and
selecting a target enabled core in the area and disabling the target enabled core.
18. The method of
selecting a first core cluster from the one or more core clusters that includes a greatest number of enabled cores from the plurality of cores;
in the selected first core cluster, identifying and selecting a most heavily utilized row and column in a core map including a row and column combination having a maximum number of enabled cores, where the row and column identifies a target core; and
disabling the target core associated with the row and column location.
19. The method of
determining whether the physical arrangement represented by a core map of the processing unit includes an irregular core cluster;
wherein the irregular core cluster has one or more missing cores that are not present in one or more locations on the associated die causing the irregular core cluster to have an incomplete matrix of cores; and
for the one or more locations that do not have a core present, inserting a simulated disabled core into the core map to convert the irregular core cluster to a regular core cluster.
20. The method of
distributing cores in two different dimensions including a first dimension across the one or more core clusters and a second dimension across a physical layout of the plurality of cores.