US20040064267A1 - Method and apparatus for testing microarchitectural features by using tests written in microcode - Google Patents

Method and apparatus for testing microarchitectural features by using tests written in microcode Download PDF

Info

Publication number
US20040064267A1
US20040064267A1 US10/662,383 US66238303A US2004064267A1 US 20040064267 A1 US20040064267 A1 US 20040064267A1 US 66238303 A US66238303 A US 66238303A US 2004064267 A1 US2004064267 A1 US 2004064267A1
Authority
US
United States
Prior art keywords
microcode
microinstructions
test
computer
reprogrammed
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.)
Abandoned
Application number
US10/662,383
Inventor
Kevin Safford
Patrick Knebel
Russell Brockmann
Karl Brummel
M. A. Fernando
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.)
Individual
Original Assignee
Individual
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 Individual filed Critical Individual
Priority to US10/662,383 priority Critical patent/US20040064267A1/en
Publication of US20040064267A1 publication Critical patent/US20040064267A1/en
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • G06F9/30174Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code

Definitions

  • the technical field is related to mechanisms and methods for testing computer microarchitectures.
  • the preferred method of emulating an instruction set on a microprocessor is to convert each emulated instruction (macroinstructions) into a series of instructions in the native instruction set (microinstructions). These microinstruction sequences are stored in microcode storage.
  • the microprocessor may provide microinstructions that are only available for use by emulation hardware and not to code running in the native mode.
  • test writers prepare sequences of user visible macroinstructions.
  • the emulation hardware translates the macroinstructions into microinstructions that are then executed.
  • the test writer In order to test certain microarchitectural features, the test writer must determine sequences of macroinstructions required to produce a desired sequence of microinstructions.
  • the microinstruction sequences may be difficult (or even impossible) to construct with only macroinstructions. Further, a long sequence of macroinstructions may be required in order to produce the desired operands or machine state, leading to excessively long tests.
  • the apparatus includes means for providing reprogrammed microcode.
  • the means for providing the reprogrammed microcode includes means for reprogramming microcode, and means for storing reprogrammed microcode.
  • the storing means includes microcode related to one or more macroinstructions, and reprogrammed test microcode for testing the computer microarchitecture, where the reprogrammed test microcode includes a sequence of microinstructions executed to test the computer microarchitecture.
  • the apparatus includes means for sequencing the sequence of microinstructions and producing an address for the reprogrammed test microcode.
  • Also disclosed is a method for testing a computer microarchitecture including the steps of reprogramming microcode for storage in a microcode storage, designating a macroinstruction for execution, where the execution initiates a test sequence comprising the reprogrammed microcode, receiving inputs corresponding to entry points and computer state information, and producing an address for the reprogrammed microcode.
  • a computer readable medium having code for conducting a test of a computer microarchitecture.
  • the code implements the steps of mapping a macroinstruction to a particular sequence of microinstructions, replacing the particular sequence of microinstructions with an arbitrary set of microinstructions, wherein the arbitrary set of microinstructions comprises the test, receiving inputs corresponding to one or more of entry points and computer state information, and producing an address for the arbitrary set of microinstructions.
  • FIG. 1 is a block diagram of an embodiment of an apparatus used for testing microarchitectural features
  • FIG. 2 is a logical diagram of a reprogrammable microcode storage
  • FIG. 3 is a logical diagram of the conversion process between macroinstructions and microinstructions.
  • CISC Complex instruction set computer
  • the CISC instructions, or macroinstructions may include one or more instructions of microcode.
  • a test writer must verify that the macroinstructions executed by the microprocessor achieve the desired result.
  • the macroinstructions may include a number of microinstructions, the test writer may not be able to test the effect of each of the microcode instructions or a particular sequence of microinstructions by simply writing a test using the macroinstructions.
  • CISC reduced instruction set computer
  • IA-614 reduced instruction set computer
  • test writer must reverse-engineer the sequence of macroinstructions that gives the desired sequence of microinstructions that is needed to test the microprocessor. This can be very difficult and time-consuming to accomplish. If the designer then changes the microcode in the processor, the test writer may have to revise the test to recapture the original intended behavior. It is also possible that the behaviors that were originally possible in the microprocessor are made impossible by microcode changes or vise versa. By writing tests directly in microcode, the test writer solves both these problems.
  • the designer may be constantly revising the microcode used to emulate the macroinstructions. In doing this, the designer can introduce new sequences of microcode that have never been executed by the microprocessor. This can lead to latent bugs being discovered. By using tests written in microcode, sequences of microcode that are impossible in the normal operation of the microprocessor may be tested. This allows the designers to create a more robust design that will tolerate changes in the microcode sequences used to emulate the macroinstructions.
  • the designer may be constantly revising the basic microcode operating on the microprocessor. The designer must then determine if the changes will introduce errors in the microprocessor's behavior. This task may be eased if the designer can have the microprocessor design tested quickly and accurately. Use of microinstruction sequences can be an effective way to test the new microprocessor designs.
  • FIG. 1 is an overall block diagram of an apparatus for testing a computer microarchitecture using tests written in microcode.
  • a test apparatus 10 includes a macroinstruction to microinstruction mapper 20 .
  • the macroinstruction to microinstruction mapper 20 receives one or more macroinstructions 11 and provides an output 31 to a microinstruction sequencer 30 .
  • the microinstruction sequencer 30 receives inputs corresponding to entry points for different events 33 and state information 32 from the computer microarchitecture or microprocessor to be tested.
  • the microinstruction sequencer 30 outputs a microcode address sequence 35 to a microcode storage 40 , some or all of which is reprogrammable by means known to those skilled in the art.
  • the microinstruction sequencer 30 may be implemented as a state machine to control operation of the reprogrammable microcode storage 40 , and thereby control the sequence of microinstructions that are being executed.
  • the reprogrammable microcode storage 40 stores microcode instructions that may be issued to emulate the particular macroinstruction 11 entered into the macroinstruction to microinstruction mapper 20 .
  • the reprogrammable microcode storage 40 may store a large number of microinstructions.
  • the reprogrammable microcode storage 40 will output one or more microinstructions 41 i to a microinstruction dispatcher 50 .
  • the microinstruction dispatcher 50 sends particular microinstructions 51 i to corresponding execution units 61 i for execution of the microinstructions.
  • the execution units 61 i may be integer execution units, floating point execution units, and branch units, for example.
  • a microcode reprogrammer 70 is used to reprogram microcode in the reprogrammable microcode storage 40 .
  • the microcode reprogrammer 70 may be used to reprogram any microinstruction or microinstruction sequence.
  • the reprogrammed microinstruction sequence which may be any arbitrary sequence of microinstructions, then constitutes the test that is to be run on the computer microarchitecture.
  • the test may be started by issuing a macroinstruction to the macroinstruction to microinstruction mapper 20 .
  • the resulting output 35 from the microinstruction sequencer 30 is used in the reprogrammable microcode storage 40 to execute the reprogrammed microinstruction sequence.
  • FIG. 2 is a logical diagram of the reprogrammable microcode storage 40 .
  • the reprogrammable microcode storage 40 is shown as containing microcode for a number of macroinstructions.
  • the reprogrammable microcode storage 40 includes a microcode sequence for an ADD macroinstruction 42 , a microcode sequence for a DIVIDE macroinstruction 43 , and a microcode sequence for a SUBTRACT macroinstruction 44 .
  • the reprogrammable microcode storage 40 may contain many more of these microcode lines. Which particular microcode lines are read out of the reprogrammable microcode storage 40 may be determined by the output 35 of the microinstruction sequencer 30 shown in FIG. 1.
  • FIG. 3 is a logical diagram showing the relationship between the macroinstruction and its corresponding microinstructions.
  • one particular variant of an ADD macroinstruction 21 includes MEM (memory) and REG (register) operands.
  • MEM memory
  • REG register
  • the ADD macroinstruction 21 maps to one or more microinstructions.
  • the microinstructions include an address generation microinstruction 22 , a load operand from memory microinstruction 23 , an ADD operand 2 to data loaded microinstruction 24 and a store results to memory microinstruction 25 .
  • microinstructions 22 - 25 are actually executed to emulate the ADD macroinstruction 21 .
  • the ADD macroinstruction 21 is intended to add to the data specified in the memory location, the data that is specified in the register, and write the data back to memory into the same memory location.
  • the macroinstruction is read into the macroinstruction to microinstruction mapper 20 , which then produces an entry point to the microinstruction sequencer 30 .
  • the microinstruction sequencer 30 Once the microinstruction sequencer 30 has identified a particular sequence of microinstructions to be executed, the information 35 is fed to the reprogrammable microcode storage 40 and the design test is executed through the microinstruction dispatcher 50 and the execution units 61 i .
  • a test writer may desire to test the microprocessor's response to an ADD macroinstruction by specifying the ADD macroinstruction be executed. Furthermore, the test writer may want to test microprocessor response to the microinstructions in a sequence other than that specified by the particular macroinstruction, may desire to test microprocessor response to a series of the same or similar microinstructions, or may desire to test the microprocessor following design changes or changes to the microcode used to emulate the macroinstruction. For example, the test writer may desire to test microprocessor response to ten address generation microinstructions in sequence. However, the test writer may not be able to accomplish these aims by using or specifying a particular macroinstruction or sequence of macroinstructions.
  • the test writer can specify any sequence of microinstructions to be executed on the microprocessor. For example, if the test writer desires to test the microprocessor by specifying ten address generation microcode instructions executed in sequence, the test writer could use the ADD instruction 21 shown in FIG. 3, stripping out microinstructions 23 - 25 and using only the address generation microinstruction 22 but repeating this operation ten times. The reprogrammable microcode storage 40 could then be reprogrammed with reprogramming hardware 70 with the ten address generation microinstructions 22 and sequenced through the microprocessor to be tested. The test writer would then be easily able to test the microprocessor as it functions in the case of having to execute ten address generation microinstructions in a row.
  • the ability to test a microprocessor or chip using the apparatus 10 shown in FIG. 1 may be implemented as a model operating on a computer workstation. That is, the functions represented by the modules shown in FIG. 1 may be implemented as a functional model that can be used to test the early and subsequent stages of the microprocessor or chip design.
  • the apparatus 10 can be seen to be a model of one or more hardware devices programmed with specific functionality.
  • the apparatus 10 may be a model of a design of an electronic device, and need not be associated with a physical device.
  • the apparatus 10 may perform in the same manner when the apparatus 10 is replaced with any program.
  • the components shown in FIG. 1 may also be included as discrete hardware devices on a microprocessor or chip.
  • the reprogrammable microcode storage 40 may require reprogramming in order to handle changes in test designs.
  • the connections to the macroinstruction sources and other data sources can be hardware or software connections, as appropriate.
  • the other components illustrated in FIG. 1 can be firmware or hardware modules, rather than software modules.
  • the modules or programs (both terms are used interchangeably) in FIG. 1 can be stored or embodied on a computer readable medium in a variety of formats, such as source code or executable code, for example.
  • Computer readable mediums include both storage devices and signals.
  • Exemplary computer readable storage devices include conventional computer system RAM, ROM, EPROM (erasable, programmable ROM), EEPROM (electrically erasable, programmable ROM), and magnetic or optical disks or tapes.
  • Exemplary computer readable signals, whether modulated using a carrier or not, are signals that a computer system hosting or running the apparatus 10 can be configured to access, including signals downloaded through the Internet or other networks.

Abstract

An apparatus, and a corresponding method, are used for testing a computer microarchitecture. The apparatus includes means for providing reprogrammed microcode. The means for providing the reprogrammed microcode includes means for reprogramming microcode, and means for storing reprogrammed microcode. The storing means includes microcode related to one or more macroinstructions, and reprogrammed test microcode for testing the computer microarchitecture, where the reprogrammed test microcode includes a sequence of microinstructions executed to test the computer microarchitecture. Finally, the apparatus includes means for sequencing the sequence of microinstructions and producing an address for the reprogrammed test microcode.

Description

    CROSS REFERENCE TO RELATED APPLICATION(S)
  • This application is a continuation of application Ser. No. 09/496,367, filed Feb. 2, 2003, entitled “Method and Apparatus for Testing Microarchitectural Features By Using Tests Written In Microcode,” now U.S. Pat. No. ______ , which is hereby incorporated by reference.[0001]
  • TECHNICAL FIELD
  • The technical field is related to mechanisms and methods for testing computer microarchitectures. [0002]
  • BACKGROUND
  • The preferred method of emulating an instruction set on a microprocessor is to convert each emulated instruction (macroinstructions) into a series of instructions in the native instruction set (microinstructions). These microinstruction sequences are stored in microcode storage. In addition, the microprocessor may provide microinstructions that are only available for use by emulation hardware and not to code running in the native mode. [0003]
  • With traditional techniques for testing the emulated instruction set, test writers prepare sequences of user visible macroinstructions. The emulation hardware translates the macroinstructions into microinstructions that are then executed. In order to test certain microarchitectural features, the test writer must determine sequences of macroinstructions required to produce a desired sequence of microinstructions. The microinstruction sequences may be difficult (or even impossible) to construct with only macroinstructions. Further, a long sequence of macroinstructions may be required in order to produce the desired operands or machine state, leading to excessively long tests. [0004]
  • SUMMARY
  • What is disclosed is an apparatus for testing a computer microarchitecture. The apparatus includes means for providing reprogrammed microcode. The means for providing the reprogrammed microcode includes means for reprogramming microcode, and means for storing reprogrammed microcode. The storing means includes microcode related to one or more macroinstructions, and reprogrammed test microcode for testing the computer microarchitecture, where the reprogrammed test microcode includes a sequence of microinstructions executed to test the computer microarchitecture. Finally, the apparatus includes means for sequencing the sequence of microinstructions and producing an address for the reprogrammed test microcode. [0005]
  • Also disclosed is a method for testing a computer microarchitecture, including the steps of reprogramming microcode for storage in a microcode storage, designating a macroinstruction for execution, where the execution initiates a test sequence comprising the reprogrammed microcode, receiving inputs corresponding to entry points and computer state information, and producing an address for the reprogrammed microcode. [0006]
  • Finally, what is disclosed is a computer readable medium having code for conducting a test of a computer microarchitecture. The code implements the steps of mapping a macroinstruction to a particular sequence of microinstructions, replacing the particular sequence of microinstructions with an arbitrary set of microinstructions, wherein the arbitrary set of microinstructions comprises the test, receiving inputs corresponding to one or more of entry points and computer state information, and producing an address for the arbitrary set of microinstructions.[0007]
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • The apparatus and method for testing microarchitectural features will be discussed in detail with reference to the following figures, wherein like numerals refer to like features, and wherein: [0008]
  • FIG. 1 is a block diagram of an embodiment of an apparatus used for testing microarchitectural features; [0009]
  • FIG. 2 is a logical diagram of a reprogrammable microcode storage; and [0010]
  • FIG. 3 is a logical diagram of the conversion process between macroinstructions and microinstructions.[0011]
  • DETAILED DESCRIPTION
  • Complex instruction set computer (CISC) architectures can be very powerful in that the CISC architecture allows for complicated and flexible ways of calculating elements such as memory addresses. The CISC instructions, or macroinstructions, may include one or more instructions of microcode. During development of a microprocessor, a test writer must verify that the macroinstructions executed by the microprocessor achieve the desired result. However, because the macroinstructions may include a number of microinstructions, the test writer may not be able to test the effect of each of the microcode instructions or a particular sequence of microinstructions by simply writing a test using the macroinstructions. [0012]
  • The process of writing a proper test sequence and verifying the function of a microprocessor design may be complicated when the microprocessor is designed to execute more than one instruction set. For example, a microprocessor may be designed to execute both CISC (e.g., IA-32) and reduced instruction set computer (RISC) (e.g., IA-64) instructions. In this example, the test writer must ensure that the CISC instructions are correctly emulated with desired sequences of microinstructions. [0013]
  • Furthermore, the test writer must reverse-engineer the sequence of macroinstructions that gives the desired sequence of microinstructions that is needed to test the microprocessor. This can be very difficult and time-consuming to accomplish. If the designer then changes the microcode in the processor, the test writer may have to revise the test to recapture the original intended behavior. It is also possible that the behaviors that were originally possible in the microprocessor are made impossible by microcode changes or vise versa. By writing tests directly in microcode, the test writer solves both these problems. [0014]
  • In addition, during the early design stages of a microprocessor, the designer may be constantly revising the microcode used to emulate the macroinstructions. In doing this, the designer can introduce new sequences of microcode that have never been executed by the microprocessor. This can lead to latent bugs being discovered. By using tests written in microcode, sequences of microcode that are impossible in the normal operation of the microprocessor may be tested. This allows the designers to create a more robust design that will tolerate changes in the microcode sequences used to emulate the macroinstructions. [0015]
  • Finally, other hardware control structures on the chip can change during the design stages of a microprocessor. The designer must then determine if the changes will introduce errors in the microprocessor's behavior. This task may be eased if the designer can have the microprocessor design tested quickly and accurately. Use of microinstruction sequences can be an efficient way to test the new microprocessor designs. [0016]
  • Furthermore, during the early design stages of a microprocessor, the designer may be constantly revising the basic microcode operating on the microprocessor. The designer must then determine if the changes will introduce errors in the microprocessor's behavior. This task may be eased if the designer can have the microprocessor design tested quickly and accurately. Use of microinstruction sequences can be an effective way to test the new microprocessor designs. [0017]
  • FIG. 1 is an overall block diagram of an apparatus for testing a computer microarchitecture using tests written in microcode. A [0018] test apparatus 10 includes a macroinstruction to microinstruction mapper 20. The macroinstruction to microinstruction mapper 20 receives one or more macroinstructions 11 and provides an output 31 to a microinstruction sequencer 30. The microinstruction sequencer 30 receives inputs corresponding to entry points for different events 33 and state information 32 from the computer microarchitecture or microprocessor to be tested. The microinstruction sequencer 30 outputs a microcode address sequence 35 to a microcode storage 40, some or all of which is reprogrammable by means known to those skilled in the art.
  • The [0019] microinstruction sequencer 30 may be implemented as a state machine to control operation of the reprogrammable microcode storage 40, and thereby control the sequence of microinstructions that are being executed.
  • The [0020] reprogrammable microcode storage 40 stores microcode instructions that may be issued to emulate the particular macroinstruction 11 entered into the macroinstruction to microinstruction mapper 20. The reprogrammable microcode storage 40 may store a large number of microinstructions. The reprogrammable microcode storage 40 will output one or more microinstructions 41 i to a microinstruction dispatcher 50.
  • The [0021] microinstruction dispatcher 50 sends particular microinstructions 51 i to corresponding execution units 61 i for execution of the microinstructions. The execution units 61 i may be integer execution units, floating point execution units, and branch units, for example.
  • A [0022] microcode reprogrammer 70 is used to reprogram microcode in the reprogrammable microcode storage 40. The microcode reprogrammer 70 may be used to reprogram any microinstruction or microinstruction sequence. The reprogrammed microinstruction sequence, which may be any arbitrary sequence of microinstructions, then constitutes the test that is to be run on the computer microarchitecture.
  • The test may be started by issuing a macroinstruction to the macroinstruction to [0023] microinstruction mapper 20. The resulting output 35 from the microinstruction sequencer 30 is used in the reprogrammable microcode storage 40 to execute the reprogrammed microinstruction sequence.
  • FIG. 2 is a logical diagram of the [0024] reprogrammable microcode storage 40. The reprogrammable microcode storage 40 is shown as containing microcode for a number of macroinstructions. For example, the reprogrammable microcode storage 40 includes a microcode sequence for an ADD macroinstruction 42, a microcode sequence for a DIVIDE macroinstruction 43, and a microcode sequence for a SUBTRACT macroinstruction 44. As noted before, the reprogrammable microcode storage 40 may contain many more of these microcode lines. Which particular microcode lines are read out of the reprogrammable microcode storage 40 may be determined by the output 35 of the microinstruction sequencer 30 shown in FIG. 1.
  • FIG. 3 is a logical diagram showing the relationship between the macroinstruction and its corresponding microinstructions. In FIG. 3, one particular variant of an [0025] ADD macroinstruction 21 includes MEM (memory) and REG (register) operands. In this case, “memory” means both the operand 1 and destination, and “register” is a second operand or operand 2. The ADD macroinstruction 21 maps to one or more microinstructions. As shown in FIG. 3, the microinstructions include an address generation microinstruction 22, a load operand from memory microinstruction 23, an ADD operand 2 to data loaded microinstruction 24 and a store results to memory microinstruction 25. Thus, the microinstructions 22-25 are actually executed to emulate the ADD macroinstruction 21. The ADD macroinstruction 21 is intended to add to the data specified in the memory location, the data that is specified in the register, and write the data back to memory into the same memory location.
  • Returning to FIG. 1, assuming a test has been written in terms of macroinstructions, such as the [0026] ADD macroinstruction 21, the macroinstruction is read into the macroinstruction to microinstruction mapper 20, which then produces an entry point to the microinstruction sequencer 30. Once the microinstruction sequencer 30 has identified a particular sequence of microinstructions to be executed, the information 35 is fed to the reprogrammable microcode storage 40 and the design test is executed through the microinstruction dispatcher 50 and the execution units 61 i.
  • As can be seen from FIG. 3, a test writer may desire to test the microprocessor's response to an ADD macroinstruction by specifying the ADD macroinstruction be executed. Furthermore, the test writer may want to test microprocessor response to the microinstructions in a sequence other than that specified by the particular macroinstruction, may desire to test microprocessor response to a series of the same or similar microinstructions, or may desire to test the microprocessor following design changes or changes to the microcode used to emulate the macroinstruction. For example, the test writer may desire to test microprocessor response to ten address generation microinstructions in sequence. However, the test writer may not be able to accomplish these aims by using or specifying a particular macroinstruction or sequence of macroinstructions. [0027]
  • Using the [0028] apparatus 10 shown in FIG. 1, the test writer can specify any sequence of microinstructions to be executed on the microprocessor. For example, if the test writer desires to test the microprocessor by specifying ten address generation microcode instructions executed in sequence, the test writer could use the ADD instruction 21 shown in FIG. 3, stripping out microinstructions 23-25 and using only the address generation microinstruction 22 but repeating this operation ten times. The reprogrammable microcode storage 40 could then be reprogrammed with reprogramming hardware 70 with the ten address generation microinstructions 22 and sequenced through the microprocessor to be tested. The test writer would then be easily able to test the microprocessor as it functions in the case of having to execute ten address generation microinstructions in a row.
  • The ability to test a microprocessor or chip using the [0029] apparatus 10 shown in FIG. 1 may be implemented as a model operating on a computer workstation. That is, the functions represented by the modules shown in FIG. 1 may be implemented as a functional model that can be used to test the early and subsequent stages of the microprocessor or chip design. Specifically, the apparatus 10 can be seen to be a model of one or more hardware devices programmed with specific functionality. Thus, the apparatus 10 may be a model of a design of an electronic device, and need not be associated with a physical device. The apparatus 10 may perform in the same manner when the apparatus 10 is replaced with any program.
  • However, the components shown in FIG. 1 may also be included as discrete hardware devices on a microprocessor or chip. In this case, the [0030] reprogrammable microcode storage 40 may require reprogramming in order to handle changes in test designs.
  • Furthermore, in the case where the [0031] apparatus 10 is a firmware or hardware program embodied on a physical device, the connections to the macroinstruction sources and other data sources can be hardware or software connections, as appropriate. Along the same lines of generality, the other components illustrated in FIG. 1 can be firmware or hardware modules, rather than software modules.
  • If implemented as a software model, the modules or programs (both terms are used interchangeably) in FIG. 1 can be stored or embodied on a computer readable medium in a variety of formats, such as source code or executable code, for example. Computer readable mediums include both storage devices and signals. Exemplary computer readable storage devices include conventional computer system RAM, ROM, EPROM (erasable, programmable ROM), EEPROM (electrically erasable, programmable ROM), and magnetic or optical disks or tapes. Exemplary computer readable signals, whether modulated using a carrier or not, are signals that a computer system hosting or running the [0032] apparatus 10 can be configured to access, including signals downloaded through the Internet or other networks.
  • The terms and descriptions used herein are set forth by way of illustration only and are not meant as limitations. Those skilled in the art will recognize that many variations are possible within the spirit and scope of the following claims, and their equivalents, in which all terms are to be understood in their broadest possible sense unless otherwise indicated. [0033]

Claims (14)

In the claims:
1. An apparatus for testing a computer microarchitecture, comprising:
means for providing reprogrammed microcode, comprising:
means for reprogramming microcode;
means for storing reprogrammed microcode, comprising:
microcode related to one or more macroinstructions, and
reprogrammed test microcode for testing the computer microarchitecture, wherein the reprogrammed test microcode comprises a sequence of microinstructions executed to test the computer microarchitecture; and
means for sequencing the sequence of microinstructions and producing an address for the reprogrammed test microcode.
2. The apparatus of claim 1, further comprising:
a dispatcher that receives the sequence of microinstructions and provides outputs; and
execution units that receive the outputs and execute microinstructions.
3. The apparatus of claim 1, wherein the computer microarchitecture supports multiple instruction sets.
4. The apparatus of claim 1, wherein the apparatus is implemented as a software model.
5. The apparatus of claim 4, wherein the software model is implemented on a computer-readable medium.
6. The apparatus of claim 1, wherein the means for sequencing comprises a macroinstruction to microinstruction mapper that maps macroinstructions into sequences of microinstructions.
7. A method for testing a computer microarchitecture, comprising:
reprogramming microcode for storage in a microcode storage;
designating a macroinstruction for execution, wherein the execution initiates a test sequence comprising the reprogrammed microcode;
receiving inputs corresponding to one or more of entry points and computer state information; and
producing an address for the reprogrammed microcode.
8. The method of claim 7, further comprising:
providing the reprogrammed microcode to a dispatcher; and
dispatching the reprogrammed microcode to specified execution units for execution of the microinstruction.
9. The method of claim 7, wherein the computer microarchitecture supports multiple instruction sets.
10. A method for conducting a test of a computer microarchitecture, comprising:
mapping a macroinstruction to a particular sequence of microinstructions;
replacing the particular sequence of microinstructions with an arbitrary set of microinstructions, wherein the arbitrary set of microinstructions comprises the test;
receiving inputs corresponding to one or more of entry points and computer state information; and
producing an address for the arbitrary set of microinstructions.
11. The method of claim 10, wherein the computer microarchitecture supports multiple instruction sets.
12. The method of claim 10, further comprising issuing the macroinstruction to execute the test microinstructions.
13. A computer readable medium comprising code for conducting a test of a computer microarchitecture, the code implementing the steps of:
mapping a macroinstruction to a particular sequence of microinstructions;
replacing the particular sequence of microinstructions with an arbitrary set of microinstructions, wherein the arbitrary set of microinstructions comprises the test;
receiving inputs corresponding to one or more of entry points and computer state information; and
producing an address for the arbitrary set of microinstructions.
14. The computer readable medium of claim 13, wherein the steps further comprise issuing the microinstruction to execute the test microinstructions.
US10/662,383 2000-02-02 2003-09-16 Method and apparatus for testing microarchitectural features by using tests written in microcode Abandoned US20040064267A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US10/662,383 US20040064267A1 (en) 2000-02-02 2003-09-16 Method and apparatus for testing microarchitectural features by using tests written in microcode

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/496,367 US6643800B1 (en) 2000-02-02 2000-02-02 Method and apparatus for testing microarchitectural features by using tests written in microcode
US10/662,383 US20040064267A1 (en) 2000-02-02 2003-09-16 Method and apparatus for testing microarchitectural features by using tests written in microcode

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US09/496,367 Continuation US6643800B1 (en) 2000-02-02 2000-02-02 Method and apparatus for testing microarchitectural features by using tests written in microcode

Publications (1)

Publication Number Publication Date
US20040064267A1 true US20040064267A1 (en) 2004-04-01

Family

ID=23972315

Family Applications (2)

Application Number Title Priority Date Filing Date
US09/496,367 Expired - Lifetime US6643800B1 (en) 2000-02-02 2000-02-02 Method and apparatus for testing microarchitectural features by using tests written in microcode
US10/662,383 Abandoned US20040064267A1 (en) 2000-02-02 2003-09-16 Method and apparatus for testing microarchitectural features by using tests written in microcode

Family Applications Before (1)

Application Number Title Priority Date Filing Date
US09/496,367 Expired - Lifetime US6643800B1 (en) 2000-02-02 2000-02-02 Method and apparatus for testing microarchitectural features by using tests written in microcode

Country Status (2)

Country Link
US (2) US6643800B1 (en)
FR (1) FR2804522B1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060267958A1 (en) * 2005-04-22 2006-11-30 Microsoft Corporation Touch Input Programmatical Interfaces
US20090204950A1 (en) * 2008-02-11 2009-08-13 International Business Machines Corporation Method, system and computer program product for template-based vertical microcode instruction trace generation

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6625759B1 (en) * 2000-02-18 2003-09-23 Hewlett-Packard Development Company, L.P. Method and apparatus for verifying the fine-grained correctness of a behavioral model of a central processor unit
US7162612B2 (en) * 2000-08-16 2007-01-09 Ip-First, Llc Mechanism in a microprocessor for executing native instructions directly from memory
GB2374950B (en) * 2001-04-23 2005-11-16 Imagination Tech Ltd Expanded functionality of processor operations within a fixed width instruction encoding
EP1387253B1 (en) * 2002-07-31 2017-09-20 Texas Instruments Incorporated Dynamic translation and execution of instructions within a processor
EP1489491A1 (en) * 2003-06-19 2004-12-22 Texas Instruments Incorporated Dynamically changing the semantic of an instruction
US7613950B2 (en) * 2004-02-27 2009-11-03 Hewlett-Packard Development Company, L.P. Detecting floating point hardware failures
US7734873B2 (en) * 2007-05-29 2010-06-08 Advanced Micro Devices, Inc. Caching of microcode emulation memory
US9482718B2 (en) * 2014-01-13 2016-11-01 Texas Instruments Incorporated Integrated circuit
US10884751B2 (en) 2018-07-13 2021-01-05 Advanced Micro Devices, Inc. Method and apparatus for virtualizing the micro-op cache

Citations (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4443865A (en) * 1981-10-26 1984-04-17 Allen-Bradley Co. Processor module for a programmable controller
US4641308A (en) * 1984-01-03 1987-02-03 Texas Instruments Incorporated Method of internal self-test of microprocessor using microcode
US4651275A (en) * 1981-07-02 1987-03-17 Texas Instruments Incorporated Microcomputer having read/write memory for combined macrocode and microcode storage
US4677586A (en) * 1985-06-04 1987-06-30 Texas Instruments Incorporated Microcomputer device having test mode substituting external RAM for internal RAM
US4825363A (en) * 1984-12-05 1989-04-25 Honeywell Inc. Apparatus for modifying microinstructions of a microprogrammed processor
US4887203A (en) * 1984-10-15 1989-12-12 Motorola, Inc. Microcoded processor executing microroutines with a user specified starting microaddress
US5133077A (en) * 1987-10-19 1992-07-21 International Business Machines Corporation Data processor having multiple execution units for processing plural classs of instructions in parallel
US5155819A (en) * 1987-11-03 1992-10-13 Lsi Logic Corporation Flexible ASIC microcomputer permitting the modular modification of dedicated functions and macroinstructions
US5212693A (en) * 1990-08-02 1993-05-18 Ibm Corporation Small programmable array to the on-chip control store for microcode correction
US5226149A (en) * 1989-06-01 1993-07-06 Mitsubishi Denki Kabushiki Kaisha Self-testing microprocessor with microinstruction substitution
US5479652A (en) * 1992-04-27 1995-12-26 Intel Corporation Microprocessor with an external command mode for diagnosis and debugging
US5860017A (en) * 1996-06-28 1999-01-12 Intel Corporation Processor and method for speculatively executing instructions from multiple instruction streams indicated by a branch instruction
US5859999A (en) * 1996-10-03 1999-01-12 Idea Corporation System for restoring predicate registers via a mask having at least a single bit corresponding to a plurality of registers
US5909567A (en) * 1997-02-28 1999-06-01 Advanced Micro Devices, Inc. Apparatus and method for native mode processing in a RISC-based CISC processor
US6112312A (en) * 1998-03-10 2000-08-29 Advanced Micro Devices, Inc. Method for generating functional tests for a microprocessor having several operating modes and features

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4482953A (en) * 1980-05-30 1984-11-13 Fairchild Camera & Instrument Corporation Computer with console addressable PLA storing control microcode and microinstructions for self-test of internal registers and ALU
US4471426A (en) * 1981-07-02 1984-09-11 Texas Instruments Incorporated Microcomputer which fetches two sets of microcode bits at one time
US4841434A (en) * 1984-05-11 1989-06-20 Raytheon Company Control sequencer with dual microprogram counters for microdiagnostics
JP2541248B2 (en) * 1987-11-20 1996-10-09 三菱電機株式会社 Programmable logic array
WO1989011128A1 (en) * 1988-05-03 1989-11-16 Wang Laboratories, Inc. Microprocessor having external control store
JPH01320544A (en) * 1988-06-22 1989-12-26 Toshiba Corp Test expedition circuit
US5511211A (en) * 1988-08-31 1996-04-23 Hitachi, Ltd. Method for flexibly developing a data processing system comprising rewriting instructions in non-volatile memory elements after function check indicates failure of required functions
US5072447A (en) * 1989-11-08 1991-12-10 National Semiconductor Corporation Pattern injector
JPH0682325B2 (en) * 1990-05-29 1994-10-19 株式会社東芝 Testability circuit for information processing equipment
US5276863A (en) * 1991-06-28 1994-01-04 Digital Equipment Corporation Computer system console
JPH05233352A (en) * 1992-02-19 1993-09-10 Nec Corp Microprocessor
US5748981A (en) * 1992-10-20 1998-05-05 National Semiconductor Corporation Microcontroller with in-circuit user programmable microcode
US5481684A (en) * 1994-01-11 1996-01-02 Exponential Technology, Inc. Emulating operating system calls in an alternate instruction set using a modified code segment descriptor
US5687350A (en) * 1995-02-10 1997-11-11 International Business Machines Corporation Protocol and system for performing line-fill address during copy-back operation
US5572666A (en) * 1995-03-28 1996-11-05 Sun Microsystems, Inc. System and method for generating pseudo-random instructions for design verification
US5864660A (en) * 1996-03-12 1999-01-26 Electronic Data Systems Corporation Testing the integration of a plurality of elements in a computer system using a plurality of tests codes, each corresponding to an alternate product configuration for an associated element
US6199152B1 (en) * 1996-08-22 2001-03-06 Transmeta Corporation Translated memory protection apparatus for an advanced microprocessor
AU7693198A (en) * 1997-06-04 1998-12-21 Richard Rubinstein Processor interfacing to memory-centric computing engine
US6088690A (en) * 1997-06-27 2000-07-11 Microsoft Method and apparatus for adaptively solving sequential problems in a target system utilizing evolutionary computation techniques
US6230290B1 (en) * 1997-07-02 2001-05-08 International Business Machines Corporation Method of self programmed built in self test
US6385740B1 (en) * 1998-08-21 2002-05-07 Advanced Micro Devices, Inc. Method to dynamically change microprocessor test software to reflect different silicon revision levels
US6263429B1 (en) * 1998-09-30 2001-07-17 Conexant Systems, Inc. Dynamic microcode for embedded processors
US6571359B1 (en) * 1999-12-13 2003-05-27 Intel Corporation Systems and methods for testing processors
US6542981B1 (en) * 1999-12-28 2003-04-01 Intel Corporation Microcode upgrade and special function support by executing RISC instruction to invoke resident microcode

Patent Citations (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4651275A (en) * 1981-07-02 1987-03-17 Texas Instruments Incorporated Microcomputer having read/write memory for combined macrocode and microcode storage
US4443865A (en) * 1981-10-26 1984-04-17 Allen-Bradley Co. Processor module for a programmable controller
US4641308A (en) * 1984-01-03 1987-02-03 Texas Instruments Incorporated Method of internal self-test of microprocessor using microcode
US4887203A (en) * 1984-10-15 1989-12-12 Motorola, Inc. Microcoded processor executing microroutines with a user specified starting microaddress
US4825363A (en) * 1984-12-05 1989-04-25 Honeywell Inc. Apparatus for modifying microinstructions of a microprogrammed processor
US4677586A (en) * 1985-06-04 1987-06-30 Texas Instruments Incorporated Microcomputer device having test mode substituting external RAM for internal RAM
US5133077A (en) * 1987-10-19 1992-07-21 International Business Machines Corporation Data processor having multiple execution units for processing plural classs of instructions in parallel
US5155819A (en) * 1987-11-03 1992-10-13 Lsi Logic Corporation Flexible ASIC microcomputer permitting the modular modification of dedicated functions and macroinstructions
US5226149A (en) * 1989-06-01 1993-07-06 Mitsubishi Denki Kabushiki Kaisha Self-testing microprocessor with microinstruction substitution
US5212693A (en) * 1990-08-02 1993-05-18 Ibm Corporation Small programmable array to the on-chip control store for microcode correction
US5479652A (en) * 1992-04-27 1995-12-26 Intel Corporation Microprocessor with an external command mode for diagnosis and debugging
US5479652B1 (en) * 1992-04-27 2000-05-02 Intel Corp Microprocessor with an external command mode for diagnosis and debugging
US5860017A (en) * 1996-06-28 1999-01-12 Intel Corporation Processor and method for speculatively executing instructions from multiple instruction streams indicated by a branch instruction
US5859999A (en) * 1996-10-03 1999-01-12 Idea Corporation System for restoring predicate registers via a mask having at least a single bit corresponding to a plurality of registers
US5909567A (en) * 1997-02-28 1999-06-01 Advanced Micro Devices, Inc. Apparatus and method for native mode processing in a RISC-based CISC processor
US6112312A (en) * 1998-03-10 2000-08-29 Advanced Micro Devices, Inc. Method for generating functional tests for a microprocessor having several operating modes and features

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060267958A1 (en) * 2005-04-22 2006-11-30 Microsoft Corporation Touch Input Programmatical Interfaces
US20090204950A1 (en) * 2008-02-11 2009-08-13 International Business Machines Corporation Method, system and computer program product for template-based vertical microcode instruction trace generation
US8423968B2 (en) * 2008-02-11 2013-04-16 International Business Machines Corporation Template-based vertical microcode instruction trace generation

Also Published As

Publication number Publication date
FR2804522B1 (en) 2005-05-06
US6643800B1 (en) 2003-11-04
FR2804522A1 (en) 2001-08-03

Similar Documents

Publication Publication Date Title
EP0453394A2 (en) Dynamic process for the generation of biased pseudo-random test patterns for the functional verification of hardware designs
US6643800B1 (en) Method and apparatus for testing microarchitectural features by using tests written in microcode
Lacamera Embedded Systems Architecture: Explore architectural concepts, pragmatic design patterns, and best practices to produce robust systems
US6834359B2 (en) Method and system for testing a processor
US5742801A (en) Microprocessor to which additional instructions are added and instructions addition method thereof
Davidson High level microprogramming: current usage, future prospects
Lipovski Introduction to microcontrollers: architecture, programming, and interfacing for the Freescale 68HC12
CN115421860B (en) General SPARC processor instruction set virtualization simulation method
Campbell et al. Microprogramming the SPECTRA 70/35
Duke et al. System validation by three-level modeling synthesis
Giloi et al. Firmware engineering: methods and tools for firmware specification and design
US20070150873A1 (en) Dynamic host code generation from architecture description for fast simulation
JP3270729B2 (en) Extended instruction set simulator
Berndt Microprogramming with statements of higher-level languages
Vij et al. DeVIce DrIVer SynTheSIS
Davidson Progress im High-Level Microprogramming
Meier Rapid prototyping of a RISC architecture for implementation in FPGAs
Davidson et al. Testing of microprograms using the lockheed SUE microinstruction simulator
Mezzalama et al. Microprogram simulation using a structured microcode model
CN114357917A (en) Simulation method, device and simulation system for processor pipeline
Mathur MICROSIM: A microinstruction simulator for teaching microprogramming and emulation
McKeeman A simple computer
CN117407301A (en) Program debugging method, verification method, system, computer equipment and storage medium of FPGA soft core
Karlgaard The Heuristic Tuning of virtual Architectures for Global System Optimization
Heath et al. Development of a test environment for pre-and post-synthesis verification of correct VHDL description of core processor systems

Legal Events

Date Code Title Description
STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION