IP Library › Granted Patent US 12,341,534
Granted Patent B2
US 12,341,534 · App. 18/498,196 · Granted Jun 24, 2025

Butterfly network on load data return

Inventors: Dheera Balasubramanian (Richardson, TX); Joseph Zbiciak (San Jose, CA); Duc Quang Bui (Grand Prairie, TX); Timothy David Anderson (University Park, TX)
Assignee: Texas Instruments Incorporated
H03M13/6561G06F9/30036G06F9/30038G06F9/38H03M13/2789H03M13/276
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,341,534
App. No.
18/498,196
Granted
Jun 24, 2025
Kind
B2
Abstract

A system, method, and device are shown that are operable to transform and align a plurality of fields from an input to an output data stream using a multilayer butterfly or inverse butterfly network by selectably switching bit positions of the input data stream. In some examples, a device includes a first circuit configured to selectably switch bit positions of a first subset of the data stream with a second subset of the data stream and a second circuit configured to: selectably switch bit positions of a first subset of the first subset of the data stream with a second subset of the first subset of the data stream, and selectably switch bit positions of a first subset of the second subset of the data stream with a second subset of the second subset of the data stream.

Claims (92)

1. A device comprising:

a first circuit that includes:

a set of inputs configured to receive data; and

a set of outputs that includes a first subset of outputs and a second subset of outputs, wherein the first circuit is configured to:

based on a first selection, provide a first subset of the data at the first subset of outputs and a second subset of the data at the second subset of outputs; and

based on a second selection, provide the first subset of the data at the second subset of outputs and the second subset of data at the first subset of outputs; and

a second circuit that includes:

a set of inputs coupled to the set of outputs of the first circuit; and

a set of outputs that includes a third subset of outputs and a fourth subset of outputs, wherein the second circuit is configured to:

based on a third selection, provide a third subset of the data that is part of the first subset of the data at the third subset of outputs and a fourth subset of the data that is part of the first subset of the data at the fourth subset of outputs; and

based on a fourth selection, provide the third subset of the data at the fourth subset of outputs and provide the fourth subset of the data at the third subset of outputs.

2. The device of claim 1 further comprising a third circuit that includes:

a set of inputs coupled to the set of outputs of the second circuit; and

a set of outputs that includes a fifth subset of outputs and a sixth subset of outputs, wherein the third circuit is configured to:

based on a fifth selection, provide a fifth subset of the data that is part of the third subset of the data at the fifth subset of outputs and a sixth subset of the data that is part of the third subset of the data at the sixth subset of outputs; and

based on a sixth selection, provide the fifth subset of the data at the sixth subset of outputs and the sixth subset of the data at the fifth subset of outputs.

3. The device of claim 2 , wherein:

the data includes 64-bits; and

the device further comprises:

a fourth circuit that includes:

a set of inputs coupled to the set of outputs of the third circuit;

a set of outputs; and

a set of multiplexers coupled between the set of inputs of the fourth circuit and the set of outputs of the fourth circuit;

a fifth circuit that includes:

a set of inputs coupled to the set of outputs of the fourth circuit; and

a set of outputs; and

a set of multiplexers coupled between the set of inputs of the fifth circuit and the set of outputs of the fifth circuit;

a sixth circuit that includes:

a set of inputs coupled to the set of outputs of the fifth circuit;

a set of outputs; and

a set of multiplexers coupled between the set of inputs of the sixth circuit and the set of outputs of the sixth circuit.

4. The device of claim 1 , wherein:

the first circuit includes a first set of 2:1 multiplexers coupled to the set of inputs and the set of outputs of the first circuit; and

the second circuit includes a second set of 2:1 multiplexers coupled to the set of inputs and the set of outputs of the second circuit.

5. The device of claim 1 further comprising:

a first control circuit coupled to the first circuit; and

a second control circuit coupled to the second circuit.

6. The device of claim 5 , wherein the first control circuit and the second control circuit are configured to function in parallel.

7. The device of claim 5 , wherein the first control circuit and the second control circuit are configured to:

receive a control signal that specifies at least one operation from a group consisting of: a shuffle operation, a replicate operation, and a rotate operation; and control the first circuit and the second circuit based on the control signal.

8. The device of claim 7 , wherein:

the device further includes a third circuit; and

in response to the control signal specifying the shuffle operation:

the first circuit is controlled to provide a first value in which an alignment of the first subset of the data and the second subset of the data are the same as in the data as received by the first circuit;

the second circuit is controlled to provide a second value in which an alignment of the third subset of the data and the fourth subset of the data are the same as in the first value;

the third circuit is controlled to provide a third value in which an alignment of a fifth subset of the data that is part of the third subset of the data and a sixth subset of the data that is part of the third subset of the data is different from in the second value.

9. The device of claim 7 , wherein:

the first circuit is configured to, based on a fifth selection associated with the control signal specifying the replicate operation, provide the first subset of the data at the first subset of outputs and a copy of the first subset of the data at the second subset of outputs.

10. The device of claim 7 , wherein the second selection and the third selection are associated with the control signal specifying the rotate operation.

11. A device comprising:

a memory configured to store data;

a streaming engine coupled to the memory and configured to retrieve the data from the memory, wherein the streaming engine includes a butterfly network that includes:

a first circuit that includes:

a set of inputs configured to receive the data; and

a set of outputs configured to provide a first value, wherein the first circuit is configured to:

in a first mode of operation, provide the first value such that an arrangement of a first subset of the data and a second subset of the data in the first value is the same as in the data as received by the first circuit; and

in a second mode of operation, provide the first value such that the arrangement of the first subset of the data and the second subset of the data in the first value is different from in the data as received by the first circuit;

a second circuit that includes:

a set of inputs coupled to the set of outputs of the first circuit; and

a set of outputs configured to provide a second value, wherein the second circuit is configured to:

in a third mode of operation, provide the second value such that an arrangement of a third subset of the set of data that is part of the first subset of the data and a fourth subset of the set of data that is part of the first subset of the data in the second value is the same as in the first value; and

in a fourth mode of operation, provide the second value such that the arrangement of the third subset of the data and the fourth subset of the data in the second value is different from in the first value; and selectably switch bit positions of a first subset of the second

a processor coupled to the streaming engine and configured to receive the set of data via the butterfly network.

12. The device of claim 11 , wherein the butterfly network includes a third circuit that includes:

a set of inputs coupled to the set of outputs of the second circuit; and

a set of outputs configured to provide a third value, wherein the third circuit is configured to:

in a fifth mode of operation, provide the third value such that an arrangement of a fifth subset of the data that is part of the third subset of the data and a sixth subset of the data that is part of the third subset of the data in the third value is the same as in the second value; and

in a sixth mode of operation, provide the third value such that the arrangement of the fifth subset of the data and the sixth subset of the data is different from in the second value.

13. The device of claim 11 , wherein:

the first circuit includes a first set of 2:1 multiplexers coupled to the set of inputs and the set of outputs of the first circuit; and

the second circuit includes a second set of 2:1 multiplexers coupled to the set of inputs and the set of outputs of the second circuit.

14. The device of claim 11 further comprising:

a first control circuit coupled to the first circuit; and

a second control circuit coupled to the second circuit.

15. The device of claim 14 , wherein the first control circuit and the second control circuit are configured to function in parallel.

16. The device of claim 14 , wherein the first control circuit and the second control circuit are configured to:

receive a control signal that specifies at least one operation from a group consisting of: a shuffle operation, a replicate operation, and a rotate operation; and control the first circuit and the second circuit based on the control signal.

17. A method comprising:

receiving a request for a set of data;

retrieving the set of data from a memory;

determining an operation to perform on the set of data; and

based on the operation:

determining whether to modify, using a first circuit, an arrangement of a first subset of the set of data and a second subset of the set of data in a first set of output data with respect to the set of data as retrieved from the memory;

determining whether to modify, using a second circuit, an arrangement of a first subset of the first subset of the set of data and a second subset of the first subset of the set of data in a second set of output data with respect to the first set of output data; and

determining whether to modify, using the second circuit, an arrangement of a first subset of the second subset of the set of data and a second subset of the second subset of the set of data in the second set of output data with respect to the first set of output data.

18. The method of claim 17 further comprising, based on the operation,

determining whether to modify, using a third circuit, an arrangement of a first subset of the first subset of the first subset of the data and a second subset of the first subset of the first subset of the data with respect to the second set of output data;

determining whether to modify, using the third circuit, an arrangement of a first subset of the second subset of the first subset of the data and a second subset of the second subset of the first subset of the data;

determining whether to modify, using the third circuit, an arrangement of a first subset of the first subset of the second subset of the data and a second subset of the first subset of the second subset of the data; and

determining whether to modify, using the third circuit, an arrangement of a first subset of the second subset of the second subset of the data and a second subset of the second subset of the second subset of the data.

19. The method of claim 17 , wherein the operation includes at least one of a shuffle operation, a replicate operation, or a rotate operation.

20. The method of claim 19 , wherein the operation includes more than one of the shuffle operation, the replicate operation, or the rotate operation.

Continuity (4)
Continuation 17378886 · Jul 19, 2021
Continuation 16694205 · Nov 25, 2019
Continuation 15651055 · Jul 17, 2017
Related Publication 20240063827A1 · Feb 22, 2024
References Cited (18)
US 6618371B1 · Cao · 2003 [cited by applicant]
US 10140239B1 · Balasubramanian et al. · 2018 [cited by applicant]
US 10846089B2 · Robinson · 2020 [cited by applicant]
US 20030002474A1 · Alexander · 2003 [cited by examiner]
US 20030037190A1 · Alexander · 2003 [cited by examiner]
US 20040054877A1 · Macy, Jr. et al. · 2004 [cited by applicant]
US 20050080833A1 · Smith · 2005 [cited by examiner]
US 20070063732A1 · Kaptanoglu · 2007 [cited by examiner]
US 20070288542A1 · Shih · 2007 [cited by examiner]
US 20090106529A1 · Abts et al. · 2009 [cited by applicant]
US 20120166507A1 · Son · 2012 [cited by examiner]
US 20130070139A1 · Kirsch · 2013 [cited by applicant]
US 20130262945A1 · Saghi · 2013 [cited by examiner]
US 20140129908A1 · Chowdhury · 2014 [cited by examiner]
US 20160028396A1 · Gaillardon · 2016 [cited by examiner]
US 20190187985A1 · Tran · 2019 [cited by examiner]
N. Burgess, “Assessment of butterfly network VLSI shifter circuit”, 2010 Conference Record of the Forty Fourth Asilomar Conference on Signals, Systems and Computers, Pacific Grove, CA, USA, 2010, pp. 92-96, doi:10.1109/… [cited by applicant]
Chong, et al; “Building a better butterfly: the multiplexed metabutterfly”; Proceedings of the International Symposium on Parallel Architectures, Algorithms and Networks; (SPAN); doi: 10.1109/ISPAN, 1994.367163; pp. 65-… [cited by applicant]