Movatterモバイル変換


[0]ホーム

URL:


USRE45278E1 - Method and apparatus for changing microcode to be executed in a processor - Google Patents

Method and apparatus for changing microcode to be executed in a processor
Download PDF

Info

Publication number
USRE45278E1
USRE45278E1US12/914,978US91497810AUSRE45278EUS RE45278 E1USRE45278 E1US RE45278E1US 91497810 AUS91497810 AUS 91497810AUS RE45278 EUSRE45278 EUS RE45278E
Authority
US
United States
Prior art keywords
address
instruction
memory
opcode
cache
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime, expires
Application number
US12/914,978
Inventor
Christian D. Kasper
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microelectronic Innovations LLC
Original Assignee
STMicroelectronics lnc USA
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by STMicroelectronics lnc USAfiledCriticalSTMicroelectronics lnc USA
Priority to US12/914,978priorityCriticalpatent/USRE45278E1/en
Application grantedgrantedCritical
Publication of USRE45278E1publicationCriticalpatent/USRE45278E1/en
Assigned to STMICROELECTRONICS INTERNATIONAL NVreassignmentSTMICROELECTRONICS INTERNATIONAL NVASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS).Assignors: STMICROELECTRONICS, INC.
Assigned to FRANCE BREVETSreassignmentFRANCE BREVETSASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS).Assignors: STMICROELECTRONICS INTERNATIONAL NV
Adjusted expirationlegal-statusCritical
Assigned to MICROELECTRONIC INNOVATIONS, LLCreassignmentMICROELECTRONIC INNOVATIONS, LLCASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS).Assignors: FRANCE BREVETS
Assigned to MICROELECTRONIC INNOVATIONS, LLCreassignmentMICROELECTRONIC INNOVATIONS, LLCCORRECTIVE ASSIGNMENT TO CORRECT THE THE ASSIGNEE ADDRESS PREVIOUSLY RECORDED AT REEL: 060161 FRAME: 0346. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT.Assignors: FRANCE BREVETS
Expired - Lifetimelegal-statusCriticalCurrent

Links

Images

Classifications

Definitions

Landscapes

Abstract

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.

Description

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.
BACKGROUND OF THE INVENTION
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.
SUMMARY OF THE INVENTION
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.
BRIEF DESCRIPTION OF THE PREFERRED EMBODIMENTS
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.
BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 is a simplified block diagram of one embodiment of the hot patch circuit of the present invention.
FIG. 2 is a simplified block diagram of a second embodiment of the hot patch circuit of the present invention.
FIG. 3 shows one example of the different fields associated with the cache used in the present invention.
FIG. 4 shows one example of the control codes used in the control flag field ofFIG. 3.
FIG. 5 shows one example of the bit configuration of the cache control register used in the present invention.
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
Referring toFIG. 1, one embodiment of a hot patch circuit10 (hereinafter circuit10) is shown. Thecircuit10 provides a means whereby the instruction content of an embedded memory device or the behavior of the Central Processing Unit (CPU) may be corrected, modified and/or debugged. Thecircuit10 is preferably used in a pipeline CPU.
Thecircuit10 has aprogram counter12. Theprogram counter12 is coupled to amemory device14 and to aregister18. Theprogram counter12 is used to generate an address of an instruction to be executed. When the address is generated, theprogram counter12 will index thememory unit14. Thememory unit14 stores instructions which are to be executed by the CPU. Thememory unit14 is a nonvolatile memory device like a Read Only Memory (ROM) device. Once the program counter12 access the instruction which is stored in thememory unit14, the instruction is sent to amultiplexer16.
Theregister18 is coupled to thememory unit14, theprogram counter12, and to acache unit20. Theregister18 is used to store data which will be compared to data which is stored in thecache unit20. Theregister18 may either store the address sent from theprogram counter12 or the instruction which the program counter12 access from thememory unit14.
As may be seen inFIG. 4, thecache unit20 is comprised of a plurality ofcache lines30. Eachcache line30 is comprised of at least three different fields: acontrol flag field30A, an op-code field30B which stores the new instruction to be inserted into the instruction stream, and an address/op-code field30C which stores the data which is to be compared to the data stored in theregister18. The size of the fields will vary based on the implementation of thecircuit10. In accordance with one embodiment of the present invention, the width of thecache line30 would be able to accommodate at least a 32-bit op-code (field30B) along with a 10 to 32-bit address/op-code (field30C) and a 2 to 8-bit control flag field (field30A). This would yield a cache line width between 44 to 72-bits. However, it should be noted that these field lengths are only given as one example and should not be seen as limiting the scope of the present invention. As stated above, bit field dimensions will vary depending on the size of thememory unit14.
Thecontrol flag field30A is used to dictate both the semantic content and the execution behavior of individual or multiple cache lines30. 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 toFIG. 3, some examples of the control flag code is shown. The valid flag “V” indicates whether the entry in thecache unit20 is valid. The “A” and “O” flags indicate whether the information to be compared is an address or an op-code. The global flag “G” allows for greater than a 1:1 mapping. For example, if the address flag “A” is set, one would only be comparing the one particular address in thememory unit14. Thus, there is only a 1:1 mapping. However, if the op-code “O” and global “G” flags are set, one would be able to replace every occurrence of a particular instruction that is accessed from thememory unit14. Thus, the global flag “G” allows one to make better use of the space in thecache unit20. The insert “I”, match “M”, block assignment “B”, and delete “X” flags are used by thecache control logic22 to control access to the instruction stream. The “I” flag implies that the associated op-code in the cache is to be inserted into the instruction stream. The “M” flag indicates that when the contents of theregister18 matches that in thecache unit20, the cache unit instruction is to replace the instruction from thememory unit14 in the instruction stream. The “B” flag allows for more than one instruction (i.e., a block of instructions) that is stored in thecache unit20 is to be clocked into the instruction stream. The “X” indicates that the relevant instruction is to be ignored or deleted (i.e., no operation (NOP)). The “E”, “H”, “L”, and “Q” flags are pipeline control flags. The “E” flags indicates that if there is a match to jump to external memory using the address in the “opcode field” and to execute the instructions in external memory starting at that location. The “H” flag allows one to stop the clock for purposes of debugging the pipeline. The “L” flag allows one to lock thecache unit20 and the “Q” flag is a generate trap flag. The control codes shown inFIG. 3 are just examples and should not be seen to limit the scope of the present invention. Different sets or embodiments of flags could be used depending on the particular implementation.
In the embodiment depicted inFIG. 1, the cache unit is a fully associative or direct-mapped cache which would contain memory unit addresses with associated control flags, executable instructions, and tag information. Thecache unit20 may be a content addressable memory whereby the data in theregister18 is compared to all the contents in thecache unit20.
Thecache20 is also coupled to abus21. Thebus21 could be coupled to a host bus or to external memory. Thebus21 allows data to be downloaded into thecache20 or for allowing instructions to be executed from the external memory. Contents of thecache20 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 logic22 is coupled to thecache unit20 and tote multiplexer16. Thecache control logic22 controls the operation of thecache unit20 and when a particular instruction will be inserted into the instruction stream of thepipeline24. If there is no comparison match, thecache control logic22 will let the instruction from thememory unit14 flow through themultiplexer16 to thepipeline24. When there is a comparison match, the instruction from thememory unit14 is replaced by a new instruction from thecache unit20 in thepipeline24. Thecache control logic22 will have acache control register23. The cache control register23 allows one to control thecache unit20 and to control insertion of an instruction into thepipeline24. By setting various bits in thecache control register23, one would be able to enable/disable thecache unit20, modify the contents of thecache unit20 and control the general operation of thecache unit20. The cache control register23 will be described in further detail in relation to the dual cache system ofFIG. 2.
Amask register26 may be coupled to thecache unit20. Themask register26 may be a global mask register which would affect theentire cache unit20 or a local mask register32 (FIG. 3) whereby asingle cache line30 would have an associatedlocal mask register32. Themask register26 provides flexibility to thecircuit10. Themask register26 allows flexibility by allowing one to control how the data from thememory unit14 is matched with data in thecache unit20. For example, if all of the bits in theglobal mask register26 were set to 1, then what ever data came through theregister18 would be matched one to one against that of thecache unit20. One could also set theglobal mask register26 to invalidating thecache unit20 and let the memory unit instructions be executed as accessed by theprogram control12. Themask register26 may also be used to modify the contents of thecache unit20 by using simple write instructions.
Referring toFIG. 2, a second embodiment of the present invention is shown wherein like numerals represent like elements with the exception of a “′” to indicate another embodiment. Thecircuit10′ looks and operates in a similar fashion ascircuit10 depicted inFIG. 1. One difference incircuit10′ is that thecache20′ is divided into two separate caches: anaddress cache20A′ and aninstruction cache20B′. Thus, for theaddress cache20A′, the third field of the cache line will contain the memory unit address location to be matched, and for theinstruction cache20A′, the third field of the cache line will contain the memory unit instruction to be matched.
Thecache control logic22′ operates in a similar fashion as disclosed above. For the dual cache system, one implementation of the cache control register23′ is shown inFIG. 5. As can be seen inFIG. 5, by setting different bits in the cache control register23′, one is able to control the operation of thecache unit20′. The catch control register23′ depicted inFIG. 5 would be used in the dual cache system ofFIG. 2. In this particular embodiment, the cache control register23′ has locking, enabling, indexing, and match status bits for both theaddress cache20A′ and theindex cache20B′. Bits like the enable operation bit and the debug mode bit could be used in either the single cache system ofFIG. 1 or the dual cache system ofFIG. 2. The cache control register bit definition as shown inFIG. 5 is just one example and should not be seen to limit the scope of the present invention. Different configuration of bits could be used depending on the particular implementation.
The dual cache system also uses twomultiplexers16A′ and16B′. Thefirst multiplexer16A′ has a first input coupled to the output of theaddress cache20A′, a second input coupled to the output of theinstruction cache20B′, a third input coupled to thecache control logic22′, and an output coupled to the second multiplexer16B′. The second multiplexer16B′ has a first input coupled to the output of thefirst multiplexer16A′, a second input coupled to the output of thememory device14′, a third input coupled to thecache control logic22′, and outputs coupled to thepipeline24′ and thestatus buffer34′. In operation, thecache control logic23′ will control whichcache20A′ or20B′ is enabled and if there is a dual match if bothcaches20A′ and20B′ are enabled, which cache has priority. If there is a comparison match, thecache control logic22′ will cause themultiplexer16A′ to send an output from thecache unit20′ to the second multiplexer16B′. Thecache control logic22′ will then cause the multiplexer16B′ to insert the output from thecache unit20′ into the instruction stream to be executed. If there is no comparison match, thecache control logic22′ will cause the multiplexer16B′ to insert the instruction from thememory unit14′ into thepipeline24′.
In the embodiment depicted inFIG. 2, thecircuit10′ has astatus buffer34′. Thestatus buffer34′ has an input coupled to thecache control logic22′, an input coupled to the second multiplexer16B′, and an input coupled to thebus36′. The status buffer is used to store information related to the operation of thecircuit10′. For example, the status buffer could be used to gather debug information such as what line of code was matched. Although not shown inFIG. 1, it should be noted that thestatus buffer34′ could also be used in the embodiment depicted inFIG. 1.
OPERATION
Referring now to Table 1 below, the operation ofcircuit10 will be described. It should be noted that the operation ofcircuit10′ is similar to10 and will not be described in detail.
TABLE 1
Cache
FlagsAddressOp-codeProgramCounterCode Stream
1MA0111111CP32 A,C0111111CP32 A,C
2IR1000000MOV A,B1000000100000
3RA1000010SAV B1000001MOV A,B
4RA1000011ADD B,C1000010100001
5XA10001011000011SAV B
1000101ADD B,C
1000110NOP
10001111000110
1000111
When theprogram counter12 generates the address 0111111, theprogram counter12 will index thememory unit14. The instruction associated with address 0111111 from thememory unit14 will be stored in themultiplexer16. The address from theprogram counter12 is also sent to theregister18 where it is compared to the data stored in thecache unit20. As can be seen above, for address 0111111 there is a comparison match withcache line 1. Since the “M” flag is set forcache line 1, the op-code incache line 1 will replace the instruction from memory. Thus thecache control logic23 will send the CP32 A,C instruction associated withcache line 1 through themultiplexer16 into thepipeline24 to be execute.
The next address generated by theprogram counter12 is 1000000. The memory unit instruction associated with address 1000000 is sent from thememory unit14 and stored in themultiplexer16. The address generated by theprogram counter12 is sent to theregister18 where it is compared to the data stored in thecache unit20. For the address 1000000 there is a comparison match withcache line 2. Since the “I” flag is set forcache 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 theprogram counter12 is 1000001. For this address there is no comparison match. Thus, thecache control logic23 will send the instruction associated with memory unit address location 1000001 through themultiplexer16 into thepipeline24 to be execute.
For the next address, 1000010, there is a comparison match withcache line 3. Since the “R” flag is set incache 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 withcache line 4. Since the “R” flag is set incache line 4, the op-code ADD B,C incache 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 withcache 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, thecache control logic23 will send the instruction associated with these memory unit address locations through themultiplexer16 into thepipeline24 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.

Claims (31)

What is claimed is:
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.
2. The hot patch system according toclaim 1, wherein the one or more selection flags include a first flag indicating whether the cache control logic is to compare addresses and a second flag indicating whether the cache control logic is to compare opcodes.
3. The hot patch system according toclaim 2, wherein the second flag, when set, indicates that the cache control logic is to compare an opcode stored at the address within the read only memory with an opcode stored at the address within the cache memory.
4. The hot patch system according toclaim 2, wherein the first and second flags may be individually set, so that both flags may be set, one flag may be set while the other flag is not set, or both flags may be not set.
5. The hot patch system according toclaim 2, wherein the one or more selection flags further include a third flag indicating whether an opcode comparison should be performed for every instance of an opcode within the read only memory.
6. The hot patch system according toclaim 1, wherein each cache line within the cache memory has associated therewith one or more instruction flow control flags, 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.
7. The hot patch system according toclaim 6, wherein the one or more instruction flow control flags include an insert flag indicating that an opcode at the address within the cache memory is to be inserted prior to execution of an opcode at the address within the read only memory.
8. The hot patch system according toclaim 6, wherein the one or more instruction flow control flags include a replace flag indicating that an opcode at the address within the cache memory is to be executed instead of an opcode at the address within the read only memory.
9. The hot patch system according toclaim 6, wherein the one or more instruction flow control flags include a block flag indicating that more than one opcode starting at the address within the cache memory are to be executed instead of or before an opcode at the address within the read only memory.
10. The hot patch system according toclaim 6, wherein the one or more instruction flow control flags include a noop flag indicating that an opcode at the address within the read only memory is to be skipped.
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.
12. The hot patch method according toclaim 11, wherein the one or more selection flags include a first flag indicating whether addresses are to he compared and a second flag indicating whether opcodes are to be compared.
13. The hot patch method according toclaim 12, wherein the second flag, when set, indicates that an opcode stored at the address within the read only memory is to be compared with an opcode stored at the address within the cache memory.
14. The hot patch method according toclaim 12, wherein the first and second flags may be individually set, so that either both flags may be set, one flag may be set while the other flag is not set, or both flags may be not set.
15. The hot patch method according toclaim 12, wherein the one or more selection flags further include a third flag indicating whether an opcode comparison should be performed for every instance of an opcode within the read only memory.
16. The hot patch method according toclaim 11, wherein each cache line within the cache memory has associated therewith one or more instruction flow control flags, wherein instruction flow is changed based upon the one or more instruction flow control flags associated with a cache line corresponding to the address when there is a comparison match between the selected information and the counterpart selected information.
17. The hot patch method according toclaim 16, wherein the one or more instruction flow control flags include an insert flag indicating that an opcode at the address within the cache memory is to be inserted prior to execution of an opcode at the address within the read only memory.
18. The hot patch method according toclaim 16, wherein the one or more instruction flow control flags include a replace flag indicating that an opcode at the address within the cache memory is to be executed instead of an opcode at the address within the read only memory.
19. The hot patch method according toclaim 16, wherein the one or more instruction flow control flags include a block flag indicating that more than one opcode starting at the address within the cache memory are to be executed instead of or before an opcode at the address within the read only memory.
20. The hot patch method according toclaim 16, wherein the one or more instruction flow control flags include a noop flag indicating that an opcode at the address within the read only memory is to be skipped.
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.
22. The hot patch system according toclaim 21, wherein the one or more selection flags include:
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 toclaim 21, wherein the one or more instruction flow control flags include:
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.
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.
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.
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.
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.
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.
29. The apparatus of claim 28, further comprising a register to store a value of the program counter.
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.
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.
US12/914,9781999-12-302010-10-28Method and apparatus for changing microcode to be executed in a processorExpired - LifetimeUSRE45278E1 (en)

Priority Applications (1)

Application NumberPriority DateFiling DateTitle
US12/914,978USRE45278E1 (en)1999-12-302010-10-28Method and apparatus for changing microcode to be executed in a processor

Applications Claiming Priority (3)

Application NumberPriority DateFiling DateTitle
US09/475,927US6691308B1 (en)1999-12-301999-12-30Method and apparatus for changing microcode to be executed in a processor
US10/774,994US7444630B2 (en)1999-12-302004-02-09Method and apparatus for changing microcode to be executed in a processor
US12/914,978USRE45278E1 (en)1999-12-302010-10-28Method and apparatus for changing microcode to be executed in a processor

Related Parent Applications (1)

Application NumberTitlePriority DateFiling Date
US10/774,994ReissueUS7444630B2 (en)1999-12-302004-02-09Method and apparatus for changing microcode to be executed in a processor

Publications (1)

Publication NumberPublication Date
USRE45278E1true USRE45278E1 (en)2014-12-02

Family

ID=30771309

Family Applications (3)

Application NumberTitlePriority DateFiling Date
US09/475,927Expired - LifetimeUS6691308B1 (en)1999-12-301999-12-30Method and apparatus for changing microcode to be executed in a processor
US10/774,994Expired - LifetimeUS7444630B2 (en)1999-12-302004-02-09Method and apparatus for changing microcode to be executed in a processor
US12/914,978Expired - LifetimeUSRE45278E1 (en)1999-12-302010-10-28Method and apparatus for changing microcode to be executed in a processor

Family Applications Before (2)

Application NumberTitlePriority DateFiling Date
US09/475,927Expired - LifetimeUS6691308B1 (en)1999-12-301999-12-30Method and apparatus for changing microcode to be executed in a processor
US10/774,994Expired - LifetimeUS7444630B2 (en)1999-12-302004-02-09Method and apparatus for changing microcode to be executed in a processor

Country Status (1)

CountryLink
US (3)US6691308B1 (en)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication numberPriority datePublication dateAssigneeTitle
US6691308B1 (en)*1999-12-302004-02-10Stmicroelectronics, Inc.Method and apparatus for changing microcode to be executed in a processor
US6643769B1 (en)*2000-08-232003-11-04Hewlett-Packard Development Company, L.P.System and method for enabling selective execution of computer code
US7310800B2 (en)*2001-02-282007-12-18Safenet, Inc.Method and system for patching ROM code
US6823445B2 (en)*2001-07-312004-11-23International Business Machines CorporationLimiting concurrent modification and execution of instructions to a particular type to avoid unexpected results
US8074201B2 (en)*2002-07-102011-12-06National Instruments CorporationDeployment and execution of a program on an embedded device
US7296259B2 (en)*2002-09-112007-11-13Agere Systems Inc.Processor system with cache-based software breakpoints
US8539469B2 (en)*2004-05-112013-09-17Microsoft CorporationEfficient patching
EP1622009A1 (en)*2004-07-272006-02-01Texas Instruments IncorporatedJSM architecture and systems
US20060174244A1 (en)*2005-01-312006-08-03Woods Paul RSystem and method for modifying execution flow in firmware
US20060179323A1 (en)*2005-02-042006-08-10Xac Automation Corp.Method for substitution of prompts for an encrypting pin device
US7543287B2 (en)*2005-06-302009-06-02Intel CorporationUsing a block device interface to invoke device controller functionality
KR100573334B1 (en)*2005-08-312006-04-24주식회사 칩스앤미디어 Computers with a set of instructions with real-time dynamic modification
CN100445949C (en)*2005-11-232008-12-24晨星半导体股份有限公司Method for modifying content of built-in program code of read-only memory
US20080115217A1 (en)*2006-10-312008-05-15Hewlett-Packard Development Company, L.P.Method and apparatus for protection of a computer system from malicious code attacks
US8296849B2 (en)*2006-10-312012-10-23Hewlett-Packard Development Company, L.P.Method and apparatus for removing homogeneity from execution environment of computing system
US20090031103A1 (en)*2007-07-242009-01-29Via TechnologiesMechanism for implementing a microcode patch during fabrication
US20090031109A1 (en)*2007-07-242009-01-29Via TechnologiesApparatus and method for fast microcode patch from memory
US20090031110A1 (en)*2007-07-242009-01-29Via TechnologiesMicrocode patch expansion mechanism
US20090031121A1 (en)*2007-07-242009-01-29Via TechnologiesApparatus and method for real-time microcode patch
US20090031107A1 (en)*2007-07-242009-01-29Via TechnologiesOn-chip memory providing for microcode patch overlay and constant update functions
US20090031090A1 (en)*2007-07-242009-01-29Via TechnologiesApparatus and method for fast one-to-many microcode patch
US8607208B1 (en)*2008-10-012013-12-10Oracle International CorporationSystem and methods for object code hot updates
CN101799763B (en)*2009-02-102013-01-30华为技术有限公司 Method, device and system for online patching of kernel
US9904616B2 (en)2011-12-142018-02-27International Business Machines CorporationInstruction output dependent on a random number-based selection or non-selection of a special command from a group of commands
US9632779B2 (en)*2011-12-192017-04-25International Business Machines CorporationInstruction predication using instruction filtering
US9384109B2 (en)*2014-04-172016-07-05Texas Instruments Deutschland GmbhProcessor with debug pipeline
CN105988798B (en)*2015-02-122020-07-31南京中兴软件有限责任公司Patch processing method and device
CN107436842A (en)*2016-05-252017-12-05中兴通讯股份有限公司A kind of microcode adjustment method and veneer
GB201621776D0 (en)*2016-12-202017-02-01Undo LtdDebugging Method

Citations (20)

* Cited by examiner, † Cited by third party
Publication numberPriority datePublication dateAssigneeTitle
US5136696A (en)*1988-06-271992-08-04Prime Computer, Inc.High-performance pipelined central processor for predicting the occurrence of executing single-cycle instructions and multicycle instructions
US5796974A (en)1995-11-071998-08-18Advanced Micro Devices, Inc.Microcode patching apparatus and method
US5860104A (en)1995-08-311999-01-12Advanced Micro Devices, Inc.Data cache which speculatively updates a predicted data cache storage location with store data and subsequently corrects mispredicted updates
US5887152A (en)1995-04-121999-03-23Advanced Micro Devices, Inc.Load/store unit with multiple oldest outstanding instruction pointers for completing store and load/store miss instructions
US5983337A (en)1997-06-121999-11-09Advanced 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
US6049672A (en)*1996-03-082000-04-11Texas Instruments IncorporatedMicroprocessor with circuits, systems, and methods for operating with patch micro-operation codes and patch microinstruction codes stored in multi-purpose memory structure
US6101580A (en)*1997-04-232000-08-08Sun Microsystems, Inc.Apparatus and method for assisting exact garbage collection by using a stack cache of tag bits
US6192516B1 (en)*1997-06-302001-02-20Sun Microsystems, Inc.Interpreter generation and implementation utilizing interpreter states and register caching
US6240506B1 (en)*1998-10-022001-05-29Advanced Micro Devices, Inc.Expanding instructions with variable-length operands to a fixed length
US6295644B1 (en)1999-08-172001-09-25Hewlett-Packard CompanyMethod and apparatus for patching program text to improve performance of applications
US6397379B1 (en)*1999-01-282002-05-28Ati International SrlRecording in a program execution profile references to a memory-mapped active device
US6502237B1 (en)*1996-01-292002-12-31Compaq Information Technologies Group, L.P.Method and apparatus for performing binary translation method and apparatus for performing binary translation
US6629312B1 (en)*1999-08-202003-09-30Hewlett-Packard Development Company, L.P.Programmatic synthesis of a machine description for retargeting a compiler
US6691308B1 (en)*1999-12-302004-02-10Stmicroelectronics, Inc.Method and apparatus for changing microcode to be executed in a processor
US6704926B1 (en)*2000-09-282004-03-09International Business Machines CorporationBimodal Java just-in-time complier
US6718539B1 (en)*2000-12-222004-04-06Lsi Logic CorporationInterrupt handling mechanism in translator from one instruction set to another
US6851109B1 (en)*1999-05-062005-02-01International Business Machines CorporationProcess and system for dynamically compiling a partially interpreted method
US7036118B1 (en)*2001-12-202006-04-25Mindspeed Technologies, Inc.System for executing computer programs on a limited-memory computing machine
US7134119B2 (en)*2000-10-052006-11-07Arm LimitedIntercalling between native and non-native instruction sets
US7254806B1 (en)*1999-08-302007-08-07Ati International SrlDetecting reordered side-effects

Patent Citations (20)

* Cited by examiner, † Cited by third party
Publication numberPriority datePublication dateAssigneeTitle
US5136696A (en)*1988-06-271992-08-04Prime Computer, Inc.High-performance pipelined central processor for predicting the occurrence of executing single-cycle instructions and multicycle instructions
US5887152A (en)1995-04-121999-03-23Advanced Micro Devices, Inc.Load/store unit with multiple oldest outstanding instruction pointers for completing store and load/store miss instructions
US5860104A (en)1995-08-311999-01-12Advanced Micro Devices, Inc.Data cache which speculatively updates a predicted data cache storage location with store data and subsequently corrects mispredicted updates
US5796974A (en)1995-11-071998-08-18Advanced Micro Devices, Inc.Microcode patching apparatus and method
US6502237B1 (en)*1996-01-292002-12-31Compaq Information Technologies Group, L.P.Method and apparatus for performing binary translation method and apparatus for performing binary translation
US6049672A (en)*1996-03-082000-04-11Texas Instruments IncorporatedMicroprocessor with circuits, systems, and methods for operating with patch micro-operation codes and patch microinstruction codes stored in multi-purpose memory structure
US6101580A (en)*1997-04-232000-08-08Sun Microsystems, Inc.Apparatus and method for assisting exact garbage collection by using a stack cache of tag bits
US5983337A (en)1997-06-121999-11-09Advanced 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
US6192516B1 (en)*1997-06-302001-02-20Sun Microsystems, Inc.Interpreter generation and implementation utilizing interpreter states and register caching
US6240506B1 (en)*1998-10-022001-05-29Advanced Micro Devices, Inc.Expanding instructions with variable-length operands to a fixed length
US6397379B1 (en)*1999-01-282002-05-28Ati International SrlRecording in a program execution profile references to a memory-mapped active device
US6851109B1 (en)*1999-05-062005-02-01International Business Machines CorporationProcess and system for dynamically compiling a partially interpreted method
US6295644B1 (en)1999-08-172001-09-25Hewlett-Packard CompanyMethod and apparatus for patching program text to improve performance of applications
US6629312B1 (en)*1999-08-202003-09-30Hewlett-Packard Development Company, L.P.Programmatic synthesis of a machine description for retargeting a compiler
US7254806B1 (en)*1999-08-302007-08-07Ati International SrlDetecting reordered side-effects
US6691308B1 (en)*1999-12-302004-02-10Stmicroelectronics, Inc.Method and apparatus for changing microcode to be executed in a processor
US6704926B1 (en)*2000-09-282004-03-09International Business Machines CorporationBimodal Java just-in-time complier
US7134119B2 (en)*2000-10-052006-11-07Arm LimitedIntercalling between native and non-native instruction sets
US6718539B1 (en)*2000-12-222004-04-06Lsi Logic CorporationInterrupt handling mechanism in translator from one instruction set to another
US7036118B1 (en)*2001-12-202006-04-25Mindspeed Technologies, Inc.System for executing computer programs on a limited-memory computing machine

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
A. K. Tirrell, A study of the application of compiler techniques to the generation of micro-code, Aug. 1974, 18 pages.*
IBM Technical Disclosure Bulletin, published Oct. 1, 1993.
Lin et al., A compact DSP core with static floating-point unit & its microcode generation, Apr. 2004, 4 pages.*

Also Published As

Publication numberPublication date
US20040158827A1 (en)2004-08-12
US7444630B2 (en)2008-10-28
US6691308B1 (en)2004-02-10

Similar Documents

PublicationPublication DateTitle
USRE45278E1 (en)Method and apparatus for changing microcode to be executed in a processor
US6865667B2 (en)Data processing system having redirecting circuitry and method therefor
US7340566B2 (en)System and method for initializing a memory device from block oriented NAND flash
US5481734A (en)Data processor having 2n bits width data bus for context switching function
CN105980993B (en)Data processing apparatus and method
US7721066B2 (en)Efficient encoding for detecting load dependency on store with misalignment
EP2842041B1 (en)Data processing system and method for operating a data processing system
US20020188830A1 (en)Bit replacement and extraction instructions
US6931477B2 (en)Method and apparatus for patching code and data residing on a memory
US20230084523A1 (en)Data Processing Method and Device, and Storage Medium
CN112559389B (en) Storage control device, processing device, computer system and storage control method
US7546442B1 (en)Fixed length memory to memory arithmetic and architecture for direct memory access using fixed length instructions
CN104978284A (en)Processor subroutine cache
US11436124B2 (en)Apparatus and method for accessing metadata when debugging a device
US5479342A (en)Microcomputer
US6757809B1 (en)Data processor having 2n bits width data bus for context switching functions
US7401328B2 (en)Software-implemented grouping techniques for use in a superscalar data processing system
US6049897A (en)Multiple segment register use with different operand size
CN115756612A (en)Computing device, operating method and machine-readable storage medium
US20170147498A1 (en)System and method for updating an instruction cache following a branch instruction in a semiconductor device
US20040205701A1 (en)Computer system, virtual machine, runtime representation of object, storage media and program transmission apparatus
JP3481479B2 (en) Command controller
JP2024077425A (en)Processor
JP2001306320A (en)Device and method for resetting and initializing array as known state when power is applied or through specified state of machine
JP2781779B2 (en) Branch control circuit

Legal Events

DateCodeTitleDescription
CCCertificate of correction
ASAssignment

Owner name:STMICROELECTRONICS INTERNATIONAL NV, NETHERLANDS

Free format text:ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:STMICROELECTRONICS, INC.;REEL/FRAME:037841/0074

Effective date:20160128

FPAYFee payment

Year of fee payment:8

ASAssignment

Owner name:FRANCE BREVETS, FRANCE

Free format text:ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:STMICROELECTRONICS INTERNATIONAL NV;REEL/FRAME:039140/0584

Effective date:20160321

MAFPMaintenance fee payment

Free format text:PAYMENT OF MAINTENANCE FEE, 12TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1553); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment:12

ASAssignment

Owner name:MICROELECTRONIC INNOVATIONS, LLC, MICHIGAN

Free format text:ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:FRANCE BREVETS;REEL/FRAME:060161/0346

Effective date:20220509

ASAssignment

Owner name:MICROELECTRONIC INNOVATIONS, LLC, DELAWARE

Free format text:CORRECTIVE ASSIGNMENT TO CORRECT THE THE ASSIGNEE ADDRESS PREVIOUSLY RECORDED AT REEL: 060161 FRAME: 0346. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT;ASSIGNOR:FRANCE BREVETS;REEL/FRAME:060389/0768

Effective date:20220616


[8]ページ先頭

©2009-2025 Movatter.jp