IP Library Granted Patent US 12,699,747
Granted Patent B2
US 12,699,747 · App. 17/131,736 · Granted Aug 4, 2026

Processors, methods, systems, and instructions to select and store data elements from two source two-dimensional arrays indicated by permute control elements in a result two-dimensional array

Inventor: ElMoustapha Ould-Ahmed-Vall (Chandler, CA)
Assignee: Intel Corporation
G06F17/16G06F7/5443G06F9/30109G06F9/3818G06F13/1668G06F13/4027G06F13/4282G06F2213/0026
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,699,747
App. No.
17/131,736
Granted
Aug 4, 2026
Kind
B2
Abstract

Techniques for permuting two source two dimensional (2D) arrays are described. A processor of an aspect includes a decoder circuitry to decode an instruction having an opcode. The instruction may indicate a first source 2D array, a second source 2D array, and permute control elements. Execution circuitry is coupled with the decoder circuitry. The execution circuitry is to execute the decoded instruction to select data elements, from among any data elements of the first source 2D array, and any data elements of the second source 2D array, that are each indicated by a different corresponding one of the permute control elements. The execution circuitry is also to store the selected data elements in data element positions of a result 2D array that each correspond to a different one of the permute control elements. Other processors, methods, systems, and instructions are disclosed.

Claims (33)

1 . A processor comprising:

a decoder circuitry to decode an instruction having an opcode, the instruction to indicate a first source two-dimensional (2D) array of data elements arranged in a plurality of rows and a plurality of columns, a second source 2D array of data elements arranged in a plurality of rows and a plurality of columns, and a plurality of permute control elements; and

execution circuitry coupled with the decoder circuitry, the execution circuitry to perform operations corresponding to the instruction, including to:

select a plurality of single data elements, from among any of the data elements of the first source 2D array of data elements, and any of the data elements of the second source 2D array of data elements, wherein every selected single data element of the selected plurality of single data elements is to be selected by a different corresponding one of the plurality of permute control elements; and

store the selected plurality of single data elements in a plurality of single data element positions of a result 2D array, each and all of the single data element positions of the result 2D array to correspond to a different one of the plurality of permute control elements.

2 . The processor of claim 1 , wherein each of the plurality of permute control elements selects no more than a single data element the first source 2D array or the second source 2D array.

3 . The processor of claim 1 , wherein the plurality of permute control elements includes a same number of permute control elements as a number of the plurality of single data elements positions of the result 2D array.

4 . The processor of claim 1 , wherein each of the data elements of the first source 2D array of data elements is a single integer data element or a single floating-point data element, and wherein the decoder circuitry is to decode the instruction that is to indicate a third source 2D array of the plurality of permute control elements arranged in a plurality of rows and a plurality of columns, and wherein the result 2D array has a same number of rows as a number of rows of the third source 2D array and the result 2D array has a same number of columns as a number of columns of the third source 2D array.

5 . The processor of claim 1 , wherein each row of the first source 2D array has a plurality of data elements, wherein each column of the first source 2D array has a plurality of data elements, and wherein the decoder circuitry is to decode the instruction that is to indicate one of a plurality of sequential vector registers that are to store the plurality of permute control elements.

6 . The processor of claim 1 , wherein the decoder circuitry is to decode the instruction that is to indicate a single vector register that is to store the plurality of permute control elements.

7 . The processor of claim 6 , wherein the single vector register comprises at least 512-bits and is to store 8-bit permute control elements, and wherein the first and second source 2D arrays together are to have no more than 256 data elements.

8 . The processor of claim 1 , wherein the decoder circuitry is to decode the instruction that is to indicate a memory location that is to store the plurality of permute control elements.

9 . The processor of claim 1 , wherein each of the data elements of the first source 2D array of data elements is a single integer value or a single floating-point value, wherein the first source 2D array has at least eight rows and at least eight columns, wherein each of the rows of the first source 2D array has at least eight data elements, wherein each of the columns of the first source 2D array has at least eight data elements, and further comprising a register to store configuration information, the configuration information to configure a number of the rows of the first source 2D array, and a number of the columns of the first source 2D array.

10 . The processor of claim 1 , further comprising a plurality of physical registers, and wherein one or more of the first and second source 2D arrays are to be stored in a tile register, the tile register comprising an overlay over the physical registers.

11 . A method performed by a processor comprising:

decoding an instruction having an opcode, the instruction indicating a first source two-dimensional (2D) array of data elements arranged in a plurality of rows and a plurality of columns, a second source 2D array of data elements arranged in a plurality of rows and a plurality of columns, and a plurality of permute control elements; and

performing operations corresponding to the instruction, including:

selecting a plurality of single data elements, from among any of the data elements of the first source 2D array of data elements, and any of the data elements of the second source 2D array of data elements, wherein every selected single data element of the selected plurality of single data elements is to be selected by a different corresponding one of the plurality of permute control elements; and

storing the selected plurality of single data elements in a plurality of single data element positions of a result 2D array, each and all of the single data element positions of the result 2D array to correspond to a different one of the plurality of permute control elements.

12 . The method of claim 11 , wherein each of the plurality of permute control elements selects no more than a single data element the first source 2D array or the second source 2D array, and wherein the plurality of permute control elements includes a same number of permute control elements as a number of the plurality of single data elements positions of the result 2D array.

13 . The method of claim 11 , wherein the decoding is by decoder circuitry that is to decode the instruction that is to indicate a third source 2D array that is to store the plurality of permute control elements.

14 . The method of claim 11 , wherein the decoding is by decoder circuitry that is to decode the instruction that is to indicate one of a plurality of sequential vector registers that are to store the plurality of permute control elements.

15 . The method of claim 11 , wherein the decoding is by decoder circuitry that is to decode the instruction that is to indicate a single vector register that is to store the plurality of permute control elements.

16 . The method of claim 11 , further comprising a register to store configuration information, the configuration information to configure a number of row of the first source 2D array, and a number of columns of the first source 2D array.

17 . The method of claim 11 , wherein the first source 2D array has an array of data elements arranged in at least eight rows and at least eight columns, wherein each row of the first source 2D array has at least eight data elements, wherein each column of the first source 2D array has at least eight data elements.

18 . A system comprising:

an interconnect;

a processor coupled with the interconnect, the processor to receive an instruction having an opcode, the instruction to indicate a first source two-dimensional (2D) array of data elements arranged in a plurality of rows and a plurality of columns, a second source 2D array of data elements arranged in a plurality of rows and a plurality of columns, and a plurality of permute control elements, the processor, to perform operations corresponding to the instruction, including to:

select a plurality of single data elements, from among any of the data elements of the first source 2D array of data elements, and any of the data elements of the second source 2D array of data elements, wherein every selected single data element of the selected plurality of single data elements is to be selected by a different corresponding one of the plurality of permute control elements; and

store the selected plurality of single data elements in a plurality of single data element positions of a result 2D array, each and all of the single data element positions of the result 2D array to correspond to a different one of the plurality of permute control elements; and

a dynamic random access memory (DRAM) coupled with the interconnect.

19 . The system of claim 18 , further comprising a mass storage device coupled with the processor, wherein each of the plurality of data elements that is selected is a single integer value or a single floating-point value, and wherein the processor comprises decoder circuitry to decode the instruction that is to indicate a third source 2D array that is to store the plurality of permute control elements.

20 . The system of claim 18 , further comprising a peripheral component interconnect express (PCIe) interface coupled with the processor, and wherein the processor comprises decoder circuitry to decode the instruction that is to indicate a single vector register that is to store the plurality of permute control elements.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 4, 2021
From: OULD-AHMED-VALL, ELMOUSTAPHA
To: INTEL CORPORATION
Reel/Frame 054805/0340 →
Continuity (1)
Related Publication 20220197974A1 · Jun 23, 2022
References Cited (150)
US 5247632A · Newman · 1993 [cited by applicant]
US 5475822A · Sibigtroth et al. · 1995 [cited by applicant]
US 5552825A · Talluri et al. · 1996 [cited by applicant]
US 5892962A · Cloutier · 1999 [cited by applicant]
US 6119224A · Roth · 2000 [cited by applicant]
US 6161219A · Ramkumar et al. · 2000 [cited by applicant]
US 6212112B1 · Naura et al. · 2001 [cited by applicant]
US 6332186B1 · Elwood et al. · 2001 [cited by applicant]
US 6877020B1 · Bratt et al. · 2005 [cited by applicant]
US 7003542B2 · Devir · 2006 [cited by applicant]
US 7031994B2 · Lao et al. · 2006 [cited by applicant]
US 7209939B2 · Castrapel et al. · 2007 [cited by applicant]
US 7467288B2 · Glossner et al. · 2008 [cited by applicant]
US 7725521B2 · Chen et al. · 2010 [cited by applicant]
US 7792895B1 · Juffa et al. · 2010 [cited by applicant]
US 7873812B1 · Mimar · 2011 [cited by applicant]
US 7912889B1 · Juffa et al. · 2011 [cited by applicant]
US 7932910B2 · Hansen et al. · 2011 [cited by applicant]
US 8214626B2 · Macy et al. · 2012 [cited by applicant]
US 8392487B1 · Mesh et al. · 2013 [cited by applicant]
US 8984043B2 · Ginzburg et al. · 2015 [cited by applicant]
US 9442723B2 · Yang et al. · 2016 [cited by applicant]
US 9495724B2 · Mejdrich · 2016 [cited by examiner]
US 9575304B2 · Dixon · 2017 [cited by applicant]
US 9748974B2 · Vakilinia · 2017 [cited by examiner]
US 9906359B2 · Gueron · 2018 [cited by applicant]
US 9959247B1 · Woo et al. · 2018 [cited by applicant]
US 9960907B2 · Gueron · 2018 [cited by applicant]
US 10404426B2 · Kerhuel et al. · 2019 [cited by applicant]
US 10535114B2 · Bolz · 2020 [cited by applicant]
US 10649775B2 · Zbiciak · 2020 [cited by applicant]
US 10866786B2 · Sade et al. · 2020 [cited by applicant]
US 10896043B2 · Toll et al. · 2021 [cited by applicant]
US 10956537B2 · Woo · 2021 [cited by examiner]
US 10963256B2 · Sade et al. · 2021 [cited by applicant]
US 10970076B2 · Ould-Ahmed-Vall et al. · 2021 [cited by applicant]
US 11347503B2 · Bhardwaj · 2022 [cited by examiner]
US 11507376B2 · Toll et al. · 2022 [cited by applicant]
US 11544191B2 · Vengallur et al. · 2023 [cited by applicant]
US 11687341B2 · Garegrat et al. · 2023 [cited by applicant]
US 11755474B2 · Murrin et al. · 2023 [cited by applicant]
US 20020027552A1 · Lee · 2002 [cited by applicant]
US 20020198911A1 · Blomgren et al. · 2002 [cited by applicant]
US 20030126176A1 · Devir · 2003 [cited by applicant]
US 20040111587A1 · Nair et al. · 2004 [cited by applicant]
US 20050193050A1 · Sazegari · 2005 [cited by applicant]
US 20060101245A1 · Nair et al. · 2006 [cited by applicant]
US 20060190517A1 · Guerrero · 2006 [cited by applicant]
US 20070186210A1 · Hussain et al. · 2007 [cited by applicant]
US 20080071851A1 · Zohar et al. · 2008 [cited by applicant]
US 20080140994A1 · Khailany et al. · 2008 [cited by applicant]
US 20080208942A1 · Won et al. · 2008 [cited by applicant]
US 20090043836A1 · Dupaquis et al. · 2009 [cited by applicant]
US 20090063607A1 · Gustavson et al. · 2009 [cited by applicant]
US 20090292758A1 · Brokenshire et al. · 2009 [cited by applicant]
US 20090300091A1 · Brokenshire et al. · 2009 [cited by applicant]
US 20090300249A1 · Moyer et al. · 2009 [cited by applicant]
US 20100180100A1 · Lu et al. · 2010 [cited by applicant]
US 20100325187A1 · Juffa et al. · 2010 [cited by applicant]
US 20110055517A1 · Eichenberger et al. · 2011 [cited by applicant]
US 20120079252A1 · Sprangle · 2012 [cited by applicant]
US 20120113133A1 · Shpigelblat · 2012 [cited by applicant]
US 20120137074A1 · Kim et al. · 2012 [cited by applicant]
US 20120254588A1 · Adrian et al. · 2012 [cited by applicant]
US 20120314774A1 · Yang et al. · 2012 [cited by applicant]
US 20130275729A1 · Abraham et al. · 2013 [cited by applicant]
US 20130290687A1 · Ould-Ahmed-Vall et al. · 2013 [cited by applicant]
US 20130305020A1 · Valentine et al. · 2013 [cited by applicant]
US 20140149480A1 · Catanzaro et al. · 2014 [cited by applicant]
US 20150067302A1 · Gueron · 2015 [cited by applicant]
US 20150199266A1 · Franchetti et al. · 2015 [cited by applicant]
US 20170177346A1 · Gokhale et al. · 2017 [cited by applicant]
US 20170308383A1 · Espasa et al. · 2017 [cited by applicant]
US 20170337156A1 · Yadavalli · 2017 [cited by applicant]
US 20180004510A1 · Grochowski et al. · 2018 [cited by applicant]
US 20180113708A1 · Corbal et al. · 2018 [cited by applicant]
US 20180189239A1 · Nurvitadhi et al. · 2018 [cited by applicant]
US 20180253402A1 · Redfern et al. · 2018 [cited by applicant]
US 20180365819A1 · Green · 2018 [cited by applicant]
US 20190004801A1 · Haber et al. · 2019 [cited by applicant]
US 20190042202A1 · Sade et al. · 2019 [cited by applicant]
US 20190042245A1 · Toll et al. · 2019 [cited by applicant]
US 20190042248A1 · Bradford et al. · 2019 [cited by applicant]
US 20190042260A1 · Ould-Ahmed-Vall et al. · 2019 [cited by applicant]
US 20190102196A1 · Sade et al. · 2019 [cited by applicant]
US 20190138494A1 · Inoue · 2019 [cited by applicant]
US 20190236442A1 · Chen et al. · 2019 [cited by applicant]
US 20190391811A1 · Garegrat et al. · 2019 [cited by applicant]
US 20200097291A1 · Hughes et al. · 2020 [cited by applicant]
US 20200127684A1 · Park et al. · 2020 [cited by applicant]
US 20200210187A1 · Alexander et al. · 2020 [cited by applicant]
US 20200210188A1 · Ould-Ahmed-Vall · 2020 [cited by examiner]
US 20200233803A1 · Vengallur et al. · 2020 [cited by applicant]
US 20200249947A1 · Valentine et al. · 2020 [cited by applicant]
US 20200249955A1 · Kravitz et al. · 2020 [cited by applicant]
US 20220197652A1 · Ould-Ahmed-Vall · 2022 [cited by applicant]
US 20220197974A1 · Ould-Ahmed-Vall · 2022 [cited by examiner]
US 20230229588A1 · Aggarwal · 2023 [cited by examiner]
US 20240028256A1 · Mnes et al. · 2024 [cited by applicant]
GB 2592087A · 2021 [cited by applicant]
KR 1020110079495A · 2011 [cited by applicant]
WO 2004053841A2 · 2004 [cited by applicant]
WO WO2005006183A2 · 2005 [cited by examiner]
WO 2016003740A1 · 2016 [cited by applicant]
WO 2016105727A1 · 2016 [cited by applicant]
WO 2017105713A1 · 2017 [cited by applicant]
WO 2018125250A1 · 2018 [cited by applicant]
WO 2020014783A1 · 2020 [cited by applicant]
European Search Report and Search Opinion, EP App. No. 20209449.6, May 21, 2021, 10 pages. [cited by applicant]
International Preliminary Report on Patentability, PCT App. No. PCT/US2017/040546, Oct. 3, 2019, 10 pages. [cited by applicant]
International Search Report and Written Opinion, PCT App. No. PCT/US2017/040546, Jan. 24, 2018, 15 pages. [cited by applicant]
Communication pursuant to Article 94(3) EPC, EP App. No. 20209449.6, Mar. 13, 2023, 04 pages. [cited by applicant]
Elmoustapha et al., published U.S. Appl. No. 16/233,546, filed Dec. 27, 2018, 43 pages. [cited by applicant]
Hughes et al., published U.S. Appl. No. 16/914,321, filed Jun. 27, 2020, 76 pages. [cited by applicant]
Non-Final Office Action, U.S. Appl. No. 16/914,321, Jul. 27, 2023, 10 pages. [cited by applicant]
Office Action, EP App. No. 21197302.9, Jan. 25, 2023, 8 pages. [cited by applicant]
Corrected Notice of Allowability, U.S. Appl. No. 15/201,442, Jan. 22, 2019, 5 pages. [cited by applicant]
Corrected Notice of Allowability, U.S. Appl. No. 15/201,442, Mar. 11, 2019, 2 pages. [cited by applicant]
Final Office Action, U.S. Appl. No. 16/233,546, Dec. 7, 2020, 11 pages. [cited by applicant]
Hughes et al., Unpublished U.S. Appl. No. 16/914,321, filed Jun. 27, 2020, entitled “Matrix Data Scatter and Gather By Row”, 76 pages. [cited by applicant]
Intel, “Intel(registered) Architecture Instruction Set Extensions and Future Features Programming Reference”, Ref. No. 319433-040, Jun. 2020, 31 pages. [cited by applicant]
Lahr Dave, “Timing Matrix Multiplication in SciDB and Setting the Number of Worker Instances in SciDB and Running Matrix Multiplication Piecemeal”, Available Online at <http://dllahr.blogspot.com/2012/11/timing-matrix-m… [cited by applicant]
Lee, Ruby B., “Subword Permutation Instructions for Two-Dimensional Multimedia Processing in MicroSIMD Architectures”, In: Proceedings of the IEEE 11th International Conference on Application-Specific Systems, Architect… [cited by applicant]
Non-Final Office Action, U.S. Appl. No. 15/201,442, May 4, 2018, 11 pages. [cited by applicant]
Non-Final Office Action, U.S. Appl. No. 16/233,546, May 22, 2020, 8 pages. [cited by applicant]
Non-Final Office Action, U.S. Appl. No. 16/398,200, Jul. 28, 2020, 17 pages. [cited by applicant]
Notice of Allowance, U.S. Appl. No. 15/201,442, Dec. 14, 2018, 5 pages. [cited by applicant]
European Search Report and Search Opinion, EP App. No. 21197302.9, Feb. 22, 2022, 10 pages. [cited by applicant]
Final Office Action, U.S. Appl. No. 16/233,546, Mar. 15, 2022, 13 pages. [cited by applicant]
Non-Final Office Action, U.S. Appl. No. 16/233,546, Jun. 18, 2021, 13 pages. [cited by applicant]
Final Office Action, U.S. Appl. No. 16/914,321, Dec. 11, 2023, 7 pages. [cited by applicant]
Non-Final Office Action, U.S. Appl. No. 17/131,733, Mar. 22, 2024, 21 pages. [cited by applicant]
Office Action, EP App. No. 20209449.6, Mar. 20, 2024, 4 pages. [cited by applicant]
Office Action, EP App. No. 21197302.9, Dec. 15, 2023, 10 pages. [cited by applicant]
'An Easy-to-Use Multi-Source Recording and Synchronization Software for Experimental Trials' by Merino-Monge et al., Article in IEEE Access, Oct. 2020. (Year: 2020). [cited by applicant]
'Chaotic Block Interleaver Design for Bit-interleaved Coded Modulation with Iterative Decoding' by Xuelan Zou and Xiaolan Qian, Published in: 2012 International Conference on Image Analysis and Signal Processing, Date o… [cited by applicant]
'Dyadic transpose: A B' by Kruger, archived on Aug. 27, 2022. (Year: 2022). [cited by applicant]
'Systematic Methods for Designing Stride Permutation Interconnections' Thesis by Tuomas Jarvinen, 2004. (Year: 2004). [cited by applicant]
Non-Final Office Action, U.S. Appl. No. 17/131,741, Apr. 1, 2024, 30 pages. [cited by applicant]
Notice of Allowance, U.S. Appl. No. 16/914,321, Jun. 14, 2024, 8 pages. [cited by applicant]
Office Action, EP App. No. 20209449.6, Sep. 20, 2024, 4 pages. [cited by applicant]
‘Stride Permutation Access in Interleaved Memory Systems’ by Jarmo Takala et al., Copyright 2000 by Marcel Dekker, Inc. (Year: 2000). [cited by applicant]
MATLAB Answers 'How do I split a color image into its 3 RGB channels?' 2013-2023. (Year: 2013). [cited by applicant]
Non-Final Office Action, U.S. Appl. No. 17/131,741, Dec. 6, 2024, 31 pages. [cited by applicant]
Arm, “Coding for Neon”, Issue 04 102159, 2020, 46 Pages. [cited by applicant]
Notice of Allowance, U.S. Appl. No. 17/131,741, Jul. 16, 2025, 9 pages. [cited by applicant]
Office Action, EP App. No. 20209449.6, Feb. 14, 2025, 04 pages. [cited by applicant]
Office Action, EP App. No. 21197302.9, Sep. 3, 2025, 08 pages. [cited by applicant]
Notice of Allowance, U.S. Appl. No. 17/131,741, Oct. 21, 2025, 5 pages. [cited by applicant]
Office Action, EP App. No. 21197302.9, Jan. 15, 2026, 07 pages. [cited by applicant]