Integrated circuits (ICs) may include various electronic elements such as a central processing unit (CPU), a graphics processing unit (GPU), and a memory array.
Examples are disclosed that relate to refining power and performance characteristics of an integrated circuit including redundant electronic elements. In one example, a plurality of electronic elements of an integrated circuit may be tested to determine one or more operating parameters of the integrated circuit. The plurality of electronic elements includes one or more redundant electronic elements designated as inactive by a manufacturer's default configuration of the integrated circuit. A subset of electronic elements may be selected from the plurality of electronic elements based on the one or more operating parameters. The subset of electronic elements may be designated as active in an updated configuration of the integrated circuit. Operation of the integrated circuit may be controlled using the updated configuration instead of the manufacturer's default configuration.
This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter. Furthermore, the claimed subject matter is not limited to implementations that solve any or all disadvantages noted in any part of this disclosure.
Some integrated circuits may be designed to have one or more spare or redundant elements (e.g., processing cores, compute units, memory locations). Such redundant elements may be used by an integrated circuit manufacturer to perform a “repair” process after fabrication of the integrated circuit in which one or more of these redundant electronic elements are used in place of other electronic elements that are determined to be defective or not fully functional. By including redundant electronic element on the integrated circuit and performing the repair process, an integrated circuit may be deemed fully functional even if the integrated circuit includes some defective electronic elements. This helps the integrated circuit manufacturer to achieve desired yields of integrated circuits. The repair solutions employed by the integrated circuit manufacturer provide a limited amount of performance enhancement. Moreover, such repair solutions are implemented at either wafer test or module test, and focus on replacing defective electronic elements in the most time-efficient manner possible. As such, the test patterns and power delivery attributes of these device manufacturing test environments often differ substantially from those of the final computing system in which the integrated circuit device is used, and do not necessarily correlate with the performance requirements of the final computing system.
Conventionally, the integrated circuit manufacturer does not make the status and availability of such redundant/unused electronic elements visible to the computing system in which the integrated circuit is incorporated. Moreover, various operating parameters of the integrated circuit, such as memory access timing, are fixed by the manufacturer. There have been attempts to enhance the power and performance of multiple-core integrated circuits for specific computing system configurations, but such previous attempts have not made use of manufacturer-designated redundant electronic elements.
Accordingly, examples are disclosed that relate to refining power and performance characteristics of an integrated circuit including redundant electronic elements. Such integrated circuits may include CPUs, GPUs, and system on a chip (SoC) devices. In one example, a plurality of electronic elements of an integrated circuit may be tested to determine one or more operating parameters of the integrated circuit (e.g., minimum voltage level needed for operation, overall heat generation in the IC for various configurations of core usage). The plurality of electronic elements includes one or more redundant electronic elements designated as inactive by a manufacturer's default configuration of the integrated circuit. A subset of electronic elements may be selected from the plurality of electronic elements based on the one or more operating parameters. The subset of electronic elements may be designated as active in an updated configuration of the integrated circuit. Operation of the integrated circuit may be controlled using the updated configuration instead of the manufacturer's default configuration.
In another example, an integrated circuit may include a plurality of memory array elements configured according to a manufacturer's default configuration that specifies a first set of timing parameters for accessing the memory array elements. The plurality of memory array elements may be tested to determine one or more operating parameters of the integrated circuit. A second set of timing parameters different than the first set of timing parameters may be determined based on the one or more operating parameters. Operation of the integrated circuit may be controlled using the second set of timing parameters instead of the first set of timing parameters.
By adjusting the power and performance characteristics of the integrated circuit at a final implementation level using the redundant electronic elements of the integrated circuit, improved power characteristics at a given performance level may be achieved relative to the manufacturer-configured integrated circuit. In another example, at a given power level, enhanced system performance can be realized. In yet another example, operation of the integrated circuit may be adjusted to balance power and performance characteristics.
Although the memory array 114 is depicted as a separate component, in practice the integrated circuit may include multiple memory arrays. In some examples, at least some memory arrays may be incorporated within the other electronic elements (e.g., processing cores of the CPU and compute units of the GPU). In other examples, at least some memory elements may be outside of these computational units throughout the integrated circuit architecture (e.g., on-chip L2 cache, L3 cache, or other hierarchical levels). In some examples, the integrated circuit may include multiple different types of memory arrays, such as common memory arrays shared by multiple processing cores or compute units and dedicated memory arrays used by a single processing core or compute unit.
The integrated circuit 102 may include any suitable number of different electronic elements 104 that are designated by the integrated circuit manufacturer as being redundant and/or inactive. For example, the redundant and/or inactive electronic elements may include a combination of processing cores of the CPU, compute units of the GPU, and memory locations of the one or more memory arrays.
The integrated circuit 102 may be initially configured to operate according to a manufacturer's default configuration 126. For example, the manufacturer's default configuration 126 may specify the manufacturer's default power and performance characteristics, operating parameter setpoints, status/mapping/indication of active/inactive electronic elements based on wafer or module testing, and rules/constraints. The manufacturer's default configuration 126 may be stored in non-volatile memory 124 of the computing system 100 and may be visible/accessible by the computing system 100. Moreover, the integrated circuit may be configured such that the manufacturer's default configuration can be overridden by an updated configuration 128 that specifies different active/inactive electronic elements and/or different operating parameter setpoints. For example, the updated configuration 128 may be implemented using memory mapped I/O (MMIO) or other commands that give access to the register settings that control processing core, compute unit, and memory location replacement. In another example, the updated configuration 128 may be implemented using JTAG (Joint Test Action Group) commands in a debugging or test program 132. The test program 132 may be stored in off-chip memory 130 of the computing system 100. Off-chip memory 130 refers to a memory device that is not incorporated into the integrated circuit 102. The computing system 100 may execute the test program 132 to perform testing on the electronic elements 104 of the integrated circuit 102 and output the updated configuration 128. In some examples, the updated configuration 128 may be stored in off-chip memory 130, alternatively or in addition to being stored in the non-volatile memory 124 of the integrated circuit 102. Further, in some examples, a test program may be stored on-chip. In some examples, some test assist features may also exist on-chip and such test assist features may be used in conjunction with a test program that is executed off-chip.
The computing device 100 incorporating the integrated circuit 102 may be configured to test the plurality of electronic elements (e.g., processing cores of the CPU, compute units of the GPU, memory locations of the one or more memory arrays) 104, including the redundant electronic elements designated by the manufacturer as inactive, to determine one or more operating parameters of the integrated circuit 102. In one example, the operating parameter(s) include a minimum operational voltage of each of the electronic elements. In another example, the operating parameter(s) include an operational temperature of each of the electronic elements. In another example, the operating parameter(s) may be used to track aging characteristics of each of the electronic elements.
The integrated circuit 102 includes various monitoring circuits 118 for performing tests for determining the operating parameter(s). For example, the monitoring circuits 118 may include a plurality of power testing circuits 120 configured to determine power characteristics for each of the electronic elements 104, such as a minimum operational voltage level of each of the electronic elements 104. Control of the integrated circuit 102 then may be based on the determined power characteristics. For example, the power testing circuits 120 may indicate that an electronic element degrades at a voltage level greater than a minimum operational voltage setpoint of the integrated circuit 102. In response, the computing system 100 may be configured to increase the minimum operational voltage setpoint of the integrated circuit 102 to maintain a suitable margin (e.g., 50 millivolts).
The monitoring circuits 118 may further include thermal testing circuits 122 configured to determine thermal characteristics for each of the electronic elements 104, such as an operational temperature of each of the electronic elements 104. Control of the integrated circuit 102 then may be based on the determined thermal characteristics. Although the monitoring circuits are schematically shown as separate components, it will be appreciated that one or more monitoring circuits may be incorporated into other circuits located on the integrated circuit. For example, thermal diodes for measuring the temperatures of the electronic elements may be placed all around the integrated circuit, either in or near the processing cores of the CPU, the compute unites of the GPU, and/or the memory array(s).
The plurality of electronic elements 104 may be tested using various test strategies to determine adjustment solutions. In some examples, the electronic elements may be tested one at a time. In other examples, all electronic elements may be tested simultaneously. In yet other examples, a subset of electronic elements may be tested simultaneously (e.g., ¼ at a time, ½ at a time, ⅛ at a time).
The computing system 100 further may be configured to select a subset of electronic elements from the plurality of electronic elements based on the one or more operating parameters. The subset of electronic elements may be designated as active via data in the updated configuration 128 stored in non-volatile memory 124 of the integrated circuit 102 and/or off-chip memory 130 of the computing system 100. The computing system 100 then may control operation of the integrated circuit 102 using the updated configuration 128 instead of the manufacturer's default configuration 126. In particular, the subset of electronic elements designated as active by the updated configuration 128 may be used during operation of the integrated circuit 102.
The subset of electronic elements 104 designated as active in the updated configuration 128 of the integrated circuit 102 may be dictated at least in part by rules and constraints of the integrated circuit 102. In one example, such rules may specify that six out of eight possible processing cores 108 of the CPU 106 must be designated as active. Accordingly, in this example, the testing and selection process would identify the “best” six processing cores 108 according to adjustment criteria for the integrated circuit 102. Further, in implementations, the CPU may operate in a low power mode, and such rules may specify that three out of eight possible processing cores 108 of the CPU 106 must be designated as active in the low power mode. In this example, the testing and selection process would identify the “best” three processing cores 108 according to adjustment criteria for the integrated circuit 102. In some examples, the updated configuration 128 may abide by the rules/constraints of the integrated circuit 102. For example, swapping of active and inactive compute units 112 may be restricted to being within the same quadrant of the GPU 110.
The subset may include any suitable number and/or different type of electronic elements 104 on the integrated circuit 102. In the case of the CPU 106, different processing cores 108 may be selected for inclusion in the subset. In the case of the GPU 110, different compute units 112 may be selected for inclusion in the subset. In the case of the memory array(s) 114, different memory locations 116, rows, and/or columns (within the same memory array or in different memory arrays) may be selected for inclusion in the subset. In some examples, the subset may include processing cores 108 of the CPU 106, compute units 112 of the GPU 110, and memory locations 116 of one or more memory arrays 114. In other examples, operational adjustment may be performed individually for the CPU 106, GPU 110, or memory array(s) 114 without adjusting operation of one or more of the other components of the integrated circuit 102.
In an example where operation of the integrated circuit 102 is adjusted to minimize power consumption, a minimum operational voltage level may be determined for each electronic element 104, and the subset of electronic elements 104 may be selected based on having a lowest minimum operational voltage. In an example where operation of the integrated circuit 102 is adjusted based on thermal characteristics, the subset of electronic elements 104 may be selected based on having a lowest minimum operational temperature of the plurality of electronic elements. For example, electronic elements in a middle portion of the integrated circuit 102 may run hotter than electronic elements located closer to a periphery of the integrated circuit die 102. Thus, these centrally located electronic elements 104 may be swapped out for different electronic elements 104 located along the periphery of the integrated circuit die 102. Further, in some examples, operation of the integrated circuit 102 may be adjusted via selection of the subset of electronic elements 104 to balance power consumption and thermal considerations. The subset of electronic elements may be selected using any suitable algorithm that considers different operating parameters. In one example, the electronic elements having the lowest minimum operational voltage and the lowest operational temperature may be selected for inclusion in the subset. In some examples, these different operating parameters may be weighted differently in a selection algorithm.
Adjusting operation of the integrated circuit 102 further may include adjusting other operating parameters and/or setpoints set by the manufacturer. For example, the manufacturer's default configuration 126 may specify a set of timing parameters for accessing the memory locations 116 of the memory array(s) 114 (e.g., read timings, write timings, internal based pulse widths). Additionally, the default configuration 126 may specify constraints for the memory array(s) 114, such as what memory locations/arrays are controlled by each register (a single array, the arrays for an entire core, the arrays for a quad of cores, all arrays of a particular type across all cores, etc.). The computing system 102 may be configured to test the plurality of memory locations 116 to determine one or more operating parameters of the integrated circuit. As one example, the operating parameter(s) may include a minimum operational voltage. As another example, the operating parameter(s) may include an operational temperature. The computing system 100 may be configured to determine a second set of timing parameters different than the manufacturer's default set of timing parameters based on the one or more operating parameters, and control operation of the integrated circuit 102 using the second, different set of timing parameters instead of the manufacturer's default set of timing parameters. Such parameter adjustment may be applicable to other parameters or setpoints set by the manufacturer, such that any suitable operating parameter and/or operating setpoint set in the manufacturer's default configuration may be visible to the computing system and overridden by the updated configuration 128. For example, the updated configuration 128 may override various power, thermal, and/or acoustic setpoints set by the integrated circuit manufacturer.
In some implementations, operation of the integrated circuit 102 may be adjusted one time after the integrated circuit 102 is manufactured, such as at the time of manufacture of the computing system 100. In this case, the updated configuration 128 may be stored in the non-volatile memory 124 of the integrated circuit 102 (or another memory location, such as off-chip memory 130, of the computing system 100), and the updated configuration 128 may be used persistently to control the integrated circuit 102 instead of the manufacturer's default configuration 126.
In other implementations, the computing system 100 may be configured to repeatedly re-test the plurality of electronic elements 104 and adjust the updated configuration 128 based on the updated results of the re-test. In this case, when the re-test is performed, the adjusted updated configuration 128 may be used to control the integrated circuit 102 instead of the manufacturer's default configuration 126. In some examples, the plurality of electronic elements 104 may be re-tested each time the integrated circuit 102 and/or computing system 100 is powered on and/or each time a software update is performed on the integrated circuit 102 and/or computing device 100. Further, in some examples, the plurality of electronic elements 104 may be re-tested on a periodic basis. In general, suitable times for performing such testing may include times when a user expects a delay (e.g., during boot up or while installing an update), such that any additional delay resulting from the process of adjusting operation of the integrated circuit 102 has minimal impact on the user experience.
In some implementations, the integrated circuit 102 may be configured to operate both in a full power mode in which all electronic elements 104 of the subset that are designated as active are put to use, and in one or more low power modes in which fewer than all electronic elements 104 of the subset that are active are put to use. In one example, eight out of eight cores of a CPU may be put to use in a full power mode and three out of eight cores of the CPU may be put to use in a low power mode. In other examples, any other suitable number of cores may be put to use in a full power mode and a low power mode.
In some examples, constraints may be imposed on the electronic elements 104 that can be selected for the low power modes. For example, the constraints may dictate that compute units 112 within the same quadrant of the GPU 110 are selected for the low power mode. Similar constraints may apply to selecting active processing cores in the CPU and active memory locations in the memory array for low power modes. Further, in some examples, different memory timing parameters may be selected for full power mode and low power mode, and constraints may be imposed on the memory timing parameters that can be selected for the lower power modes.
In some implementations, adjusting operation of the integrated circuit 102 may be performed to help mitigate aging characteristics of the electronic elements. For example, addressing within the integrated circuit 102 may be altered so that what has been designated as processing core/compute unit/memory location 0/1/2/3 . . . may be rotated or swapped over the course of time to ensure that inherently busy processing cores/compute units/memory locations are not constrained to the same physical element. Any number of swaps or switches may be contemplated within the scope of this description. For example, rotation may be used such that 0 goes to 1, 1 goes to 2, 2, goes to 3, etc., and on subsequent switches the rotation is incremented such that the previous 0 goes to 1, 1 goes to 2, 2 goes to 3, etc. In other words, the electronic elements may be swapped sequentially. In another example, electronic elements 104 may be swapped odds for evens. In another example, electronic elements may be swapped low order for high order (0 to 6 become 7 to 13, 7 to 13 become 0 to 6, etc.).
In some examples, swaps of different subsets of electronic elements 104 may be restricted to only occur at a time when the system boots up or goes through a warm (non-power down) reboot. In other examples, swaps may occur during standard operation of the integrated circuit 102 and/or the computing device 100. For example, different compute units of the GPU may be swapped to help mitigate aging characteristics. In yet other examples, swaps may occur periodically. Further, in some examples, swaps of electronic elements 104 may be controlled internally on the integrated circuit 102 or made visible to the computing system 100 so that core addressing is controlled through system operation (e.g., adjusted at that level for taking into consideration how long each addressing option is utilized over time).
Such swaps may be similarly applicable to memory array operations. For example, address swaps may occur for either rows, columns, or both rows and columns so that highly used array locations (or those with data that rarely changes) do not age at a disproportionately higher rate than other locations within the array(s). This can be used in conjunction with altering the data polarity. In some examples, memory location swaps may be restricted to only occur at a time when the system boots up or goes through a warm (non-power down) reboot. In other examples, memory location swaps may occur during standard operation of the integrated circuit 102 and/or the computing device 100. In yet other examples, memory location swaps may occur periodically. Further, in some examples, swaps may be controlled internally on the integrated circuit or made visible to the computing system so that core addressing is controlled through system operation (adjusted at that level for taking into consideration how long each addressing option is utilized over time).
In some examples, electronic elements 104 that are designated as being inactive (either by the manufacturer or because of testing and not being included in the subset of active electronic elements) and still operational (functionally good but not used to swap out another core) can be used for determining when operational setpoints or limits of the integrated circuit 102 are being approached. The computing device 100 may be configured to control the integrated circuit 102 such that the inactive electronic element(s) runs deterministic programs (e.g., test patterns) that are particularly stressful but may only be run for short bursts of activity (10 us, 100 us, 1 ms, 10 ms, 100 ms, etc.) followed by longer periods of inactivity (seconds, minutes, etc.) so as not to adversely affect device power and thermal constraints. The run time and inactive times may be programmable. Patterns are run looking for errors against known results (like Prime-95 or equivalent loads). Core frequency or clock settings to core operation can be set to be deterministically more difficult than the real cores being used by the customer. Where individual regulation control to the core is available, a more stressful voltage setting can be used for the inactive core as well.
In some examples, the default inactive electronic elements may be used to run deterministic test operations only during a system learning or characterization process. The learning process may be carried out to learn minimum operational limits for the electronic elements of the integrated circuit (e.g., to find a fail point before real cores fail). For example, such a learning process may occur at system boot up. In other examples, the inactive electronic elements can be used to run deterministic test operations during normal system use (e.g., during and after the learning process) to ensure that as aging or other factors (such as temperature, voltage fluctuation, etc.) degrade system operation, operating parameters can be adjusted to prevent the active electronic elements from degrading. In other words, the electronic elements not included in the subset may perform deterministic operations independent of and in parallel with operation of the subset of active electronic elements. If the spare electronic element fails first, this allows the system to make an adjustment so that active elements continue to operate without interruption (actions may be, but are not limited to throttling system operation, raising the voltage, lowering the temperature, adjusting the clock speed, a combination of these actions or others, etc.).
In some implementations, the integrated circuit 102 may have a designated electronic element dedicated to determining when operational limits of the integrated circuit 102 are being approached. In other words, the electronic element is not required to be degraded or swapped out as part of a repair solution. Moreover, by having an electronic element dedicated to testing failure conditions, a testing time may be improved, as the operating parameters of the dedicated electronic element may be known/tracked/learned (as opposed to relearning the operational parameters at each system boot up).
As one illustrative example, six processing cores of the CPU 106 are designated as active or “must work”, and two processing cores are designated as redundant spares available for replacement or swapping. The GPU 110 includes sixty-four compute units (CU) 112, fifty-six CUs are designated as active or “must work”, and eight CUs are designated as redundant spares available for replacement or swapping. The one or more memory arrays 114 include a shared L3 memory unit (e.g., a very large array or set of arrays) that includes a plurality of rows and columns designated as spare or redundant and are available for swapping. It will be understood that the approaches for adjusting operation of an integrated circuit described herein may be applicable to any suitable type of integrated circuit that includes redundant electronic elements.
At 304, a subset of electronic elements is selected from the plurality of electronic elements based on the one or more operating parameters. The subset of electronic elements may be designated as active in an updated configuration of the integrated circuit. In one example, at 306, the subset of electronic elements optionally may be selected based on having a lowest minimum operational voltage. In another example, at 308, the subset of electronic elements optionally may be selected based on having a lowest operational temperature of the plurality of electronic elements. In another example, at 310, the subset of electronic elements optionally may be selected to mitigate aging of the integrated circuit.
At 312, operation of the integrated circuit is controlled persistently using the updated configuration instead of the manufacturer's default configuration. In some implementations, at 314, deterministic operations optionally may be performed with one or more electronic elements not included in the subset and independent of and parallel with operation of the subset of active electronic elements. Further, in some implementations, at 316, at least one of the one or more operating parameter setpoints optionally may be adjusted based on the deterministic operations performed by the one or more electronic elements not included in the subset.
In some implementations, at 318, the plurality of electronic elements optionally may be re-tested to re-determine the one or more operating parameters of the integrated circuit. In some implementations, at 320, for each re-testing, an updated subset of electronic elements optionally may be selected from the plurality of electronic elements based on the one or more re-determined operating parameters, and returning to 312, operation of the integrated circuit optionally may be controlled using the adjusted updated configuration. Likewise, at 314, deterministic operations optionally may be performed with one or more electronic elements not included in the updated subset independent of and in parallel with operation of the updated subset of active electronic elements. Further, at 316, at least one of the one or more operating parameter setpoints optionally may be adjusted based on the deterministic operations performed by the one or more electronic elements not included in the updated subset. The method 300 may continue to re-test the electronic elements, adjust the updated configuration, and control operation of the integrated circuit using the adjusted updated configuration.
In some implementations, at 408, the plurality of memory array elements optionally may be re-tested to re-determine the one or more operating parameters. At 410, for each re-testing, an updated set of timing parameters optionally may be re-determined based on the one or more re-determined operating parameters, and returning to 406, operation of the integrated circuit optionally may be controlled using the updated set of timing parameters instead of the first set of timing parameters. The method 400 may continue to re-test the electronic elements, update the set of timing parameters, and control operation of the integrated circuit using the updated set of timing parameters.
In some implementations, the methods and processes described herein may be tied to a computing system of one or more computing devices. In particular, such methods and processes may be implemented as a computer-application program or service, an application-programming interface (API), a library, and/or other computer-program product.
Computing system 500 includes a logic machine 502 and a storage machine 504. Computing system 500 may optionally include a display subsystem 506 input subsystem 508, communication subsystem 510, and/or other components not shown in
Logic machine 502 includes one or more physical devices configured to execute instructions. The logic machine 502 includes an integrated circuit device 512, such as the integrated circuit 102 shown in
For example, the logic machine 502 may be configured to execute instructions that are part of one or more applications, services, programs, routines, libraries, objects, components, data structures, or other logical constructs. Such instructions may be implemented to perform a task, implement a data type, transform the state of one or more components, achieve a technical effect, or otherwise arrive at a desired result. For example, such instructions may be executed to test electronic elements of the integrated circuit 512 including one or more redundant electronic elements designated as inactive by the integrated circuit manufacturer to determine one or more operating parameters of the integrated circuit, select a subset of electronic elements based on the one or more operating parameters, and control operation of the integrated circuit 512 using the updated configuration including the subset of electronic elements instead of the manufacturer's default configuration. By adjusting operation of the integrated circuit 512 at a final implementation level using the redundant electronic elements of the integrated circuit 512, improved power characteristics at a given performance level may be achieved relative to the manufacturer-configured integrated circuit. In another example, at a given power level, enhanced system performance can be realized. In yet another example, operation of the integrated circuit may be adjusted to balance power and performance characteristics.
The logic machine 502 may include one or more processors configured to execute software instructions. Additionally or alternatively, the logic machine 502 may include one or more hardware or firmware logic machines configured to execute hardware or firmware instructions. Processors of the logic machine may be single-core or multi-core, and the instructions executed thereon may be configured for sequential, parallel, and/or distributed processing. Individual components of the logic machine 502 optionally may be distributed among two or more separate devices, which may be remotely located and/or configured for coordinated processing. Aspects of the logic machine 502 may be virtualized and executed by remotely accessible, networked computing devices configured in a cloud-computing configuration.
Storage machine 504 includes one or more physical devices configured to hold instructions executable by the logic machine 502 to implement the methods and processes described herein. When such methods and processes are implemented, the state of storage machine 504 may be transformed—e.g., to hold different data.
Storage machine 504 may include removable and/or built-in devices. Storage machine 504 may include optical memory (e.g., CD, DVD, HD-DVD, Blu-Ray Disc, etc.), semiconductor memory (e.g., RAM, EPROM, EEPROM, etc.), and/or magnetic memory (e.g., hard-disk drive, floppy-disk drive, tape drive, MRAM, etc.), among others. Storage machine 504 may include volatile, nonvolatile, dynamic, static, read/write, read-only, random-access, sequential-access, location-addressable, file-addressable, and/or content-addressable devices.
It will be appreciated that storage machine 504 includes one or more physical devices. However, aspects of the instructions described herein alternatively may be propagated by a communication medium (e.g., an electromagnetic signal, an optical signal, etc.) that is not held by a physical device for a finite duration.
Aspects of logic machine 502 and storage machine 504 may be integrated together into one or more hardware-logic components. Such hardware-logic components may include field-programmable gate arrays (FPGAs), program- and application-specific integrated circuits (PASIC/ASICs), program- and application-specific standard products (PSSP/ASSPs), system-on-a-chip (SOC), and complex programmable logic devices (CPLDs), for example.
When included, display subsystem 506 may be used to present a visual representation of data held by storage machine 504. This visual representation may take the form of a graphical user interface (GUI). As the herein described methods and processes change the data held by the storage machine 504, and thus transform the state of the storage machine 504, the state of display subsystem 506 may likewise be transformed to visually represent changes in the underlying data. Display subsystem 506 may include one or more display devices utilizing virtually any type of technology. Such display devices may be combined with logic machine 502 and/or storage machine 504 in a shared enclosure, or such display devices may be peripheral display devices.
When included, input subsystem 508 may comprise or interface with one or more user-input devices such as a keyboard, mouse, touch screen, or game controller. In some implementations, the input subsystem 508 may comprise or interface with selected natural user input (NUI) componentry. Such componentry may be integrated or peripheral, and the transduction and/or processing of input actions may be handled on- or off-board. Example NUI componentry may include a microphone for speech and/or voice recognition; an infrared, color, stereoscopic, and/or depth camera for machine vision and/or gesture recognition; a head tracker, eye tracker, accelerometer, and/or gyroscope for motion detection and/or intent recognition; as well as electric-field sensing componentry for assessing brain activity.
When included, communication subsystem 510 may be configured to communicatively couple computing system 500 with one or more other computing devices. Communication subsystem 510 may include wired and/or wireless communication devices compatible with one or more different communication protocols. As non-limiting examples, the communication subsystem 510 may be configured for communication via a wireless telephone network, or a wired or wireless local- or wide-area network. In some implementations, the communication subsystem 510 may allow computing system 500 to send and/or receive messages to and/or from other devices via a network such as the Internet.
In another example, a method for adjusting operation of an integrated circuit including a plurality of electronic elements, the plurality of electronic elements including one or more redundant electronic elements designated as inactive according to a manufacturer's default configuration of the integrated circuit, the method comprises testing the plurality of electronic elements including the one or more redundant electronic elements designated as inactive to determine one or more operating parameters of the integrated circuit, selecting a subset of electronic elements from the plurality of electronic elements based on the one or more operating parameters, wherein the subset of electronic elements is designated as active in an updated configuration of the integrated circuit, and controlling operation of the integrated circuit using the updated configuration instead of the manufacturer's default configuration. In this example and/or another example, the one or more redundant electronic elements may include one or more processing cores of a central processing unit (CPU), one or more compute units of a graphics processing unit (GPU), and/or one or more memory array elements. In this example and/or another example, the one or more operating parameters may include a minimum operational voltage, and the subset of electronic elements is selected based on having a lowest minimum operational voltage. In this example and/or another example, the one or more operating parameters may include an operational temperature, and the subset of electronic elements is selected based on having a lowest minimum operational temperature of the plurality of electronic elements. In this example and/or another example, electronic elements not included in the subset may be designated as inactive in the updated configuration and not used by the integrated circuit. In this example and/or another example, the method may further comprise performing deterministic operations with one or more electronic elements not included in the subset and independent of and in parallel with operation of the subset of active electronic elements. In this example and/or another example, the updated configuration may include one or more operating parameter setpoints for controlling operation of the integrated circuit, and the method may further comprise adjusting at least one of the one or more operating parameter setpoints based on the deterministic operations performed by the one or more electronic elements not included in the subset. In this example and/or another example, the integrated circuit may be configured to operate in a full power mode and a low power mode, all electronic elements of the subset of electronic element may be designated as active in the full power mode, and fewer than all electronic elements of the subset may be designated as active in the low power mode. In this example and/or another example, the method may further comprise repeatedly re-testing the plurality of electronic elements to re-determine the one or more operating parameters of the integrated circuit, for each re-testing, selecting an updated subset of electronic elements from the plurality of electronic elements based on the one or more re-determined operating parameters, and controlling operation of the integrated circuit using the updated subset of electronic elements. In this example and/or another example, the plurality of electronic elements may be re-tested when the integrated circuit is powered on and/or when a software update is performed on the integrated circuit. In this example and/or another example, the plurality of electronic elements may include a plurality of memory array elements configured according to a manufacturer's default configuration that specifies a first set of timing parameters for accessing the memory array elements, and the method may further comprise testing the plurality of memory array elements to determine one or more operating parameters of the integrated circuit, determining a second set of timing parameters different than the first set of timing parameters based on the one or more operating parameters, and controlling operation of the integrated circuit using the second set of timing parameters instead of the first set of timing parameters.
In another example, a computing system comprises an integrated circuit including a plurality of electronic elements, the plurality of electronic elements including one or more redundant electronic elements designated as inactive according to a manufacturer's default configuration of the integrated circuit, and wherein the computing system is configured to select a first subset of electronic elements from the plurality of electronic elements, wherein the first subset of electronic elements is designated as active in an updated configuration of the integrated circuit, control operation of the integrated circuit using the updated configuration instead of the manufacturer's default configuration, select a second subset of electronic elements from the plurality of electronic elements, wherein the second subset is different than the first subset, and wherein the second subset of electronic elements are designated as active in an adjusted updated configuration of the integrated circuit, and control operation of the integrated circuit using the adjusted updated configuration. In this example and/or another example, the first subset and the second subset may be selected by sequentially swapping electronical elements. In this example and/or another example, the first subset and the second subset may be selected by swapping odd and even addressed electronic elements. In this example and/or another example, the first subset and the second subset may be selected by switching between lower order electronic elements and higher order electronic elements. In this example and/or another example, the computing system may be further configured to test the plurality of electronic elements including the one or more redundant electronic elements designated as inactive to determine one or more operating parameters of the integrated circuit, and the first subset and the second subset may be selected based on the one or more operating parameters.
In another example, a computing system comprises an integrated circuit including a plurality of memory array elements configured according to a manufacturer's default configuration that specifies a first set of timing parameters for accessing the memory array elements, and wherein the computing system is configured to test the plurality of memory array elements to determine one or more operating parameters of the integrated circuit, determine a second set of timing parameters different than the first set of timing parameters based on the one or more operating parameters, and control operation of the integrated circuit using the second set of timing parameters instead of the first set of timing parameters. In this example and/or another example, the computing system may be further configured to repeatedly re-test the plurality of memory array elements to re-determine the one or more operating parameters, for each re-testing, determine an updated set of timing parameters based on the one or more re-determined optimization parameters, and control operation of the integrated circuit using the updated set of timing parameters instead of the first set of timing parameters. In this example and/or another example, the plurality of electronic elements may be re-tested each time the integrated circuit is powered on. In this example and/or another example, the plurality of electronic elements may be re-tested each time a software update is performed on the integrated circuit.
It will be understood that the configurations and/or approaches described herein are exemplary in nature, and that these specific embodiments or examples are not to be considered in a limiting sense, because numerous variations are possible. The specific routines or methods described herein may represent one or more of any number of processing strategies. As such, various acts illustrated and/or described may be performed in the sequence illustrated and/or described, in other sequences, in parallel, or omitted. Likewise, the order of the above-described processes may be changed.
The subject matter of the present disclosure includes all novel and non-obvious combinations and sub-combinations of the various processes, systems and configurations, and other features, functions, acts, and/or properties disclosed herein, as well as any and all equivalents thereof.
This application claims priority to U.S. Provisional Patent Application Ser. No. 62/639,948, filed Mar. 7, 2018, the entirety of which is hereby incorporated herein by reference for all purposes.
Number | Name | Date | Kind |
---|---|---|---|
5956350 | Irrinki et al. | Sep 1999 | A |
6691252 | Hughes et al. | Feb 2004 | B2 |
7917785 | Jacobowitz et al. | Mar 2011 | B2 |
8030649 | Gschwind | Oct 2011 | B2 |
8296773 | Bose et al. | Oct 2012 | B2 |
9110592 | Lee et al. | Aug 2015 | B2 |
9136019 | Alves | Sep 2015 | B1 |
9442773 | Sur et al. | Sep 2016 | B2 |
20060080572 | Fong | Apr 2006 | A1 |
20060212677 | Fossum | Sep 2006 | A1 |
20070074011 | Borkar | Mar 2007 | A1 |
20070226482 | Borkar | Sep 2007 | A1 |
20130086395 | Liu | Apr 2013 | A1 |
20130097350 | Ansari | Apr 2013 | A1 |
20140157253 | Padhy | Jun 2014 | A1 |
20140181501 | Hicok | Jun 2014 | A1 |
20140189229 | Schoenborn | Jul 2014 | A1 |
20150070048 | Gorman | Mar 2015 | A1 |
20160252943 | Varma | Sep 2016 | A1 |
20160283313 | Robertson | Sep 2016 | A1 |
20180181474 | Dehaemer | Jun 2018 | A1 |
Entry |
---|
Memory Refresh, Techopedia, 2017, Wayback Machine Capture (Year: 2017). |
Joseph, Russ, “Exploring Salvage Techniques for Multi-core Architectures”, In Proceedings of the 2nd Workshop on High Performance Computing Reliability Issues, Feb. 2005, 6 Pages. |
Number | Date | Country | |
---|---|---|---|
20190278741 A1 | Sep 2019 | US |
Number | Date | Country | |
---|---|---|---|
62639948 | Mar 2018 | US |