A Central Processing Unit (CPU) hotpatch circuit compares the run-time instruction stream against an internal cache. The internal cache stores embedded memory addresses with associated control flags, executable instruction codes, and tag information. In the event that a comparison against the current program counter succeeds, then execution is altered as required per the control flags. If no comparison match is made, then execution of the instruction that was accessed by the program counter is executed.
|
11. A processor-implemented hot patch method, comprising:
storing a plurality of instructions within a read only memory;
storing alternate instructions for at least one instruction in the read only memory within a cache memory, each cache line within the cache memory having associated therewith one or more selection flags;
transmitting an address to both the read only memory and the cache memory; and
comparing selected information associated with an instruction stored at the address in the read only memory with counterpart selected information associated with an instruction stored at the address in the cache memory, wherein the selected information and counterpart selected information are selected based upon the one or more selection flags associated with a cache line corresponding to the address.
0. 26. A processor-implemented method of executing instructions, comprising:
storing an instruction opcode compare value at a first instruction address in a cache memory store configured to hold alternate instructions for at least one instruction stored within a read only program memory, each cache line within the cache memory store having associated therewith one or more selection flags;
receiving the first instruction address from a program counter;
retrieving a first instruction opcode from the read only program memory at the first instruction address;
based on one or more selection flags associated with a cache line at the first instruction address within the cache memory store, selecting and comparing the first instruction opcode with the instruction opcode compare value; and
executing at least one instruction from a second instruction address if the first instruction opcode matches the instruction opcode compare value.
1. A hot patch system comprising:
a read only memory storing a plurality of instructions;
a cache memory storing alternate instructions for at least one instruction stored within the read only memory, each cache line within the cache memory having associated therewith one or more selection flags;
a program counter coupled to the read only memory and to the cache memory, the program counter transmitting an address to both the read only memory and the cache memory; and
cache control logic coupled to the cache memory, the cache control logic comparing selected information associated with an instruction stored at the address in the read only memory with counterpart selected information associated with an instruction stored at the address in the cache memory, wherein the selected information and counterpart selected information are selected based upon the one or more selection flags associated with a cache line corresponding to the address.
0. 27. A processor-implemented method of executing instructions, comprising:
storing an instruction opcode compare value at a first instruction address in a cache memory store configured to hold alternate instructions for at least one instruction stored within a read only program memory, each cache line within the cache memory store having associated therewith one or more selection flags;
receiving the first instruction address from a program counter;
retrieving an instruction opcode from the read only program memory at the first instruction address;
based on one or more selection flags associated with a cache line at the first instruction address within the cache memory store, selecting and comparing the instruction opcode with the instruction opcode compare value; and
selectively executing at least one instruction from a second instruction address, or executing a trap, if the instruction opcode matches the instruction opcode compare value.
0. 24. A processor-implemented method of executing instructions, comprising:
storing an instruction address compare value at a first instruction address in a cache memory store configured to hold alternate instructions for at least one instruction stored within a read only memory, each cache line within the cache memory store having associated therewith one or more selection flags;
receiving the first instruction address for an instruction within the read only memory from a program counter at the read only memory and the cache memory store;
based on one or more selection flags associated with a cache line at the first instruction address within the cache memory store, selecting and comparing the first instruction address with the instruction address compare value; and
selectively executing at least one instruction from a second instruction address, or executing a trap, if the first instruction address matches the instruction address compare value.
0. 31. An apparatus, comprising:
a processor;
a program counter;
a cache memory opcode store operable to store an instruction opcode compare value and alternate instructions for at least one instruction stored within a read only memory;
a configurable selection bit associated with each line within the cache memory opcode store;
an opcode comparator configurable to select and compare an opcode retrieved from an address specified by the program counter for an instruction stored at the address in the read only memory with the opcode compare value contained in the memory opcode store based on the configurable selection bit associated within an instruction opcode at the address; and
control logic operable to cause execution of an instruction from an instruction address different than the value contained in the program counter if the instruction opcode compare value contained in the address store matches the value of a retrieved opcode if the selection bit is of a first value and operable to cause execution of a trap if the selection bit is of a second value.
0. 28. An apparatus, comprising:
a processor;
a program counter;
a cache memory address store configured to store an instruction address compare value and alternate instructions for at least one instruction stored within a read only memory;
a configurable selection bit associated with each cache line within the cache memory address store;
an address comparator configurable to select and compare an address from the program counter for an instruction stored at the address in the read only memory with an instruction address compare value contained at the address in the cache memory address store based on the configurable selection bit; and
control logic operable to cause execution of an instruction from an instruction address different than the instruction address compare value contained in the memory address store if the instruction address compare value contained in the cache memory address store matches the value of the program counter if the selection bit is of a first value and operable to cause execution of a trap if the selection bit is of a second value.
21. A hot patch system, comprising:
a read only memory storing a plurality of instructions;
a cache memory storing alternate instructions for at least one instruction stored within the read only memory, each cache line within the cache memory having associated therewith one or more selection flags and one or more instruction flow control flags; and
cache control logic coupled to the cache memory, the cache control logic comparing selected information associated with an instruction stored at a specified address in the read only memory with counterpart selected information associated with an instruction stored at the specified address in the cache memory,
wherein the selected information and counterpart selected information are selected based upon the one or more selection flags associated with a cache line corresponding to the specified address, and
wherein the cache control logic causes a change in instruction flow based upon the one or more instruction flow control flags associated with the cache line corresponding to the address when there is a comparison match between the selected information and the counterpart selected information.
2. The hot patch system according to
3. The hot patch system according to
4. The hot patch system according to
5. The hot patch system according to
6. The hot patch system according to
7. The hot patch system according to
8. The hot patch system according to
9. The hot patch system according to
10. The hot patch system according to
12. The hot patch method according to
13. The hot patch method according to
14. The hot patch method according to
15. The hot patch method according to
16. The hot patch method according to
17. The hot patch method according to
18. The hot patch method according to
19. The hot patch method according to
20. The hot patch method according to
22. The hot patch system according to
a first flag indicating whether the cache control logic is to compare the specified address with an address of one or more instructions within the cache memory;
a second flag indicating whether the cache control logic is to compare an opcode stored at least at the specified address within the read only memory with an opcode stored at the specified address within the cache memory; and
a third flag indicating whether the cache control logic is to compare an opcode stored at any address within the read only memory with an opcode stored at the specified address within the cache memory.
23. The hot patch system according to
a replace flag indicating that an opcode at the specified address within the cache memory is to be executed instead of an opcode at the specified address within the read only memory;
a block flag indicating that more than one opcodes starting at the specified address within the cache memory are to be executed instead of or before an opcode at the specified address within the read only memory; and
a noop flag indicating that an opcode at the specified address within the read only memory is to be skipped.
0. 25. The method of claim 24, further comprising executing a trap if a predetermined sub-set of the bits comprising the program counter value match a corresponding sub-set of bits in the instruction address compare value.
0. 29. The apparatus of claim 28, further comprising a register to store a value of the program counter.
0. 30. The apparatus of claim 28, further comprising logic to compare only a subset of bits comprising the program counter value and the instruction address compare value to cause a trap to occur upon the match of corresponding subsets of bits.
|
This application is a continuation of prior application Ser. No. 09/475,927 filed on Dec. 30, 1999 now U.S. Pat. No. 6,691,308.
1. Field of the Invention
This invention relates generally to a processors and, more specifically, to a method and apparatus which provides run-time correction for microcode, code enhancement, and/or interrupt vector reassignment.
2. Description of the Prior Art
For integrated circuits which are driven by microcode which is embedded in internal memory, many times it is necessary to either have the instruction content of the embedded memory device or the behavior of the Central Processing Unit (CPU) pipeline itself corrected or debugged in the field. This may require on-the-fly modifications driven by customer request or updates due to evolution of industry protocol standards. However, this creates problems since it is difficult to correct and/or debug these types of circuits. Debugging and/or changing the embedded microcode is a time consuming effort which generally requires messy CRC changes or related checksum modifications.
Therefore, a need existed to provide a circuit by which either the instruction content of the internal memory and/or the behavior of the CPU pipeline itself could be corrected and/or debugged in the field. The debug circuit should consume only a small amount of silicon real estate, be inexpensive to implement and allow changes at a faster rate then current techniques. The debug circuit must also provide a means by which the debug circuit could download data to debug the device. Data could be downloaded by the host system or managed via a simplistic communication scheme as described in the ST52T3 data book written by STMicroelectronics, Inc.
It is object of the present invention to provide a circuit by which either the instruction content of an internal memory and/or the behavior of the CPU pipeline itself could be corrected and/or debugged in the field.
It is another object of the present invention to provide a debug circuit which consumes only a small amount of silicon real estate, is inexpensive to implement and allow changes at a faster rate then current techniques.
It is still a further object of the present invention to provide a debug circuit which provides a means by which the debug circuit could download data to debug the device.
In accordance with one embodiment of the present invention, a hot patch system for changing of code in a processor is disclosed. The hot patch system has a memory, such as a Read Only Memory (ROM), for storing a plurality of instructions. A program counter is coupled to the memory for indexing of the memory to access an instruction. A cache system is coupled to the memory and to the program counter. The cache system is used for comparing information associated with the instruction from memory with information stored in the cache system. If there is a comparison match, the cache system alters the instruction stream as designated by information stored in the cache system. If no match occurs, the cache system sends the instruction from memory into the instruction stream.
In accordance with another embodiment of the present invention, a method of altering the code of a pipeline processor is disclosed. The method requires that a plurality of instructions be stored in memory. A cache is provided and information is stored in the cache. The memory is indexed to access one of the instructions stored in memory. Information associated with the instruction from memory is compared with information stored in the cache. If a comparison match is made, the instruction stream is altered as designated by the information stored in the cache. If no comparison match is made, the instruction from memory is inserted into the instruction stream.
The foregoing and other objects, features, and advantages of the invention will be apparent from the following, more particular, description of the preferred embodiments of the invention, as illustrated in the accompanying drawing.
Referring to
The circuit 10 has a program counter 12. The program counter 12 is coupled to a memory device 14 and to a register 18. The program counter 12 is used to generate an address of an instruction to be executed. When the address is generated, the program counter 12 will index the memory unit 14. The memory unit 14 stores instructions which are to be executed by the CPU. The memory unit 14 is a nonvolatile memory device like a Read Only Memory (ROM) device. Once the program counter 12 access the instruction which is stored in the memory unit 14, the instruction is sent to a multiplexer 16.
The register 18 is coupled to the memory unit 14, the program counter 12, and to a cache unit 20. The register 18 is used to store data which will be compared to data which is stored in the cache unit 20. The register 18 may either store the address sent from the program counter 12 or the instruction which the program counter 12 access from the memory unit 14.
As may be seen in
The control flag field 30A is used to dictate both the semantic content and the execution behavior of individual or multiple cache lines 30. The number of control flags is dependent upon the allocated field size. In some cases, combination of control flags may be useful. Control flags may be used to either delete or enable cache unit entries, or provide alternate semantic information regarding the register content. Referring to
In the embodiment depicted in
The cache 20 is also coupled to a bus 21. The bus 21 could be coupled to a host bus or to external memory. The bus 21 allows data to be downloaded into the cache 20 or for allowing instructions to be executed from the external memory. Contents of the cache 20 could be downloaded by the host system or managed via a simple communication scheme as described in the ST52T3 data book written by STMicroelectronics, Inc.
Cache control logic 22 is coupled to the cache unit 20 and to te multiplexer 16. The cache control logic 22 controls the operation of the cache unit 20 and when a particular instruction will be inserted into the instruction stream of the pipeline 24. If there is no comparison match, the cache control logic 22 will let the instruction from the memory unit 14 flow through the multiplexer 16 to the pipeline 24. When there is a comparison match, the instruction from the memory unit 14 is replaced by a new instruction from the cache unit 20 in the pipeline 24. The cache control logic 22 will have a cache control register 23. The cache control register 23 allows one to control the cache unit 20 and to control insertion of an instruction into the pipeline 24. By setting various bits in the cache control register 23, one would be able to enable/disable the cache unit 20, modify the contents of the cache unit 20 and control the general operation of the cache unit 20. The cache control register 23 will be described in further detail in relation to the dual cache system of
A mask register 26 may be coupled to the cache unit 20. The mask register 26 may be a global mask register which would affect the entire cache unit 20 or a local mask register 32 (
Referring to
The cache control logic 22′ operates in a similar fashion as disclosed above. For the dual cache system, one implementation of the cache control register 23′ is shown in
The dual cache system also uses two multiplexers 16A′ and 16B′. The first multiplexer 16A′ has a first input coupled to the output of the address cache 20A′, a second input coupled to the output of the instruction cache 20B′, a third input coupled to the cache control logic 22′, and an output coupled to the second multiplexer 16B′. The second multiplexer 16B′ has a first input coupled to the output of the first multiplexer 16A′, a second input coupled to the output of the memory device 14′, a third input coupled to the cache control logic 22′, and outputs coupled to the pipeline 24′ and the status buffer 34′. In operation, the cache control logic 23′ will control which cache 20A′ or 20B′ is enabled and if there is a dual match if both caches 20A′ and 20B′ are enabled, which cache has priority. If there is a comparison match, the cache control logic 22′ will cause the multiplexer 16A′ to send an output from the cache unit 20′ to the second multiplexer 16B′. The cache control logic 22′ will then cause the multiplexer 16B′ to insert the output from the cache unit 20′ into the instruction stream to be executed. If there is no comparison match, the cache control logic 22′ will cause the multiplexer 16B′ to insert the instruction from the memory unit 14′ into the pipeline 24′.
In the embodiment depicted in
Referring now to Table 1 below, the operation of circuit 10 will be described. It should be noted that the operation of circuit 10′ is similar to 10 and will not be described in detail.
TABLE 1
Cache
Flags
Address
Op-code
Program Counter
Code Stream
1
MA
0111111
CP32 A,C
0111111
CP32 A,C
2
IR
1000000
MOV A,B
1000000
100000
3
RA
1000010
SAV B
1000001
MOV A,B
4
RA
1000011
ADD B,C
1000010
100001
5
XA
1000101
1000011
SAV B
1000101
ADD B,C
1000110
NOP
1000111
1000110
1000111
When the program counter 12 generates the address 0111111, the program counter 12 will index the memory unit 14. The instruction associated with address 0111111 from the memory unit 14 will be stored in the multiplexer 16. The address from the program counter 12 is also sent to the register 18 where it is compared to the data stored in the cache unit 20. As can be seen above, for address 0111111 there is a comparison match with cache line 1. Since the “M” flag is set for cache line 1, the op-code in cache line 1 will replace the instruction from memory. Thus the cache control logic 23 will send the CP32 A,C instruction associated with cache line 1 through the multiplexer 16 into the pipeline 24 to be execute.
The next address generated by the program counter 12 is 1000000. The memory unit instruction associated with address 1000000 is sent from the memory unit 14 and stored in the multiplexer 16. The address generated by the program counter 12 is sent to the register 18 where it is compared to the data stored in the cache unit 20. For the address 1000000 there is a comparison match with cache line 2. Since the “I” flag is set for cache line 2, the op-code in cache line 2 (i.e., MOV A,B) will be inserted into the instruction stream after the instruction associated with the memory unit address location 1000000.
The next address generated by the program counter 12 is 1000001. For this address there is no comparison match. Thus, the cache control logic 23 will send the instruction associated with memory unit address location 1000001 through the multiplexer 16 into the pipeline 24 to be execute.
For the next address, 1000010, there is a comparison match with cache line 3. Since the “R” flag is set in cache line 3, the op-code in cache line 3 (i.e., SAV B) replaces the memory unit instruction associated with the address 1000010 in the instruction stream.
The next address generated by the program counter is 1000011. For this address, there is a comparison match with cache line 4. Since the “R” flag is set in cache line 4, the op-code ADD B,C in cache line 4 replaces the memory unit instruction associated with the address 1000011 in the instruction stream.
The next address in the program counter is 1000101. Again there is a comparison match. This time the match is with cache line 5. Cache line 5 has the “X” flag set so the instruction is ignored or deleted (i.e., no operation (NOP)).
For the last two addresses in the program counter, 1000110 and 1000101, this is no comparison match. Thus, the cache control logic 23 will send the instruction associated with these memory unit address locations through the multiplexer 16 into the pipeline 24 to be execute.
While the invention has been particularly shown and described with reference to preferred embodiments thereof, it will be understood by those skilled in the art that the foregoing and other exchanges in form and details may be made therein without departing from the spirit and scope of the invention.
Patent | Priority | Assignee | Title |
Patent | Priority | Assignee | Title |
5136696, | Jun 27 1988 | Intel Corporation | High-performance pipelined central processor for predicting the occurrence of executing single-cycle instructions and multicycle instructions |
5796974, | Nov 07 1995 | GLOBALFOUNDRIES Inc | Microcode patching apparatus and method |
5860104, | Aug 31 1995 | GLOBALFOUNDRIES Inc | Data cache which speculatively updates a predicted data cache storage location with store data and subsequently corrects mispredicted updates |
5887152, | Apr 12 1995 | GLOBALFOUNDRIES Inc | Load/store unit with multiple oldest outstanding instruction pointers for completing store and load/store miss instructions |
5983337, | Jun 12 1997 | Advanced Micro Devices, Inc. | Apparatus and method for patching an instruction by providing a substitute instruction or instructions from an external memory responsive to detecting an opcode of the instruction |
6049672, | Mar 08 1996 | Texas Instruments Incorporated | Microprocessor with circuits, systems, and methods for operating with patch micro-operation codes and patch microinstruction codes stored in multi-purpose memory structure |
6101580, | Apr 23 1997 | Oracle America, Inc | Apparatus and method for assisting exact garbage collection by using a stack cache of tag bits |
6192516, | Jun 30 1997 | Sun Microsystems, Inc. | Interpreter generation and implementation utilizing interpreter states and register caching |
6240506, | Oct 02 1998 | Advanced Micro Devices, Inc. | Expanding instructions with variable-length operands to a fixed length |
6295644, | Aug 17 1999 | Hewlett Packard Enterprise Development LP | Method and apparatus for patching program text to improve performance of applications |
6397379, | Jan 28 1999 | ADVANCED SILICON TECHNOLOGIES, LLC | Recording in a program execution profile references to a memory-mapped active device |
6502237, | Jan 29 1996 | Hewlett Packard Enterprise Development LP | Method and apparatus for performing binary translation method and apparatus for performing binary translation |
6629312, | Aug 20 1999 | HEWLETT-PACKARD DEVELOPMENT COMPANY, L P | Programmatic synthesis of a machine description for retargeting a compiler |
6691308, | Dec 30 1999 | MICROELECTRONIC INNOVATIONS, LLC | Method and apparatus for changing microcode to be executed in a processor |
6704926, | |||
6718539, | Dec 22 2000 | AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE LIMITED | Interrupt handling mechanism in translator from one instruction set to another |
6851109, | May 06 1999 | International Business Machines Corporation | Process and system for dynamically compiling a partially interpreted method |
7036118, | Dec 20 2001 | Mindspeed Technologies, LLC | System for executing computer programs on a limited-memory computing machine |
7134119, | Oct 05 2000 | ARM Limited | Intercalling between native and non-native instruction sets |
7254806, | Aug 30 1999 | ADVANCED SILICON TECHNOLOGIES, LLC | Detecting reordered side-effects |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Oct 28 2010 | STMicroelectronics, Inc. | (assignment on the face of the patent) | / | |||
Jan 28 2016 | STMicroelectronics, Inc | STMicroelectronics International NV | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 037841 | /0074 | |
Mar 21 2016 | STMicroelectronics International NV | France Brevets | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 039140 | /0584 | |
May 09 2022 | France Brevets | MICROELECTRONIC INNOVATIONS, LLC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 060161 | /0346 | |
Jun 16 2022 | France Brevets | MICROELECTRONIC INNOVATIONS, LLC | CORRECTIVE ASSIGNMENT TO CORRECT THE THE ASSIGNEE ADDRESS PREVIOUSLY RECORDED AT REEL: 060161 FRAME: 0346 ASSIGNOR S HEREBY CONFIRMS THE ASSIGNMENT | 060389 | /0768 |
Date | Maintenance Fee Events |
Mar 24 2016 | M1552: Payment of Maintenance Fee, 8th Year, Large Entity. |
Apr 17 2020 | M1553: Payment of Maintenance Fee, 12th Year, Large Entity. |
Date | Maintenance Schedule |
Dec 02 2017 | 4 years fee payment window open |
Jun 02 2018 | 6 months grace period start (w surcharge) |
Dec 02 2018 | patent expiry (for year 4) |
Dec 02 2020 | 2 years to revive unintentionally abandoned end. (for year 4) |
Dec 02 2021 | 8 years fee payment window open |
Jun 02 2022 | 6 months grace period start (w surcharge) |
Dec 02 2022 | patent expiry (for year 8) |
Dec 02 2024 | 2 years to revive unintentionally abandoned end. (for year 8) |
Dec 02 2025 | 12 years fee payment window open |
Jun 02 2026 | 6 months grace period start (w surcharge) |
Dec 02 2026 | patent expiry (for year 12) |
Dec 02 2028 | 2 years to revive unintentionally abandoned end. (for year 12) |