WO1995028672A1 - Apparatus and method for updating information in a writable microcode control store - Google Patents

Apparatus and method for updating information in a writable microcode control store Download PDF

Info

Publication number
WO1995028672A1
WO1995028672A1 PCT/US1995/004310 US9504310W WO9528672A1 WO 1995028672 A1 WO1995028672 A1 WO 1995028672A1 US 9504310 W US9504310 W US 9504310W WO 9528672 A1 WO9528672 A1 WO 9528672A1
Authority
WO
WIPO (PCT)
Prior art keywords
information
port
memory
instruction
address
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.)
Ceased
Application number
PCT/US1995/004310
Other languages
French (fr)
Inventor
James Timothy Christopher Kaba
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.)
Sarnoff Corp
Original Assignee
David Sarnoff Research Center Inc
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 David Sarnoff Research Center Inc filed Critical David Sarnoff Research Center Inc
Priority to CA002186862A priority Critical patent/CA2186862C/en
Priority to JP7527015A priority patent/JPH09512119A/en
Priority to EP95916239A priority patent/EP0755538B1/en
Priority to DE69528824T priority patent/DE69528824T2/en
Publication of WO1995028672A1 publication Critical patent/WO1995028672A1/en
Anticipated expiration legal-status Critical
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/22Microcontrol or microprogram arrangements
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3812Instruction prefetching with instruction modification, e.g. store into instruction stream
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/656Updates while running
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks

Definitions

  • the invention relates to microcode instruction execution within a computer, and, more particularly, to apparatus and a method for updating information contained in a microcode instruction without interrupting program execution by the computer.
  • a computer program consists of a series of microcode instructions.
  • Each microcode instruction typically contains an operational code field (OPcode field) and a data field.
  • the OPcode field specifies a particular operation for the computer to perform.
  • the data field contains either actual data upon which the instruction will operate or an address in main memory where such data is stored. In the second instance, the address points to a particular data byte which is then used (operated upon) by the instruction.
  • this data is known in the art as the "operand" of the OPcode.
  • the data field contains the actual data to be operated upon by the OPcode.
  • program execution is typically interrupted until the new data is stored within an appropriate data field within memory.
  • interrupt routine is accomplished by a so-called interrupt routine.
  • ALU Arithmetic Logic Unit
  • the value of the constant C i.e., the data field value
  • program execution is halted until an instruction updating the constant value is issued by the computer, i.e., an interrupt routine updates the constant value while the main program awaits completion of the update.
  • an interrupt routine updates the constant value while the main program awaits completion of the update.
  • the data field is updated with a new value.
  • Such an update typically requires one or more clock cycles to accomplish.
  • main program execution is resumed.
  • Such delay in program execution adversely effects the execution speed of the computer.
  • main program execution delay is especially detrimental to computers that provide real-time processing. Therefore, a need exists in the art for apparatus and a method that updates the data field information without interrupting main program execution.
  • the invention overcomes the disadvantages associated with the prior art by enabling program information, e.g., a data field value within a microcode instruction, to be updated without interrupting main program execution.
  • program information e.g., a data field value within a microcode instruction
  • the invention is apparatus and a method that updates information that a currently executing program is using.
  • the information temporarily stored in a memory unit, can be updated and read from that same memory unit within a single clock cycle. As such, the information update is timed to occur between the program instructions being periodically recalled from the memory unit for execution by a processing unit.
  • the invention contains: a program memory unit for storing a microcode instruction at an address therein; circuitry for periodically accessing the instruction for execution by a processing unit; and circuitry for selectively altering program information within the microcode instruction stored in the memory unit.
  • the alteration of the program information occurs between periodic accesses to the program memory that occur during program execution. As such, the program information can be updated without interrupting program execution.
  • FIG. 1 depicts a block diagram of a preferred embodiment of the present invention
  • FIG. 2 depicts a flow chart of a data field update routine
  • FIG. 3 depicts a timing diagram of signals used to read and write data to a dual-port memory unit.
  • FIG. 1 depicts a block diagram of the present invention as it would be implemented within a conventional computer.
  • the preferred embodiment of the invention 100 contains a host interface 102, a program counter (PC) 104, multiplexer (MUX) 106, OR gate 110 and a program memory 108.
  • PC program counter
  • MUX multiplexer
  • OR gate 110 As part of a computer containing the invention, but not forming a portion of the present invention, is a conventional processing unit 112 that executes a program stored in the program memory 108.
  • the host interface 102 forms an interface between the computer containing the invention and a user or programmer.
  • the host interface is a computer terminal, microcomputer, computer workstation and the like. In response to a programmer's actions, the host interface generates a computer program.
  • the program contains a series of instructions wherein each instruction contains an operational code (OPcode) field and a data field.
  • OPcode operational code
  • the contents of the data field forms an operand for the OPcode.
  • a programmer can write a program and store the instructions, as well as initial data operands, within the program memory 108.
  • the program counter (PC) 104 supplies, in a conventional manner, an appropriate instruction address sequence to the program memory 108. As such, the program counter 104 sequentially recalls the program instructions and their associated data for execution by the processing unit 110.
  • the program memory 108 contains two random access memory (RAM) units 114 and 116.
  • the first RAM 114 is a conventional single-port memory unit in which one port ("R/W addr" port) is used for both specifying a read address and a write address from/to which OPcodes are sequentially read written.
  • the second RAM 116 is a dual-port memory unit in which separate ports are used to specify the read and write addresses from/to which data field information is read/written. Specifically, the "R addr" port is used to specify the read address and the "W addr" port is used to specify the write address. Consequently, two addresses can be supplied to the second RAM 116 within a single clock cycle.
  • data can both be read and written to a single address within the memory unit 116.
  • the data field is periodically read for use by the processing unit 110, while the data field information is updated between read operations. Consequently, data field information can be updated without interrupting the execution of the program to await the data update.
  • both the OPcode field and the data field of the microcode instruction are written simultaneously. Furthermore, when the program is executing, both the OPcode field and the data field within each microcode instruction are read simultaneously from the program memory, concatenated, and routed, via instruction data bus 132, to the processing unit 112 for execution. As is well known in the art, the OPcode field and the data field form two portions of an instruction word that the processing unit subsequently executes.
  • the data field information can be updated with new data at an address specified by the host interface without interrupting execution of the program, i.e., the update occurs between program counter read address generations. Such a data field update is made possible by using the dual-port RAM as the data field memory unit 116.
  • the host interface 102 writes a 144-bit wide instruction word containing both an OPcode field value (128-bits) and an initial data field value (16-bits) to the host instruction data bus 128;
  • the host interface 102 then writes an 18-bit instruction address to the host instruction address bus 122 to indicate the address at which the data field value and the OPcode field value are to be written within their respective memories 114 and 116;
  • the host interface asserts the host instruction write enable line 124 to complete the write operation.
  • Assertion of the host instruction write enable line 124 routes the value of the host instruction address bus 122 through the multiplexer 106 to the "R W addr" port of the single-port OPcode field memory unit 114. Furthermore, upon assertion of the write enable line, the value of the OPcode field on the host instruction data bus 128 is written into memory 114. Similarly, the value of the host instruction address bus 122 is also available to the "W addr" port of the dual-port data field memory unit 116. Assertion of the host instruction write enable line 124, through OR gate 110, latches the data field value on the host instruction data bus 128 through the data input (Dl) port into the data field memory unit 116.
  • the program counter 104 supplies, via the multiplexer 106, each address of the instruction (both OPcode and data) to be executed by the processing unit 112.
  • the multiplexer 106 is set such that the instruction address supplied by the program counter 104 is available to the "R/W addr" port of the OPcode field memory unit 114 and to the "R addr" port of the data field memory unit 116.
  • the microcode instruction (OPcode and data fields) at the specified address is written to the instruction data bus 132 through the data output (DO) port of the OPcode field memory unit 114 and the DO port of the data field memory unit 116.
  • DO data output
  • the program counter 104 issues a sequence of instruction addresses which sequentially recall instructions to be executed by the processing unit 112.
  • FIG. 2 depicts a flow chart of a routine 200 executed by the host interface to update the contents of a particular data field.
  • a routine 200 can be implemented in either hardware or software.
  • the data field update routine 200 is generally entered at step 202, labeled START. Subsequently, at step 204, the routine writes the new data field value onto the host instruction data bus. The routine then writes, at step 206, the address of the data field to be updated onto the host instruction address bus. At step 208, the routine asserts the data field write enable line to effectuate writing the new data field value into the data field memory unit at the specified address. The routine stops at step 210. This entire process occurs between memory accesses used to read the data field value for use in program execution.
  • the memory unit 116 can write information at a different time within a system clock cycle (line 120) than it reads information. Specifically, as shown in the timing diagram of FIG. 3, input data is written to the dual-port memory unit at the beginning of a system clock cycle and output data is available to be read from the memory unit at the end of a system clock cycle. As such, a program is executed by reading data field information from the dual-port memory unit once per clock cycle, i.e., at the end of a clock cycle. However, in accordance with the invention, that information can be updated at the beginning of a clock cycle without the periodic information access process being affected, i.e., without affecting program execution. As shown in FIG.
  • data A is applied to the data input (Dl) port of the memory unit while the address to which that data is to be written is applied to the "W addr" port of the memory unit.
  • the host interface asserts the data field write enable hne (write enable signal in FIG. 3) and the data is written to the designated write address location within the memory unit.
  • a read address is applied to the "R addr" port of the dual-port memory unit.
  • the read address can be, but is not necessarily, the same address as the write address used to store data A.
  • the data (data A) is read from the memory address presently applied to the "R addr" port, i.e., data A is read during the same clock cycle that the data is written to memory.
  • This data is latched in a buffer register within the memory unit and then sent as an output of the data output (DO) port upon occurrence of the next clock cycle.
  • DO data output
  • the data at any location within the memory unit can be written and read within a single clock cycle.
  • data B can be updated and read from the memory unit. Subsequently, data within the memory unit can be updated with each new clock cycle.
  • data e.g., data B, C, D, E, and so on
  • data B, C, D, E, and so on can be selectively updated at particular addresses within the memory unit without interrupting the periodic data accesses at the end of each clock cycle, i.e., without interrupting program execution.
  • information in a data field is updated and, within a single clock cycle, that updated data is read from the memory unit.
  • the information at a specific memory location may be updated between periodic accesses to the memory unit, although that updated data might not be accessed until some time later during the program execution.
  • the invention updates the data without interrupting program execution, i.e., the update is performed between the periodic accesses to memory unit. Consequently, in accordance with the invention, the data field information of a microcode instruction is updated without interrupting program execution.
  • FIG. 3 provides a general indication of the relative timing of the various signals that control the dual-port memory.
  • these signals are intended for illustrative purposes only. Therefore, to implement the invention, the reader should consult the device specification for the specific dual-port memory that will be used to implement the invention.
  • An illustrative dual-port memory unit capable of performing the functions necessary to implement the present invention is model CY7C130/CY7C131 manufactured by Cypress Semiconductor of San Jose, California.
  • the data field has been discussed as if it contained an actual data value. Alternatively, the data field may contain an address within main memory or an address of a specific register within the computer that contains the actual data value. As such, the data field update would alter this address information at which the new data can be found rather than update the data value itself.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Executing Machine-Instructions (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Stored Programmes (AREA)

Abstract

In a computer for executing a computer program, apparatus and a method for updating information within a computer program instruction without interrupting execution of the computer program. The apparatus contains a memory (108) for storing the information within the instruction at an address within the memory (108), circuitry (102, 106, 110) for altering, between periodic accesses to the memory (108) by the accessing circuitry, the information stored in the memory (108). In this manner, computer program execution is not interrupted to alter information within the instruction. Typically, the information is a data field value contained within a computer microcode instruction. Consequently, the data field value is updated, but other information within the instruction such as an operational code (OPcode), is not altered by the updated operation.

Description

APPARATUS AND METHOD FOR UPDATING INFORMATION IN A WRITABLE MICROCODE CONTROL STORE
The invention relates to microcode instruction execution within a computer, and, more particularly, to apparatus and a method for updating information contained in a microcode instruction without interrupting program execution by the computer.
Generally, a computer program consists of a series of microcode instructions. Each microcode instruction typically contains an operational code field (OPcode field) and a data field. The OPcode field specifies a particular operation for the computer to perform. The data field contains either actual data upon which the instruction will operate or an address in main memory where such data is stored. In the second instance, the address points to a particular data byte which is then used (operated upon) by the instruction. Generally, this data is known in the art as the "operand" of the OPcode. For simplicity, the following discussion assumes the data field contains the actual data to be operated upon by the OPcode.
If a program requires that the data within a data field be altered during program execution, program execution is typically interrupted until the new data is stored within an appropriate data field within memory. Typically, such a data update process is accomplished by a so-called interrupt routine.
For example, consider a program that repetitively executes an instruction that adds a variable to a constant, e.g., a function having the form Y=X+C, where X and Y are variables and C is a constant. The instruction for this operation contains an OPcode specifying that an addition function is to be accomplished and a data field containing the constant C. In particular, the data field is used to supply the constant C as an input to an Arithmetic Logic Unit (ALU) that accomplishes the calculation, e.g., an addition function.
If the value of the constant C, i.e., the data field value, is to be altered during execution of the program, program execution is halted until an instruction updating the constant value is issued by the computer, i.e., an interrupt routine updates the constant value while the main program awaits completion of the update. Upon execution of such an interrupt routine, the data field is updated with a new value. Such an update typically requires one or more clock cycles to accomplish. After the update is completed, main program execution is resumed. Such delay in program execution adversely effects the execution speed of the computer. Moreover, such main program execution delay is especially detrimental to computers that provide real-time processing. Therefore, a need exists in the art for apparatus and a method that updates the data field information without interrupting main program execution.
The invention overcomes the disadvantages associated with the prior art by enabling program information, e.g., a data field value within a microcode instruction, to be updated without interrupting main program execution. Specifically, the invention is apparatus and a method that updates information that a currently executing program is using. The information, temporarily stored in a memory unit, can be updated and read from that same memory unit within a single clock cycle. As such, the information update is timed to occur between the program instructions being periodically recalled from the memory unit for execution by a processing unit.
The invention contains: a program memory unit for storing a microcode instruction at an address therein; circuitry for periodically accessing the instruction for execution by a processing unit; and circuitry for selectively altering program information within the microcode instruction stored in the memory unit. The alteration of the program information occurs between periodic accesses to the program memory that occur during program execution. As such, the program information can be updated without interrupting program execution. The teachings of the present invention can be readily understood by considering the following detailed description in conjunction with the accompanying Drawing, in which:
FIG. 1 depicts a block diagram of a preferred embodiment of the present invention; FIG. 2 depicts a flow chart of a data field update routine; and
FIG. 3 depicts a timing diagram of signals used to read and write data to a dual-port memory unit.
To facilitate understanding, identical reference numerals have been used, where possible, to designate identical elements that are common to the figures.
After considering the following description, those skilled in the art will clearly realize that the teachings of the invention can be readily utilized in a computer that requires information within a microcode instruction to be updated without interrupting execution of the program using the information. Specifically, computers that will gain the most from utilizing the present invention are those that accomplish real-time processing.
FIG. 1 depicts a block diagram of the present invention as it would be implemented within a conventional computer. The preferred embodiment of the invention 100 contains a host interface 102, a program counter (PC) 104, multiplexer (MUX) 106, OR gate 110 and a program memory 108. As part of a computer containing the invention, but not forming a portion of the present invention, is a conventional processing unit 112 that executes a program stored in the program memory 108. The host interface 102 forms an interface between the computer containing the invention and a user or programmer. Typically, the host interface is a computer terminal, microcomputer, computer workstation and the like. In response to a programmer's actions, the host interface generates a computer program. Specifically, the program contains a series of instructions wherein each instruction contains an operational code (OPcode) field and a data field. Upon execution of a given instruction, the contents of the data field forms an operand for the OPcode. As such, via the host interface, a programmer can write a program and store the instructions, as well as initial data operands, within the program memory 108. Upon program execution, the program counter (PC) 104 supplies, in a conventional manner, an appropriate instruction address sequence to the program memory 108. As such, the program counter 104 sequentially recalls the program instructions and their associated data for execution by the processing unit 110.
The program memory 108 contains two random access memory (RAM) units 114 and 116. The first RAM 114 is a conventional single-port memory unit in which one port ("R/W addr" port) is used for both specifying a read address and a write address from/to which OPcodes are sequentially read written. The second RAM 116 is a dual-port memory unit in which separate ports are used to specify the read and write addresses from/to which data field information is read/written. Specifically, the "R addr" port is used to specify the read address and the "W addr" port is used to specify the write address. Consequently, two addresses can be supplied to the second RAM 116 within a single clock cycle. As such, within that single clock cycle, data can both be read and written to a single address within the memory unit 116. In operation, the data field is periodically read for use by the processing unit 110, while the data field information is updated between read operations. Consequently, data field information can be updated without interrupting the execution of the program to await the data update.
When microcode instructions of a given program are written into the program memory 108 via the host interface 102, both the OPcode field and the data field of the microcode instruction are written simultaneously. Furthermore, when the program is executing, both the OPcode field and the data field within each microcode instruction are read simultaneously from the program memory, concatenated, and routed, via instruction data bus 132, to the processing unit 112 for execution. As is well known in the art, the OPcode field and the data field form two portions of an instruction word that the processing unit subsequently executes. The data field information can be updated with new data at an address specified by the host interface without interrupting execution of the program, i.e., the update occurs between program counter read address generations. Such a data field update is made possible by using the dual-port RAM as the data field memory unit 116.
In operation, the following process is used to initially load a program and each initial data field value into the program memory 108: 1) the host interface 102 writes a 144-bit wide instruction word containing both an OPcode field value (128-bits) and an initial data field value (16-bits) to the host instruction data bus 128;
2) the host interface 102 then writes an 18-bit instruction address to the host instruction address bus 122 to indicate the address at which the data field value and the OPcode field value are to be written within their respective memories 114 and 116; and
3) the host interface asserts the host instruction write enable line 124 to complete the write operation.
Assertion of the host instruction write enable line 124 routes the value of the host instruction address bus 122 through the multiplexer 106 to the "R W addr" port of the single-port OPcode field memory unit 114. Furthermore, upon assertion of the write enable line, the value of the OPcode field on the host instruction data bus 128 is written into memory 114. Similarly, the value of the host instruction address bus 122 is also available to the "W addr" port of the dual-port data field memory unit 116. Assertion of the host instruction write enable line 124, through OR gate 110, latches the data field value on the host instruction data bus 128 through the data input (Dl) port into the data field memory unit 116.
During program execution, the program counter 104 supplies, via the multiplexer 106, each address of the instruction (both OPcode and data) to be executed by the processing unit 112. In response to the host instruction write enable line 124 not being asserted during program execution, the multiplexer 106 is set such that the instruction address supplied by the program counter 104 is available to the "R/W addr" port of the OPcode field memory unit 114 and to the "R addr" port of the data field memory unit 116.
The microcode instruction (OPcode and data fields) at the specified address is written to the instruction data bus 132 through the data output (DO) port of the OPcode field memory unit 114 and the DO port of the data field memory unit 116. To fully execute a program, the program counter 104 issues a sequence of instruction addresses which sequentially recall instructions to be executed by the processing unit 112.
To update a data field within the data field memory unit during program execution and without halting execution of the program, the invention accomplishes a number of methodical steps. FIG. 2 depicts a flow chart of a routine 200 executed by the host interface to update the contents of a particular data field. Such a routine can be implemented in either hardware or software. For the reader to best understand the operation of the invention, it is suggested that FIGS. 1 and 2 be simultaneously consulted while reading the following discussion.
The data field update routine 200 is generally entered at step 202, labeled START. Subsequently, at step 204, the routine writes the new data field value onto the host instruction data bus. The routine then writes, at step 206, the address of the data field to be updated onto the host instruction address bus. At step 208, the routine asserts the data field write enable line to effectuate writing the new data field value into the data field memory unit at the specified address. The routine stops at step 210. This entire process occurs between memory accesses used to read the data field value for use in program execution. Assertion of the data field write enable line 126 through OR gate 110, causes the new data field value on the host instruction data bus 128 to be latched through the Dl port of the data field memory unit 114 and written to the address specified at the "W addr" port. Since, at this time, the host instruction write enable line 124 is not asserted, the multiplexer 106 does not apply the address on the host instruction address bus 122 to the OPcode field memory unit 114. In this manner, data field information is updated between instruction recalls and the OPcode field information is not altered by the data field information update. Advantageously, execution of the program is not interrupted to update the data field information. Importantly, the memory unit 116 can write information at a different time within a system clock cycle (line 120) than it reads information. Specifically, as shown in the timing diagram of FIG. 3, input data is written to the dual-port memory unit at the beginning of a system clock cycle and output data is available to be read from the memory unit at the end of a system clock cycle. As such, a program is executed by reading data field information from the dual-port memory unit once per clock cycle, i.e., at the end of a clock cycle. However, in accordance with the invention, that information can be updated at the beginning of a clock cycle without the periodic information access process being affected, i.e., without affecting program execution. As shown in FIG. 3, to write new data (for example, data A) and read data A within a single clock cycle, data A is applied to the data input (Dl) port of the memory unit while the address to which that data is to be written is applied to the "W addr" port of the memory unit. Once the write address and the data are present, the host interface asserts the data field write enable hne (write enable signal in FIG. 3) and the data is written to the designated write address location within the memory unit. After a relatively short period of time during which the newly written data is not valid, i.e., after a settling time, a read address is applied to the "R addr" port of the dual-port memory unit. The read address can be, but is not necessarily, the same address as the write address used to store data A.
Upon deassertion of the data field write enable line, the data (data A) is read from the memory address presently applied to the "R addr" port, i.e., data A is read during the same clock cycle that the data is written to memory. This data is latched in a buffer register within the memory unit and then sent as an output of the data output (DO) port upon occurrence of the next clock cycle. In this manner, the data at any location within the memory unit can be written and read within a single clock cycle. As such, within the next clock cycle, i.e., while data A is being produced as an output at the DO port, data B can be updated and read from the memory unit. Subsequently, data within the memory unit can be updated with each new clock cycle. Consequently, using the present invention, data, e.g., data B, C, D, E, and so on, can be selectively updated at particular addresses within the memory unit without interrupting the periodic data accesses at the end of each clock cycle, i.e., without interrupting program execution.
In this example, information in a data field is updated and, within a single clock cycle, that updated data is read from the memory unit. However, the information at a specific memory location may be updated between periodic accesses to the memory unit, although that updated data might not be accessed until some time later during the program execution. Although access to the updated data is delayed until a later clock cycle, the invention updates the data without interrupting program execution, i.e., the update is performed between the periodic accesses to memory unit. Consequently, in accordance with the invention, the data field information of a microcode instruction is updated without interrupting program execution.
FIG. 3 provides a general indication of the relative timing of the various signals that control the dual-port memory. However, these signals are intended for illustrative purposes only. Therefore, to implement the invention, the reader should consult the device specification for the specific dual-port memory that will be used to implement the invention. An illustrative dual-port memory unit capable of performing the functions necessary to implement the present invention is model CY7C130/CY7C131 manufactured by Cypress Semiconductor of San Jose, California. The data field has been discussed as if it contained an actual data value. Alternatively, the data field may contain an address within main memory or an address of a specific register within the computer that contains the actual data value. As such, the data field update would alter this address information at which the new data can be found rather than update the data value itself. Although one embodiment which incorporates the teachings of the present invention has been shown and described in detail herein, those skilled in the art can readily devise many other varied embodiments that still incorporate these teachings.

Claims

What is claimed is:
1. In a computer for execution of a computer program, apparatus for updating information within an instruction that comprises a portion of the computer program without interrupting execution of said computer program, said apparatus comprising: memory means for storing said information at an address within said memory means; means, connected to said memory means, for periodically accessing said information for use by said computer; and means, connected to said memory means, for altering, between periodic accesses to said memory means by said accessing means, said information stored in said memory means such that said computer program execution is not interrupted to alter said information.
2. The apparatus of claim 1 wherein said memory means further comprises a dual-port memory unit.
3. The apparatus of claim 1 wherein said dual-port memory means further comprises: a first port for accepting a read address from said accessing means; a second port for accepting a write address from said accessing means; a data input port for accepting said information from said altering means; a data output port for supplying said information located at said read address to said computer; and a write enable port that, when asserted, stores said information at said input port at a location defined by the write address at said second port.
4. The apparatus of claim 1 wherein said memory means further comprises: single-port memory means for storing a first field of information contained in said instruction; and dual-port memory means for storing a second field of information contained in said instruction, wherein said second field of information is alterable between periodic accesses to said memory means.
5. The apparatus of claim 4 wherein said dual-port memory means further comprises: a first port for accepting a read address from said accessing means; a second port for accepting a write address from said accessing means; a data input port for accepting said second field of information from said altering means; a data output port for supplying said second field of information located at said read address to said computer; and a write enable port that, when asserted, stores said second field of information at said input port at a location defined by the write address at said second port.
6. In a computer for executing a computer program, a method for updating information within an instruction that comprises a portion of the computer program without interrupting execution of said computer program, said method comprising the steps of: storing said information at an address within a memory; periodically accessing said information for use by said computer; and altering, between periodic accesses to the memory, said information stored in the memory such that said computer program execution is not interrupted to alter said information.
7. The method of claim 6 wherein said step of storing said information and said step of altering said information occur within a single clock cycle of said computer.
8. The method of claim 7 wherein said altering step further comprises the steps of: applying a write address to a write address port of the memory; applying new information to a data input port of the memory; and applying, between periodic accesses to said information within the memory, a write enable signal to a write enable port of the memory such that said new information is written to said write address to update information presently located at that write address.
9. The method of claim 8 further comprising the step of accessing, upon occurrence of a next periodic access to said memory unit, said new information.
10. The method of claim 8 wherein said altering step and said step of accessing the new information occur within a single clock cycle of said computer.
PCT/US1995/004310 1994-04-15 1995-04-14 Apparatus and method for updating information in a writable microcode control store Ceased WO1995028672A1 (en)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CA002186862A CA2186862C (en) 1994-04-15 1995-04-14 Apparatus and method for updating information in a writable microcode control store
JP7527015A JPH09512119A (en) 1994-04-15 1995-04-14 Apparatus and method for updating information in a writable microcode controlled storage device
EP95916239A EP0755538B1 (en) 1994-04-15 1995-04-14 Apparatus and method for updating information in a writable microcode control store
DE69528824T DE69528824T2 (en) 1994-04-15 1995-04-14 Apparatus and method for updating information in a writable microcode control memory

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US22848294A 1994-04-15 1994-04-15
US08/228,482 1994-04-15

Publications (1)

Publication Number Publication Date
WO1995028672A1 true WO1995028672A1 (en) 1995-10-26

Family

ID=22857355

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US1995/004310 Ceased WO1995028672A1 (en) 1994-04-15 1995-04-14 Apparatus and method for updating information in a writable microcode control store

Country Status (7)

Country Link
US (1) US5581720A (en)
EP (1) EP0755538B1 (en)
JP (1) JPH09512119A (en)
KR (1) KR100391041B1 (en)
CA (1) CA2186862C (en)
DE (1) DE69528824T2 (en)
WO (1) WO1995028672A1 (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1998034170A1 (en) * 1997-01-30 1998-08-06 Northbrook Services Method and apparatus for allowing continued operation for overflow and invalid data
EP0810517A3 (en) * 1996-05-15 1999-11-10 Sun Microsystems, Inc. Hardware mechanism for optimizing instruction and data prefetching
US6654879B1 (en) 1997-01-30 2003-11-25 Northbrook Services Method and apparatus for analyzing code for out-of-range data involving base and seed tables/lists

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6151090A (en) * 1995-05-31 2000-11-21 Casio Computer Co., Ltd. LCD using liquid crystal of ferroelectric and/or antiferroelectric phase having pretilt angle of 1 degree or less
US5832277A (en) * 1996-03-08 1998-11-03 3 Com Corporation System for arbitrating demand on memory during configuration of a computer add-on card
US5887159A (en) * 1996-12-11 1999-03-23 Digital Equipment Corporation Dynamically determining instruction hint fields
US6823445B2 (en) * 2001-07-31 2004-11-23 International Business Machines Corporation Limiting concurrent modification and execution of instructions to a particular type to avoid unexpected results
US7543287B2 (en) * 2005-06-30 2009-06-02 Intel Corporation Using a block device interface to invoke device controller functionality
US9201595B2 (en) * 2012-09-19 2015-12-01 Oracle International Corporation High speed read access memory array with variation tolerant bypass scheme with protection circuit

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4204252A (en) * 1978-03-03 1980-05-20 Digital Equipment Corporation Writeable control store for use in a data processing system
US4862407A (en) * 1987-10-05 1989-08-29 Motorola, Inc. Digital signal processing apparatus
US4903220A (en) * 1988-01-27 1990-02-20 Sun Electric Corporation Dual ported speed up memory in ROM location for engine analyzer
US4933909A (en) * 1988-12-19 1990-06-12 Bull Hn Information Systems Inc. Dual read/write register file memory
US5014247A (en) * 1988-12-19 1991-05-07 Advanced Micro Devices, Inc. System for accessing the same memory location by two different devices
US5386532A (en) * 1991-12-30 1995-01-31 Sun Microsystems, Inc. Method and apparatus for transferring data between a memory and a plurality of peripheral units through a plurality of data channels

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3889242A (en) * 1971-10-04 1975-06-10 Burroughs Corp Modifiable computer function decoder
FR2256705A5 (en) * 1973-12-27 1975-07-25 Cii
US4125877A (en) * 1976-11-26 1978-11-14 Motorola, Inc. Dual port random access memory storage cell
AU3329178A (en) * 1977-03-28 1979-08-23 Data General Corp A micro-control storage system
US4217639A (en) * 1978-10-02 1980-08-12 Honeywell Information Systems Inc. Logic for generating multiple clock pulses within a single clock cycle
US4360869A (en) * 1980-04-15 1982-11-23 Honeywell Information Systems Inc. Control store organization for a data processing system
US4901235A (en) * 1983-10-28 1990-02-13 Data General Corporation Data processing system having unique multilevel microcode architecture
EP0156307A3 (en) * 1984-03-30 1988-04-20 Four-Phase Systems Inc. Pipelined processor having dual cache memories
GB2161001B (en) * 1984-06-25 1988-09-01 Rational Distributed microcode address apparatus for computer
US4825363A (en) * 1984-12-05 1989-04-25 Honeywell Inc. Apparatus for modifying microinstructions of a microprogrammed processor
JPS61170828A (en) * 1985-01-24 1986-08-01 Hitachi Ltd microprogram controller
DE3881222D1 (en) * 1987-01-23 1993-07-01 Siemens Ag SEMICONDUCTOR MEMORY WITH OPTIONAL ACCESS THROUGH TWO SEPARATE INPUTS / OUTPUTS.
US5203002A (en) * 1989-12-27 1993-04-13 Wetzel Glen F System with a multiport memory and N processing units for concurrently/individually executing 2N-multi-instruction-words at first/second transitions of a single clock cycle
US5212693A (en) * 1990-08-02 1993-05-18 Ibm Corporation Small programmable array to the on-chip control store for microcode correction
US5144242A (en) * 1990-08-23 1992-09-01 The Regents Of The University Of California Continually loadable microcode store for MRI control sequencers
US5465361A (en) * 1990-09-10 1995-11-07 The Regents Of The University Of California Microcode linker/loader that generates microcode sequences for MRI sequencer by modifying previously generated microcode sequences
JPH05100647A (en) * 1990-09-28 1993-04-23 Fuji Photo Film Co Ltd Picture display device
USH1291H (en) * 1990-12-20 1994-02-01 Hinton Glenn J Microprocessor in which multiple instructions are executed in one clock cycle by providing separate machine bus access to a register file for different types of instructions

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4204252A (en) * 1978-03-03 1980-05-20 Digital Equipment Corporation Writeable control store for use in a data processing system
US4862407A (en) * 1987-10-05 1989-08-29 Motorola, Inc. Digital signal processing apparatus
US4903220A (en) * 1988-01-27 1990-02-20 Sun Electric Corporation Dual ported speed up memory in ROM location for engine analyzer
US4933909A (en) * 1988-12-19 1990-06-12 Bull Hn Information Systems Inc. Dual read/write register file memory
US5014247A (en) * 1988-12-19 1991-05-07 Advanced Micro Devices, Inc. System for accessing the same memory location by two different devices
US5386532A (en) * 1991-12-30 1995-01-31 Sun Microsystems, Inc. Method and apparatus for transferring data between a memory and a plurality of peripheral units through a plurality of data channels

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See also references of EP0755538A4 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0810517A3 (en) * 1996-05-15 1999-11-10 Sun Microsystems, Inc. Hardware mechanism for optimizing instruction and data prefetching
WO1998034170A1 (en) * 1997-01-30 1998-08-06 Northbrook Services Method and apparatus for allowing continued operation for overflow and invalid data
US6654879B1 (en) 1997-01-30 2003-11-25 Northbrook Services Method and apparatus for analyzing code for out-of-range data involving base and seed tables/lists

Also Published As

Publication number Publication date
EP0755538B1 (en) 2002-11-13
EP0755538A4 (en) 1998-05-20
JPH09512119A (en) 1997-12-02
CA2186862C (en) 2001-11-20
DE69528824T2 (en) 2003-07-03
US5581720A (en) 1996-12-03
DE69528824D1 (en) 2002-12-19
KR970702522A (en) 1997-05-13
KR100391041B1 (en) 2003-09-29
CA2186862A1 (en) 1995-10-26
EP0755538A1 (en) 1997-01-29

Similar Documents

Publication Publication Date Title
US4896259A (en) Apparatus for storing modifying data prior to selectively storing data to be modified into a register
US6058474A (en) Method and apparatus for DMA boot loading a microprocessor without an internal ROM
US4879646A (en) Data processing system with a pipelined structure for editing trace memory contents and tracing operations during system debugging
US4325116A (en) Parallel storage access by multiprocessors
KR100309615B1 (en) High Speed Programmable Logic Controllers (PLC)
US5263153A (en) Monitoring control flow in a microprocessor
JP4226085B2 (en) Microprocessor and multiprocessor system
KR20000076310A (en) Eight-bit microcontroller having a risc architecture
EP0755538B1 (en) Apparatus and method for updating information in a writable microcode control store
CA2003004C (en) Apparatus and method for executing a conditional branch instruction
US6625727B1 (en) Apparatus and method for configuring a data processing system by retrieving a configuration value from storage device using reset vector and configuring parameters after reset
GB2231986A (en) Programmable logic controller including function block processor and bit processor
US5012410A (en) Data processor with instruction cache memory
KR100321745B1 (en) A micro controller unit for external memory access
US4853889A (en) Arrangement and method for speeding the operation of branch instructions
US5893928A (en) Data movement apparatus and method
EP0177712B1 (en) Masked data fetch and modifying device
US20020133687A1 (en) Facilitating automatic incrementing and/or decrementing of data pointers in a microcontroller
JPS62120543A (en) Switching system for memory bank
GB2225881A (en) Co-processor intrude mechanism
JPH01189728A (en) Circuit for updating instruction pre-fetch address
US20030101333A1 (en) Data processor
JPS62245439A (en) Symbolic processing system and method
JP2781973B2 (en) Memory content update circuit
JPH01263819A (en) Integrated circuit

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): CA JP KR MX

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): AT BE CH DE DK ES FR GB GR IE IT LU MC NL PT SE

DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
121 Ep: the epo has been informed by wipo that ep was designated in this application
WWE Wipo information: entry into national phase

Ref document number: 2186862

Country of ref document: CA

WWE Wipo information: entry into national phase

Ref document number: 1995916239

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 1019960705808

Country of ref document: KR

WWP Wipo information: published in national office

Ref document number: 1995916239

Country of ref document: EP

WWG Wipo information: grant in national office

Ref document number: 1995916239

Country of ref document: EP