1. A processor comprising:
a thermoelectric cooling (TEC) controller to:
obtain a platform cooling level associated with the processor;
obtain a temperature associated with the processor;
calculate a TEC power level based at least in part on the platform cooling level and the temperature; and
provide the TEC power level to a TEC device associated with the processor, wherein the TEC device is to transfer heat from the processor to a heat sink.
2. The processor of claim 1, wherein the platform cooling level is a first level for a fan providing an air flow to the heat sink.
3. The processor of claim 2, wherein the TEC controller is further to calculate a second level for the fan.
4. The processor of claim 3, wherein the TEC controller is further to calculate a virtual temperature based on the second level for the fan.
5. The processor of claim 4, wherein the TEC controller is further to store the virtual temperature in a register accessed by a platform cooling logic.
6. The processor of claim 2, wherein the TEC device is to provide a first heat flow from the processor to the heat sink.
7. The processor of claim 6, wherein the TEC controller is to calculate the TEC power level by balancing the first heat flow with a convective heat flow associated with the air flow.
8. The processor of claim 7, wherein the TEC controller is to balance the first heat flow and the convective heat flow using a balancing algorithm.
9. The processor of claim 1, wherein the TEC controller is further to generate a duty cycle signal based on the TEC power level.
10. The processor of claim 9, wherein the TEC controller is further to switch a power input to the TEC device using the duty cycle signal.
11. The processor of claim 9, wherein the duty cycle signal is a pulse width modulated (PWM) signal.
12. A processor comprising:
a plurality of cores to execute a plurality of instructions;
a first thermoelectric cooling (TEC) device to provide localized cooling to a first core of the plurality of cores;
logic to determine a predicted heat load on the first core associated with executing a first portion of the plurality of instructions; and
a TEC controller to control, based on the predicted heat load, a power level of the first TEC device when the first core is executing the first portion of the plurality of instructions.
13. The processor of claim 12, wherein at least one of the plurality of cores comprises:
at least one core component; and
a second TEC device to provide localized cooling to the at least one core component.
14. The processor of claim 12, further comprising:
at least one uncore component; and
a third TEC device to provide localized cooling to the at least one uncore component.
15. The processor of claim 12, wherein each core of the plurality of cores includes instruction monitoring logic to monitor one or more instructions to be executed by the core.
16. The processor of claim 12, wherein the processor is coupled to a dynamic random access memory (DRAM).
17. A method, comprising:
determining a current level of a platform cooling device;
determining a temperature of an electronic device;
calculating, based at least on the current level and the temperature, a power level for a thermoelectric cooling (TEC) device, wherein the TEC device is to transfer heat from the electronic device to the platform cooling device.
18. The method of claim 17, further comprising calculating a second level of the platform cooling device.
19. The method of claim 18, further comprising programming the second level using a dedicated interface to the platform cooling device.
20. The method of claim 18, wherein calculating the power level for the TEC device comprises balancing a cooling effect of the TEC device with a cooling effect of the platform cooling device.
The claims below are in addition to those above.
All refrences to claim(s) which appear below refer to the numbering after this setence.
1. A method comprising:
receiving data for storage on a non-volatile recording medium, the non-volatile recording medium comprising an array of cells, each cell encoding a number of states per cell;
converting the data from a binary representation to a non-binary representation corresponding to the number of states per cell; and
storing the converted data to the array of cells.
2. The method of claim 1, wherein each cell of the array of cells encodes an ordered sequence of states, and storing the converted data to the array of cells comprises iteratively selecting cells that encode a data value other than a desired value from the converted data, and programming the selected cells to a next state in the ordered sequence of states, until the converted data is stored.
3. The method of claim 2, wherein selecting cells comprises marking bits associated with the selected cells in a write buffer for the array of cells.
4. The method of claim 2, wherein programming a cell to an intermediate state in the ordered sequence of states comprises changing a programming level for the cell to a program value other than a target program value for the intermediate state.
5. The method of claim 1, wherein storing the converted data to the array of cells comprises changing a programming level for at least one cell without verifying the change to the programming level.
6. The method of claim 1, wherein each cell of the array of cells encodes an ordered sequence of states, and storing the converted data to the array of cells comprises iteratively selecting cells for programming to a highest unprogrammed state in the ordered sequence of states, and programming the selected cells, until the converted data is stored.
7. The method of claim 1, further comprising:
reading the converted data from the array of cells;
translating the converted data to binary data; and
returning the binary data to one or more of a host device and a storage controller for the non-volatile recording medium.
8. The method of claim 7, wherein reading the converted data from the array of cells comprises setting a plurality of read thresholds for the array of cells and sensing cells that satisfy the read thresholds, until a state is determined for each cell in the array of cells.
9. The method of claim 8, wherein reading the converted data further comprises:
setting at least one additional read threshold in response to determining a state for each cell;
sensing cells that satisfy the at least one additional read threshold; and
detecting errors in the converted data using information derived from sensing cells that satisfy the at least one additional read threshold.
10. The method of claim 1, further comprising dynamically adjusting the number of states per cell over time.
11. The method of claim 10, wherein the number of states per cell is adjusted based on a health characteristic of the array of cells.
12. The method of claim 1, further comprising using an error correcting algorithm that operates on non-binary numbers to detect errors in the converted data.
13. An apparatus comprising:
an interface module configured to receive data for storage on a non-volatile memory medium, the non-volatile memory medium comprising an array of cells, each cell encoding a number of abodes per cell with a non-binary alignment;
a base conversion module configured to convert the data from a binary representation to a representation in a non-binary base, the non-binary base using a number of unique digits equal to the non-binary aligned number of abodes per cell; and
a write module configured to store the converted data to the array of cells.
14. The apparatus of claim 13, wherein each cell of the array of cells encodes an ordered sequence of abodes, and the write module is configured to store the converted data to the array of cells by iteratively selecting cells that encode a data value other than a desired value from the converted data, and programming the selected cells to a next abode in the ordered sequence of abodes, until the converted data is stored.
15. The apparatus of claim 13, wherein each cell of the array of cells encodes an ordered sequence of abodes, and the write module is configured to store the converted data to the array of cells by iteratively selecting cells for programming to a highest unprogrammed abode in the ordered sequence of abodes, and programming the selected cells, until the converted data is stored.
16. The apparatus of claim 13, wherein the base conversion module is further configured to separate a binary stream for the data into a plurality of binary numbers and to convert each binary number to the non-binary base, each binary number comprising a number of bits less than or equal to a word unit size for the array of cells.
17. The apparatus of claim 13, further comprising:
a read module configured to read the converted data from the array of cells;
a translate module configured to translate the converted data to binary data; and
a return module configured to return the binary data to one or more of a host device and a storage controller for the non-volatile memory medium.
18. The apparatus of claim 13, further comprising an abode adjust module configured to dynamically adjust the number of abodes per cell over time based on a health characteristic of the array of cells.
19. The apparatus of claim 13, further comprising an error module configured to use an error correcting algorithm that operates on non-binary numbers to detect errors in the converted data.
20. An apparatus comprising:
means for receiving data for storage on a non-volatile storage medium, the non-volatile storage medium comprising an array of cells, each cell encoding a non-power-of-two number of encoding states per cell;
means for converting the data from a binary representation to a representation in a non-binary base, the non-binary base using a number of unique digits equal to the number of encoding states per cell for storage by the non-volatile storage medium; and
means for dynamically adjusting the number of states per cell over time.
21. The apparatus of claim 20, further comprising:
means for storing the converted data to the array of cells;
means for reading the converted data from the array of cells;
means for translating the converted data to binary data; and
means for returning the binary data to one or more of a host device and a storage controller for the non-volatile storage medium.
22. A system comprising:
a non-volatile recording device comprising a non-volatile recording medium, the non-volatile recording medium comprising an array of cells, each cell encoding a non-power-of-two number of states per cell, the non-volatile recording device in communication with a host device over a communications bus; and
a write pipeline comprising,
an interface module configured to receive data for storage on the non-volatile recording medium;
a base conversion module configured to convert the data from a binary representation to a representation in a non-base-two base, the non-base-two base using a number of unique digits equal to the non-power-of-two number of states per cell; and
a write module configured to store the converted data to the array of cells.
23. The system of claim 22, further comprising a read pipeline, the read pipeline comprising:
a read module configured to read the converted data from the array of cells;
a translate module configured to translate the converted data to binary data; and
a return module configured to return the binary data to one or more of a host device and a storage controller for the non-volatile recording medium.
24. A computer program product comprising a computer readable storage medium storing computer usable program code executable to perform operations, the operations comprising:
reading non-binary data from a non-volatile memory medium, the non-volatile memory medium comprising an array of cells, each cell encoding a number of abodes per cell other than a power of two, the non-binary data encoded in a non-binary base, the non-binary base using a number of unique digits equal to the number of abodes per cell;
translating the non-binary data to binary data; and
returning the binary data to one or more of a host device and a storage controller for the non-volatile memory medium.
25. The computer program product of claim 24, wherein reading the non-binary data from the non-volatile memory medium comprises:
setting a plurality of read thresholds for the array of cells;
sensing cells that satisfy the read thresholds, until an abode is determined for each cell in the array of cells;
setting at least one additional read threshold in response to determining am abode for each cell;
sensing cells that satisfy the at least one additional read threshold; and
detecting errors in the non-binary data using information derived from sensing cells that satisfy the at least one additional read threshold.