Variable speed cycle time for synchronous machines
This is a continuation of Ser. No. 161,987, filed June 23, 1980. 
    
    
     BACKGROUND OF THE INVENTION 
     The present invention relates generally to circuits for controlling sequential machines and relates more specifically to variable speed, synchronous, digital clocks. 
     Most sequential machines are controlled by clocks having a period which is fixed for each function to be performed. The normal design practice is to select a clock period sufficient for execution time using the worst case input conditions. This means that the function is performed at a fixed speed. This is particularly disadvantageous for machines having variable length operands. Either the length of operands must be limited to a narrow range or each execution of a function must proceed at no faster than the worst case execution time. 
     SUMMARY OF THE INVENTION 
     The present invention is used to provide a variable but synchronous cycle time for certain processing functions whose execution time is determined by its input quantities. A delay register is loaded with a quantity determined by the input quantities for a given, variable execution time function. The cycle is divided into variable and fixed length sequences. During the variable length sequences, a delay counter is loaded with the contents of the delay register. The delay counter is incremented using the master system clock. The delay counter overflow determines the end of the variable length sequences. The delay counter carry output is used to signal the end of the variable length sequences. Because the delay counter is a synchronous counter (i.e., clock by the master system clock), the variable length sequences will always be synchronous (i.e., a proper multiple of the master clock period). 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIG. 1 shows a block diagram of the High Speed Search Function (HSSF) in an outboard configuration. 
     FIG. 2 shows a block diagram of the HSSF in an inboard configuration. 
     FIG. 3 shows the functions of the HSSF. 
     FIG. 4 shows a block diagram of the HSSF. 
     FIG. 5 shows a block diagram of CONTROLLER 200. 
     FIG. 6 shows execution time of the HSSF as a function of the input quantities. 
     FIG. 7 shows a block diagram of SEQUENCER 260. 
     FIG. 8 shows a block diagram of the preferred embodiment of the present invention. 
     FIG. 9 shows the timing of the preferred embodiment of the present invention. 
     FIG. 10 shows the detailed construction of DELAY REG 264. 
     FIG. 11 shows the detailed construction of the control circuitry for DELAY COUNTER 2650. 
     FIG. 12 shows DELAY COUNTER 2650 and SEQUENCER TIMING CHAIN 2653. 
     FIG. 13 shows the increment as a function of the number of operands in Boolean Expression. 
     FIG. 14 shows the increment as a function of the Maximum Field Width. 
     FIG. 15 shows the cycle time as a function of total increment. 
    
    
     DESCRIPTION OF THE PREFERRED EMBODIMENT 
     The preferred embodiment is employed in the High Speed Search Function (HSSF) product of the assignee of this invention. Those skilled in the art will readily see the application of the present invention to other synchronous machines. 
     Below is a brief description of the HSSF used to disclose the present invention. Should the reader desire a more detailed description, copending U.S. patent applications entitled, High Speed Data Base Search System, Ser. No. 161,993, and Variable Search Criteria, Ser. No. 161,983, should be consulted. 
     The HSSF is a special purpose processor used to efficiently perform complex searches within a data base. The HSSF is loaded by the host processor with the search criteria and the data base to be searched. The HSSF performs the programmed function asynchronous to the host processor and notifies the host processor upon completion. FIG. 1 shows the HSSF in an outboard configuration. COMPUTER 10 is the host processor. The HSSF is employed in a stand-alone mode and communicates with COMPUTER 10 via Input/Output cable 11. In this outboard configuration, COMPUTER 10 handles HSSF 100 as if it were a peripheral device. 
     FIG. 2 shows HSSF 100 in an inboard configuration. HSSF 100 is a part of COMPUTER 20. HSSF 100 communicates with PROCESSOR 21 and 22, I/O 24, and MEMORY 25 via INTERNAL BUS 23. This is the preferred mode for most applications, since INTERNAL BUS 23 typically permits faster communication than INPUT/OUTPUT Cable 11 (see also FIG. 1). 
     FIG. 3 shows the overall operation of HSSF 100. DATA BASE MEMORY 40 is loaded under Command from the host processor with the data base to be searched. FIELD FORMAT REGISTER 43 is loaded to describe the length of each of the fields within each record in the data base. Notice that this feature makes HSSF very flexible in that a given field may be one or many bytes in length. This feature also requires a variable cycle time, such searches of very large fields cause delays in propagating carries whereas only small delays are encountered for small fields. 
     REFERENCE WORD 1 42 and REFERENCE WORD 2 41 are each one record in length and are formatted in the same way (i.e., described by FIELD FORMAT REGISTER 43) as the data base in DATA BASE MEMORY 40. Two reference words are used for a &#34;range compare&#34; (e.g., within bounds of two references, without bounds of two references, etc.). Only REFERENCE WORD 1 42 is used for &#34;normal&#34; compares (e.g., less than, equal, greater than, reference). 
     COMPARATORS 46 compare each field (as defined in FIELD FORMAT REGISTER 43) of the reference words to the corresponding fields of each record from DATA BASE MEMORY 40. The resultant output of COMPARATOR 46 consists of less than, equal, and greater than indications for each field. FIELD COMPARISON REGISTER 44 is loaded with a field-by-field description of the search criteria (i.e., which fields should be less than, which fields should be equal, and which fields should be greater than). EQUAL TEST 47 makes a field-by-field determination of whether a comparison matches (i.e., is true) or does not match (i.e., is false) the corresponding search criterion. 
     BOOLEAN FLAG MEMORY 48 stores the True/False indications on a field-by-field basis. BOOLEAN EXPRESSION 45 is also supplied by the host processor. It defines the logical relationships of the field-by-field True/False indications which produce search &#34;hits and misses.&#34; The logical computation is performed by BOOLEAN EVALUATOR 49. The number of terms in BOOLEAN EXPRESSION 45 may be many or few depending upon the search task to be performed. BOOLEAN EVALUATOR 49 requires an increasing amount of time as the number of terms is increased. BOOLEAN EVALUATOR 49 produces a simple HIT/MISS Output which is correlated with the record number (or address of the record in DATA BASE MEMORY 40). This correlation permits identification of hits (or misses). 
     FIG. 4 shows a block diagram of HSSF 100. HSSF BUS 101 provides the communication path between CONTROLLER 200 and COMPARE ARRAY 300, . . . , 301, . . . ,302, . . . , and 303. COMPARE ARRAY 300 contains 128 bits×1,000 addressable locations of the DATA BASE MEMORY 40. For a larger record size, identical COPARE ARRAYS are added in the dimension of COMPARE ARRAY 302. The intention is to add sufficient COMPARE ARRAYS in that dimension to permit the maximum size record to be stored in a single addressable location. As more records are added to the data base, COMPARE ARRAYS are added in the dimension of COMPARE ARRAY 301. This provides sufficient addressable locations to store all records of the maximum size file in HSSF 100. Each COMPARE ARRAY contains all the logic to perform the actual comparisons. In the preferred embodiment, each COMPARE ARRAY is a separate, plug-in printed circuit module. 
     CONTROLLER 200 contains all of the sequencing logic to control the COMPARE ARRAYS. CONTROLLER 200 communicates with the host processor via cable 102, INTERFACE. FIG. 5 shows a block diagram of CONTROLLER 200. INTERFACE LOGIC 220 is the only element which changes from the outboard to the inboard configuration. The microprogrammed controller, MPC 240, provides the control for INTERFACE LOGIC 220. SEQUENCER 260 contains the circuitry which controls the COMPARE ARRAYS&#39;s via HSSF BUS 101. MPC BUS 103 supplies the communication path amongst INTERFACE LOGIC 220, MPC 240, and SEQUENCER 260. 
     FIG. 6 shows the time required to perform a normal (i.e., single reference word) search of one record as a function of Maximum Field Width (i.e., field having the greatest number of bytes) and the number of Operands in the Boolean Expression. All times shown are in microseconds. Notice that to use only a fixed length cycle would force a very long cycle time (i.e., 4.75 microseconds), a small maximum field width (1-11 bytes) and small number of operands (1-10) in the Boolean Expression, or a compromise somewhere in between. 
     FIG. 7 shows a block diagram of SEQUENCER 260. As stated above, SEQUENCER 260 controls the operation of the COMPARE ARRAYS. The Memory Data Register has an input circuit (i.e., MDRIU 270 and MDRIL 271) and an output circuit (i.e., MDROU 268 and MDROL 269). The Memory Data Register supplies the primary interface between MPC BUS 103 and HSSF BUS 101 for loading the COMPARE ARRAY&#39;s CLOCK 276 provides overall synchronization within the HSSF 100. BOOLEAN EVALUATOR MEMORY 261 is wherein the Boolean Evaluation is performed. 
     Of most concern to present invention are DELAY REG 264 and RD/WR/SEARCH SEQUENCER 265. DELAY REG 264 is loaded from MPC BUS 103 with an eight bit byte. FIG. 6 shows that only 16 different timing values are required (i.e., from 1.0 to 4.75 microseconds in 0.25 microsecond increments). Therefore, only four bits of DELAY REG 264 are required to specify the 16 different cycle times. Referring again to FIG. 7, DELAY REG 264 is loaded from MPC BUS 103. RD/WR/SEARCH SEQUENCER 265 determines the actual cycle time for a given search. 
     FIG. 8 shows the circuitry which determines the variable cycle time. DELAY REG 264 receives an eight bit quantity from MPC BUS 103. As explained above only four bits are required to specify the 16 different cycle times available. This four bit quantity is determined by MPC 240 and transferred to DELAY REG 264. To determine the four bit quantity, MPC 240 adds a first increment based upon the number of Operands in the Boolean Expression to a second increment representing the Maximum Field Width. FIG. 13 shows the value of the first increment based upon the number of Operands in the Boolean Expression. FIG. 14 shows the second increment as a function of the Maximum Field Width. MPC 240 computes these two increments from the search parameters supplied by the host processor, and stores the compliment of the larger of the two increments in DELAY REG 264. 
     Referring again to FIG. 8, DELAY COUNTER 2650 is loaded with the contents of DELAY REG 264 whenever signal LD DEL CNTR (i.e., low) is received from gate 2648. This signal is generated whenever signal INIT SEQ (i.e., high) is received or signal END CYCLE (i.e., high) is received from SEQUENCER TIMING CHAIN 2653. Once loaded, DELAY COUNTER 2650 is incremented by signal SYS CLK (i.e., system master clock) whenever enabled by gate 2649. Gate 2649 enables DELAY COUNTER 2650 for counting whenever JK Flip Flop, SEQ ACT 2674, is set and output Co of DELAY COUNTER 2650 is low (i.e., Signal ENA SEQ not present). 
     DELAY COUNTER 2650, after being loaded and enabled, synchronously counts until overflow (i.e. 17 8 ) making output Co high. DELAY COUNTER 2650 is no longer incremented and SEQUENCER TIMING CHAIN 2653 is enabled (i.e., has a high on input E). SEQUENCER TIMING CHAIN 2653, after being enabled, supplies the SEQUENCER CONTROL SIGNALS which represent the fixed length portion of the cycle. 
     FIG. 9 shows the key timing relationships. The Cycle Time is divided into the variable length time, called DELAY TIME, and the fixed length time, called SEQUENCE TIME. The master system clock, in the preferred embodiment is a four mhz clock having a period of 0.25 microseconds. The contents of DELAY COUNTER 2650 are shown. FIG. 15 shows the relationship between the contents of DELAY REG 264 and the total cycle time. Notice that SEQUENCE TIME is fixed at 1.0 microsecond. 
     FIG. 10 shows the detailed construction of DELAY REG 264. In the preferred embodiment, OCTAL D--TYPE FF 2635 is industry standard part 54LS273. FIG. 11 shows the detailed construction of SEQ ACT 2674 which is a JK Flip Flop of part type 54LS412. FIG. 12 shows DELAY COUNTER 2650 and SEQUENCER TIMING CHAIN 2653. Notice that each is implemented using a standard 4-BIT Synchronous Counter type 54LS161. 
     The preferred embodiment of the present invention is disclosed as implemented within the High Speed Search Function product. Those skilled in this art will be able to readily apply this invention to other synchronous machines.