Patent US4809500A successfully refreshed from Google Patents.
Patent US6438664B1 successfully refreshed from Google Patents.
← Back to Patent Explorer
US6438664B1 Expired / Lapsed US ⏱️ 0.0 years remaining

Microcode patch device and method for patching microcode using match registers and patch routines

Assignee: Advanced Micro Devices Inc
•
Filing: 1999-10-27
•
Granted: 2002-08-20
•
Expires: 2019-10-27
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract Random access memory (RAM) may be provided in a processor for implementing microcode patches. The patch RAM may loaded by a microcode routine that is part of the normal microcode contained in a microcode read only memory (ROM) unit of the processor. When the processor powers-up, it uses its internal ROM microcode only if no patches are installed. If patches are installed and a microcode line is accessed for which a patch is enabled, the patch is executed instead of the microcode line. A patch may be enabled by setting a match register with the address of the microcode instruction line in the microcode ROM that is to be patched. Whenever the microcode ROM address matches the contents of a match register, control is transferred to the patch RAM. The patch RAM may have a plurality of fixed entry points each corresponding to a different match register.

Inventors

  • 👤 Kevin J. McGrath
  • 👤 James K. Pickett

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-11-03 20:39
CPC Classifications
G; G06; G06F; G06F9/00; G06F9/06; G06F9/22; G06F9/24

Claims Analysis

Total Claims: 42
Claim 1
Independent Claim 132 words
A microcode patching device comprising: a first memory configured to store a plurality of microcode instruction lines, wherein an address is provided to said first memory, and wherein said first memory is further configured to provide the microcode instruction line indicated by the address to a decode unit; one or more match registers each configured to store a value indicating an address of one of said microcode instruction lines in said first memory; a second memory configured to store one or more microcode patch routines; and a control unit, wherein if the address provided to said first memory matches the value stored in one of said match registers, said control unit causes one of said one or more microcode patch routines from said second memory to be provided to the decode unit.
Claim 2
Dependent Claim 132 words
A microcode patching device comprising: a first memory configured to store a plurality of microcode instruction lines, wherein an address is provided to said first memory, and wherein said first memory is further configured to provide the microcode instruction line indicated by the address to a decode unit; one or more match registers each configured to store a value indicating an address of one of said microcode instruction lines in said first memory; a second memory configured to store one or more microcode patch routines; and a control unit, wherein if the address provided to said first memory matches the value stored in one of said match registers, said control unit causes one of said one or more microcode patch routines from said second memory to be provided to the decode unit.
Claim 3
Dependent Claim 38 words
The device as recited in claim 1 , wherein if the address provided to said first memory matches the value stored in one of said match registers, the microcode instruction line provided by said first memory is canceled.
Claim 4
Dependent Claim 89 words
The device as recited in claim 1 , wherein each one of said one or more match registers indicates a different fixed entry point into said second memory so that whenever the address provided to said first memory matches the value stored in one of said one or more match registers, the control unit causes the microcode patch routine in said second memory located at the fixed entry point as indicated by the one of the match registers having the matching value to be provided to the decode unit.
Claim 5
Dependent Claim 92 words
The device as recited in claim 1 , wherein if the address provided to said first memory matches the value stored in one of said match registers, said first memory provides both the microcode instruction line indicated by said address and a next microcode instruction line to the decode unit before said second memory provides a first line of the microcode patch routine to be provided to the decode unit, wherein the microcode instruction line indicated by said address and the next microcode instruction line provided from said first memory are canceled.
Claim 6
Dependent Claim 21 words
The device as recited in claim 1 , wherein said first and second memories are mapped to the same address space.
Claim 7
Dependent Claim 21 words
The device as recited in claim 5 , wherein said second memory is a contiguously addressed extension of said first memory.
Claim 8
Dependent Claim 17 words
The device as recited in claim 1 , wherein said first memory is a read only memory.
Claim 9
Dependent Claim 17 words
The device as recited in claim 1 , wherein said second memory is a random access memory.
Claim 10
Dependent Claim 31 words
The device as recited in claim 1 , wherein the number of match registers is less than the number of microcode instruction lines that said first memory is configured to store.
Claim 11
Dependent Claim 59 words
The device as recited in claim 1 , further comprising a third memory configured to store said one or more microcode patch routines, wherein said one or more microcode patch routines are loaded from said third memory into said second memory before the address provided to the first memory matches the value stored in one of the match registers.
Claim 12
Dependent Claim 34 words
The device as recited in claim 10 , wherein said first and second memories are comprised within a processor and said third memory is system memory of a computer in which the processor resides.
Claim 13
Dependent Claim 35 words
The device as recited in claim 10 , wherein said first memory stores a microcode patch loader routine for loading the one or more microcode patch routines from said third memory to said second memory.
Claim 14
Dependent Claim 63 words
The device as recited in claim 12 , wherein said microcode patch loader routine is configured to cause one of the microcode patch routines to be provided from said second memory to the decode unit if a flag is set in said third memory when said microcode patch loader routine loads the microcode patch routines from said third memory to said second memory.
Claim 15
Dependent Claim 55 words
The device as recited in claim 13 , wherein said microcode patch loader routine causes the microcode patch routine to be provided from said second memory to the decode unit if said flag is set, without an address being provided to said first memory that matches the value stored in one of the match registers.
Claim 16
Dependent Claim 19 words
The device as recited in claim 1 , wherein each microcode instruction line comprises a plurality of microcode instructions.
Claim 17
Independent Claim 90 words
A method for patching microcode in a processor, comprising: generating an address to access a microcode memory; comparing the address to values stored in one or more match registers; if the address does not match the value in any of the one or more match registers, the processor executing a microcode instruction line from said microcode memory as indicated by the address; and if the address matches the value in one of the one or more match registers, the processor executing a microcode patch routine stored in a patch memory.
Claim 18
Independent Claim 90 words
A method for patching microcode in a processor, comprising: generating an address to access a microcode memory; comparing the address to values stored in one or more match registers; if the address does not match the value in any of the one or more match registers, the processor executing a microcode instruction line from said microcode memory as indicated by the address; and if the address matches the value in one of the one or more match registers, the processor executing a microcode patch routine stored in a patch memory.
Claim 19
Dependent Claim 71 words
The method as recited in claim 16 , further comprising: dispatching the microcode instruction line from said microcode memory as indicated by the address even if the address matches the value in one of the one or more match registers; and if the address matches the value in one of the one or more match registers, canceling the microcode instruction line dispatched from said microcode memory as indicated by the address.
Claim 20
Dependent Claim 83 words
The method as recited in claim 16 , further comprising: dispatching the microcode instruction line indicated by the address and a next microcode instruction line from said microcode memory even if the address matches the value in one of the one or more match registers; and if the address matches the value in one of the one or more match registers, canceling the microcode instruction line dispatched from said microcode memory as indicated by the address and canceling said next microcode instruction line.
Claim 21
Dependent Claim 70 words
The method as recited in claim 16 , wherein each one of said one or more match registers indicates a different fixed entry point into said patch memory, wherein said executing a microcode patch routine comprises providing to a decode unit the microcode patch routine in said patch memory located at the fixed entry point indicated by the one of the one or more match registers having the matching value.
Claim 22
Dependent Claim 63 words
The method as recited in claim 19 , wherein the one or more fixed entry points in the patch memory indicated by the one or more match registers comprise a vector table, wherein at least one of the one or more fixed entry points include a branch to the rest of a microcode patch routine located in another part of the patch memory.
Claim 23
Dependent Claim 43 words
The method as described in claim 20 , wherein the one or more match registers are a plurality of match registers, and wherein the fixed entry points are located at every other address with a branch delay slot located at the intervening addresses.
Claim 24
Dependent Claim 22 words
The method as recited in claim 16 , wherein said microcode memory and patch memory are mapped to the same address space.
Claim 25
Dependent Claim 21 words
The method as recited in claim 22 , wherein said patch memory is a contiguously addressed extension of said microcode memory.
Claim 26
Dependent Claim 17 words
The method as recited in claim 16 , wherein said microcode memory is a read only memory.
Claim 27
Dependent Claim 17 words
The method as recited in claim 16 , wherein said patch memory is a random access memory.
Claim 28
Dependent Claim 31 words
The method as recited in claim 16 , wherein the number of match registers is less than the number of microcode instruction lines that said microcode memory is configured to store.
Claim 29
Dependent Claim 25 words
The method as recited in claim 16 , further comprising loading one or more microcode patch routines from a system memory into said patch memory.
Claim 30
Dependent Claim 21 words
The method as recited in claim 27 , wherein said loading comprises calling a patch loader routine in said microcode memory.
Claim 31
Independent Claim 55 words
The method as recited in 28 , further comprising upon completion of loading said one or more microcode patch routines, said patch loader routine checking if a flag was set in said system memory, and branching to one of the one or more microcode patch routines located at a fixed location in said patch memory.
Claim 32
Independent Claim 55 words
The method as recited in 28 , further comprising upon completion of loading said one or more microcode patch routines, said patch loader routine checking if a flag was set in said system memory, and branching to one of the one or more microcode patch routines located at a fixed location in said patch memory.
Claim 33
Dependent Claim 38 words
The method as recited in claim 27 , wherein said loading comprises loading at least one microcode patch routine into said patch memory at a fixed address that corresponds to one of said one or more match registers.
Claim 34
Dependent Claim 36 words
The method as recited in claim 27 , wherein said loading comprises reading a microcode patch header stored in the system memory, wherein said microcode patch header indicates values for said one or more match registers.
Claim 35
Dependent Claim 43 words
The method as recited in claim 31 , further comprising indicating in said microcode patch header a value for one of said one or more match registers that indicates an address of said microcode memory containing a microcode instruction line to be patched.
Claim 36
Dependent Claim 37 words
The method as recited in claim 31 , further comprising indicating in said microcode patch header a value for one of said one or more match registers that will not match any address of said microcode memory.
Claim 37
Dependent Claim 200 words
A processor comprising: a microcode memory configured to store a plurality of microcode instruction lines, wherein an address is provided to said microcode memory, and wherein said microcode memory is further configured to provide the microcode instruction line indicated by the address to be executed; a patch memory configured to store one or more microcode patch routines, wherein each microcode patch routine is located in said patch memory at a fixed entry point, wherein each fixed entry point corresponds to a different address of said microcode memory to be patched; and a control unit configured to determine if said address provided to said microcode memory is for a microcode instruction line in said microcode memory that is to be patched, wherein if said address provided to said microcode memory is for a microcode instruction line in said microcode memory that is to be patched, said control unit causes the one of said one or more microcode patch routines from said patch memory located at the fixed entry point corresponding to the address provided to said microcode memory to be executed instead of the microcode instruction line in said microcode memory as indicated by the address provided to said microcode memory.
Claim 38
Dependent Claim 200 words
A processor comprising: a microcode memory configured to store a plurality of microcode instruction lines, wherein an address is provided to said microcode memory, and wherein said microcode memory is further configured to provide the microcode instruction line indicated by the address to be executed; a patch memory configured to store one or more microcode patch routines, wherein each microcode patch routine is located in said patch memory at a fixed entry point, wherein each fixed entry point corresponds to a different address of said microcode memory to be patched; and a control unit configured to determine if said address provided to said microcode memory is for a microcode instruction line in said microcode memory that is to be patched, wherein if said address provided to said microcode memory is for a microcode instruction line in said microcode memory that is to be patched, said control unit causes the one of said one or more microcode patch routines from said patch memory located at the fixed entry point corresponding to the address provided to said microcode memory to be executed instead of the microcode instruction line in said microcode memory as indicated by the address provided to said microcode memory.
Claim 39
Dependent Claim 55 words
The processor as recited in claim 34 , wherein said control unit is further configured to cancel both the addressed microcode instruction line from said microcode memory and a branch delay line if the address provided to said microcode memory is for a microcode instruction line in said microcode memory that is to be patched.
Claim 40
Dependent Claim 84 words
The processor as recited in claim 34 , further comprising one or more match registers, wherein each match register is configured to store a value indicating an address of one of the microcode instruction lines in said microcode memory, wherein said control unit determines if the address provided to the microcode memory is for a microcode instruction line in said microcode memory that is to be patched by comparing the address provided to the microcode memory to the values stored in the match registers.
Claim 41
Dependent Claim 52 words
The processor as recited in claim 34 , wherein said patch memory is further configured to store an initialization routine at a fixed location, wherein said initialization routine is configured to be executed after said one or more microcode patch routines are loaded in said patch memory if a flag is set.
Claim 42
Dependent Claim 48 words
The processor as recited in claim 34 , wherein said patch memory is mapped in the same address range as said microcode memory, wherein branch microinstructions branching from said patch memory to said microcode memory may be executed with no more delay than branches within said microcode memory.

References Cited (Backward Citations)

GB459232A Cited
US4044338A Cited
US4028684A Cited
US4028678A Cited
US4028683A Cited
US4028679A Cited
US4319079A Cited
US4482953A Cited
US4453212A Cited
US4400798A Cited
US4577319A Cited
US4542453A Cited
US4928223A Cited
US4857612A Cited
US4982360A Cited
US4807115A Cited
US4839797A Cited
US4610000A Cited
US4858105A Cited
EP0259095A2 Cited
US4751703A Cited
US4807857A Cited
US5235686A Cited
US4802119A Cited
US5115500A Cited
US5553301A Cited
US5202967A Cited
GB2227584B Cited
EP0381471A2 Cited
US5167026A Cited
US5226126A Cited
US5357627A Cited
US5053949A Cited
US5129067A Cited
US5136697A Cited
JPH0379031A Cited
US5233696A Cited
US5442760A Cited
US5299318A Cited
US5226130A Cited
US5053631A Cited
US5058048A Cited
US5321830A Cited
US5500942A Cited
US5459844A Cited
US5333292A Cited
US5212693A Cited
US5355463A Cited
US5488710A Cited
US5488729A Cited
US5430851A Cited
US5535329A Cited
US5504923A Cited
GB2263985B Cited
GB2263987B Cited
US5394558A Cited
US5619666A Cited
US5371864A Cited
US5295247A Cited
US5509130A Cited
US5454100A Cited
US5425036A Cited
US5379301A Cited
US5367571A Cited
US5440632A Cited
US5337415A Cited
US5664134A Cited
US5394559A Cited
US5481713A Cited
US5790860A Cited
GB2281422B Cited
EP0640916A2 Cited
US5689672A Cited
US5796973A Cited
US5623619A Cited
EP0651320A1 Cited
US5655097A Cited
US5560028A Cited
US5694348A Cited
US5636374A Cited
US5600806A Cited
US5537629A Cited
US5630083A Cited
US5566298A Cited
US5696955A Cited
US5559975A Cited
US5625787A Cited
US5694587A Cited
US5713035A Cited
US5740413A Cited
US5742794A Cited
US5796974A Cited
US5794063A Cited
US5752259A Cited
US5829012A Cited
US5799144A Cited
US5884058A Cited
US6161172A Cited
US5790843A Cited
US5764884A Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 2005-08-19 2006-02-18 2006-08-20 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2009-08-19 2010-02-18 2010-08-20 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2013-08-19 2014-02-18 2014-08-20 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag