CA1321653C - Programmable priority branch circuit - Google Patents
Programmable priority branch circuitInfo
- Publication number
- CA1321653C CA1321653C CA000609857A CA609857A CA1321653C CA 1321653 C CA1321653 C CA 1321653C CA 000609857 A CA000609857 A CA 000609857A CA 609857 A CA609857 A CA 609857A CA 1321653 C CA1321653 C CA 1321653C
- Authority
- CA
- Canada
- Prior art keywords
- priority
- branch
- parameters
- address
- bit
- 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.)
- Expired - Fee Related
Links
- 238000012545 processing Methods 0.000 claims abstract description 27
- 230000006870 function Effects 0.000 claims description 13
- 238000000034 method Methods 0.000 claims description 12
- 230000009471 action Effects 0.000 claims description 6
- 230000004044 response Effects 0.000 claims description 6
- 230000003750 conditioning effect Effects 0.000 claims 1
- 230000007246 mechanism Effects 0.000 description 17
- 238000004891 communication Methods 0.000 description 7
- 230000006854 communication Effects 0.000 description 7
- 230000008569 process Effects 0.000 description 6
- 238000012546 transfer Methods 0.000 description 6
- 230000008901 benefit Effects 0.000 description 3
- 238000011156 evaluation Methods 0.000 description 3
- 238000007792 addition Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000007613 environmental effect Effects 0.000 description 2
- 101100406879 Neurospora crassa (strain ATCC 24698 / 74-OR23-1A / CBS 708.71 / DSM 1257 / FGSC 987) par-2 gene Proteins 0.000 description 1
- 238000010420 art technique Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000009131 signaling function Effects 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30058—Conditional branch instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30094—Condition code generation, e.g. Carry, Zero flag
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
PROGRAMMABLE PRIORITY BRANCH CIRCUIT
ABSTRACT
A special purpose circuit unit, responsive to a special BBD instruction, provides for more efficient execution of program branches required in poll and test type routines used by data process-ors. This unit can easily be added to almost any contemporary processing system to speed up perform-ance of priority branch operations. It includes:
a stack of registers loadable with branch addresses designating locations of branch target instruct-ions, an input register for holding bits repres-enting branch conditions accessible from immediate (programmable) storage, and a programmable priority encoder responsive to the BBD instruction to select an address from the stack in accordance with the position in the input register of a highest prior-ity one of the bits representing an active request for instruction branching. The selected address is used to fetch an instruction representing the start of a program segment for attending to the selected branch condition. Contents of the branch address stack are alterable by program to allow for varying selections of branch routines to fulfill conditions denotable by different sets of bits loadable into the input register. The priority encoder includes a stack of selection control registers which are also loadable by programs, to allow for variability in the priority ordering accorded to the bit positions of the input register. By dynamically loading information into the branch address and priority selection stacks, subject BBD unit can be shared dynamically for resolving sequence branching relative to multiple different classes of condit-ions or events depending on system requirements.
The unit is configurable to execute its priority and branch address selection operations together in a single clock cycle of the system. In pipelined systems, the BBD function can be conveniently accommodated in parallel with other system funct-ions.
ABSTRACT
A special purpose circuit unit, responsive to a special BBD instruction, provides for more efficient execution of program branches required in poll and test type routines used by data process-ors. This unit can easily be added to almost any contemporary processing system to speed up perform-ance of priority branch operations. It includes:
a stack of registers loadable with branch addresses designating locations of branch target instruct-ions, an input register for holding bits repres-enting branch conditions accessible from immediate (programmable) storage, and a programmable priority encoder responsive to the BBD instruction to select an address from the stack in accordance with the position in the input register of a highest prior-ity one of the bits representing an active request for instruction branching. The selected address is used to fetch an instruction representing the start of a program segment for attending to the selected branch condition. Contents of the branch address stack are alterable by program to allow for varying selections of branch routines to fulfill conditions denotable by different sets of bits loadable into the input register. The priority encoder includes a stack of selection control registers which are also loadable by programs, to allow for variability in the priority ordering accorded to the bit positions of the input register. By dynamically loading information into the branch address and priority selection stacks, subject BBD unit can be shared dynamically for resolving sequence branching relative to multiple different classes of condit-ions or events depending on system requirements.
The unit is configurable to execute its priority and branch address selection operations together in a single clock cycle of the system. In pipelined systems, the BBD function can be conveniently accommodated in parallel with other system funct-ions.
Description
BACKGROUND OF INVENTION
Related Patent U.S. Patent No. 4,991,133, issued February 5, 1991, by B. D. Mandalia et al, disclose~ a processor that provides structures and instructions dedicated for efficient processing of header and frame information parameters in all levels of todays layered protocols;
e.g. parameters characteristic of Open Systems Interconnection (OSI) protocols.
Field of Invention The field of invention is computer architecture with emphasis to branch processing. Microprocessor technology for real time programming environments is considered an environmental basis for this architecture.
Prior art Priority branching methods have been used for interrupt mechanisms. U.S. Patents 4,636,944, ,~
4,315,314 and 4,573,118 disclose such usage, and indicate recognition of the importance of using priority branching to reduce processir.g time for scanning and polling interrupt requests. However, these do not address key issues of process branchi~
ng for which the present invention has been dev-ised.
Where the art provides for priority branching only on fixed parameters such as interrupt bits, the present invention provides for branching on variable branch condition or status parameters selectable by program instructions.
Where the art provides for priority branching only in a fixed priority ordering of active para-meters, the present invention provides for varied priority ordering which the user can set by prog-ramming.
Where the art provides a fixed relation between branch condition parameters and associated target addresses of instructions to be branched to, the present invention provides for user-variable associations between branch condition parameters and addresses of target instructions (also referred to hereafter as branch addresses).
SUMMARY OF INVENTION
_ _ .
The present invention provides a mechanism for executing priority branch on bit detection (BBD) operations, in response to a newly defined BBD
instruction. In such operations, a set of status bits representing branch condition parameters is evaluated to ascertain which currently represent active conditions requiring branch program action, and of the latter which should be given priority.
The output of this mechanism is a branch address representing the starting instruction of a branch program segment associated with the selected status bit.
Features of the priority selection process and associated circuitry embodied in the present invention are their accessibility to user program variation. Registers determining relative prior-ities of the status bits are dynamically loadable, under user proqram control, with different patterns of priority selection codes, and registers present-ing the status bits to be evaluated are also loadable under program control. Thus, a single BBD
circuit unit may be shared dynamically by multiple sets of status functions. Furthermore, as condit-ions vary in relation to a given set of status bits currently presented for evaluation, or as different sets of status bits are presented for evaluation, contents of the registers determining priority ordering can be suitably varied.
Another feature hereof is that branch addr-esses which are selectable as the ultimate output of such BBD circuitry are stored in a stack of registers which are also accessible to dynamic change by user programs. Thus, as conditions associated with a given set of status bits change, or as a new set of status bits is presented for evaluation, a suitable associated set of branch target addresses can be loaded.
A feature of one disclosed embodiment is that the registers for holding branch addresses and priority selection information may be extended in capacity to hold plural sets of respective par2 meters associatable with plural sets of status bit functions. Thus, the frequency of register loading operations required to adapt to different cond-itions can be reduced.
Another feature of a presently disclosed embodiment of the invention is that it reduces the normally complex series of operations associated with priority branching to a simple operation executable in a single clock cycle (machine cycle) of the system in which it is used.
Another feature is that registers holding priority determining functions and address inform~
ation are arranged for access in direct one-to-one correspondence with individual status bits, so that the number of registers needed is considerably less than would be required if the status bits were to be used in combination to address registers in a table lookup mode.
These and other advantages, features and benefits of the invention will be more fully understood as this description progresses.
It is also an aim of this invention to provide for priority branch on bit circuitry to be arranged in a manner to facilitate execution of the complete priority branch operation (including priority selection and address selection action elements) in a single clock cycle of the associated data proc-essing system, whereby such operations when fre-quently encountered in a processing system can be performed at enhanced throughput rates.
BRIEF DESCRIPTION OF DRAWINGS
Figure 1 illustrates a Communications Protocol Processor for layered protocol processing (refer-ence BC9-88-008 above) in which the present inven-tion can be used to advantage.
Figure 2 illustrates a prior art technique for parallelism and pipelining to speed up processing.
Figure 3 illustrates the communication envir-onment in which the CPP is expected to operate.
Figure 4 illustrates a header processing unit of the CPP in which the present invention is used as a component circuit.
Figure 5 illustrates the branch on priority bit detect processing unit in the CPP which rep-resents one embodiment of the present invention.
Figure 6 illustrates a programmable priority address circuit for use in the branch on bit detect unit of Figure 5.
Figure 7 illustrates use of multi-segment stacks in the subject branch on bit detect unit.
Figure 8 illustrates address generation for a register stack useful in the subject unit.
Figure 9 illustrates a stack useful in the subject unit and its access decode mechanism.
Figure 10 illustrates a mechanism for ident-ifying and encoding the highest priority input bit using discrete logic.
DESCRIPTION OF PREFERRED EMBODIMENT
OVERALL PROCESSOR ARCHITECTURE
As environmental background, Figure 1 shows the overall architecture of a communications protocol processor (CPP) in which the subject invention can be used beneficially. The CPP
contains both special purpose circuits geared towards increasing throughput for certain complex and frequently encountered operations, and general purpose circuits including a more or less convent-ional ALU (arithmetic logic circuit). The special purpose circuits include a branch on bit detect (BBD) circuit constructed in accordance with the present invention.
In respect to general purpose circuits, ALU
unit 1 supports basic arithmetic operations (ADD, SUBTRACT, COMPARE), logical operations (OR, AND, XOR), and register transfer operations. Multiplier unit (MUL) 2, operating in coordination with the ALU, supports 16 by 16 multiplication with scaling and rounding functions.
Memory access unit 3, header processing unit 4, and frame processing unit 5 provide special purpose operations. Of particular interest pres~
ently is a portion of the header processing unit providing BBD (Branch On Bit Detect) operations.
Other CPP elements include a general purpose data register stack 6, and an address index reg ister stack 7. These comprise portions of internal variably allocatable storage that can be used as input and output for processing units 1-5 using control bus 12 and data bus 13.
Control Unit 8, containing elements 8.1-8.7 shown in the lower portion of Figure 1, controls and monitors operation execution. Instruction register 8.1 receives instructions from instruction memory (IRAM) shown elsewhere via instruction data bus 17. Instruction operation codes (opcodes) in the instruction register are gated to decoder 8.2 which generates control signals to units 1-5 through control bus 12 and provides immediate data or address information via data bus 13. System clock 8.3 provides timed control signals to the other elements. Fetch controls 8.4 at clocked intervals direct instruction fetching action relative to IRAM. Data bus 13 consists of a multiplicity of bidirectional data paths allowing for parallel transfer of data between register stacks 6 and 7 and process units 1-5. Program counter 8.5 and next branch (or interrupt) control logic 8.6 generate next instruction addresses, one of which is selected by multiplexer 8.7 for applic-ation to IRAM via IRAM address bus 16. Data address (DA) bus 15 is used to connect memory access unit 3 to Data Ram (DRAM, also shown else_ where), for transfer of memory data via bus (GD) 13.
Parallel execution of operations designated by instructions is possible using pipelining tech-niques suggested at 20 and 21 in Figure 2. While instruction 'n' is being executed next instruction 'n+1' is being decoded and its next instruction 'n+2' is being fetched as shown at 20. In addit-ion, if three operations are called for by one instruction, their decoding and execution may be performed in parallel as suggested at 21. Bus transfer mechanisms and pipelining techniques for such operations are well known and described in "additional references" (1), (3), and (4) above.
Figure 3 illustrates a typical application environment for the CPP, the latter shown at 31 in this Figure. Data Ram 32 (also termed DRAM) interfaces with multiplexor and input/output interface 33 to exchange data with physical comm-unication interface 34. Instruction Ram 35 (IRAM) stores instructions of application programs that the CPP supports and allows dynamic execution of functions required at interface 34. Host interface 36 provides a systematic handshake for flow of data and control commands to and from a host processing system. Block 37 represents layered protocol applications and signal processing functions which can be integrally accommodated in this environment.
Header Processinq Unit Figure 4 depicts components of header process unit 4 which perform unique operations on packet header parameters in each protocol layer. The subject of the present invention, branch on pri-ority bit detect (BBD) unit 60, performs priority branch on bit detect operations relative to comm-unication status bit parameters contained in headers within each protocol layer. This mechanism performs its operation of priority bit selection and target address retrieval in a single CPP
machine cycle, thereby enhancing throughput rel~
ative to high speed communication media. However, the same mechanism and its underlying method of operation are considered universally applicable to other processing systems and applications; as should be more fully appreciated from the following description.
Other special purpose units within header process unit 4 include register reshape unit 61, for rearranging registered header data to extract parameters related to the registered data but by known transformations, and address routing unit 62 for translating header address information for message routing purposes. These units and the CPP overall structure are more fully described in the above mentioned U.S. Patent No. 4,991,133, and the remainder of this description will focus primarily on the structure and operation of the sub;ect BBD unit 60.
In response to a special BBD instruction discussed later, BBD unit 60 evaluates multiple status bits and selects a target branch address associated with one of the bits. The bits represent conditions which are either active or inactive and which when active require special action via branch program segments. The bits representing active conditions are evaluated in a predetermined order of priority and the target address selected is one associated with the bit having highest priority.
The BBD Instruction_Circuit A circuit embodying general characteristics of the unit 60 is shown in Figure 5. Since it performs its priority branch address selection operation in response to BBD instructions, this circuit is called the BBD
Instruction Execution Circuit. Information in input latch 80 is processed for priority bit branching to a destination address using priority address mechanism 81, output of which is transferred to output register 82. Stack ,~, ~J, . :
initialize register 83 is used to initialize branch address stack elements (shown elsewhere) in pri-ority address mechanism 81. Decoders 84 and 85, responsive to a BBD instruction opcode on control bus 12, generate signals for gating priority branch status bits in input latch 80 to priority address mechanism 81 and also to latch the branch address extracted from the priority address mechanism to branch address register 82. Decoder 84 responsive to a register transfer operation via data bus 13 generates a signal to load stack initialize reg-ister 83. Thus, the contents of the branch address stack are alterable by programming to adjust the branch address selections to associate variably to the status bits in latch 80.
Figure 6 is a schematic showing of principal block elements of the priority mechanism 81 of Figure 5. Such elements include a priority select register stack 102 within a priority encoding unit 103, and a branch address register stack 104 within associated access decode mechanism 104. Both register stacks 102 and 104 are loadable with new information by programmed register loading oper-ations conducted through bus 107.
Acting in response to BBD instructions, unit-103 selects a priority designating code value from one of the registers in stack 102 and applies it as an addressing input to stack 104, whereby a sel-ected branch address is transferred to output register 82. The input latch bits are applied individually to different registers in stack 102, and the bits representing active branch request conditions gate out contents of respective reg-isters in the stack. The operation of unit 103 effectively compares the magnitudes of the values gated out from stack 102, such values effectively denoting the relative priorities of respective input latch bits, and selects as access input to stack 104 the value with highest magnitude. Thus, the branch address selected from stack 104 corres-ponds to a currently active highest priority bit in BC9~88-009 1 3 2 1 6 5 3 latches 80. Since the contents of stack 102 are loadable by programming, it should be understood that the relative priorities accorded to the input latch bits are correspondingly variable.
Furthermore, since the contents of registers 104 are alterable by programming, it will be understood that associations between bits in latches 80 and branch addresses extractable by mechanism 105 are correspondingly variable.
Another feature of the circuit composed of units 103 and 105 is that it can be easily arranged to complete its entire operation of priority determination and branch address extraction in a single "machine" or clocking cycle of the processing system in which it is used. As a result, frequently encountered complex branch on bit detect operations can be rapidly performed and thereby improve system throughput. This is particularly beneficial in processing systems interfacing to high speed communication media, as described in the above mentioned U.S. Patent No.
4,991,133.
Yet another feature of the mechanism 81, illustrated in Figure 7, is that the stacks 102 and 104 can be enlarged to segmented stacks 110 and 111, respectively, in order to allow for preloading segments of such stacks simultaneously with priority determination information and/or branch address information associated with multiple sets of conditions or events represented by the bits presented in input latches 80 (Fig. 5). Thus, differently coded BBD
instructions designating individual stack segments can be execu-ted repeatedly to evoke actions associated with different sets of branching associations, without having to reload the stacks between repetitions.
Figure 7 shows how the priority selection stack 110 and branch address stack 111 may be segmented to accommodate multiple sets of different respective data types. Figure 8 shows logic 112 for accessing such stack segments, wherein the desired segment is selectable by a data type code, and the branch address selection within the sel-ected branch stack segment is made by the output of the priority encoder. For this purpose, the data type code could be provided either as part of the instruction opcode or as part of the operand information accompanying or designated by the opcode. This may be predefined or coded within the instruction set, depending on resources of the instruction set. The width of the data type code (T) is dependent on the number of data type sea-ments desired (N), and defined by T=log2(N).
Figure 9 shows a mechanism to access the various stacks for initialization and direct execution of the BBD instruction. To initialize the branch address stack, decoder 118 processes signals from control bus 12 associated with rea-ister loading instructions, to load data from input bus 115 into appropriate registers 116. For read access from this stack, priority encoder 103, responsive to a BBD instruction, supplies a pri-ority encode address to 118 directing branch address data to data bus 13 via output p;ath 119.
In order to support multiple protocols, stack 116 may contain plural sets or sea,ments of branch address registers for relating different branching functions to conditions in input latch 80. As previously noted, this requires definition of different BBD instructions for branch on bit detection to different stack segments/protocols.
Implementation of a programmable priority encoder 103 is illustrated in Figure 10. A plur~
ality of bits from input latch 80 (Figure 6) labeled bits 1 through 16, serve as selection control inputs for the priority encoder. Each input bit has an associated priority register 120x;
where register 120a is associated with input bit 1, 120b with input bit 2, etc. Each priority register 120x may be initialized responsive to one or more register loading instructions of the processor, such as Data Move instructions (Register to Reg-ister or Memory to Register),or Load Immediate instructions. Multiple registers 120x may be initialized in parallel since the processor bus width will typically be wider than the length of a single priority register.
The purpose of initializing priority registers 120x is to set into each a unique priority code to associate under user program control with the condition represented by the respective bit from the input latch 80. Since there are 16 input bits in the example, 4 bits are required to assign each of these inputs a unique binary code number. In general, N bits are required in each priority encoder to handle 2 to the Nth power input bits.
Such programmably assigned N bit numbers in reg-isters 120x are evaluated by logic to which the register outputs couple in a manner such that of the numbers associated with input latch bits currently having active or ON states, the number with the largest binary magnitude will be selected for application to the selection input of the branch address stack, and thereby the selected branch will be associated with an input bit prog-rammably designated ~by system users or others) as having highest priority.
Once the priority registers 120x, the address register stack (not shown), and the input latch 80 (supplying input bits 1-16), have been loaded, the circuit is ready to execute the priority branch BBD
instruction. In doing so, the array of logic gates shown in Figure 10 will determine which of all the input bits which are "ON" is associated with a priority number with largest relative magnitude.
This number is gated to outputs P0, P1, P2, and P3 (P3 being the most significant bit) which are used to address the register stack 116 (Figure 9) in order to select an associated branch address.
More specifically, operation of the array of gates proceeds as follows. Each active or "ON"
input in the set of input bits 1-16 from latches 80 enables the four-bit output 121x of the associated priority register 120x to be transferred to the associated row of gates 122x - 127x. Input bits which are inactive or "OFF" will force outputs of associated priority registers to be all zeroes or "OFF". Outputs from priority registers 120x are compared by respective rows of gates, starting with the most significant bit.
OR gate 129a examines the most significant bits of the outputs of all priority registers 120x, and sets its output P3 "ON" if at least one of its inputs is "ON". If all inputs to this OR gate are OFF P3 is set OFF. P3 feeds back to Compare circuits 122x in each row (122a, 122b, 122c...), and causes further transfer of an ON condition through such compare circuits in each row where the most significant bit output from the respective register 120x is equal to the state of P3. Thus, if P3 is ON, then in each row where the highest order output of respective register 120x is ON, respect-ive compare circuit 122x will have its output ON, and in all other rows, the outputs of respective compare circuits 122x will be OFF. On the other hand, if P3 is OFF, then presumably all highest order outputs of 120x are OFF and all compare circuits 122x will have their outputs ON.
ON outputs from compare circuits 122x part-ially enable respective AND circuits 123x, having as other inputs next most significant bits out of respective registers 120x. Thus, in any rows where respective AND circuits 123x are partially enabled, outputs of such AND circuits will correspond to the states of the respective next most significant bits out of respective registers 120x. Outputs of AND
circuits 123x connect to OR circuit 129b which produces output digit P2, which couples back to compare circuits 124x in each row. Outputs of 124x enable respective AND circuits 125x which have as t321653 their other inputs third most significant digit outputs of respective registers 120x.
Outputs of AND circuits 125x couple to OR
circuit 129c producing third most significant result output digit P1. The latter operates through compare circuits 126x and respective AND
circuits 127x to evaluate respective least signif-icant bit outputs of registers 120x. Outputs of 127x couple to OR circuit 129d determining the least significant result output P0.
It may be appreciated that the combination of digits P0-P3 will have a value corresponding to largest magnitude value in the registers 120x, since in any position where the output digit Pj is 1 the next most significant digits in any row will be evaluated further only if the digit from 120x corresponding to the order of Pj is 1. In all other rows all lesser significant digits will have no further effect on the less significant digits Pi (i ~ j). Since no two registers 120x will be set with the same combination of bits, it follows that one and only one register output will determine the ultimate value of all four digits P0-P3, and that register output will be the one with the highest numerical value.
As mentioned previously, outputs P0 - P3 are used to address the branch address stack with an encoded address representing the priority number associated with a highest priority active input latch bit. This results in a one to one positional correspondence between addresses in the address stack and priority levels programmed into registers 120x. Alternately, outputs of circuits in Fig. 10 may be used to develop signals positionally associ-ated with input bits 1-16 for direct application to individual registers in the branch address stack, and such outputs when active would directly gate contents of the respective branch address registers to the stack output.
This arrangement would require addition to the row logic circuits of Fig. 10 of not-shown compare circuits 128x (positioned to the right of respect-ive And circuits 127x) for comparing least signif-icant bits in respective registers 120x with P0, and And circuits 129x responsive to outputs of all respective compare circuits 122x, 124x, 126x and 128x for producing respective control signals for direct application to respective register output gates in the branch stack.
Note also that the lowest priority bit, with associated number=0, results in the same branch as if no bits are set. Thus, as shown, only 15 unique branch bit conditions can be set. Simple logic can be added if needed to check for all zeros from input bits 1-16, and gate to the branch address stack an associated different register select signal function on occurrence of that condition; if 16 unique branch address selection functions are needed. A 16 bit NOR gate, providing an active output if all input bits are zero, could be used to degate the register corresponding to the lowest priority, even if P0 - P3 indicate it should be selected, and further used to select output of a not-shown 17th register within the Branch Address Register Stack.
Related Patent U.S. Patent No. 4,991,133, issued February 5, 1991, by B. D. Mandalia et al, disclose~ a processor that provides structures and instructions dedicated for efficient processing of header and frame information parameters in all levels of todays layered protocols;
e.g. parameters characteristic of Open Systems Interconnection (OSI) protocols.
Field of Invention The field of invention is computer architecture with emphasis to branch processing. Microprocessor technology for real time programming environments is considered an environmental basis for this architecture.
Prior art Priority branching methods have been used for interrupt mechanisms. U.S. Patents 4,636,944, ,~
4,315,314 and 4,573,118 disclose such usage, and indicate recognition of the importance of using priority branching to reduce processir.g time for scanning and polling interrupt requests. However, these do not address key issues of process branchi~
ng for which the present invention has been dev-ised.
Where the art provides for priority branching only on fixed parameters such as interrupt bits, the present invention provides for branching on variable branch condition or status parameters selectable by program instructions.
Where the art provides for priority branching only in a fixed priority ordering of active para-meters, the present invention provides for varied priority ordering which the user can set by prog-ramming.
Where the art provides a fixed relation between branch condition parameters and associated target addresses of instructions to be branched to, the present invention provides for user-variable associations between branch condition parameters and addresses of target instructions (also referred to hereafter as branch addresses).
SUMMARY OF INVENTION
_ _ .
The present invention provides a mechanism for executing priority branch on bit detection (BBD) operations, in response to a newly defined BBD
instruction. In such operations, a set of status bits representing branch condition parameters is evaluated to ascertain which currently represent active conditions requiring branch program action, and of the latter which should be given priority.
The output of this mechanism is a branch address representing the starting instruction of a branch program segment associated with the selected status bit.
Features of the priority selection process and associated circuitry embodied in the present invention are their accessibility to user program variation. Registers determining relative prior-ities of the status bits are dynamically loadable, under user proqram control, with different patterns of priority selection codes, and registers present-ing the status bits to be evaluated are also loadable under program control. Thus, a single BBD
circuit unit may be shared dynamically by multiple sets of status functions. Furthermore, as condit-ions vary in relation to a given set of status bits currently presented for evaluation, or as different sets of status bits are presented for evaluation, contents of the registers determining priority ordering can be suitably varied.
Another feature hereof is that branch addr-esses which are selectable as the ultimate output of such BBD circuitry are stored in a stack of registers which are also accessible to dynamic change by user programs. Thus, as conditions associated with a given set of status bits change, or as a new set of status bits is presented for evaluation, a suitable associated set of branch target addresses can be loaded.
A feature of one disclosed embodiment is that the registers for holding branch addresses and priority selection information may be extended in capacity to hold plural sets of respective par2 meters associatable with plural sets of status bit functions. Thus, the frequency of register loading operations required to adapt to different cond-itions can be reduced.
Another feature of a presently disclosed embodiment of the invention is that it reduces the normally complex series of operations associated with priority branching to a simple operation executable in a single clock cycle (machine cycle) of the system in which it is used.
Another feature is that registers holding priority determining functions and address inform~
ation are arranged for access in direct one-to-one correspondence with individual status bits, so that the number of registers needed is considerably less than would be required if the status bits were to be used in combination to address registers in a table lookup mode.
These and other advantages, features and benefits of the invention will be more fully understood as this description progresses.
It is also an aim of this invention to provide for priority branch on bit circuitry to be arranged in a manner to facilitate execution of the complete priority branch operation (including priority selection and address selection action elements) in a single clock cycle of the associated data proc-essing system, whereby such operations when fre-quently encountered in a processing system can be performed at enhanced throughput rates.
BRIEF DESCRIPTION OF DRAWINGS
Figure 1 illustrates a Communications Protocol Processor for layered protocol processing (refer-ence BC9-88-008 above) in which the present inven-tion can be used to advantage.
Figure 2 illustrates a prior art technique for parallelism and pipelining to speed up processing.
Figure 3 illustrates the communication envir-onment in which the CPP is expected to operate.
Figure 4 illustrates a header processing unit of the CPP in which the present invention is used as a component circuit.
Figure 5 illustrates the branch on priority bit detect processing unit in the CPP which rep-resents one embodiment of the present invention.
Figure 6 illustrates a programmable priority address circuit for use in the branch on bit detect unit of Figure 5.
Figure 7 illustrates use of multi-segment stacks in the subject branch on bit detect unit.
Figure 8 illustrates address generation for a register stack useful in the subject unit.
Figure 9 illustrates a stack useful in the subject unit and its access decode mechanism.
Figure 10 illustrates a mechanism for ident-ifying and encoding the highest priority input bit using discrete logic.
DESCRIPTION OF PREFERRED EMBODIMENT
OVERALL PROCESSOR ARCHITECTURE
As environmental background, Figure 1 shows the overall architecture of a communications protocol processor (CPP) in which the subject invention can be used beneficially. The CPP
contains both special purpose circuits geared towards increasing throughput for certain complex and frequently encountered operations, and general purpose circuits including a more or less convent-ional ALU (arithmetic logic circuit). The special purpose circuits include a branch on bit detect (BBD) circuit constructed in accordance with the present invention.
In respect to general purpose circuits, ALU
unit 1 supports basic arithmetic operations (ADD, SUBTRACT, COMPARE), logical operations (OR, AND, XOR), and register transfer operations. Multiplier unit (MUL) 2, operating in coordination with the ALU, supports 16 by 16 multiplication with scaling and rounding functions.
Memory access unit 3, header processing unit 4, and frame processing unit 5 provide special purpose operations. Of particular interest pres~
ently is a portion of the header processing unit providing BBD (Branch On Bit Detect) operations.
Other CPP elements include a general purpose data register stack 6, and an address index reg ister stack 7. These comprise portions of internal variably allocatable storage that can be used as input and output for processing units 1-5 using control bus 12 and data bus 13.
Control Unit 8, containing elements 8.1-8.7 shown in the lower portion of Figure 1, controls and monitors operation execution. Instruction register 8.1 receives instructions from instruction memory (IRAM) shown elsewhere via instruction data bus 17. Instruction operation codes (opcodes) in the instruction register are gated to decoder 8.2 which generates control signals to units 1-5 through control bus 12 and provides immediate data or address information via data bus 13. System clock 8.3 provides timed control signals to the other elements. Fetch controls 8.4 at clocked intervals direct instruction fetching action relative to IRAM. Data bus 13 consists of a multiplicity of bidirectional data paths allowing for parallel transfer of data between register stacks 6 and 7 and process units 1-5. Program counter 8.5 and next branch (or interrupt) control logic 8.6 generate next instruction addresses, one of which is selected by multiplexer 8.7 for applic-ation to IRAM via IRAM address bus 16. Data address (DA) bus 15 is used to connect memory access unit 3 to Data Ram (DRAM, also shown else_ where), for transfer of memory data via bus (GD) 13.
Parallel execution of operations designated by instructions is possible using pipelining tech-niques suggested at 20 and 21 in Figure 2. While instruction 'n' is being executed next instruction 'n+1' is being decoded and its next instruction 'n+2' is being fetched as shown at 20. In addit-ion, if three operations are called for by one instruction, their decoding and execution may be performed in parallel as suggested at 21. Bus transfer mechanisms and pipelining techniques for such operations are well known and described in "additional references" (1), (3), and (4) above.
Figure 3 illustrates a typical application environment for the CPP, the latter shown at 31 in this Figure. Data Ram 32 (also termed DRAM) interfaces with multiplexor and input/output interface 33 to exchange data with physical comm-unication interface 34. Instruction Ram 35 (IRAM) stores instructions of application programs that the CPP supports and allows dynamic execution of functions required at interface 34. Host interface 36 provides a systematic handshake for flow of data and control commands to and from a host processing system. Block 37 represents layered protocol applications and signal processing functions which can be integrally accommodated in this environment.
Header Processinq Unit Figure 4 depicts components of header process unit 4 which perform unique operations on packet header parameters in each protocol layer. The subject of the present invention, branch on pri-ority bit detect (BBD) unit 60, performs priority branch on bit detect operations relative to comm-unication status bit parameters contained in headers within each protocol layer. This mechanism performs its operation of priority bit selection and target address retrieval in a single CPP
machine cycle, thereby enhancing throughput rel~
ative to high speed communication media. However, the same mechanism and its underlying method of operation are considered universally applicable to other processing systems and applications; as should be more fully appreciated from the following description.
Other special purpose units within header process unit 4 include register reshape unit 61, for rearranging registered header data to extract parameters related to the registered data but by known transformations, and address routing unit 62 for translating header address information for message routing purposes. These units and the CPP overall structure are more fully described in the above mentioned U.S. Patent No. 4,991,133, and the remainder of this description will focus primarily on the structure and operation of the sub;ect BBD unit 60.
In response to a special BBD instruction discussed later, BBD unit 60 evaluates multiple status bits and selects a target branch address associated with one of the bits. The bits represent conditions which are either active or inactive and which when active require special action via branch program segments. The bits representing active conditions are evaluated in a predetermined order of priority and the target address selected is one associated with the bit having highest priority.
The BBD Instruction_Circuit A circuit embodying general characteristics of the unit 60 is shown in Figure 5. Since it performs its priority branch address selection operation in response to BBD instructions, this circuit is called the BBD
Instruction Execution Circuit. Information in input latch 80 is processed for priority bit branching to a destination address using priority address mechanism 81, output of which is transferred to output register 82. Stack ,~, ~J, . :
initialize register 83 is used to initialize branch address stack elements (shown elsewhere) in pri-ority address mechanism 81. Decoders 84 and 85, responsive to a BBD instruction opcode on control bus 12, generate signals for gating priority branch status bits in input latch 80 to priority address mechanism 81 and also to latch the branch address extracted from the priority address mechanism to branch address register 82. Decoder 84 responsive to a register transfer operation via data bus 13 generates a signal to load stack initialize reg-ister 83. Thus, the contents of the branch address stack are alterable by programming to adjust the branch address selections to associate variably to the status bits in latch 80.
Figure 6 is a schematic showing of principal block elements of the priority mechanism 81 of Figure 5. Such elements include a priority select register stack 102 within a priority encoding unit 103, and a branch address register stack 104 within associated access decode mechanism 104. Both register stacks 102 and 104 are loadable with new information by programmed register loading oper-ations conducted through bus 107.
Acting in response to BBD instructions, unit-103 selects a priority designating code value from one of the registers in stack 102 and applies it as an addressing input to stack 104, whereby a sel-ected branch address is transferred to output register 82. The input latch bits are applied individually to different registers in stack 102, and the bits representing active branch request conditions gate out contents of respective reg-isters in the stack. The operation of unit 103 effectively compares the magnitudes of the values gated out from stack 102, such values effectively denoting the relative priorities of respective input latch bits, and selects as access input to stack 104 the value with highest magnitude. Thus, the branch address selected from stack 104 corres-ponds to a currently active highest priority bit in BC9~88-009 1 3 2 1 6 5 3 latches 80. Since the contents of stack 102 are loadable by programming, it should be understood that the relative priorities accorded to the input latch bits are correspondingly variable.
Furthermore, since the contents of registers 104 are alterable by programming, it will be understood that associations between bits in latches 80 and branch addresses extractable by mechanism 105 are correspondingly variable.
Another feature of the circuit composed of units 103 and 105 is that it can be easily arranged to complete its entire operation of priority determination and branch address extraction in a single "machine" or clocking cycle of the processing system in which it is used. As a result, frequently encountered complex branch on bit detect operations can be rapidly performed and thereby improve system throughput. This is particularly beneficial in processing systems interfacing to high speed communication media, as described in the above mentioned U.S. Patent No.
4,991,133.
Yet another feature of the mechanism 81, illustrated in Figure 7, is that the stacks 102 and 104 can be enlarged to segmented stacks 110 and 111, respectively, in order to allow for preloading segments of such stacks simultaneously with priority determination information and/or branch address information associated with multiple sets of conditions or events represented by the bits presented in input latches 80 (Fig. 5). Thus, differently coded BBD
instructions designating individual stack segments can be execu-ted repeatedly to evoke actions associated with different sets of branching associations, without having to reload the stacks between repetitions.
Figure 7 shows how the priority selection stack 110 and branch address stack 111 may be segmented to accommodate multiple sets of different respective data types. Figure 8 shows logic 112 for accessing such stack segments, wherein the desired segment is selectable by a data type code, and the branch address selection within the sel-ected branch stack segment is made by the output of the priority encoder. For this purpose, the data type code could be provided either as part of the instruction opcode or as part of the operand information accompanying or designated by the opcode. This may be predefined or coded within the instruction set, depending on resources of the instruction set. The width of the data type code (T) is dependent on the number of data type sea-ments desired (N), and defined by T=log2(N).
Figure 9 shows a mechanism to access the various stacks for initialization and direct execution of the BBD instruction. To initialize the branch address stack, decoder 118 processes signals from control bus 12 associated with rea-ister loading instructions, to load data from input bus 115 into appropriate registers 116. For read access from this stack, priority encoder 103, responsive to a BBD instruction, supplies a pri-ority encode address to 118 directing branch address data to data bus 13 via output p;ath 119.
In order to support multiple protocols, stack 116 may contain plural sets or sea,ments of branch address registers for relating different branching functions to conditions in input latch 80. As previously noted, this requires definition of different BBD instructions for branch on bit detection to different stack segments/protocols.
Implementation of a programmable priority encoder 103 is illustrated in Figure 10. A plur~
ality of bits from input latch 80 (Figure 6) labeled bits 1 through 16, serve as selection control inputs for the priority encoder. Each input bit has an associated priority register 120x;
where register 120a is associated with input bit 1, 120b with input bit 2, etc. Each priority register 120x may be initialized responsive to one or more register loading instructions of the processor, such as Data Move instructions (Register to Reg-ister or Memory to Register),or Load Immediate instructions. Multiple registers 120x may be initialized in parallel since the processor bus width will typically be wider than the length of a single priority register.
The purpose of initializing priority registers 120x is to set into each a unique priority code to associate under user program control with the condition represented by the respective bit from the input latch 80. Since there are 16 input bits in the example, 4 bits are required to assign each of these inputs a unique binary code number. In general, N bits are required in each priority encoder to handle 2 to the Nth power input bits.
Such programmably assigned N bit numbers in reg-isters 120x are evaluated by logic to which the register outputs couple in a manner such that of the numbers associated with input latch bits currently having active or ON states, the number with the largest binary magnitude will be selected for application to the selection input of the branch address stack, and thereby the selected branch will be associated with an input bit prog-rammably designated ~by system users or others) as having highest priority.
Once the priority registers 120x, the address register stack (not shown), and the input latch 80 (supplying input bits 1-16), have been loaded, the circuit is ready to execute the priority branch BBD
instruction. In doing so, the array of logic gates shown in Figure 10 will determine which of all the input bits which are "ON" is associated with a priority number with largest relative magnitude.
This number is gated to outputs P0, P1, P2, and P3 (P3 being the most significant bit) which are used to address the register stack 116 (Figure 9) in order to select an associated branch address.
More specifically, operation of the array of gates proceeds as follows. Each active or "ON"
input in the set of input bits 1-16 from latches 80 enables the four-bit output 121x of the associated priority register 120x to be transferred to the associated row of gates 122x - 127x. Input bits which are inactive or "OFF" will force outputs of associated priority registers to be all zeroes or "OFF". Outputs from priority registers 120x are compared by respective rows of gates, starting with the most significant bit.
OR gate 129a examines the most significant bits of the outputs of all priority registers 120x, and sets its output P3 "ON" if at least one of its inputs is "ON". If all inputs to this OR gate are OFF P3 is set OFF. P3 feeds back to Compare circuits 122x in each row (122a, 122b, 122c...), and causes further transfer of an ON condition through such compare circuits in each row where the most significant bit output from the respective register 120x is equal to the state of P3. Thus, if P3 is ON, then in each row where the highest order output of respective register 120x is ON, respect-ive compare circuit 122x will have its output ON, and in all other rows, the outputs of respective compare circuits 122x will be OFF. On the other hand, if P3 is OFF, then presumably all highest order outputs of 120x are OFF and all compare circuits 122x will have their outputs ON.
ON outputs from compare circuits 122x part-ially enable respective AND circuits 123x, having as other inputs next most significant bits out of respective registers 120x. Thus, in any rows where respective AND circuits 123x are partially enabled, outputs of such AND circuits will correspond to the states of the respective next most significant bits out of respective registers 120x. Outputs of AND
circuits 123x connect to OR circuit 129b which produces output digit P2, which couples back to compare circuits 124x in each row. Outputs of 124x enable respective AND circuits 125x which have as t321653 their other inputs third most significant digit outputs of respective registers 120x.
Outputs of AND circuits 125x couple to OR
circuit 129c producing third most significant result output digit P1. The latter operates through compare circuits 126x and respective AND
circuits 127x to evaluate respective least signif-icant bit outputs of registers 120x. Outputs of 127x couple to OR circuit 129d determining the least significant result output P0.
It may be appreciated that the combination of digits P0-P3 will have a value corresponding to largest magnitude value in the registers 120x, since in any position where the output digit Pj is 1 the next most significant digits in any row will be evaluated further only if the digit from 120x corresponding to the order of Pj is 1. In all other rows all lesser significant digits will have no further effect on the less significant digits Pi (i ~ j). Since no two registers 120x will be set with the same combination of bits, it follows that one and only one register output will determine the ultimate value of all four digits P0-P3, and that register output will be the one with the highest numerical value.
As mentioned previously, outputs P0 - P3 are used to address the branch address stack with an encoded address representing the priority number associated with a highest priority active input latch bit. This results in a one to one positional correspondence between addresses in the address stack and priority levels programmed into registers 120x. Alternately, outputs of circuits in Fig. 10 may be used to develop signals positionally associ-ated with input bits 1-16 for direct application to individual registers in the branch address stack, and such outputs when active would directly gate contents of the respective branch address registers to the stack output.
This arrangement would require addition to the row logic circuits of Fig. 10 of not-shown compare circuits 128x (positioned to the right of respect-ive And circuits 127x) for comparing least signif-icant bits in respective registers 120x with P0, and And circuits 129x responsive to outputs of all respective compare circuits 122x, 124x, 126x and 128x for producing respective control signals for direct application to respective register output gates in the branch stack.
Note also that the lowest priority bit, with associated number=0, results in the same branch as if no bits are set. Thus, as shown, only 15 unique branch bit conditions can be set. Simple logic can be added if needed to check for all zeros from input bits 1-16, and gate to the branch address stack an associated different register select signal function on occurrence of that condition; if 16 unique branch address selection functions are needed. A 16 bit NOR gate, providing an active output if all input bits are zero, could be used to degate the register corresponding to the lowest priority, even if P0 - P3 indicate it should be selected, and further used to select output of a not-shown 17th register within the Branch Address Register Stack.
Claims (9)
1. In a data processing system, priority branch on bit apparatus for efficiently executing program branch instructions in a single system cycle to select subroutines for performing selected functions associated with a set of user parameters comprising:
input register means storing a set of status bits, each bit corresponding to a respective one of said parameters;
program controlled means setting each status bit to an active state when its respective parameter requires subroutine execution;
priority register means coupled to said input register means and storing a set of priority codes, each code assigned to a respective one of said parameters and its status bit;
address register means storing a set of branch addresses each pointing to a respective one of said subroutine associated with a respective one of said parameters and its status bit;
logic means, including a priority encoding unit coupled to said priority register means and to said address register means, and responsive to the execution of a predetermined one of said branch instructions for transferring priority codes corresponding to active status bits in said input register means from the priority register means to the priority encoding unit to produce output signals representative of the active status bit having the highest priority code; and means responsive to said output signal for selecting a branch address in said address register means corresponding to the last-mentioned active status bit.
input register means storing a set of status bits, each bit corresponding to a respective one of said parameters;
program controlled means setting each status bit to an active state when its respective parameter requires subroutine execution;
priority register means coupled to said input register means and storing a set of priority codes, each code assigned to a respective one of said parameters and its status bit;
address register means storing a set of branch addresses each pointing to a respective one of said subroutine associated with a respective one of said parameters and its status bit;
logic means, including a priority encoding unit coupled to said priority register means and to said address register means, and responsive to the execution of a predetermined one of said branch instructions for transferring priority codes corresponding to active status bits in said input register means from the priority register means to the priority encoding unit to produce output signals representative of the active status bit having the highest priority code; and means responsive to said output signal for selecting a branch address in said address register means corresponding to the last-mentioned active status bit.
2. In a data processing system priority branch on bit apparatus for executing program branch instructions in a single system cycle to select subroutines for performing selected functions associated with a set of user parameters comprising:
input register means storing a set of status bits, each bit corresponding to a respective one of said parameters;
first program controlled means setting each said status bit to an active state when its respective parameter requires subroutine execution;
priority register means coupled to said input register means and storing a set of priority codes, each code assigned to a respective one of said parameters and its status bit;
address register means storing a set of branch addresses each pointing to a respective one of said subroutines associated with a respective one of said parameters and its status bit; and logic means, including a priority encoding unit coupled to said priority register means and to said address register means, and responsive to the execution of a predetermined one of said branch instructions for transferring priority codes corresponding to active status bits in said input register means from the priority register means to the priority encoding unit for selecting the branch address in said address register means pointing to the subroutine associated with the active status bit having the highest assigned priority code.
input register means storing a set of status bits, each bit corresponding to a respective one of said parameters;
first program controlled means setting each said status bit to an active state when its respective parameter requires subroutine execution;
priority register means coupled to said input register means and storing a set of priority codes, each code assigned to a respective one of said parameters and its status bit;
address register means storing a set of branch addresses each pointing to a respective one of said subroutines associated with a respective one of said parameters and its status bit; and logic means, including a priority encoding unit coupled to said priority register means and to said address register means, and responsive to the execution of a predetermined one of said branch instructions for transferring priority codes corresponding to active status bits in said input register means from the priority register means to the priority encoding unit for selecting the branch address in said address register means pointing to the subroutine associated with the active status bit having the highest assigned priority code.
3. The data processing system of claim 2 wherein a plurality of sets of subroutines are provided, each set of subroutines being provided for performing function associated with a respective set of user parameters, said system further comprising:
second program controlled means preconditioning said priority register means with a set of priority codes assigned to a predetermined one of said user parameter sets, third program controlled means preconditioning said address register means with a set of branch addresses pointing to a respective set of subroutines associated with said predetermined one user parameter set, said first program controlled means effective while said register means are so preconditioned for setting the status bits in said input register, corresponding to parameters in said one predetermined set requiring subroutine execution, to their active states, and said logic means responsive to a predetermined branch instruction for selecting a branch address in said address register means pointing to the subroutine associated with the active status bit in the input register with the highest priority.
second program controlled means preconditioning said priority register means with a set of priority codes assigned to a predetermined one of said user parameter sets, third program controlled means preconditioning said address register means with a set of branch addresses pointing to a respective set of subroutines associated with said predetermined one user parameter set, said first program controlled means effective while said register means are so preconditioned for setting the status bits in said input register, corresponding to parameters in said one predetermined set requiring subroutine execution, to their active states, and said logic means responsive to a predetermined branch instruction for selecting a branch address in said address register means pointing to the subroutine associated with the active status bit in the input register with the highest priority.
4. The data processing system of claim 3 further comprising:
a plurality of sets of first registers in said priority register means, said second program controlled means preconditioning each set of first registers with a set of priority codes assigned to a respective different one of said user parameter sets, a plurality of sets of second registers in said address register means, said third program controlled means preconditioning each set of second registers with a set of branch addresses pointing to a respective set of subroutines associated with a respective different one of said user parameter sets, said logic means further including means responsive to different ones of said program branch instructions; designating respective different first and second register sets, for transferring priority codes corresponding to active status bits in said input register means from respective first register sets to the priority encoding unit for selecting branch addresses from respective second register sets in accordance with the active status bit with the highest priority, and program controlled means conditioning the input register means for use with different sets of user parameters whereby the priority branch apparatus may operate continuously with different sets of parameters without reloading of the first and second register sets.
a plurality of sets of first registers in said priority register means, said second program controlled means preconditioning each set of first registers with a set of priority codes assigned to a respective different one of said user parameter sets, a plurality of sets of second registers in said address register means, said third program controlled means preconditioning each set of second registers with a set of branch addresses pointing to a respective set of subroutines associated with a respective different one of said user parameter sets, said logic means further including means responsive to different ones of said program branch instructions; designating respective different first and second register sets, for transferring priority codes corresponding to active status bits in said input register means from respective first register sets to the priority encoding unit for selecting branch addresses from respective second register sets in accordance with the active status bit with the highest priority, and program controlled means conditioning the input register means for use with different sets of user parameters whereby the priority branch apparatus may operate continuously with different sets of parameters without reloading of the first and second register sets.
5. The data processing system of claim 2 further comprising program controlled means for preconditioning said priority register means to vary the priority codes assigned to each of the respective parameters.
6. The data processing system of claim 2, wherein more than one subroutine may be associated with each of at least certain of said parameters, further comprising program controlled means for selectively preconditioning said address register means to vary the branch address associated with said certain parameters.
7. The data processing system of claim 6, wherein more than one subroutine may be associated with each of at least certain of said parameters, further comprising program controlled means for selectively preconditioning said address register means to vary the branch addresses associated with said parameters.
8. In a data processing system, a method of performing priority branch on bit operations in a single system cycle to select subroutines for performing functions associated with a set of user parameters comprising:
storing a set of status bits, each bit corresponding to a respective one of said parameters;
storing a set of priority code values, each code being assigned to a respective one of said parameters and its status bit;
storing a set of branch addresses each pointing to a respective one of said subroutines associated with a respective one of said parameters and its status bit;
setting each said status bit to an active state when its respective parameter requires subroutine execution; and in response to a predetermined instruction of said system;
comparing the priority code values associated with the status bits which are set to their active states, determining the highest one of said compared priority code values, and selecting a branch address to the subroutine associated with the active status bit having said highest compared priority code value.
storing a set of status bits, each bit corresponding to a respective one of said parameters;
storing a set of priority code values, each code being assigned to a respective one of said parameters and its status bit;
storing a set of branch addresses each pointing to a respective one of said subroutines associated with a respective one of said parameters and its status bit;
setting each said status bit to an active state when its respective parameter requires subroutine execution; and in response to a predetermined instruction of said system;
comparing the priority code values associated with the status bits which are set to their active states, determining the highest one of said compared priority code values, and selecting a branch address to the subroutine associated with the active status bit having said highest compared priority code value.
9. In a data processing system wherein a plurality of sets of subroutines are provided for performing functions associated with respective sets of user parameters, a method of performing priority branch on bit operations in a single system cycle of operation to select certain of said subroutines when their respective parameters require action without having to reload branch data associated with the parameters comprising:
storing a respective set of status bits for each set of parameters, each bit in a set corresponding to a respective one of said parameters in its respective set;
setting each status bit to an active state when its respective parameter requires subroutine execution;
storing a respective set of priority values for each set of parameters and its respective set of status bits, each priority value in a set being assigned to a respective one of the parameters in its respective set and to its corresponding status bit;
storing a respective set of branch addresses for each set of parameters and its respective set of status bits, each branch address in a set pointing to a subroutine associated with a receptive one of said parameters in a respective parameter set and to its corresponding status bit;
assigning each set of parameters to a different one of a plurality of differing priority branch on bit instructions of the system; and in response to the execution of each one of said differing instructions, selecting a set of status bits, priority values and branch addresses corresponding to the parameter set assigned to the instruction being executed, comparing the selected priority code values which are set to their active states, determining the highest one of said compared priority code values, and selecting the branch address to the subroutine associated with the active status bit having said highest compared priority code value.
storing a respective set of status bits for each set of parameters, each bit in a set corresponding to a respective one of said parameters in its respective set;
setting each status bit to an active state when its respective parameter requires subroutine execution;
storing a respective set of priority values for each set of parameters and its respective set of status bits, each priority value in a set being assigned to a respective one of the parameters in its respective set and to its corresponding status bit;
storing a respective set of branch addresses for each set of parameters and its respective set of status bits, each branch address in a set pointing to a subroutine associated with a receptive one of said parameters in a respective parameter set and to its corresponding status bit;
assigning each set of parameters to a different one of a plurality of differing priority branch on bit instructions of the system; and in response to the execution of each one of said differing instructions, selecting a set of status bits, priority values and branch addresses corresponding to the parameter set assigned to the instruction being executed, comparing the selected priority code values which are set to their active states, determining the highest one of said compared priority code values, and selecting the branch address to the subroutine associated with the active status bit having said highest compared priority code value.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US07/254,985 | 1988-10-07 | ||
US07/254,985 US4972342A (en) | 1988-10-07 | 1988-10-07 | Programmable priority branch circuit |
Publications (1)
Publication Number | Publication Date |
---|---|
CA1321653C true CA1321653C (en) | 1993-08-24 |
Family
ID=22966348
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CA000609857A Expired - Fee Related CA1321653C (en) | 1988-10-07 | 1989-08-30 | Programmable priority branch circuit |
Country Status (4)
Country | Link |
---|---|
US (1) | US4972342A (en) |
EP (1) | EP0363174A3 (en) |
JP (1) | JPH0619711B2 (en) |
CA (1) | CA1321653C (en) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5617574A (en) * | 1989-05-04 | 1997-04-01 | Texas Instruments Incorporated | Devices, systems and methods for conditional instructions |
US5197130A (en) * | 1989-12-29 | 1993-03-23 | Supercomputer Systems Limited Partnership | Cluster architecture for a highly parallel scalar/vector multiprocessor system |
US5168570A (en) * | 1989-12-29 | 1992-12-01 | Supercomputer Systems Limited Partnership | Method and apparatus for a multiple request toggling priority system |
US5630157A (en) * | 1991-06-13 | 1997-05-13 | International Business Machines Corporation | Computer organization for multiple and out-of-order execution of condition code testing and setting instructions |
EP0706126A1 (en) * | 1994-10-07 | 1996-04-10 | International Business Machines Corporation | Multi-priority level scheduler |
FR2737591B1 (en) * | 1995-08-03 | 1997-10-17 | Sgs Thomson Microelectronics | DEVICE FOR ORGANIZING ACCESS TO A MEMORY BUS |
DE10062995A1 (en) * | 2000-12-16 | 2002-07-11 | Micronas Gmbh | Interrupt controller means |
US8908564B2 (en) * | 2010-06-28 | 2014-12-09 | Avaya Inc. | Method for Media Access Control address learning and learning rate suppression |
US9471317B2 (en) * | 2012-09-27 | 2016-10-18 | Texas Instruments Deutschland Gmbh | Execution of additional instructions in conjunction atomically as specified in instruction field |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
IT971304B (en) * | 1972-11-29 | 1974-04-30 | Honeywell Inf Systems | DYNAMICALLY VARIABLE PRIORITY ACCESS SYSTEM |
US3979725A (en) * | 1973-08-06 | 1976-09-07 | Xerox Corporation | Multi-way program branching circuits |
US3967104A (en) * | 1974-11-26 | 1976-06-29 | Texas Instruments Incorporated | Direct and indirect addressing in an electronic digital calculator |
US4009470A (en) * | 1975-02-18 | 1977-02-22 | Sperry Rand Corporation | Pre-emptive, rotational priority system |
US4006466A (en) * | 1975-03-26 | 1977-02-01 | Honeywell Information Systems, Inc. | Programmable interface apparatus and method |
US4034349A (en) * | 1976-01-29 | 1977-07-05 | Sperry Rand Corporation | Apparatus for processing interrupts in microprocessing systems |
US4179737A (en) * | 1977-12-23 | 1979-12-18 | Burroughs Corporation | Means and methods for providing greater speed and flexibility of microinstruction sequencing |
US4315314A (en) * | 1977-12-30 | 1982-02-09 | Rca Corporation | Priority vectored interrupt having means to supply branch address directly |
US4246644A (en) * | 1979-01-02 | 1981-01-20 | Honeywell Information Systems Inc. | Vector branch indicators to control firmware |
US4271467A (en) * | 1979-01-02 | 1981-06-02 | Honeywell Information Systems Inc. | I/O Priority resolver |
IT1134780B (en) * | 1980-12-18 | 1986-08-13 | Honeywell Inf Systems | MICROPROGRAMMED CONTROL UNIT WITH MULTIPLE JUMP NETWORK |
IT1159351B (en) * | 1983-02-03 | 1987-02-25 | Cselt Centro Studi Lab Telecom | DISTRIBUTED STRUCTURE REFEREE CIRCUIT FOR BUS REQUESTS FOR A MULTIPROCESSOR SYSTEM |
US4573118A (en) * | 1983-03-31 | 1986-02-25 | Fairchild Camera & Instrument Corporation | Microprocessor with branch control |
JPS6014338A (en) * | 1983-06-30 | 1985-01-24 | インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション | Branch mechanism for computer system |
US4636544A (en) * | 1985-02-25 | 1987-01-13 | General Electric Company | Flame retarded polyester molding composition with improved electrical performance |
JPH0792782B2 (en) * | 1985-09-30 | 1995-10-09 | 富士通株式会社 | Processing execution system |
-
1988
- 1988-10-07 US US07/254,985 patent/US4972342A/en not_active Expired - Fee Related
-
1989
- 1989-08-30 CA CA000609857A patent/CA1321653C/en not_active Expired - Fee Related
- 1989-10-04 EP EP19890310148 patent/EP0363174A3/en not_active Withdrawn
- 1989-10-06 JP JP1260394A patent/JPH0619711B2/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
JPH02162422A (en) | 1990-06-22 |
US4972342A (en) | 1990-11-20 |
JPH0619711B2 (en) | 1994-03-16 |
EP0363174A2 (en) | 1990-04-11 |
EP0363174A3 (en) | 1992-07-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US4107773A (en) | Advanced array transform processor with fixed/floating point formats | |
US3739352A (en) | Variable word width processor control | |
US6076152A (en) | Multiprocessor computer architecture incorporating a plurality of memory algorithm processors in the memory subsystem | |
US5925124A (en) | Dynamic conversion between different instruction codes by recombination of instruction elements | |
CN109144568B (en) | Exposing valid bit lanes as vector assertions to a CPU | |
EP0138419B1 (en) | Central processing unit for a digital computer | |
CA1319997C (en) | Specialized communication processor for layered protocols | |
US5197137A (en) | Computer architecture for the concurrent execution of sequential programs | |
US6542985B1 (en) | Event counter | |
US4314333A (en) | Data processor | |
US3585605A (en) | Associative memory data processor | |
EP0724221A2 (en) | Method and apparatus for executing dissimilar seq. of instructions in the processor of a single-instruction-multiple data (SIMD) computer | |
CA1119731A (en) | Multibus processor for increasing execution speed using a pipeline effect | |
CN115562729A (en) | Data processing apparatus having a stream engine with read and read/forward operand encoding | |
JPH06230969A (en) | Processor | |
CA1321653C (en) | Programmable priority branch circuit | |
US6694407B1 (en) | Cache memory with data transfer control and method of operating same | |
KR100972160B1 (en) | Data access program instruction encoding | |
US3969702A (en) | Electronic computer with independent functional networks for simultaneously carrying out different operations on the same data | |
US6857063B2 (en) | Data processor and method of operation | |
US20070198241A1 (en) | Hardware emulator having a variable input primitive | |
KR20010007093A (en) | Hardware device for executing programmable instructions based upon micro-instructions | |
US4956805A (en) | Circuitry for character translate functions | |
EP0862111B1 (en) | Dynamic conversion between different instruction codes by recombination of instruction elements | |
EP0226103A2 (en) | Address generation for cellular array processors |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MKLA | Lapsed |