IP Library › Granted Patent US 12,461,710
Granted Patent B2
US 12,461,710 · App. 17/485,455 · Granted Nov 4, 2025

Reformatting matrices to improve computing efficiency

Inventors: Manoj Kumar (Yorktown Heights, NY); Pratap C. Pattnaik (Yorktown Heights, NY); Kattamuri Ekanadham (Mohegan Lake, NY); Jessica Tseng (Fremont, CA); Jose E. Moreira (Irvington, NY)
Assignee: International Business Machines Corporation
G06F7/08G06F7/24G06F7/78G06F17/16G06F7/26
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,461,710
App. No.
17/485,455
Granted
Nov 4, 2025
Kind
B2
Abstract

A data ordering device includes a plurality of inputs N and a plurality of outputs M. There is a sorting network coupled between the plurality of inputs N and the plurality of outputs M. There are one or more latches comprising a buffer coupled between each input of the plurality of inputs N and a corresponding input of the sorting network. There are one or more latches comprising a buffer coupled between each output of the plurality of outputs M and a corresponding output of the sorting network. There is an input for a control signal operative to initiate a sorting of data between the plurality of inputs N and the plurality of outputs M. The data ordering device is coupled to a core of a central processing unit.

Claims (31)

1 . A data ordering device, comprising:

a plurality of inputs N;

a plurality of outputs M;

a sorting network coupled between the plurality of inputs N and the plurality of outputs M;

one or more latches comprising an input buffer coupled between each input of the plurality of inputs N and a corresponding input of the sorting network;

one or more latches comprising an output buffer coupled between each output of the plurality of outputs M and a corresponding output of the sorting network, wherein the sorting network is coupled between the input buffer and the output buffer;

one or more private vector registers coupled between the plurality of inputs N and the input buffer;

one or more private vector registers coupled between the plurality of outputs M and the output buffer; and

an input for a control signal operative to initiate a sorting of data between the plurality of inputs N and the plurality of outputs M.

2 . The data ordering device of claim 1 , wherein the data ordering device is coupled to a core of a central processing unit.

3 . The data ordering device of claim 1 , wherein the data ordering device is configured to rearrange data across multiple cache lines.

4 . The data ordering device of claim 1 , wherein the data ordering device is coupled to a core of a vector processor.

5 . The data ordering device of claim 1 , wherein the data ordering device is a field programmable gate array (FPGA).

6 . The data ordering device of claim 1 , wherein the data ordering device is part of a computer system configured to provide instructions to the data ordering device as part of a machine instruction set of the computer system.

7 . The data ordering device of claim 1 , wherein the data ordering device is coupled to a control unit and functional units of the central processing unit.

8 . The data ordering device of claim 1 , wherein the data ordering device is configured to:

receive, from a memory, a sectioned array of n records, each record comprising a key-value pair;

in a first stage number operation:

for each record:

extract an R number of most significant bits of a key of the key-value pair to create a control string; and

sort the record into one of the M outputs of the switching functional unit based on the control string; and

store records of the M outputs as a sorted sectioned array of M batches, in the memory;

for a total of X stage operations, for each next stage number operation, iteratively perform, for each of the M (stage number-1) batches stored in the memory:

receive each record of the batch from the memory;

for each record of the batch:

extract a next R number of most significant bits of the key to create a new control string; and

sorting the record into one of the M outputs based on the new control string; and

store the records of the M outputs as a sorted sectioned array of M batches, in the memory.

9 . The data ordering device of claim 8 , wherein each control string indicates to which of the M outputs the corresponding record belongs.

10 . The data ordering device of claim 8 , wherein a total of log M n stages of the switching functional unit are configured to sort all n records.

11 . The data ordering device of claim 8 , wherein each stage involves M (stage-1) SFU operations of the switching functional unit to sort all records.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 26, 2021
From: KUMAR, MANOJ; PATTNAIK, PRATAP C.; EKANADHAM, KATTAMURI; TSENG, JESSICA; MOREIRA, JOSE E.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 057600/0478 →
Continuity (2)
Division 16205208 · Nov 29, 2018
Related Publication 20220012010A1 · Jan 13, 2022
References Cited (44)
US 5768609A · Gove et al. · 1998 [cited by applicant]
US 5958047A · Panwar · 1999 [cited by applicant]
US 6389478B1 · Blackmore et al. · 2002 [cited by applicant]
US 7017028B2 · Ben-David et al. · 2006 [cited by applicant]
US 7177309B2 · Shinohara · 2007 [cited by examiner]
US 7499353B2 · Kim · 2009 [cited by applicant]
US 8307194B1 · Scott et al. · 2012 [cited by applicant]
US 8375196B2 · Bjorklund et al. · 2013 [cited by applicant]
US 8958817B1 · Murphy · 2015 [cited by applicant]
US 9412473B2 · Chung · 2016 [cited by applicant]
US 9606913B2 · Moschopoulos et al. · 2017 [cited by applicant]
US 9620176B2 · Wu et al. · 2017 [cited by applicant]
US 9666300B2 · Zhang et al. · 2017 [cited by applicant]
US 9740659B2 · Sreedhar et al. · 2017 [cited by applicant]
US 9805816B2 · Jan et al. · 2017 [cited by applicant]
US 9905309B2 · Bang et al. · 2018 [cited by applicant]
US 10394822B2 · Stearn · 2019 [cited by applicant]
US 10489480B2 · Akerib · 2019 [cited by applicant]
US 10523596B1 · Ferger · 2019 [cited by examiner]
US 10771401B2 · Javadi · 2020 [cited by applicant]
US 10817490B2 · Li et al. · 2020 [cited by applicant]
US 11163528B2 · Kumar et al. · 2021 [cited by applicant]
US 20060224838A1 · Blumrich et al. · 2006 [cited by applicant]
US 20150019835A1 · Anderson · 2015 [cited by applicant]
US 20160224465A1 · Morad et al. · 2016 [cited by applicant]
US 20160276042A1 · Pesavento et al. · 2016 [cited by applicant]
US 20160378476A1 · Bradbury et al. · 2016 [cited by applicant]
US 20170116154A1 · Palmer et al. · 2017 [cited by applicant]
US 20170177338A1 · Gschwind et al. · 2017 [cited by applicant]
US 20170337156A1 · Yadavalli · 2017 [cited by applicant]
US 20170337985A1 · Borah et al. · 2017 [cited by applicant]
US 20180047736A1 · Seo et al. · 2018 [cited by applicant]
US 20180108425A1 · Lee et al. · 2018 [cited by applicant]
US 20180137928A1 · Qiu et al. · 2018 [cited by applicant]
US 20180329868A1 · Chen et al. · 2018 [cited by applicant]
WO 2018007782A1 · 2018 [cited by applicant]
Teich et al.; Data Handling and Dedicated Hardware for the Sort Problem; 1983 (Year: 1983). [cited by examiner]
List of IBM Patents or Applications Treated as Related. [cited by applicant]
Knuth, D. E., “The Art of Computer Programing”, 2nd Ed. (1998); vol. 3 Sorting and Searching; 791 pgs., Addison-Wesley, Reading, Massachusetts, USA (Part 1, 229 pgs., cover—218). [cited by applicant]
Knuth, D. E., “The Art of Computer Programing”, 2nd Ed. (1998); vol. 3 Sorting and Searching; 791 pgs., Addison-Wesley, Reading, Massachusetts, USA (Part 2, 210 pgs., pp. 219-428). [cited by applicant]
Knuth, D. E., “The Art of Computer Programing”, 2nd Ed. (1998); vol. 3 Sorting and Searching; 791 pgs., Addison-Wesley, Reading, Massachusetts, USA (Part 3, 211 pgs., pp. 429-639). [cited by applicant]
Knuth, D. E., “The Art of Computer Programing”, 2nd Ed. (1998); vol. 3 Sorting and Searching; 791 pgs., Addison-Wesley, Reading, Massachusetts, USA (Part 4, 141 pgs., pp. 640-780). [cited by applicant]
Furtak, T. et al., “Using SIMD Registers and Instructions to Enable Instruction-Level Parallelism in Sorting Algorithms”, SPAA (2007); 10 pgs. [cited by applicant]
Inoue, H. et al., “SIMD- and Cache-Friendly Algorithm for Sorting an Array of Structures”; Proceedings of the VLDB Endowment (2015); vol. 8:11; pp. 1274-1285. [cited by applicant]