IP Library Granted Patent US 12,561,139
Granted Patent B2
US 12,561,139 · App. 18/406,527 · Granted Feb 24, 2026

Encoding and decoding variable length instructions

Inventors: Simon Thomas Nield (Hertfordshire, GB); James McCarthy (Hertfordshire, GB)
Assignee: Imagination Technologies Limited
G06F9/30149G06F8/443G06F9/30152G06F9/30156G06F9/3016G06F9/30163G06F9/30178G06F9/3802G06F9/382G06F9/3856H03M7/00H03M7/702
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,561,139
App. No.
18/406,527
Granted
Feb 24, 2026
Kind
B2
Abstract

Methods of encoding and decoding are described which use a variable number of instruction words to encode instructions from an instruction set, such that different instructions within the instruction set may be encoded using different numbers of instruction words. To encode an instruction, the bits within the instruction are re-ordered and formed into instruction words based upon their variance as determined using empirical or simulation data. The bits in the instruction words are compared to corresponding predicted values and some or all of the instruction words that match the predicted values are omitted from the encoded instruction.

Claims (33)

1 . Decoding hardware comprising:

hardware logic configured to determine an encoding type from a fetched instruction word;

word selection logic configured to generate an ordered sequence of instruction words by selecting, for each of the instruction words in the sequence, either the fetched instruction word or a predicted instruction word, and to concatenate the instruction words in the ordered sequence to form an encoded instruction;

re-order hardware logic configured to re-order bits in the encoded instruction to generate a decoded instruction; and

an output arranged to output the decoded instruction.

2 . The decoding hardware according to claim 1 , wherein the word selection logic is further configured to remove one or more control bits from the fetched instruction words prior to generating the ordered sequence of instruction words.

3 . The decoding hardware according to claim 1 , wherein the word selection logic is further configured to remove any control bits from the fetched instruction words prior to generating the ordered sequence of instruction words.

4 . The decoding hardware according to claim 1 , wherein the fetched instruction word comprises one or more control bits and wherein the word selection logic is configured to perform the selection of the fetched instruction word or a corresponding predicted instruction word based on values of one or more of the control bits.

5 . The decoding hardware according to claim 1 , wherein the fetched instruction word is selected from an ordered sequence of fetched instruction words and the word selection logic is configured to generate an ordered sequence of instruction words by selecting, for each of the instruction words in the sequence, either a next corresponding fetched instruction word or a corresponding predicted instruction word.

6 . The decoding hardware according to claim 5 , wherein the word selection logic is configured to perform the selection of either a next fetched instruction word in the ordered sequence of fetched instruction words or a corresponding predicted instruction word based upon a value of a bit in a mask identified based on an encoding type.

7 . The decoding hardware according to claim 1 , wherein the re-order hardware logic is configured to re-order bits in the encoded instruction according to the encoding type to generate a decoded instruction by re-ordering bits in the encoded instruction based on mapping data identified based on an encoding type.

8 . The decoding hardware according to claim 1 , wherein the hardware logic is configured to determine an encoding type, wherein the hardware logic is further arranged to determine the encoding type from one or more control bits in the fetched instruction word.

9 . The decoding hardware according to claim 8 , wherein the encoding type corresponds to a type of Arithmetic Logic Unit (ALU) on which the instruction will be executed.

10 . A method of decoding instructions comprising:

determining an encoding type from a fetched instruction word;

generating an ordered sequence of instruction words by selecting, for each of the instruction words in the sequence, the fetched instruction word or a predicted instruction word;

concatenating the instruction words in the ordered sequence to form an encoded instruction and re-ordering bits in the encoded to generate a decoded instruction; and

outputting the decoded instruction.

11 . The method according to claim 10 , further comprising:

fetching, in a fetch stage of a processor, an instruction word from memory.

12 . The method according to claim 11 , wherein the fetched instruction word is selected from one of a pre-defined number of instruction words.

13 . An integrated circuit manufacturing system comprising:

a non-transitory computer readable storage medium having stored thereon a computer readable dataset description of an integrated circuit that describes decoding hardware as set forth in claim 1 ;

a layout processing system configured to process the integrated circuit description so as to generate a circuit layout description of an integrated circuit embodying the decoding hardware; and

an integrated circuit generation system configured to manufacture the decoding hardware according to the circuit layout description.

14 . A method comprising:

receiving, at an input, mapping data for an instruction set and instruction data describing instructions in an instruction set in canonical form;

parsing the mapping data and instruction data using a grammar library;

generating, in a code and data generation engine, both encoding software and a hardware description of a decoder based on the parsed mapping data and instruction data, wherein the decoder comprises decoding hardware as set forth in claim 1 ; and

outputting the encoding software and the hardware description of a decoder.

15 . The method according to claim 14 , further comprising:

generating debugging data and documentation in human-readable form in the code and data generation engine and based on the parsed mapping data and instruction data; and

outputting the debugging data and documentation in human-readable form.

Assignments (1)
SECURITY INTEREST Recorded Jul 31, 2024
From: IMAGINATION TECHNOLOGIES LIMITED
To: FORTRESS INVESTMENT GROUP (UK) LTD
Reel/Frame 068221/0001 →
Priority Claims (1)
GB 1619781 · Nov 23, 2016 · national
Continuity (4)
Continuation 17737537 · May 5, 2022
Continuation 16789366 · Feb 12, 2020
Continuation 15821930 · Nov 24, 2017
Related Publication 20250224958A1 · Jul 10, 2025
References Cited (24)
US 5809272A · Thusoo et al. · 1998 [cited by applicant]
US 5926644A · Hays · 1999 [cited by applicant]
US 7774748B1 · Goodwin · 2010 [cited by applicant]
US 20040015931A1 · Larin et al. · 2004 [cited by applicant]
US 20040024990A1 · Chauvel et al. · 2004 [cited by applicant]
US 20050033946A1 · Abadallah · 2005 [cited by examiner]
US 20050278508A1 · Vasekin et al. · 2005 [cited by applicant]
US 20080155353A1 · Craske · 2008 [cited by applicant]
US 20080244506A1 · Killian et al. · 2008 [cited by applicant]
US 20110026545A1 · Kim et al. · 2011 [cited by applicant]
US 20120110307A1 · Tsuji · 2012 [cited by applicant]
US 20120155570A1 · Ginzburg et al. · 2012 [cited by applicant]
US 20120226891A1 · Estlick · 2012 [cited by examiner]
US 20120284461A1 · Larin et al. · 2012 [cited by applicant]
US 20140082334A1 · King et al. · 2014 [cited by applicant]
CN 103119849A · 2013 [cited by applicant]
CN 102017634A · 2014 [cited by applicant]
CN 104011670A · 2014 [cited by applicant]
CN 104778030A · 2015 [cited by applicant]
CN 105808209A · 2016 [cited by applicant]
EP 0689128A1 · 1995 [cited by applicant]
WO 9838791A2 · 1998 [cited by applicant]
WO 0038082A1 · 2000 [cited by applicant]
WO 2008118791A1 · 2008 [cited by applicant]