WikiPatents - Community Patent Review
Create Free Account  |  License or Sell Your Patent  |  WikiPatents Marketplace  |  WikiPatents Blog
Username:  Password:  
    
Advanced Search
Control store memory read error resiliency method and apparatus    
United States Patent4641305   
Link to this pagehttp://www.wikipatents.com/4641305.html
Inventor(s)Joyce; Thomas F. (Westford, MA); Kelly; Richard P. (Nashua, NH)
AbstractA method and apparatus for a microinstruction controlled unit to recover from a read error in reading microinstructions from a control store. The method provides for the overlapping of the execution of a current microinstruction while the next microinstruction is being addressed and read from the control store. Execution of the current microinstruction is begun before it is known whether or not it was read without error. The apparatus provides for aborting the execution of the current microinstruction with the read error and the next microinstruction. During the aborted execution of the next microinstruction, the current microinstruction is reread from the control store and then executed while the next microinstruction is being reread. The execution of microinstructions is aborted in a manner that does not alter the state of the microinstruction controlled unit beyond the point that would inhibit the re-execution of the aborted microinstructions.
   














 Title Information Submit all comments and votes
 
Patent Text Patent PDF Print Page Summary File History
Plain text PDF images Print Summary File History
Drawing from US Patent 4641305
Control store memory read error resiliency method and apparatus - US Patent 4641305 Drawing
Control store memory read error resiliency method and apparatus
Inventor     Joyce; Thomas F. (Westford, MA); Kelly; Richard P. (Nashua, NH)
Owner/Assignee     Honeywell Information Systems Inc. (Waltham, MA)
Patent assignment
All assignments
Publication Date     February 3, 1987
Application Number     06/663,101
PAIR File History     Application Data   Transaction History
Image File Wrapper   Patent Term   Fees
Litigation
Filing Date     October 19, 1984
US Classification     714/17
Int'l Classification     G06F 011/10 G06F 011/14
Examiner     Smith; Jerry
Assistant Examiner     Beausoliel Jr.; Robert W.
Attorney/Law Firm     George, Solakian; John S. Grayson;
Address
Parent Case    
Priority Data    
USPTO Field of Search     371/15 371/16 371/18 371/19 371/12 371/13 364/200 364/900
Patent Tags     control store memory read error resiliency
   
Enter a comma (,) or semicolon (;) between multiple tag words/phrases.
Describe this patent:
 Amusing   
 Clever   
 Complex   
 Efficient   
 Historic   
 Important   
 Innovative   
 Interesting   
 Practical   
 Simple   
[no votes]
Patent WIKI

Share information and news about this patent, including information and news about the technology, inventors, company, ligation and licensing.

 References Submit all comments and votes
 
*references marked with an asterisk below are user-added references
 U.S. References
 
Add a new US reference:  
ReferenceRelevancyCommentsReferenceRelevancyComments
4535455
Peterson
714/6
Aug,1985

[0 after 0 votes]
4315313
Armstrong
714/45
Feb,1982

[0 after 0 votes]
4231089
Lewine
714/7
Oct,1980

[0 after 0 votes]
3736566
Anderson
714/15
May,1973

[0 after 0 votes]
3696340
Matsushita
714/25
Oct,1972

[0 after 0 votes]
 Foreign References
 Other References
 Market Review Submit all comments and votes
   
Market Size
Estimate the gross annual revenues of the relevant market sector:
> $10B
$5B - $10B
$2B - $5B
$500M - $2B
$100M - $500M
$10M - $100M
$1M - $10M
$500K - $1M
$100K - $500K
< $100K
[No votes]
$0
 
$0   $2.5B   $5B   $7.5B   $10B
Market Share
Estimate the percentage of the relevant market sector this invention will capture:
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Reasonable Royalty
What percentage of gross sales should the inventor or assignee be paid?
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Public's "Guesstimation" of Royalty Value
Market SizeN/A[No votes]
xMarket ShareN/A[No votes]
xReasonable RoyaltyN/A[No votes]

N/A

License Availablity
If you are NOT the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
License Availablity
If you ARE the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
Competitive Advantage
Does this invention have a significant competitive advantage over similar technologies?
Yes

No



[No votes]
Most helpful competitive advantage comment
[No comments]

Commercial Alternatives
Are there viable commercial alternatives for this invention?
Yes

No



[No votes]
Most helpful commercial alternative comment
[No comments]

 Technical Review Submit all comments and votes
 Claims Submit all comments and votes
 


What is claimed is:

1. A method for recovering from an error while reading microinstructions in a microprogrammed controlled system comprising the steps of:

A. beginning execution of a microinstruction read from a control store;

B. checking if said microinstruction was read without error by use of error detection information associated with said microinstruction;

C. generating an address of a next microinstruction in the control store during steps A and B by use of information associated with said microinstruction;

D. inhibiting any change of state in said system caused by the execution of said microinstruction which will prohibit said microinstruction from being re-executed until after it is determined that said microinstruction was read without error;

E. completing execution of said microinstruction if said microinstruction was read without error;

F. aborting execution of said microinstruction if said microinstruction was read with an error;

G. returning to step A to execute said next microinstruction if said microinstruction was read without error; and

H. returning to step A to reread and re-execute said microinstruction if said microinstruction was read with an error.

2. The method of claim 1 wherein said step of checking for read errors is performed by making a parity calculation on the bits of said microinstruction and comparing the result with parity data associated with said microinstruction.

3. The method of claim 1 wherein the address of said next microinstruction is stored during the execution of said microinstruction if said microinstruction was read without error and wherein said stored next microinstruction address is used to reread said microinstruction if said microinstruction was read with an error.

4. The method of claim 1 wherein said system comprises a plurality of subunits, each having a portion of the control store associated with it, and said microinstruction comprises a plurality of portions, each read from a portion of the control store, and wherein each subunit is controlled by a portion of said microinstruction read from a portion of said control store associated with the subunit and wherein each subunit performs a portion of said microinstruction read error determination based on its respective portion of the microinstruction with the results being accumulated by one of said subunits to form a cumulative result which is used in step D to inhibit changes in all subunits and to control whether said next microinstruction is read or said microinstruction is reread.

5. The method of claim 1 wherein said step of checking for read errors is performed by making a parity calculation on the bits of said microinstruction and comparing the result with parity data associated with said microinstruction.

6. The method of claim 1 wherein the calculation of an address of said next microinstruction is done during the execution of said microinstruction and wherein the address of said next microinstruction is stored during the execution of said microinstruction if said microinstruction was read without error and wherein said stored next microinstruction address is used to reread said microinstruction if said microinstruction was read with an error.

7. A microprogrammed control system comprising:

A. a control store for storing a plurality of microinstructions;

B. means for reading a current microinstruction of said plurality of microinstructions from said control store;

C. means for executing said current microinstruction;

D. means for detecting if said current microinstruction was read without an error from said control store;

E. means for generating, while executing said current microinstruction and detecting if said current microinstruction was read without an error, a next address of a next microinstruction to be read from said control store;

F. means for inhibiting said means for executing from making any change in the state of said microprogrammed control system that would prohibit said current microinstruction from being re-executed before said means for detecting a read error has determined that said current microinstruction was read without error; and

G. means for aborting the execution of said current microinstruction by said means for executing if said means for detecting determines that said current microinstruction was read with an error.

8. The system of claim 7 further comprising:

A. means for storing said next address if said current microinstruction was read without error from said control store; and

B. means for transferring said next address from said means for storing to said means for reading if said current microinstruction was read with an error.

9. The system as in claim 8 wherein execution of said one or more next microinstructions is aborted if said current microinstruction was read with a read error and wherein said current microinstruction is reread from said control store and re-executed after execution of said one or more next microinstructions is aborted.

10. A method for recovering from an error while reading microinstructions from a control store in a microprogrammed controlled system, the system comprising a plurality of subunits, each controlled by a portion of each microinstruction stored in a portion of the control store associated with the subunit, the method comprising the steps of:

A. reading a microinstruction from the control store;

B. beginning execution of said microinstruction;

C. in a microinstruction read error determination checking if said microinstruction was read without error by use of error detection information associated with said microinstruction, each subunit performing a portion of the microinstruction read error determination based on its respective portion of the microinstruction with the results being accumulated by one of said subunits;

D. inhibiting any change of state in said system caused by the execution of said microinstruction which will prohibit said microinstruction from being re-executed until after it is determined that said microinstruction was read without error;

E. completing execution of said microinstruction if said microinstruction was read without error and advancing a control store address to point to a next microinstruction;

F. aborting execution of said microinstruction if said microinstruction was read with an error;

G. returning to step A to read said next microinstruction if said microinstruction was read without error; and

H. returning to step A to reread said microinstruction if said microinstruction was read with an error.

11. A method for recovering from an error while reading microinstructions from a control store in a microprogrammed controlled system wherein the system is able to execute successive microinstructions in successive system cycles, the method comprising:

A. in a system cycle:

i. beginning execution of a microinstruction from the control store;

ii. checking if said microinstruction was read without error by use of error detection information associated within said microinstruction;

iii. generating an address of a next microinstruction in the control store by use of information associated with said microinstruction and addressing the control store to fetch the next microinstruction;

iv. inhibiting any change of state in the system caused by the execution of said microinstruction which will prohibit said microinstruction from being re-executed until after it is determined that the microinstruction was read without error;

v. completing execution of the microinstrution if the microinstruction was read without error;

vi. aborting execution of the microinstruction if the microinstruction was read with an error;

B. returning to step A to execute the next microinstruction in the next system cycle if the microinstruction was read without error; and

C. promptly rereading the microinstruction from the control store and returning to step A to re-execute the microinstruction if the microinstruction was read with an error.

12. A method as claimed in claim 11 wherein the microinstruction is reread in step C in the next system cycle while the next microinstruction is being executed but any change of state in said system caused by execution of the next microinstruction is inhibited.

13. A method as claimed in claim 11 wherein the step A ii of checking for read error is performed by making a parity calculation on the bits of the microinstruction and comparing the result with parity data associated with the microinstruction.

14. The method of claim 11 wherein said system comprises a plurality of subunits, each having a portion of the control store associated with it, and said microinstruction comprises a plurality of portions, each read from a portion of the control store, and wherein each subunit is controlled by a portion of said microinstruction read from a portion of said control store associated with the subunit and wherein each subunit performs a portion of said microinstruction read error determination based on its respective portion of the microinstruction with the results being accumulated by one of said subunits to form a cumulative result which is used in step A iv. to inhibit changes in all subunits and to control whether said next microinstruciton is read or said microinstruction is reread.
 Description Submit all comments and votes
 


RELATED APPLICATIONS

The following patent applications, which are assigned to the same assignee as the instant application, have related subject matter and are incorporated herein by reference. Certain portions of the system and processes herein disclosed are not our invention, but are the invention of the below-named inventors as defined by the claims in the following patent applications:

U.S. patent application Ser. No. 663,096 entitled, "Distributed Control Store Word Architecture", having inventors Richard P. Kelly and Thomas F. Joyce.

BACKGROUND OF THE INVENTION

1. Field of the Invention

The method and apparatus of the present invention generally relates to a method for recovering from a memory read error in an instruction word used to control a programmable device and, more particularly, to a method for recovering from a control store memory read error of a microinstruction in a microprogrammed electronic data processing system.

2. Background of the Invention

It is common practice today to implement data processing systems in which the software instruction is executed by use of microprocessors which are firmware controlled. In this system, the firmware is stored as a series of microinstructions in a memory referred to as a control store. The control store may be a random access memory (RAM) which can be written into, as well as read from, or it may be a read only memory (ROM) of one type or another. In either case, as the use of firmware increases with more of the logic of systems being microprogrammable, and as faster memories are used in order to decrease the time required to perform operations, it is becoming more likely that a read error will occur when microinstructions are read from the control store. Many of the errors which occur when reading data from RAMs and ROMs are of a transient nature and will not recur if the same data is read a second time from the memory.

One method of detecting a memory read error is to store one or more parity bits with the instructions and to compute the parity of the instruction read from memory and compare it with the parity bit or bits stored with the instruction and if there is a mismatch to go back and read the instruction again. Although this scheme works, it has the disadvantage that execution of the program is delayed because an instruction cannot be executed until its parity is computed and compared with the stored parity.

One method of overcoming this delay associated with checking the parity of each instruction before it is executed is to prefetch instructions so that the parity of one instruction can be checked while a previously checked instruction is being executed. Although this scheme can be used to advantage to eliminate the delays associated with checking parity prior to instruction execution, it has the disadvantage that it can become quite complex and therefore costly because the execution of one instruction will often determine which is the next instruction to be executed and therefore prefetching the "next" instruction can be very complicated or impossible. One method of simplifying this prefetch problem is to prefetch the "normal next" instruction and check it for possible read errors and if the normal next instruction turns out not to be the "next" instruction, the "normal next" instruction is discarded (i.e., flushed from a buffer) and the system waits while the "next" instruction is read and checked. Even this "flushing" scheme can be complex and still result in delays each time the instructions aren't executed in the "normal" sequence.

Therefore, what is needed is a method of detecting and correcting instruction memory read errors which is simple and which does not adversely effect the execution time of the system.

OBJECTS OF THE INVENTION

Accordingly, it is an object of the present invention to provide a simple method of detecting and recovering from instruction read errors in a programmable device.

It is another object of the present invention to provide a method of detecting and recovering from instruction read errors that does not adversely affect the execution time of instructions read without errors.

It is a still further object of the present invention to provide a low cost method of detecting and recovering from read errors in instructions controlling a programmable device.

This invention is pointed out with particularity in the appended claims. An understanding of the above and further objects and advantages of this invention can be obtained by referring to the following description taken in conjunction with the drawings.

SUMMARY OF THE INVENTION

The present invention provides for instruction read error detection and recovery by permitting the unchecked instruction to be executed in parallel with instruction read error detection by providing for the aborting of the instruction execution upon detection of an error prior to making any change in the state of the system which would prevent the retrying of the instruction after it is read again from memory. Because the reading of the next instruction is initiated during the execution of the current instruction whose validity is checked in parallel with its execution, the present invention provides for the discarding of the next instruction prior to retrying the current instruction by rereading the current instruction followed by re-execution of the current instruction. While the current instruction is being re-executed, the rereading of the next instruction is initiated so that it will be available for execution following the re-execution of the current instruction.

BRIEF DESCRIPTION OF THE DRAWINGS

The manner in which the method of the present invention is performed and the manner in which the apparatus of the present invention is constructed and its mode of operation can best be understood in light of the following detailed description together with the accompanying drawings in which like reference numbers identify like elements in the several figures and in which:

FIG. 1 is a block diagram of a data processing system incorporating the present invention;

FIG. 2 is a more detailed logic block diagram of the microprocessor of FIG. 1;

FIG. 3 is a more detailed logic block diagram of the parity calculator-checker and the clock generator of FIG. 1; and

FIG. 4 is a timing diagram of various clocking, control store addressing, and control store data signals used by the logic of FIGS. 2 and 3.

DESCRIPTION OF THE PREFERRED EMBODIMENT

The present invention provides for instruction read error detection and recovery by permitting the unchecked instruction to be executed in parallel with instruction read error detection by providing for the aborting of the instruction execution upon detection of an error prior to making any change in the state of the system which would prevent the retrying of the instruction after it is read again from memory. Because the reading of the next instruction is initiated during the execution of the current instruction whose validity is checked in parallel with its execution, the present invention provides for the discarding of the next instruction prior to retrying the current instruction by rereading the current instruction followed by re-execution of the current instruction. While the current instruction is being re-executed, the rereading of the next instruction is initiated so that it will be available for execution following the re-execution of the current instruction.

The central processor unit (CPU) and other elements comprising the electronic data processing system of the preferred embodiment of the present invention are illustrated in FIG. 1. In FIG. 1, the CPU is comprised of those elements above main bus 127. The CPU communicates with the other elements in the system through lines 146 which contain address data and control lines to main bus 127. Main bus 127 is also comprised of address, data and control lines and serves as the main path for information which is communicated between main memory 129 and peripherals 131 and 133. Main memory 148 stores data and software program instructions which are executed by the CPU. Main memory 129 is connected to main bus 127 by lines 148. Peripherals 131 and 133, which are connected to main bus 127 by lines 150 and 152 respectively, are input/output units which are used to enter, retain or output data into and out of the system.

The logic of the central processor unit can be divided into four groups as shown in FIG. 1. Microprocessor 101 performs the basic arithmetic and logic operations of the central processor unit by executing the software instructions of the software program stored in main memroy 129. Virtual memory management unit 103 converts the virtual memory addresses contained in the software instructions into a physical address which is passed to cache memory 107 on lines 140. In the preferred embodiment, a 30 bit physical address is calculated by virtual memory management unit 103. This 30 bits of address is indicated by the number 30 next to the diagonal slash on line 140. Cache memory 107 takes the physical address provided by virtual memory management unit 103 and does either a read memory or write memory operation from or to main memory 129 or retrieves the data or software instruction from its own internal memory. The information retrieved from cache memory 107 is provided to microprocessor 101 or virtual memory management unit 103 through processor bus 138 which is a 32 bit wide bus. Glue logic 105 contains miscellaneous logic which ties microprocessor 101, virtual memory management unit 103 and cache memory 107 together and, as illustrated in FIG. 1, contains a parity calculator-checker 121 and clock generator 125.

The central processor unit of FIG. 1 is firmware controlled such that the microprocessor 101, virtual memory management unit 103, cache memory 107 and glue logic 105 each are controlled by microoperations from microinstructions contained within the control store. As illustrated in FIG. 1, the control store of the preferred embodiment is a read only storage, which is distributed throughout the processor such that the microoperations for the various units are stored in a local read only storage (ROS) which is close to the logic which utilizes the microoperations. This distribution of the ROS has the advantage that the relatively narrow 14-bit address which is used to address the control store is distributed throughout the central processor, whereas the relatively wide 104 bit microinstruction is broken into 4 elements so that each of the local ROS's is close to the logic which utilizes the various microoperations. Therefore, as can be seen in FIG. 1, microprocessor 101 obtains its 67 bits of microoperations as signals MPROSDT on line 104 from microprocessor ROS 109. Virtual memory management unit 103 obtains its 16 bits of microoperations as signals VMROSDT on lines 106 from virtual memory ROS 111. Cache memory 107 obtains its 16 bits of microinstructions as signals CHROSDT on lines 112 from cache ROS 115, and glue logic 105 obtains its 4 bits of microoperations as signals GLROSDT on lines 108 from glue ROS 113. In addition, glue logic ROS 113 provides signal ROSPRTY which is an overall ROS odd parity bit so that each 103 bit microinstruction has a 104th bit of odd parity associated with it. That is, the number of bits in the binary ONE state in each 104-bit microinstruction word in the control store will be an odd number.

The addressing of the control store, which is composed of the four ROS's 109, 111, 113, and 115 is under the control of microprocessor 101 which calculates the address of the next microinstruction and produces a 14-bit address as signal ROSADDR on lines 102 which is used to address each of the ROS's. This 14-bit control store address allows for the addressing of 16K (1K=1024) of 104-bit words in the control store.

By having an odd parity bit (ROSPRTY) as bit 104 associated with each microinstruction, the central processor unit is able to detect whether the microinstruction word read from the control store was read without a single bit error. The detection of read errors as each microinstruction word is read from the control store is performed by parity calculator-checker 121 in glue logic 105. If parity calculator-checker 121 detects a difference between the parity calculated for the microinstruction word and the parity bit contained in the microinstruction word, it produces a CANCEL signal on line 136 which prevents clock generator 125 from generating clocking signal CLK4 on line 126. In addition to producing clock signal CLK4, clock generator 125 produces clock signals T1, T2, T3 and T4 on lines 128, 130, 132 and 134 respectively. These four clock signals T1 through T4 and CLK4 are used throughout the central processor to clock various operations within microprocessor 101, virtual memory management unit 103, cache memory 107 and glue logic 105.

Because the control store is broken into four separate ROS's, with each separate ROS being located near the logic which its microoperations control, the calculation of the parity of a microinstruction is also distributed. Therefore, parity calculator 117 in microprocessor 101 calculates the parity of the 67 bits of microinstruction received form microprocessor ROS 109. Similarly, parity calculator 119 in virtual memory management unit 103 calculates the parity of the 16 bits of microoperations received from virtual memory ROS 111 and parity calculator 123 in cache memory 107 calculates the parity of the 16 bits of microoperations received from cache ROS 115. Parity calculator 117 produces parity signal MPROSPB on line 118, parity calculator 119 produces parity signal VMROSPB on line 120, and parity calculator 123 produces parity signal CHROSPB on line 124. These three parity signals MPROSBP, VMROSPB and CHROSPB are inputs into parity calculator-checker 121 along with the four bits of the microoperation received from glue logic ROS 113. These seven bits along with the odd parity bit ROSPRTY from the microinstruction words are then used by parity calculator-checker 121 to compute the total parity of the microinstruction word. If the calculated parity does not agree with the stored parity, the cancel signal CANCEL on line 136 is produced. As will be seen below, the CANCEL signal is used to cancel the execution of the current microinstruction which contains a read error. The microinstruction is then refetched from the control store and re-executed.

The method by which the present invention cancels the execution of a microinstruction that is determined to have a read error in it and the method by which the microinstruction is reread from the control store and re-executed will be described with reference to FIGS. 2 and 3 which show in greater detail the logic of microprocessor 101, parity calculator-checker 121 and clock generator 125. The operation of the logic of FIGS. 2 and 3 will also be discussed with reference to FIG. 4 which shows a timing diagram of various clock timing signals and ROS address and data signals and read error signals.

As indicated above, the system of the preferred embodiment is designed so that the major elements within the CPU are firmware controlled by microoperations with the microprocessor 101 responsible for calculating the address of the next microinstruction to be fetched, a part of it being read from microprocessor ROS 109, virtual memory ROS 111, glue logic ROS 113 and cache ROS 115. The CPU is designed so that during the execution of a first microinstruction the address of the second microinstruction is presented to each of the ROS's and the reading of the second microinstruction is initiated during the execution of the first microinstruction so that the second microinstruction will be available upon the completion of the execution of the first microinstruction. This overlapping of the reading of the next microinstruction during the execution of the current microinstruction is illustrated in FIG. 4 which shows that the 14-bit control store address signal ROSADDR on lines 102 at the output of ROS address register 209 is addressing control store location B during the end of cycle 2 while the contents of ROS data register 201, the output of which is the 67 firmware bits that control microprocessor 101 as signals RDROUT on lines 202 contain the contents of memory location A, which is the current microinstruction being executed during cycle 2. In FIG. 4, the contents of a memory location is indicated by putting the memory location address "A", "B", "C", etc. within parentheses, as seen for signals MPROSDT and RDROUT.

In the preferred embodiment, the time required to execute a microinstruction by the CPU is broken into four equal time periods: Time 1, Time 2, Time 3 and Time 4. The total time required to execute one microinstruction is approximately 160 nanoseconds and therefore Time 1 through Time 4 are each 40 nanoseconds long. The CPU logic utilizes timing signals T1 through T4 associated with Time 1 through Time 4 to clock various logic elements within the CPU. FIG. 3 shows that a 25 megahertz oscillator 319 is used to produce the basic clocking signal CLK on line 320. Signal CLK is in the high (binary ONE) state for 20 nonoseconds and in the low (binary ZERO) state for 20 nanoseconds during each basic clock period as can be seen in FIG. 4. Signal CLK on line 320 is connected to the clock (C) input of clock register 327 and to one input of AND gate 323. Clock register 327 is a D-type register of the type enabled by a binary ZERO at the enable (EN) input and clocks the signals at its D inputs onto the corresponding Q outputs. The small circle on the inputs, such as the enable input of register 327, or outputs of the elements in FIGS. 2 and 3 indicate an inverting input or output, respectively. Since signal MPRERR at the enable input of clock register 327 is normally in the binary ZERO state, clock register 327 is normally enabled. Signal MPRERR becomes a binary ONE and disables the clock and freezes the state of the CPU by inhibiting the further execution of the microinstructions if an error is detected within microprocessor 101, but for the purposes of discussing the present invention it shall be considered to be a binary ZERO thus continually enabling clock register 327. The binary ONE at the clear (CLR) and the binary ZERO at the function (F) input of clock register 327 inhibit the clearing of the register and enable the outputs, respectively.

Ring counter 325 is a 4-bit ring counter of conventional design. Each fourth time clocking signal CLKC on line 324 at its clock (C) input becomes a binary ONE, its output signal, SYNC, on line 326 becomes and remains a binary ONE until the next time ring counter 325 is clocked by the transition of the CLKC signal from the binary ZERO to the binary ONE state. AND gate 323 is normally enabled by signal WAIT at the input of inverter 321 being a binary ZERO thus making the output of inverter 321, signal WAIT-bar, the inverse of signal WAIT, a binary ONE. Thus, during normal operation ring counter 325 will be clocked by each fourth transition of clocking signal CLK on line 320 from oscillator 319 (see FIG. 4). Signal WAIT is used within the central processor to indicate when the clock must be temporarily stalled in order to wait for some event to happen. Generally, it is used to temporarily stall the CPU until data becomes available from cache memory 107.

Assuming that there is no need to wait for some event to happen within the central processor, and therefore signal WAIT is a binary ZERO, signal SYNC at the D0 input of clock register 327 will become a binary ONE each fourth time that clock register 327 is clocked by signal CLK on line 320. As is illustrated in FIG. 4, each fourth basic clock period when signal SYNC at the D0 input of clock register 327 is a binary ONE, the clocking of the register by signal CLK becoming a binary ONE will result in the Q0 output on line 340, signal T2, becoming a binary ONE. Signal T2 remains in the binary ONE state for one basic clock period (one cycle of signal CLK). Because signal T2 on line 340 is connected to the D1 input of clock register 327, the next time that the clock register 327 is clocked, its corresponding Q1 output will result in signal T3 on line 342 becoming a binary ONE and remaining a binary ONE for one basic clock period as shown in FIG. 4. Signal T3 on line 342 is connected to the D2 input of clock register 327 resulting in signal T4 on line 344 at the Q2 output of clock register 327 becoming a binary ONE the next time the clock register is clocked by signal CLK becoming a binary ONE. Signal T4 will remain a binary ONE for one clock period as shown in FIG. 4 and as an input to the D3 input of clock register 327 will result in signal T1 on line 346 becoming a binary ONE the next time clock register 327 is clocked by signal CLK as shown in FIG. 4. The fourth clocking of clock register 327 by basic clock signal CLK, which results in signal T1 becoming a binary ONE at the Q3 output of clock register 327, will also result in signal SYNC at the output of ring counter 325 becoming a binary ONE. Therefore, when the clock register is being clocked by the beginning of the fifth basic clock cycle, the T2 signal at the Q0 output of clock register 327 will again become a binary ONE as shown in FIG. 4.

Signal T3 on line 342, in addition to being connected to the D2 input of clock register 327 to produce timing signal T4, is also connected to one input of AND gate 331. As long as the CANCEL signal on line 136 is a binary ZERO, the output of inverter 329, which is signal CANCEL-bar on line 330, will be a binary ONE thus enabling AND gate 331 so that the state of its output, signal SETCLK4 on line 332, will be determined by the state of signal T3. Therefore, unless the CANCEL signal is a binary ONE, the clocking signal CLK4 on line 348 at the Q4 output of clock register 327 will be the same as the timing signal T4 on line 344. If the cancel signal becomes a binary ONE, AND gate 331 will be disabled and clock register 327 will not produce signal CLK4 in the binary ONE state at the same time that timing signal T4 becomes a binary ONE. This can be seen in FIG. 4 wherein during the time that the CANCEL signal is in the binary ONE state, the CLK4 signal remains in the binary ZERO state during the time that timing signal T4 is in the binary ONE state.

Before discussing how parity calculator-checker 121 produces the CANCEL signal, the operation of the logic in FIG. 2 will be described in conjunction with the timing of the various signals shown in FIG. 4. As described above, the address of the next microinstruction to be read from the control store is determined by the microprocessor 101. Within microprocessor 101, the generation of the next ROS address is primarily a function of next address generation logic 203, which receives as input some of the bits from the currently executing microinstruction which is stored in ROS data register 201 and is available as signal RDROUT on lines 202 and by the decoding of the microoperations encoded in the current microinstruction. The decoding of the microoperations is performed by microoperation decoder 211. FIG. 4 shows that the 14-bit probable next ROS address at the output of next address generation logic 203 on lines 204 is available during Times 2, 3 and 4 (i.e., when signals T2, T3 and T4 are high, respectively).

In FIG. 4, the shaded areas represent periods during which the state of the signals are indeterminate. For example, signal PNXROSA, which is the probable next ROS address, is indeterminate during Times 1. FIG. 4 shows that during the first microinstruction cycle, signal PNXROSA will contain the address of control store location A. During the second microinstruction cycle, PNXROSA contains the address of control store location B. During the third microinstruction cycle, it contains the address of control store location C, etc.

As long as there is not a hardware retry condition which is caused by a microinstruction read error in existence, signal HRDRTRY at the select (S) of multiplexer 207 will be a binary ZERO and the A inputs will be connected to the outputs so that its 14-bits next ROS address, signal NXROSAD on line 208, will follow the potential next ROS address, signal PNXROSA on line 204. This can be seen in FIG. 4 which shows that sometime during Time 2, next ROS address signal NXROSAD during the first microinstruction cycle becomes equal to the address associated with location A of the control store. If a hardware retry condition exists which causes signal HRDRTRY to be a binary ONE, the stored next ROS address, signal SNXROSA on lines 206, at the B inputs of multiplexer 207 are gated onto its output causing signal NXROSAD to be equal to signal SNXROSA. Thus, during the first cycle of a hardware retry condition, the next ROS address is taken from stored ROS address register 205 instead of from the next address generation logic 203.

Stored ROS address register 205 is a D-type register which clocks its inputs onto its outputs when clocking signal CLKS at its clock (C) input transitions from the binary ZERO to the binary ONE state. Clocking signal CLKS on line 330 normally transitions from the binary ZERO to the binary ONE state at the end of Time 4 as the result of signal T4 at one input of NAND gate 229 transitioning from the binary ONE to the binary ZERO state. Clocking signal CLKS will normally transition from the binary ZERO to the binary ONE state at the end of each Time 4 as long as ROS parity error signal ROSPERR at the input of inverter 227 remains in the binary ZERO state indicating that a parity error has not been detected while reading the currently executing microinstruction from control store memory. As long as signal ROSPERR remains a binary ZERO, the output of inverter 227 will be a binary ONE thus partially enabling NAND gate 229, thus permitting the state of clocking signal CLKS to be controlled by timing signal T4. The storing of the possible next ROS address in stored ROS address register 205 at the end of Time 4 is illustrated in FIG. 4 which shows that at the beginning of Time 1 of the second microinstruction cycle, the possible next ROS address, signal PNXROSA, is clocked into stored ROS address register 205 resulting in the store next ROS address signal SNXROSA pointing to location A in the control store.

The next ROS address output by multiplexer 207 on lines 208 is latched into ROS address register 209 by clocking signal T2 at its clock (C) input. ROS address register 209 is a transparent type latch which enables its inputs onto its outputs during the time that the clocking signal is in the binary ONE state and latches the inputs onto the outputs when the clocking signal transitions from the binary ONE to the binary ZERO state. This is illustrated in FIG. 4 which shows that during the first miroinstruction cycle the ROS address signal ROSADDR points to location A within the control store during Times 3 and 4 of cycle 1 and Time 1 of cycle 2. FIG. 4 shows that the ROS address is indeterminate during Time 2 and that the inputs are latched onto the outputs at the end of Time 2.

The 14-bit ROS address ROSADDR on lines 102 is input to the address inputs of microprocessor ROS 109 to address one of the 16K locations within the control store. This 14-bit ROS address is also presented to the other portions of the control store, which are the virtual memory ROS 111, the glue logic ROS 113, and the cache ROS 115, which are illustrated in FIG. 1 but are not shown in FIG. 2. These ROS's are always read enabled by the write enable (WE) input being in the binary ZERO state as is shown for microprocessors ROS 109 in FIG. 2. After the ROS address has been established at the address inputs of microprocessor ROS 109 for a sufficient period of time to allow the ROS to read out the addressed location, the corresponding data becomes available at the data outputs of the various ROS's, and in particular, 67 bits of ROS data become available on lines 104 as signal MPROSDT. FIG. 4 shows that the contents of the address microinstruction location becomes available sometimes during Time 4 and remains available during Time 1. The output of inverter 237 is connected to the clock (C) input of ROS data register 201 which is a D-type register. When timing signal T4 at the input of inverter 237 becomes a binary ZERO, its output becomes a binary ONE and clocks ROS data register 201. Thus, it can be seen in FIG. 4 that at the end of Time 4, the 67-bit output signal on lines 202, which is signal RDROUT, will be set equal to the signal MPROSTD, which is at the input of ROS data register 201. Thus, during the second microinstruction cycle in FIG. 4, signal RDROUT contains the contents of location A of the control store and the address of location A was presented to the address inputs of the control store during the previous microinstruction cycle. Thus, it can be seen that microprocessor 101 generates the address of the next microinstruction during the time that it is executing a current microinstruction.

The method by which a control store read error is detected and by which the execution of a microinstruction is cancelled during a retry will now be discussed with reference to FIGS. 2 and 3 and the timing diagram of FIG. 4. In FIG. 2, parity calculator 117 calculates the parity of the 67 bits of the microinstruction read from microprocessor ROS 109 by receiving as inputs signal RDROUT from lines 202. Parity calculator 117 calculates the parity by performing an exclusive OR of the 67 bits and produces as output signal MPROSPB on line 118 which will be in the binary ONE state if there are an odd number of binary ONEs in the 67 bits of ROS data and in the binary ZERO state if there are an even number of binary ONEs in the 67 bits of ROS data. In FIG. 1, parity calculator 119 performs a similar parity calculation on the 16 bits of ROS data from virtual memory ROS 111 and produces parity signal VMROSPB on line 120. Parity calculator 123 in cache 107 performs a similar parity calculation on the 16 bits of ROS data from cache ROS 115 and produces parity signal CHROSPB on line 124.

Signal MPROSPB on line 118, signal CHROSPB on line 124 and signal VMROSPB on line 120, along with signal TRAPAA on line 350 are inputs to parity register 301 as shown in FIG. 3. Parity register 301 is a D-type register which is clocked when timing signal T2 at its clock (C) input transitions from the binary ZERO to the binary ONE state at the beginning of Time 2. The outputs of parity register 301 are enabled by the function (F) input being held at a binary ZERO. Therefore, at the beginning of each Time 2, parity register 301 captures the status of its four input signals, three of which are signals which are functions of the parity of that portion of the microinstruction word from the control store which is used by its associated logic. Signals MPROSPAR on line 354, CHROSPAR on line 356 and MVROSPAR on line 357 at the Q1, Q2 and Q3 outputs of parity register 301 and which correspond to inputs signals MPROSPB, CHROSPB and VMROSPB at the D1, D2 and D3 inputs, respectively, are used as inputs to parity generator 305. The other inputs to parity generator 305 are the signals output by ROS data register 303.

ROS data register 303 is a D-type register which clocks the data (D) inputs onto the outputs (Q) when the signal at the clock (C) inputs transitions from the binary ZERO to the binary ONE state. ROS data register 303 performs a function similar to that of ROS data register 201 in microprocessor 101 in that ROS data register 303 is used to hold the microinstruction bits associated with glue logic 105. These bits are signal GLROSDT0 through GSROSDT3 on lines 108A through 108D and overall microinstruction parity bit ROSPRTY on line 110. In addition, a set cancel next control signal SETCNXT on line 372 is held in ROS data register 303. These input signals produce the corresponding output signals GLROSD0 through GLROSD3, ROSPART and CANNXT on lines 360, 362, 364 366, 368 and 370, respectively. These signals which are input to parity generator 305 correspond to the four bits of the microinstruction from glue logic ROS 113 which are used to control glue logic 105 and the overall microinstruction parity bit which is used to make the number of binary ONE bits within a 104-bit microinstruction an odd number. Signal SETCNXT which produces signal CANNXT is normally in the binary ZERO state and therefore does not affect the outcome of the parity generation calculation and check, but can be used by the system to force the cancelling and retry of a microinstru