IP Library Granted Patent US 7,797,518
Granted Patent B2
US 7,797,518 · App. 11/220,911 · Granted Sep 14, 2010

Generating instruction sets for compacting long instructions

Assignee: ARM Limited
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 7,797,518
App. No.
11/220,911
Granted
Sep 14, 2010
Kind
B2
Abstract

A method of generating at least one instruction set from a plurality of program instructions, said plurality of program instructions comprising a plurality of instruction fields each of said instruction fields operable on decoding to generate control signals for transmission by individual command buses, said method comprising the steps of: determining which combination of command buses each instruction is operable to communicate control signals to and forming a cluster of instructions from instructions that communicate control signals to a same combination of command buses; developing at least one instruction set for at least some of said instruction clusters, said at least one instruction set having fewer bits than said program instruction; specifying a number of identification bits within said at least one instruction set operable to identify said instruction set; determining a number of bits required for each instruction field within said at least one instruction set to specify all possible control signals that can be sent by said at least one instruction set along a respective one of said command buses and reallocating any bits that are allocated to said instruction field that are in excess of said determined required number to said identification bits, such that an increased number of different instruction sets can be identified by said identification bits.

Claims (28)

1. A method of generating at least one instruction set from a plurality of program instructions, said plurality of program instructions comprising a plurality of instruction fields each of said instruction fields operable on decoding to generate control signals for transmission by individual command buses, said method comprising the steps of:

determining which combination of command buses each instruction is operable to communicate control signals to and forming a cluster of instructions from instructions that communicate control signals to a same combination of command buses;

developing at least one instruction set for at least some of said instruction clusters, said at least one instruction set having fewer bits than said program instruction;

specifying a number of identification bits within said at least one instruction set operable to identify said instruction set;

determining a number of bits required for each instruction field within said at least one instruction set to specify all possible control signals that can be sent by said at least one instruction set along a respective one of said command buses and reallocating any bits that are allocated to said instruction field that are in excess of said determined required number to said identification bits, such that an increased number of different instruction sets can be identified by said identification bits.

2. A method according to claim 1 , wherein said instructions are instructions to be processed by a data engine, said data engine comprising a set of n memory banks operable to store said instructions, said step of developing said at least one instruction set being operable to develop said at least one instruction set to comprise a predetermined width, said predetermined width being an integer multiple of a width of one of said memory banks, said integer being less than or equal to n.

3. A method according to claim 1 , wherein said step of determining said number of bits required for each instruction field comprises receiving said number from a user.

4. A method according to claim 1 , wherein said method determines said number of bits required for each instruction field by determining a number of potential control signals to be processed by each command bus within a particular cluster, to determine a number of bits required to specify said number of potential control signals.

5. A method according to claim 1 , wherein said method determines said number of bits required for each instruction field in response to both an input specifying a number received from a user, and a determination of a number of potential control signals to be processed by each command bus within a particular cluster performed by said method.

6. A method according to claim 1 , comprising an additional step of specifying an additional number of identification bits operable to identify said instruction set in response to an input from a user.

7. A method according to claim 1 , wherein said method is operable to develop a plurality of instruction sets, and comprises the further steps of determining an efficiency of said plurality of instruction sets and outputting an analysis report of said efficiency of said plurality of instruction sets developed by said method.

8. A method according to claim 7 , wherein said method comprises the further steps of producing and outputting an analysis report of a complexity of a decoder operable to decode said plurality of instruction sets developed by said method.

9. A method according to claim 1 , wherein said step of developing said at least one instruction set, comprises calculating a frequency of occurrence of a particular combination of command buses and a width of said instruction fields associated therewith and developing said at least one instruction set for a combination of command buses having a high frequency of occurrence and a narrow width.

10. A method according to claim 1 , said method comprising an initial step of receiving data defining said data engine.

11. A computer program product comprising a computer readable storage medium containing computer readable instructions that when executed are operable to perform a method according to claim 1 .

12. An apparatus operable to specify a plurality of instruction sets for use by a data engine comprising:

a compiler operable to receive and compile a plurality of program instructions from at least one application for processing by said data engine, said plurality of program instructions each comprising a plurality of instruction fields each operable to generate control signals on decoding for transmission by individual command buses;

a data analyser operable to analyse said compiled instructions and determine a combination of command buses operable to transmit generated control signals in response to each of said program instructions and to form clusters of instructions that communicate control signals to a same combination of command buses; wherein

said apparatus is operable to develop at least one instruction set for a plurality of said instruction clusters, said at least one instruction set having fewer bits than said plurality of program instructions, said at least one instruction set comprising a number of identification bits identifying said at least one instruction set; and

said apparatus is operable to determine a number of bits required for each instruction field within said at least one instruction set and to reallocate any bits allocated to said field that are in excess of said determined required number to said identification bits, such that an increased number of different instruction sets can be identified.

13. An apparatus according to claim 12 , wherein said data engine comprises a set of n memory banks operable to store instructions, said apparatus being operable to develop said at least one instruction set to comprise a predetermined width, said predetermined width being an integer multiple of a width of one of said memory banks, said integer being less than or equal to n.

14. An apparatus according to claim 12 , wherein said apparatus is operable to determine a number of bits required for each instruction field in response to an input specifying said number received from a user.

15. An apparatus according to claim 12 , wherein said apparatus is operable to determine said number of bits required for each instruction field by determining a number of potential instructions to be processed by each command bus within a particular cluster, to determine a number of bits required to specify said number of potential instructions.

16. An apparatus according to claim 12 , wherein said apparatus is operable to determine a number of bits required for each instruction field in response to both an input specifying a number received from a user, and a determination of a number of potential instructions to be processed by each command bus within a particular cluster performed by said apparatus.

17. An apparatus according to claim 12 , wherein said apparatus is operable to develop a plurality of instruction sets and to produce and output an analysis report of an efficiency of said plurality of instruction sets developed by said apparatus.

18. An apparatus according to claim 12 , wherein said apparatus is operable to develop a plurality of instruction sets and to produce and output an analysis report of a complexity of a decoder operable to decode said plurality of instruction sets developed by said apparatus.

19. An apparatus according to claim 12 , wherein said data analyser is operable to calculate a frequency of occurrence of a particular combination of command buses and a width of said instruction fields associated therewith and to develop said at least one instruction set for a combination of command buses having a high frequency of occurrence and a narrow width.

20. An apparatus according to claim 12 , comprising an input operable to receive data defining said data engine.

Assignments (5)
CHANGE OF NAME Recorded Oct 4, 2019
From: COGNOVO LIMITED
To: U-BLOX UK MELBOURN LTD
Reel/Frame 050631/0337 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 4, 2019
From: U-BLOX MELBOURN LTD
To: U-BLOX AG
Reel/Frame 050633/0018 →
CHANGE OF NAME Recorded Oct 4, 2019
From: U-BLOX UK MELBOURN LTD
To: U-BLOX MELBOURN LTD
Reel/Frame 050638/0132 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 18, 2012
From: ARM LIMITED
To: COGNOVO LIMITED
Reel/Frame 028577/0845 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 28, 2005
From: COLLIGNON, ANDRE' MARIA FRANCOIS; VAN NIEUWENHOVE, KOENRAAD PIETER LODEWIJK
To: ARM LIMITED
Reel/Frame 017281/0889 →
Continuity (1)
Related Publication 20070055850A1 · Mar 8, 2007