# US 2014/0181386 A1 · Method and apparatus for power reduction for data movement

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2014/0181386 A1
- Document ID: US20140181386A1
- Status: Published application
- Kind: A1
- Application number: 13/721,441
- Filed: 2012-12-20
- Published: 2014-06-26
- Earliest claimed: 2012-12-20
- Assignees: Advanced Micro Devices, Inc.
- Applicants: Advanced Micro Devices, Inc.
- Inventors: Greg Sadowski
- Web page: https://patentgrep.com/patent/US20140181386A1

## CPC

- G06F 13/385: {for adaptation of a particular data processing system to different peripheral devices}
- G06F 3/0619: {in relation to data integrity, e.g. data losses, bit errors}
- G06F 12/0246: {in block erasable memory, e.g. flash memory}
- Y02D 10/00: Energy efficient computing, e.g. low power processors, power management or thermal management
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- Y02D: CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE

## Abstract

A method of and device for transferring data is provided. The method includes determining a difference between a data segment that was transferred last relative to each of one or more data segments available to be transferred next. In some embodiments, for so long as no data segment available to be sent has been waiting too long, the data segment chosen to be sent next is the data segment having the smallest difference relative to the data segment transferred last. The chosen data segment is then transmitted as the next data segment transferred.

## Claims

### Claim 1

A method of transferring data including:
determining a difference between a first transferred data segment and one or more data segments available for transfer;
determining a second data segment, the second data segment being the data segment available for transfer having the smallest difference relative to the first transferred data segment; and
transmitting the second data segment as the next data segment of the one or more data segments available for transfer that is transferred after transfer of the first data segment.

### Claim 2 (depends on 1)

The method of claim 1, wherein determining the second data segment includes calculating the number of bits that need to be toggled on a data bus to switch from the first data segment to the second data segment.

### Claim 3 (depends on 2)

The method of claim 2, wherein determining the second data segment includes calculating the number of bits that need to be toggled to switch from the first data segment to each of the data segments available for transfer.

### Claim 4 (depends on 1)

The method of claim 1, wherein the difference between data segments is determined by calculating a number of bits that need to be toggled on a data bus to switch from the first data segment to each of the respective data segments available for transfer.

### Claim 5 (depends on 1)

The method of claim 1, wherein the second data segment is transmitted as the next data segment for so long as no data segment available for transfer achieves an age above a defined threshold.

### Claim 6 (depends on 5)

The method of claim 5, further including:
defining an age value for each data segment available for transfer as a number of clock cycles that each data segment has been available for transfer;
comparing each age value to the number of data segments able to be held by the storage medium holding the data segments; and
defining a data segment as the second data segment when the age value is greater than or equal to a threshold representative of the number of data segments able to be held by the storage medium holding the data segments, the data segment with an age value above the threshold being defined as the second data segment regardless of its difference relative to the first transferred data segment.

### Claim 7 (depends on 1)

The method of claim 1, further including transmitting an indication of an order in which the data segments are to be placed.

### Claim 8 (depends on 1)

The method of claim 1, further including the step of determining a third data segment after the second data segment is transmitted, the third data segment being defined as the data segment available for transfer having the smallest difference relative to the second data segment.

### Claim 9 (depends on 1)

The method of claim 1, wherein determining the second data segment further includes considering the difference between the first data segment and a logical inversion of each data segment available for transfer.

### Claim 10 (depends on 1)

The method of claim 1, wherein transmitting the second data segment transfers the second data segment between on-chip memory and off-chip memory.

### Claim 11 (depends on 9)

The method of claim 9, wherein the off-chip memory is RAM memory.

### Claim 12

A device for transferring data including:
a data storage having a plurality of entries;
a transmitter operable to output entries from the data storage; and
a controller operable to determine a difference between each entry in the data storage relative to a first entry last output by the transmitter; the transmitter operable to identify a second entry that is an entry stored in the data storage having the smallest difference relative to the entry last output by the transmitter, and transmit the second entry as the entry transmitted next after the first entry.

### Claim 13 (depends on 12)

The device of claim 12, further including an age determiner operable to determine how long each entry has been stored in the data storage.

### Claim 14 (depends on 13)

The device of claim 13, wherein the data storage has a capacity to hold “n” entries; the threshold amount of time being defined as the time needed for “n” clock cycles.

### Claim 15 (depends on 12)

The device of claim 12, wherein the transmitter is operable to transmit an entry that has been stored within the data storage for the threshold amount of time as the next entry transmitted.

### Claim 16 (depends on 12)

The device of claim 12, wherein the data storage is part of a computing device.

### Claim 17 (depends on 12)

The device of claim 12, further including a bus coupled to the transmitter and operable to transmit entries of at least 32 bits.

### Claim 18 (depends on 12)

The device of claim 12, wherein the second entry is defined as the entry with the smallest difference relative to the entry last output for so long as no entry has been stored within the data storage for a threshold amount of time.

### Claim 19

A method of receiving data including:
receiving a first data entry,
receiving a first index along with the first data entry, and
writing the first data entry to a first slot in a first buffer; the first slot being identified by the first index.

### Claim 20 (depends on 19)

The method of claim 19, further including:
receiving a second data entry,
receiving a second index along with the second data entry, and
writing the second data entry to a second slot in the first buffer, the second slot being identified by the second index.

### Claim 21 (depends on 20)

The method of claim 20, further including:
outputting the first data entry from the first buffer in an order relative to the second data entry, the relative order being described by at least one of the first and second indexes.

### Claim 22 (depends on 20)

The method of claim 20, wherein the relative order is described by both the first and second indexes.

### Claim 23

A method of transferring data including:
accessing a first ordered set of data entries in a first data storage; the first ordered set including a first entry and a second entry, the first entry having been written to the first data storage before the second entry was written to the first data storage;
transferring the second entry from the first data storage to a second data storage;
transferring the first entry from the first data storage to the second data storage after transfer of the second entry from the first data storage to the second data storage, the first entry being transferred after the second entry at least partially due to the similarity between the first and second entries; and
outputting the first entry from the second data storage prior to outputting the second entry from the second data storage.

### Claim 24 (depends on 23)

The method of claim 23, wherein transferring the second entry and transferring the first entry move the respective entries from on-chip memory to off-chip memory.

### Claim 25 (depends on 23)

The method of claim 23, wherein all entries output from the second data storage are output in the same order that the entries are written to the first data storage.

### Claim 26 (depends on 23)

The method of claim 23, further including determining that the transfer of the second entry to the second data storage before transfer of the first entry to the second data storage is less power consuming.

### Claim 27 (depends on 26)

The method of claim 26, wherein the transfer of the second entry to the second data storage before transfer of the first entry to the second data storage results in a decrease in the number of toggles of bits in a data bus relative to transferring the first entry before the second entry.

### Claim 28

A method of transferring data including:
determining a difference between a first transferred data segment and one or more data segments available for transfer;
determining a difference between each of the one or more data segments available for transfer and the other segments of the one or more data segments available for transfer; and
determining an order of transfer for multiple data segments that reduces an amount of power needed to complete the transfer based on the determined differences between the data segment available for transfer.

### Claim 29 (depends on 28)

The method of claim 28, further including transmitting the multiple data segment in the determined order.

### Claim 30 (depends on 28)

The method of claim 28, further including determining if a second data segment available for transfer has an age above a first threshold.

### Claim 31 (depends on 30)

The method of claim 30, wherein determining an order includes determining an order of transmission that will require the lowest amount of power to complete from those orders that successfully achieve transmission of the second data segment prior to the second data segment reaching a second threshold age.

### Claim 32 (depends on 28)

The method of claim 28, wherein the determined order requires a lowest amount of power to complete relative to other possible orders of transmission.

### Claim 33

A computer readable medium containing non-transitory instructions thereon, that when interpreted by at least one processor cause the at least one processor to:
determine a difference between a first transferred data segment and one or more data segments available for transfer;
determine a second data segment, the second data segment being the data segment available for transfer having the smallest difference relative to the first transferred data segment for so long as no data segment available for transfer achieves an age above a defined threshold; and
transmit the second data segment as the next data segment of the one or more data segments available for transfer that is transferred after transfer of the first data segment.

### Claim 34 (depends on 33)

The computer readable medium of claim 33, wherein the instructions are embodied in hardware description language suitable for one or more of describing, designing, organizing, fabricating, or verifying hardware.

### Claim 35 (depends on 33)

The computer readable medium of claim 33, wherein determining the second data segment includes causing the at least one processor to calculate the number of bits that need to be toggled on a data bus to switch from the first data segment to the second data segment.

### Claim 36

A data storage including:
a plurality of data storage slots;
a controller operable to:
receive a first data entry of a set of ordered data entries;
receive an index; and
place the first data entry into one of the plurality of data storage slots at least partially based on the index; and
an output, operable to output data entries, including the first data entry, in an order proscribed by the index.

### Claim 37 (depends on 36)

The data storage of claim 36, wherein the data storage is DRAM.

### Claim 38 (depends on 36)

The data storage of claim 36, wherein the controller includes state logic operable to receive the index and place the first data entry according to the index.

### Claim 39

A method of transferring data comprising:
transmitting a second data segment after a first data segment, said second data segment being selected from one or more data segments available for transfer based upon the differences between the first data segment and each of the one or more data segments available for transfer.
