Methods, systems, and computer program products for compressing a computer program based on a compression criterion and executing the compressed program
First Claim
1. A method of compressing a computer program, comprising the steps of:
- scanning an initial computer program to identify a first plurality of uncompressed instructions therein having a high frequency of use;
populating a First storage mechanism with the identified first plurality of uncompressed instructions; and
generating a first compressed computer program by replacing each of a plurality of the identified first plurality of uncompressed instructions in the initial computer program with a respective first type of compressed instruction that identifies a location of the corresponding uncompressed instruction in the first storage mechanism.
9 Assignments
0 Petitions
Accused Products
Abstract
Embodiments of systems, methods, and computer program products are provided for compressing a computer program based on a compression criterion and executing the compressed program. For example, a computer program may be compressed by scanning an initial computer program to identify one or more uncompressed instructions that have a high frequency of use. A storage mechanism, such as a data structure, may then be populated with the identified uncompressed instructions. A compressed computer program may be generated by respectively replacing one or more of the identified uncompressed instructions with a compressed instruction that identifies a location of the corresponding uncompressed instruction in the storage mechanism. Additional compression of the computer program may be achieved by scanning the compressed computer program to identify one or more uncompressed instructions that have a high frequency of use when at least a portion of their instruction operand is ignored. A second storage mechanism, such as a data structure, may then be populated with the identified uncompressed instructions. Finally, a further compressed computer program may be generated by respectively replacing one or more of the identified uncompressed instructions with a second type of compressed instruction that identifies a location of the corresponding uncompressed instruction in the second storage mechanism.
76 Citations
75 Claims
-
1. A method of compressing a computer program, comprising the steps of:
-
scanning an initial computer program to identify a first plurality of uncompressed instructions therein having a high frequency of use;
populating a First storage mechanism with the identified first plurality of uncompressed instructions; and
generating a first compressed computer program by replacing each of a plurality of the identified first plurality of uncompressed instructions in the initial computer program with a respective first type of compressed instruction that identifies a location of the corresponding uncompressed instruction in the first storage mechanism. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. A method of compressing a computer program, comprising the steps of:
-
scanning an initial computer program to identify a first plurality of uncompressed instructions therein based on a first compression criterion;
populating a first storage mechanism with the identified first plurality of uncompressed instructions; and
generating a first compressed computer program by replacing each of a plurality of the identified first plurality of uncompressed instructions in the initial computer program with a respective first compressed instruction that identifies a location of the corresponding uncompressed instruction in the first storage mechanism. - View Dependent Claims (11, 12, 13)
-
-
14. A method of compressing a computer program, comprising the steps of:
-
respectively scanning each of a plurality of routines in an initial computer program to identify a first plurality of uncompressed instructions in each of the plurality of routines that have a high frequency of use;
respectively populating first storage mechanisms with the identified first plurality of uncompressed instructions from each of the plurality of routines; and
generating a first compressed computer program by respectively replacing each of a plurality of the identified first plurality of uncompressed instructions in each of the plurality of routines with a respective first compressed instruction that identifies a location of the corresponding uncompressed instruction in a respective one of the first storage mechanisms. - View Dependent Claims (15)
-
-
16. A method of executing a computer program, comprising the steps of:
-
fetching an instruction from a memory;
decoding the fetched instruction to determine whether the fetched instruction is an uncompressed instruction, a first type of compressed instruction, a second type of compressed instruction, or a third type of compressed instruction;
decoding the fetched instruction to identify a location in a first logical data structure, if the fetched instruction is a compressed instruction of the first type;
providing a first uncompressed instruction, which is located at the location in the first logical data structure, to a processor for execution if the fetched instruction is a compressed instruction of the first type;
decoding the fetched instruction to identify a location in a second logical data structure, if the fetched instruction is a compressed instruction of the second type;
combining portions of the fetched instruction with portions of an at least partially uncompressed instruction, which is located at the location in the second logical data structure, to generate a second uncompressed instruction if the fetched instruction is a compressed instruction of the second type;
providing the second uncompressed instruction to the processor for execution if the fetched instruction is a compressed instruction of the second type;
decoding the fetched instruction to identify a location in a third logical data structure, if the fetched instruction is a compressed instruction of the third type;
decoding the fetched instruction to identify a location in an operand data structure, if the fetched instruction is a compressed instruction of the third type;
combining a non-operand portion of an uncompressed instruction, which is located at the location in the third logical data structure, with an operand portion of the uncompressed instruction, which is located at the location in the operand data structure, to generate a third uncompressed instruction if the fetched instruction is a compressed instruction of the third type; and
providing the third uncompressed instruction to the processor for execution, if the fetched instruction is a compressed instruction of the third type. - View Dependent Claims (17, 18, 19)
-
-
20. A method of executing a computer program, comprising the steps of:
-
fetching an instruction associated with one of a plurality of routines from a memory;
decoding the fetched instruction to determine whether the fetched instruction is an uncompressed instruction or a first type of compressed instruction;
decoding the fetched instruction to identify a location in a first logical data structure that is exclusively associated with the one of the plurality of routines, if the fetched instruction is a compressed instruction of the first type; and
providing a first uncompressed instruction, which is located at the location in the first logical data structure, to a processor for execution if the fetched instruction is a compressed instruction of the first type. - View Dependent Claims (21, 22, 23, 24)
-
-
25. A data processing system for decompressing compressed computer program instructions, comprising:
-
an instruction type decoding unit having a data input that receives an instruction and determines whether the received instruction is an uncompressed instruction, a first type of compressed instruction, a second type of compressed instruction, or a third type of compressed instruction;
a first decompression sub-engine for the first type of compressed instruction having a data input coupled to a first data output of the instruction type decoding unit; and
a second decompression sub-engine for the second type of compressed instruction having a data input coupled to a second data output of the instruction type decoding unit. - View Dependent Claims (26, 27, 28, 29, 30, 31, 32, 33)
-
-
34. A system for compressing a computer program, comprising:
-
means for scanning an initial computer program to identify a first plurality of uncompressed instructions therein having a high frequency of use;
means for populating a first storage mechanism with the identified first plurality of uncompressed instructions; and
means for generating a first compressed computer program by replacing each of a plurality of the identified first plurality of uncompressed instructions in the initial computer program with a respective first type of compressed instruction that identifies a location of the corresponding uncompressed instruction in the first storage mechanism. - View Dependent Claims (35, 36, 37, 38, 39, 40, 41)
-
-
42. A system for compressing a computer program, comprising:
-
means for scanning an initial computer program to identify a first plurality of uncompressed instructions therein based on a first compression criterion;
means for populating a first storage mechanism with the identified first plurality of uncompressed instructions; and
means for generating a first compressed computer program by replacing each of a plurality of the identified first plurality of uncompressed instructions in the initial computer program with a respective first compressed instruction that identifies a location of the corresponding uncompressed instruction in the first storage mechanism. - View Dependent Claims (43, 44, 45)
-
-
46. A system for executing a computer program, comprising:
-
means for fetching an instruction from a memory;
means for decoding the fetched instruction to determine whether the fetched instruction is an uncompressed instruction, a first type of compressed instruction, or a second type of compressed instruction;
means for decoding the fetched instruction to identify a location in a first logical data structure, if the fetched instruction is a compressed instruction of the first type;
means for providing a first uncompressed instruction, which is located at the location in the first logical data structure, to a processor for execution if the fetched instruction is a compressed instruction of the first type;
means for decoding the fetched instruction to identify a location in a second logical data structure, if the fetched instruction is a compressed instruction of the second type;
means for combining portions of the fetched instruction with portions of an at least partially uncompressed instruction, which is located at the location in the second logical data structure, to generate a second uncompressed instruction if the fetched instruction is a compressed instruction of the second type; and
means for providing the second uncompressed instruction to the processor for execution if the fetched instruction is a compressed instruction of the second type;
means for decoding the fetched instruction to identify a location in a third logical data structure, if the fetched instruction is a compressed instruction of the third type;
means for decoding the fetched instruction to identify a location in an operand data structure, if the fetched instruction is a compressed instruction of the third type;
means for combining a non-operand portion of an uncompressed instruction, which is located at the location in the third logical data structure, with an operand portion of the uncompressed instruction, which is located at the location in the operand data structure, to generate a third uncompressed instruction if the fetched instruction is a compressed instruction of the third type; and
means for providing the third uncompressed instruction to the processor for execution, if the fetched instruction is a compressed instruction of the third type. - View Dependent Claims (47, 48, 49)
-
-
50. A system for executing a computer program, comprising:
-
means for fetching an instruction associated with one of a plurality of routines from a memory;
means for decoding the fetched instruction to determine whether the fetched instruction is an uncompressed instruction or a first type of compressed instruction;
means for decoding the fetched instruction to identify a location in a first logical data structure that is exclusively associated with the one of the plurality of routines, if the fetched instruction is a compressed instruction of the first type; and
means for providing a first uncompressed instruction, which is located at the location in the first logical data structure, to a processor for execution if the fetched instruction is a compressed instruction of the first type. - View Dependent Claims (51, 52, 53, 54)
-
-
55. A computer program product for compressing a computer program, comprising:
-
a computer readable storage medium having computer readable program code embodied therein, the computer readable program code comprising;
computer readable program code for scanning an initial computer program to identify a first plurality of uncompressed instructions therein having a high frequency of use;
computer readable program code for populating a first storage mechanism with the identified first plurality of uncompressed instructions; and
computer readable program code for generating a first compressed computer program by replacing each of a plurality of the identified first plurality of uncompressed instructions in the initial computer program with a respective first type of compressed instruction that identifies a location of the corresponding uncompressed instruction in the first storage mechanism. - View Dependent Claims (56, 57, 58, 59, 60, 61, 62)
-
-
63. A computer program product for compressing a computer program, comprising:
-
a computer readable storage medium having computer readable program code embodied therein, the computer readable program code comprising;
computer readable program code for scanning an initial computer program to identify a first plurality of uncompressed instructions therein based on a First compression criterion;
computer readable program code for populating a first storage mechanism with the identified first plurality of uncompressed instructions; and
computer readable program code for generating a first compressed computer program by replacing each of a plurality of the identified first plurality of uncompressed instructions in the initial computer program with a respective first compressed instruction that identifies a location of the corresponding uncompressed instruction in the first storage mechanism. - View Dependent Claims (64, 65, 66)
-
-
67. A computer program product for executing a computer program, comprising:
-
a computer readable storage medium having computer readable program code embodied therein, the computer readable program code comprising;
computer readable program code for fetching an instruction from a memory;
computer readable program code for decoding the fetched instruction to determine whether the fetched instruction is an uncompressed instruction, a first type of compressed instruction, or a second type of compressed instruction;
computer readable program code for decoding the fetched instruction to identify a location in a first logical data structure, if the fetched instruction is a compressed instruction of the first type;
computer readable program code for providing a first uncompressed instruction, which is located at the location in the first logical data structure, to a processor for execution if the fetched instruction is a compressed instruction of the first type;
computer readable program code for decoding the fetched instruction to identify a location in a second logical data structure, if the fetched instruction is a compressed instruction of the second type;
computer readable program code for combining portions of the fetched instruction with portions of an at least partially uncompressed instruction, which is located at the location in the second logical data structure, to generate a second uncompressed instruction if the fetched instruction is a compressed instruction of the second type; and
computer readable program code for providing the second uncompressed instruction to the processor for execution if the fetched instruction is a compressed instruction of the second type;
computer readable program code for decoding the fetched instruction to identify a location in a third logical data structure, if the fetched instruction is a compressed instruction of the third type;
computer readable program code for decoding the fetched instruction to identify a location in an operand data structure, if the fetched instruction is a compressed instruction of the third type;
computer readable program code for combining a non-operand portion of an uncompressed instruction, which is located at the location in the third logical data structure, with an operand portion of the uncompressed instruction, which is located at the location in the operand data structure, to generate a third uncompressed instruction if the fetched instruction is a compressed instruction of the third type; and
computer readable program code for providing the third uncompressed instruction to the processor for execution, if the fetched instruction is a compressed instruction of the third type. - View Dependent Claims (68, 69, 70)
-
-
71. A computer program product for executing a computer program, comprising:
-
a computer readable storage medium having computer readable program code embodied therein, the computer readable program code comprising;
computer readable program code for fetching an instruction associated with one of a plurality of routines from a memory;
computer readable program code for decoding the fetched instruction to determine whether the fetched instruction is an uncompressed instruction or a first type of compressed instruction;
computer readable program code for decoding the fetched instruction to identify a location in a first logical data structure that is exclusively associated with the one of the plurality of routines, if the fetched instruction is a compressed instruction of the first type; and
computer readable program code for providing a first uncompressed instruction, which is located at the location in the first logical data structure, to a processor for execution if the fetched instruction is a compressed instruction of the first type. - View Dependent Claims (72, 73, 74, 75)
-
Specification