RECONFIGURATION OF A COMPUTER SYSTEM USING A CIRCUIT SWITCH

A circuit switch and controller system in computer systems facilitate rapid reconfiguration of computing resources, addressing the inefficiencies of traditional packet-switched networks by enabling efficient and concurrent workload execution.

DE102023116347B4Active Publication Date: 2026-03-12HEWLETT PACKARD ENTERPRISE DEV LP
View PDF 3 Cites 0 Cited by

Patent Information

Authority / Receiving Office
DE · DE
Patent Type
Patents
Current Assignee / Owner
Filing Date
2023-06-22
Publication Date
2026-03-12

AI Technical Summary

Technical Problem

Reconfiguring temporary computing configurations in computer systems can be time-consuming, making them impractical for short jobs, especially in packet-switched networks where data forwarding takes significant time.

Method used

Implementing a circuit switch to rapidly route data signals between computing resources using electrical or optical circuits, allowing for the rapid initiation of temporary configurations, and a controller to analyze workloads at multiple levels of granularity to determine optimal resource allocations.

Benefits of technology

Enables faster and more efficient execution of workloads by dynamically reallocating resources, improving performance and enabling concurrent execution of multiple workloads.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 00000000_0000_ABST
    Figure 00000000_0000_ABST
Patent Text Reader

Abstract

A computing system (100) comprising the following: a variety of processing devices (120, 130); a variety of storage devices (140, 150); a circuit switch (110); and a controller (105) to: to identify a first and a second instruction level section that are to be executed sequentially by the computing system (100); Determining a first subset of the plurality of processing devices (120, 130) and a first subset of the plurality of storage devices (140, 150) to be used for the execution of the first instruction level section; Controlling the circuit switch (110) to connect the first subset of processing devices (120, 130) and the first subset of storage devices (140, 150) during an execution of the first instruction level section; Determining a second subset of the plurality of processing devices (120, 130) and a second subset of the plurality of storage devices (140, 150) to be used for executing the second instruction-level section; and Controlling the circuit switch (110) to connect the second subgroup of the plurality of processing devices (120, 130) and the second subgroup of the plurality of storage devices (140, 150) during an execution of the second instruction level section; wherein a first temporary configuration (320) comprises the first subset of the plurality of processing devices (120, 130) and the first subset of the plurality of storage devices (140, 150); wherein a second temporary configuration (330) comprises the second subset of the plurality of processing devices (120, 130) and the second subset of the plurality of storage devices (140, 150); the controller (105) continues to serve the following purpose: to determine a performance advantage of the second temporary configuration (330); to determine the performance costs of the second temporary configuration (330); to determine whether the benefits of the service outweigh the costs of the service; and In response to the finding that the performance benefit outweighs the performance costs, initiate the second temporary configuration (330) in the computing system (100).
Need to check novelty before this filing date? Find Prior Art

Description

background

[0001] Modern computer systems can contain any number of components, such as a central processing unit (CPU), memory, chipsets, and / or many other devices, interconnected by connections (e.g., a computer bus, a network, etc.). A connection allows data to be transferred between devices or components within a computer, as well as between computers. For example, a connection can be used to read a data element from memory and make it available to a processor.

[0002] US 2015 / 0370611 A1 discloses virtual machines in a computer cluster or cloud environment that require access to their allocated storage resources and those connected to them via Storage Area Networks (SANs). These virtual machines can operate independently of the associated physical servers in the computer cluster on which they are deployed. They can dynamically migrate between allocated physical servers, accessing their connected storage resources from both the source and destination servers during migration.

[0003] US 2018 / 0307295 A1 discloses various embodiments for reducing dynamic power consumption in a processor. One embodiment provides a method for dynamically reducing the link width based on the current throughput requirement of a client in a link network. Another embodiment provides a parallel processor with a link network that includes a dynamic bus module for configuring the bus width for a client of the link network based on its throughput requirement.

[0004] US 2019 / 0 020 566 A1 discloses a technique that relates to dynamic time-domain reflectometry (TDR). A machine saves a bad lane in a bus. The bad lane is taken offline. TDR is dynamically executed on the bad lane while the bus is still in operation. A defect is isolated using results of the TDR. Brief description of the drawings

[0005] Some embodiments are described with reference to the following illustrations. Fig. is a schematic diagram of an example computer system according to some implementations. Fig. This is an illustration of a sample process in accordance with some implementations. Fig. These are illustrations of example configurations according to some implementations. Fig. This is a representation of example software interfaces in accordance with some implementations. Fig. This is an illustration of a sample process in accordance with some implementations. Fig. is a schematic diagram of an example computer system according to some implementations. Fig. This is an illustration of a sample process in accordance with some implementations. Fig. is a diagram of a machine-readable medium that stores instructions in accordance with some implementations.

[0006] In the drawings, identical reference numbers denote similar, but not necessarily identical, elements. The illustrations are not necessarily to scale, and the size of some parts may be exaggerated to make the example shown clearer. Furthermore, the drawings contain examples and / or embodiments that correspond to the description; however, the description is not limited to the examples and / or embodiments shown in the drawings. Detailed description

[0007] In this disclosure, the use of the term "a," "an," or "the" includes the plural forms unless the context clearly indicates otherwise. Similarly, the terms "includes," "including," "comprises," "have," or "have," when used in this disclosure, specify the presence of the elements indicated but do not exclude the presence or addition of other elements.

[0008] In some examples, a computer system may comprise multiple computing resources connected via a network. Such computing resources might include, for example, processing units, storage units, accelerators, memory devices, and so on. In some examples, a subset of the computing resources (referred to here as a "temporary configuration") can be allocated to perform a different computing task. Furthermore, the temporary configuration can be deleted after the computing task is completed, and its computing resources can be made available for reconfiguration into new temporary configurations. However, in some computer systems, reconfiguring the temporary configurations can take a relatively long time (referred to here as the "delay time").For example, in a computer system using a packet-switched network, a considerable amount of time may be required to forward data in packets (e.g., to form, transmit, buffer, and decode the data packets). Accordingly, in such computer systems, using a temporary configuration for relatively short jobs (e.g., jobs with a relatively small number of instructions) may not be practical.

[0009] In accordance with some implementations of the present disclosure, a computer system may include a circuit switch to form temporary configurations of computer resources. The circuit switch may use electrical or optical circuits to rapidly route data signals between computing resources, thereby enabling the temporary configurations to be initiated with a relatively short delay (e.g., one percent of the delay time when using a packet switch). In some implementations, a controller may analyze a pending workload of the computer system and divide the workload into parts at multiple levels of granularity. For example, the controller may divide the pending workload into a sequence of sections, where the sections correspond to jobs, microservices, or instructions.For each workload segment, the control unit can determine whether using a temporary configuration would improve the performance of the computer system, and if so, it can initiate the temporary configuration to execute the workload segment.

[0010] Because the circuit switch can initiate the temporary configuration with a relatively short delay, some implementations may allow the use of a temporary configuration to execute relatively short portions of the workload (e.g., for a relatively small number of instructions). This allows for optimization of workload execution at multiple levels of granularity. In this way, some implementations can enable improved workload execution. Since compute resources can be dynamically reallocated between workloads during execution, the compute system in some implementations can increase the number of concurrently executed workloads. Various details of the use of temporary configurations are discussed below with reference to the Fig. . Fig. 1 - Example of a computer system

[0011] Fig. Figure 100 shows an example of a computer system 100 in accordance with some implementations. The computer system 100 can include one or more circuit switches 110 to establish connections between any number of computing resources. Such computing resources can include general-purpose processors (GPPs) 120, special-purpose processors (SPPs) 130, storage devices 140, memory devices 150, and other computing resources (not shown). For example, the general-purpose processors 120 can include various types of central processing units (CPUs), systems on a chip (SoCs), processing cores, etc. The special-purpose processors 130 can include various types of specialized processing devices, such as graphics processing units (GPUs), digital signal processors (DSPs), mathematical processors, encryption processors, network processors, and so on. The memory devices 140 can include various types of memory, such as...Dynamic random access memory (DRAM), static random access memory (SRAM), etc. The storage devices 150 can include one or more non-transferable storage media such as hard disk drives (HDDs), solid-state drives (SSDs), optical disks, etc., or a combination thereof. In some implementations, the computer system 100 and the included components can operate according to the Compute Express Link (CXL) protocol(s) or specification(s) (e.g., the CXL 1.1 specification).

[0012] In some implementations, the circuit switch 110 can be an electrical circuit switch that passes signals within the electrical domain (e.g., as electronic signals). In other implementations, the circuit switch 110 can be an optical circuit switch that passes signals within the optical domain (e.g., as photonic signals) without converting the signals into the electrical domain. The circuit switch 110 can be controlled by the controller 105. In some examples, the controller 105 can be implemented using hardware (e.g., electronic circuits) or a combination of hardware and programming (e.g., with at least one processor and instructions that can be executed by the at least one processor and are stored on at least one machine-readable storage medium).

[0013] In some implementations, the control unit 105 can analyze the pending workload of the computer system 100 and divide the workload into parts at multiple levels of granularity. For example, the control unit can divide the pending workload into a sequence of sections, where each section corresponds to one or more jobs, one or more microservices, or one or more instructions. The term "microservice," as used here, can refer to a software component that performs a single function, contains multiple instructions, and runs independently of other microservices. Furthermore, the term "job," as used here, can refer to a software application or module that comprises multiple microservices.

[0014] For each workload segment, Controller 105 can determine whether to initiate a temporary configuration to execute that segment. If so, Controller 105 can allocate subsets of resources to form the temporary configuration. This temporary configuration can then be used to execute the corresponding workload segment. An example of using temporary configurations is given below with reference to Fig. described.

[0015] In some implementations, the computer system can handle 100 different workloads simultaneously. For example, the circuit switch(es) 110 can be configured to divide the computer system's resources into a first resource grouping, allocated to a first workload, and a second resource grouping, allocated to a second workload. In such implementations, different workloads can run separately in different resource groupings (e.g., in parallel). Each workload can be associated with a different user entity (e.g., client, application, organization, etc.). In some implementations, the controller 105 can initiate one or more temporary configurations within each resource grouping (i.e., for each individual workload).For example, within a resource grouping, available resources can be assigned to two or more temporary configurations (e.g., to execute two workload parts in parallel). In another example, within a resource grouping, available resources can first be assigned to a first temporary configuration to execute the first workload part, released after the first workload part is complete, and then assigned to a second temporary configuration to execute the second workload part. Fig. 2 - Operational example

[0016] Fig. shows an illustration of a sample operation 200 in accordance with some implementations. Operation 200 can be performed by the (in Fig. The computer system shown (100) is executed. As in Fig. As shown, block 210 can include compiling the source code of a workload 201, thereby producing the compiled code 220 to be executed. The workload 201 consists of any number of jobs 202 (e.g., programs, applications, modules, etc.). Each job 202 consists of any number of microservices 203. Furthermore, each microservice 203 consists of any number of instructions 204.

[0017] Block 230 can include source code analysis to determine a sequence of workload parts at multiple levels of granularity (e.g., job(s), microservice(s), or instruction(s)). Block 240 can include determining a temporary configuration for each workload part. Block 250 can include controlling the circuit to provide the temporary configurations for executing the workload parts. Block 260 can include executing the workload parts using the appropriate temporary configurations, thereby generating the workload output 270.

[0018] In some implementations, each temporary configuration can be a subset of the computer resources contained in a computer system (e.g., a subset of those in Fig. GPPs 120, SPPs 130, storage devices 140, and / or storage devices 150 (shown) are selected to execute a corresponding workload portion. For example, the temporary configuration for a workload portion that involves performing data encryption may include at least one encryption processor to perform the encryption process, as well as sufficient memory to store variables and other data used during the encryption process. A circuit switch (e.g., the one shown in [reference missing]) may also be used to initiate the temporary configuration. Fig. The circuit switches shown (110) are controlled to establish the appropriate connections between the computer resources included in the temporary configuration. Some examples of temporary configurations are described below with reference to the Fig. DESCRIBED.

[0019] In some implementations, each workload part can be defined as a job part, a microservice part, or an instruction-level part. As used here, the term "job part" refers to program code for executing one or more jobs. Furthermore, the term "microservice part" refers to program code for executing one or more microservices. Additionally, the term "instruction-level part" refers to program code for executing one or more iterations of a specific instruction. For example, an instruction-level part might contain a computation instruction and the associated loop instruction(s) for repeating the computation instruction for a specified number of iterations. In this example, the instruction-level part can be referred to as the "loop instruction" that is executed over multiple iterations.In another example, a part at the instruction level can contain only a single arithmetic instruction that is executed once.

[0020] In some implementations, each workload segment can be identified as a continuous segment whose execution can be sped up or otherwise improved by using a specific temporary configuration of the computer system. For example, if the workload contains two adjacent instructions, and these two instructions execute fastest when a different temporary configuration is used for each, then these two instructions can be identified as two separate, instruction-level segments. Similarly, if the workload contains two adjacent microservices, and these two microservices execute fastest when the same temporary configuration is used for both, then these two microservices can be identified together as a single microservice segment. ABB. 3A-3D - Example of temporary configurations

[0021] Fig. These show exemplary temporary configurations in accordance with some implementations. These temporary example configurations can be found, for example, in Computer System 100 (in Fig. (as shown) are implemented.

[0022] In Fig. An example sequence 310 of workload sections is shown. In this example, the first workload section (instruction-level section "Instruction 1") in sequence 310 is analyzed to determine a first temporary configuration 320. As shown, the first temporary configuration 320 comprises a single GPP 120 and a single memory device 140 connected via the circuit switch 110. The first part of the workload might, for example, be a relatively simple instruction-level section that does not require any special processing or a large amount of memory.

[0023] In Fig. The second workload section (“Microservice 1”) in sequence 310 is analyzed to determine a second temporary configuration 330. As shown, the second temporary configuration 330 comprises a single GPP 120, a single storage device 140, and two SPPs 130 connected via the circuit switch 110. The second workload section could, for example, be a microservice section that includes video signal processing and therefore may require multiple SPPs 130, which are graphics accelerators.

[0024] In Fig. The third workload section (“Microservice 2”) in sequence 310 is analyzed to determine a third temporary configuration 340. As shown, the third temporary configuration 340 comprises a single GPP 120, two storage devices 140, and three SPPs 130 connected via the circuit switch 110. The third workload section could, for example, be a microservice section that includes complex encryption calculations and therefore may require multiple SPPs 130, which are encryption accelerators.

[0025] As in Fig. As shown, the fourth workload section (instruction-level section "Instruction 2") in sequence 310 is analyzed to determine a fourth temporary configuration 350. As shown, the fourth temporary configuration 350 comprises a single GPP 120 and three memory devices 140 connected via the circuit switch 110. The fourth workload section could, for example, be a loop instruction that performs multiple iterations to modify a very large data matrix in memory and therefore may require multiple memory devices 140 to hold the data matrix in memory. Fig. 4 - Example of software interfaces

[0026] Fig. Figure 470 shows an illustration of example software interfaces in accordance with some implementations. The Circuit Switch Control Logic 470 can analyze an upcoming workload of a computer system and determine a sequence of workload segments at multiple levels of granularity. The Circuit Switch Control Logic 470 can determine whether temporary configurations should be initiated for the workload segments, and if so, it can cause a circuit switch to provide the temporary configurations for executing the workload segments. The Circuit Switch Control Logic 470 can be implemented in a hardware controller (e.g., the one in Figure 470). Fig. The controller shown (105) may be implemented in software executed by a controller, or in a combination thereof. In some implementations, the circuit switch control logic (470) may interact with multiple software layers of the computer system to determine whether to initiate each temporary configuration. As shown in Fig. As shown, the circuit switch control logic 470 can interact with, for example, an application layer 410, a compiler layer 420, an operating system layer 430, an ISA hardware layer 440, an I / O hardware layer 450 and a hardware system management layer 460. Fig. 5 - Example process for initiating a temporary configuration

[0027] In Fig. This is an example process 500 for communicating a temporary configuration in accordance with some implementations. Process 500 can be initiated by a control unit (e.g., the one in Fig. Process 500 is performed by the control unit 105 shown, which executes instructions. Process 500 can be implemented in hardware or a combination of hardware and programming (e.g., machine-readable instructions that can be executed by one or more processors). The machine-readable instructions can be stored on a non-transitory, computer-readable medium, such as an optical, semiconductor, or magnetic storage device. The machine-readable instructions can be executed by a single processor, multiple processors, a single processing machine, multiple processing machines, etc. For illustration, details of Process 500 are given below with reference to Fig. The examples described show some implementations. However, other implementations are also possible.

[0028] Block 510 may include the analysis of program code to be executed by the computer system. Block 520 may include: determining a sequence of workload segments with multiple levels of granularity. For example, with reference to Fig. , the controller 105 analyzes the source code of the pending workload 201 and identifies a sequence 310 of workload segments at multiple levels of granularity (e.g. jobs, microservices, instructions).

[0029] Block 530 allows you to enter a loop (defined by blocks 530-590) to process each workload segment. Block 540 can include determining a temporary configuration for executing the current workload segment. Decision block 550 determines whether the temporary configuration represents a change from the current system configuration. If not ("NO"), process 500 can return to block 530 (e.g., to process a different workload segment). For example, regarding Fig. , the control unit 105 determines the first temporary configuration 320 to execute the first workload section (instruction-level section “Instruction 1”) and checks whether the first temporary configuration 320 differs from the currently existing configuration of the computer system used to execute the workload 210.

[0030] If decision block 550 determines that the temporary configuration is a change from the current system configuration (“YES”), process 500 can continue in block 560, including determining the performance benefit of the new temporary configuration (see Fig. Block 570 may include determining the performance costs of the new temporary configuration. Decision block 580 may include determining whether the performance benefit outweighs the performance costs. If not (“NO”), process 500 may return to block 530 (e.g., to process a different workload segment). For example, regarding the Fig. The controller 105 detects that the first temporary configuration 320 differs from the current configuration of the computer system 100. In response, the controller 105 calculates an estimated performance improvement if the temporary configuration is used to execute the workload portion (e.g., reduced execution time, energy savings, etc.). Furthermore, the controller 105 calculates the estimated performance costs of initiating the temporary configuration (e.g., loss of processing time while the computer system is reconfigured, energy costs, etc.). The controller 105 can then decide whether to initiate the temporary configuration based on a comparison between the performance improvement and the performance costs. In some implementations, the performance benefit can be determined, in part, based on the number of iterations the workload portion is repeated.For example, the performance benefit for a part at the instruction level, which is a loop instruction, can increase with the number of iterations of the loop instructions.

[0031] In some implementations, the decision to initiate the temporary configuration may also be based on the relative priority or importance of different temporary configurations that could potentially be allocated the same computing resource(s). For example, if two different temporary configurations both require a specific processing unit, the processing unit can be allocated to the temporary configuration with the higher priority (e.g., based on Service Level Agreements (SLAs)).

[0032] If decision block 580 determines that the performance benefit outweighs the performance costs (“YES”), process 500 can continue in block 590, including initiating the new temporary configuration to execute the workload segment, again with reference to Fig. After block 590, process 500 can return to block 530 (e.g., to process another workload segment). Once all workload segments in block 530 are complete, process 500 can terminate. For example, with respect to the Fig. The control unit 105 determines that the performance benefit of using the new temporary configuration outweighs the performance cost of initiating the new temporary configuration. In response to this determination, the control unit 105 releases the allocation of computational resources used by a previous temporary configuration (if any) and initiates the new temporary configuration. Upon initiating the new temporary configuration, the control unit 105 prepares a storage device 140 to execute the workload portion, controls a circuit switch 110 to provide the data paths for the temporary configuration, and validates the changes to the circuit switch 110. Furthermore, the control unit 105 grants the processing devices (e.g., GPPs 120 and / or SPPs 130) access to the prepared storage device 140 via the circuit switch 110, and the processing devices execute the workload portion. Fig. 6 - Example of a computer system

[0033] Fig. shows a schematic diagram of an example computer system 600. In some examples, the computer system 600 can generally be a part or all of the computer system 100 (represented in Fig. ). As shown, the computer system 600 can include processing devices 602, at least one circuit switch 606, memory devices 604, and a controller 605. In some implementations, the controller 605 can be a hardware processor that executes instructions 610-650. The instructions 610-650 can be stored in non-transferable, machine-readable memory.

[0034] Instruction 610 can be executed to identify the first and second instruction-level parts to be executed sequentially by the computer system. Instruction 620 can be executed to determine a first subset of processing devices and a first subset of storage devices to be used for executing the first instruction-level section. Instruction 630 can be executed to control the circuit switch to connect the first subset of processing devices and the first subset of storage devices during the execution of the first instruction-level section. For example, with reference to Fig. The control unit 105 analyzes the source code of the pending workload 201 and identifies a sequence 310 of workload sections at multiple granularity levels (e.g., jobs, microservices, instructions). The control unit 105 determines an initial temporary configuration to execute the first instruction-level part (e.g., a loop instruction) in the workload sequence and controls the circuit switch 110 and other system components to provide this initial temporary configuration. The first command-level section is executed using the second temporary configuration of the computer system 100.

[0035] Referring again to Fig. Command 640 can be executed to specify a second subset of processing devices and a second subset of storage devices to be used for executing the second part at the command level. Command 650 can be executed to control the circuit switch to connect the second subset of processing devices and the second subset of storage devices during the execution of the second part at the command level. For example, with reference to Fig. The control unit 105 determines a second temporary configuration for executing a second instruction-level section, which immediately follows the first instruction-level section, and controls the circuit switch 110 and other system components to provide the second temporary configuration. The second command-level section is then executed using the second temporary configuration of the computer system 100. Fig. 7 - Process example

[0036] In Fig. This is an example process 700, shown in accordance with several implementations. Process 700 can be executed by a control unit that carries out instructions (e.g., the one in Fig. (Control unit 105 shown). Process 700 can be implemented in hardware or a combination of hardware and programming (e.g., machine-readable instructions that can be executed by one or more processors). The machine-readable instructions can be stored on a non-transient, computer-readable medium, such as an optical, semiconductor, or magnetic storage device. The machine-readable instructions can be executed by a single processor, multiple processors, a single processing machine, multiple processing machines, etc.

[0037] Block 710 may include a computer system controller identifying the first and second instruction-level parts to be executed sequentially by the computer system, wherein the computer system comprises a plurality of processing devices, a plurality of storage devices, and a circuit switch. Block 720 may include the controller determining a first subset of the processing devices and a first subset of the storage devices to be used for executing the first instruction-level part. Block 730 may include the control of the circuit switch by the controller to connect the first subset of the processing devices and the first subset of the storage devices during the execution of the first instruction-level part.

[0038] Block 740 may involve the controller determining a second subset of processing devices and a second subset of storage devices to be used for executing the second instruction level section. Block 750 may involve the control unit activating the circuit switch to connect the second subset of processing devices and the second subset of storage devices during the execution of the second instruction level section. After block 750, process 700 may be completed. Fig. 8 - Example of a machine-readable data carrier

[0039] Fig. Figure 900 shows a machine-readable medium 800 on which instructions 810-850 are stored in accordance with some implementations. Instructions 810-850 can be executed by a single processor, multiple processors, a single processing machine, multiple processing machines, etc. The machine-readable medium 900 can be a non-transient storage medium, such as an optical, semiconductor, or magnetic storage medium.

[0040] Instruction 810 can be executed to identify the first and second instruction-level parts to be executed sequentially by a computer system, wherein the computer system comprises a plurality of processing devices, a plurality of storage devices, and a circuit switch. Instruction 820 can be executed to determine a first subset of the processing devices and a first subset of the storage devices to be used for the execution of the first instruction-level part. Instruction 830 can be executed to control the circuit switch to connect the first subset of the processing devices and the first subset of the storage devices during the execution of the first instruction-level part.

[0041] Command 840 can be executed to specify a second subset of processing devices and a second subset of storage devices to be used for executing the second part at the command level. Command 850 can be executed to control the circuit switch to connect the second subset of processing devices and the second subset of storage devices during the execution of the second part at the command level.

[0042] In accordance with some implementations of the present disclosure, a computer system may include a circuit switch to form temporary configurations of computing resources. The circuit switch may use electrical or optical circuits to rapidly relay data signals between computing resources, thereby enabling the temporary configurations to be initiated with a relatively short delay. A controller may analyze a pending workload to identify portions of the workload at multiple levels of granularity and determine temporary configurations of the computer system to execute those portions. In this way, some implementations may enable faster and / or more efficient execution of the workload, thereby improving the performance of the computer system.

[0043] Note that the Fig. Various examples show that implementations are not limited in this respect. For example, the computer system 100, as in Fig. The diagram shows that additional devices and / or components, fewer components, different components, different arrangements, etc., may be included. Another example is that the functionality of controller 105 described above may be contained in another machine or software of computer system 100. Other combinations and / or variations are also possible.

[0044] Data and instructions are stored in appropriate storage devices, which are implemented as one or more computer-readable or machine-readable storage media. Storage media include various forms of non-transient memory, including semiconductor memory such as dynamic or static random-access memory (DRAM or SRAM), erasable and programmable read-only memory (EPROM), electrically erasable and programmable read-only memory (EEPROM), and flash memory; magnetic disks such as hard disks, floppy disks, and removable disks; other magnetic media including tapes; optical media such as compact discs (CDs) or digital video discs (DVDs); or other types of storage devices.

[0045] It should be noted that the instructions discussed above can be provided on a single computer-readable or machine-readable storage medium, or alternatively, on multiple computer-readable or machine-readable storage media distributed throughout a large system, possibly with multiple nodes. Such computer-readable or machine-readable storage medium or media are considered part of an article (or article of manufacture). An article or article of manufacture can refer to any single component manufactured or to multiple components. The storage medium or media can be located either in the machine on which the machine-readable instructions are executed or at a remote location from which machine-readable instructions can be downloaded for execution over a network.

[0046] The foregoing description includes numerous details to provide an understanding of the subject matter disclosed herein. However, implementations may be practiced without some of these details. Other implementations may include modifications and deviations from the details described above. It is intended that the accompanying claims cover such modifications and variations.

Claims

[1] A computing system (100) comprising the following: a variety of processing devices (120, 130); a variety of storage devices (140, 150); a circuit switch (110); and a controller (105) to: to identify a first and a second instruction level section that are to be executed sequentially by the computing system (100); Determining a first subset of the plurality of processing devices (120, 130) and a first subset of the plurality of storage devices (140, 150) to be used for the execution of the first instruction level section; Controlling the circuit switch (110) to connect the first subset of processing devices (120, 130) and the first subset of storage devices (140, 150) during an execution of the first instruction level section; Determining a second subset of the plurality of processing devices (120, 130) and a second subset of the plurality of storage devices (140, 150) to be used for executing the second instruction-level section; and Controlling the circuit switch (110) to connect the second subgroup of the plurality of processing devices (120, 130) and the second subgroup of the plurality of storage devices (140, 150) during an execution of the second instruction level section; wherein a first temporary configuration (320) comprises the first subset of the plurality of processing devices (120, 130) and the first subset of the plurality of storage devices (140, 150); wherein a second temporary configuration (330) comprises the second subset of the plurality of processing devices (120, 130) and the second subset of the plurality of storage devices (140, 150); the controller (105) continues to serve the following purpose: to determine a performance advantage of the second temporary configuration (330); to determine the performance costs of the second temporary configuration (330); to determine whether the benefits of the service outweigh the costs of the service; and In response to the finding that the performance benefit outweighs the performance costs, initiate the second temporary configuration (330) in the computing system (100). [2] The computing system (100) according to claim 1, wherein: The performance benefit is an estimated reduction in execution time for using the second temporary configuration (330) to execute the second command-level section; and The performance costs are an estimated loss of processing time to initiate the second temporary configuration (330). [3] The computing system (100) according to claim 2, wherein the controller (105) further serves to: to determine whether the second temporary configuration (330) differs from the first temporary configuration (320); and Initiating the second temporary configuration (330) in response to the finding that the second temporary configuration (330) differs from the first temporary configuration (320). [4] The computing system (100) according to claim 1, wherein the circuit switch (110) is an optical circuit switch (110) to guide signals within the optical domain. [5] The computing system (100) according to claim 1, wherein the circuit switch (110) is an electrical circuit switch (110) for forwarding electrical signals, and wherein the electrical circuit switch (110) does not process data packets. [6] The computing system (100) according to claim 1, wherein the controller (105) is configured to: to analyze an upcoming workload of the computer system (100); and Divide the upcoming workload into parts at multiple levels of granularity, including jobs, microservices, and instructions. [7] The computing system (100) according to claim 1, wherein the first instruction level section comprises a loop instruction to be repeated for a plurality of iterations, and wherein the plurality of processing devices (120, 130) comprises: a large number of general-purpose processors (120); and a large number of specialized processors (130). [8] A procedure that includes the following: Identifying first and second parts at the instruction level to be executed sequentially by a computing system (100) by a controller (105) of a computing system (100), wherein the computing system (100) comprises a plurality of processing devices (120, 130), a plurality of storage devices (140, 150) and a circuit switch (110); Determining by the controller (105) a first subset of the plurality of processing devices (120, 130) and a first subset of the plurality of storage devices (140, 150) to be used for the execution of the first instruction level section; Control of the circuit switch (110) by the controller (105) to connect the first subset of the plurality of processing devices (120, 130) and the first subset of the plurality of storage devices (140, 150) during an execution of the first instruction level section; Determining by the controller (105) a second subset of the plurality of processing devices (120, 130) and a second subset of the plurality of storage devices (140, 150) to be used for executing the second instruction level section; and Control of the circuit switch (110) by the controller (105) to connect the second subset of the plurality of processing devices (120, 130) and the second subset of the plurality of storage devices (140, 150) during an execution of the second instruction level section; wherein a first temporary configuration (320) comprises the first subset of the plurality of processing devices (120, 130) and the first subset of the plurality of storage devices (140, 150); and a second temporary configuration (330) includes the second subset of the plurality of processing devices (120, 130) and the second subset of the plurality of storage devices (140, 150), the procedure further includes: Determination of a performance advantage of the second temporary configuration (330); Determination of the performance costs of the second temporary configuration (330); Determining whether the benefits of the service outweigh the costs; and in response to the finding that the performance benefit outweighs the performance costs, the second temporary configuration (330) in the computing system (100) is initiated. [9] The method according to claim 8, wherein: The performance benefit is an estimated reduction in execution time for using the second temporary configuration (330) to execute the second command-level section; and The performance costs are an estimated loss of processing time to initiate the second temporary configuration (330). [10] The method according to claim 8 further comprises: Determine whether the second temporary configuration differs from the first temporary configuration (320); and Initiation of the second temporary configuration (330) in response to the finding that the second temporary configuration (330) differs from the first temporary configuration (320). [11] The method according to claim 8 further comprises: Executing the first instruction level section using the first subset of the plurality of processing devices (120, 130) and the first subset of the plurality of storage devices (140, 150), comprising executing a plurality of iterations of a looped instruction. [12] A non-transitory, machine-readable medium that stores instructions which, when executed, cause a processor to: Identification of first and second instruction level sections to be executed successively by a computing system (100), wherein the computing system (100) comprises a plurality of processing devices (120, 130), a plurality of storage devices (140, 150) and a circuit switch (110); Determining a first subset of the plurality of processing devices (120, 130) and a first subset of the plurality of storage devices (140, 150) to be used for the execution of the first instruction level section; Controlling the circuit switch (110) to connect the first subset of the plurality of processing devices (120, 130) and the first subset of the plurality of storage devices (140, 150) during an execution of the first instruction level section; Determining a second subset of the plurality of processing devices (120, 130) and a second subset of the plurality of storage devices (140, 150) to be used for executing the second instruction stage section; and Controlling the circuit switch (110) to connect the second subset of the plurality of processing devices (120, 130) and the second subset of the plurality of storage devices (140, 150) during an execution of the second instruction level section, wherein a first temporary configuration (320) comprises the first subset of the plurality of processing devices (120, 130) and the first subset of the plurality of storage devices (140, 150); and a second temporary configuration (330), the second subset of the plurality of processing devices (120, 130), and the second subset of the plurality of storage devices (140, 150); Determining a performance advantage of the second temporary configuration (330); Determination of the performance costs of the second temporary configuration (330); Determine whether the benefits of the service outweigh the costs; and In response to the finding that the performance benefit outweighs the performance costs, initiate the second temporary configuration (330) in the computing system (100). [13] The non-transitory machine-readable medium according to claim 12, wherein: The performance benefit is an estimated reduction in execution time for using the second temporary configuration (330) to execute the second command-level section; and The performance costs are an estimated loss of processing time to initiate the second temporary configuration (330). [14] The non-transitory machine-readable medium according to claim 12, wherein the circuit switch (110) is an optical circuit switch (110) which conducts signals within the optical domain.

Citation Information

Patent Citations

  • Flexible deployment and migration of virtual machines

    US20150370611A1

  • Interconnect fabric link width reduction to reduce instantaneous power consumption

    US20180307295A1

  • Dynamic time-domain reflectometry analysis for field replaceable unit isolation in a running system

    US20190020566A1