[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

CA1114515A - Central processor unit for executing instructions of variable length - Google Patents

Central processor unit for executing instructions of variable length

Info

Publication number
CA1114515A
CA1114515A CA314,183A CA314183A CA1114515A CA 1114515 A CA1114515 A CA 1114515A CA 314183 A CA314183 A CA 314183A CA 1114515 A CA1114515 A CA 1114515A
Authority
CA
Canada
Prior art keywords
operand
instruction
information
central processor
register
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
Application number
CA314,183A
Other languages
French (fr)
Inventor
Steven H. Rothman
Thomas N. Hastings
William D. Strecker
David P. Rodgers
Richard F. Lary
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Digital Equipment Corp
Original Assignee
Digital Equipment Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Digital Equipment Corp filed Critical Digital Equipment Corp
Application granted granted Critical
Publication of CA1114515A publication Critical patent/CA1114515A/en
Expired legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/355Indexed addressing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/3822Parallel decoding, e.g. parallel decode units

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)
  • Advance Control (AREA)

Abstract

Application of William D. Strecker, Thomas N. Hastings, Richard F. Lary, David P. Rodgers and Steven H. Rothman Relating to CENTRAL PROCESSOR UNIT FOR EXECUTING
INSTRUCTIONS OF VARIABLE LENGTH

Abstract of the Disclosure.
A digital data processing system with a central processor for responding to diverse instructions characterized by having variable length. Each instruction includes an operation code. Certain instructions also include one or more operand specifiers. Each operand specifier can comprise one or more data bytes. Each instruction passes to an instruction buffer. Control circuitry in the central processor decodes the operation code and, in succession, each operand specifier byte.
The operand specifiers and information derived from the operation code concerning each operand specifier are combined to obtain the address from which the operand is to be retrieved or to which an operand is to be transferred. Central processor response to an instruction for adding two addends located in first and second storage locations and storing the sum in a third location and instructions for calling a subroutine and returning from the subroutine to the calling routine are disclosed.

Description

5~L~

Cross Reference to Related Patents and Patent Applications United States Patent 3,614,740 issued October 19, 1971 for a DATA PROCESSING SYSTEM WITH CIRCUITS FOR TRANSFERRING BETWEEN
OPERATING ROUTINES, INTERRUPTION ROUTINES AND SUBROUTINES and assigned to the same assignee as the present invention.
United States Patent 3,614,741 issued October 19, 1971 for a DATA PROCESSING SYSTEM WITH INSTRUCTION ADDRESSES IDENTIFYING
ONE OF A PLURALITY OF REGISTERS INCLUDING THE PROGRAM COUNTER
and assigned to the same assignee as the present invention.
United States Patent 3,710,324 issued January 9, 1973 for a DATA PROCESSING SYSTEM and assigned to the same assignee as the present invention.
United States Patent 3,999,163 issued December 21, 1976 for a SECONDARY STORAGE FACILITY FOR DATA PROCESSING SYSTEM and assigned to the same assignee as the present invention.
; Canadian Patent Application Serial No. 314,183 filed October - 25, 1978 for a CENTRAL PROCESSOR UNIT FOR EXECUTING INSTRUCTIONS WITH
, A SPECIAL OPERAND SPECIFIER and assigned to the same assignee as the '; present invention.
Canadian Patent Application Serial No. 314,209 filed October 25, 1978 for a CENTRAL PROCESSOR FOR PROCESSING SUBROUTINE CALLING
INSTRUCTIONS and assigned to the same assignee as the present inven-tioll.

....

. ' ~ :
. ~

~C~

i~
" -Canadian Patent Application Serial No. 314,182 filed October 25, 1978 for a DIGITAL DATA PROCESSING SYSTEM and assigned to the same assignee as the present invention.
Canadian Patent Application Serial No. 314,208 filed October 25, 1978 for DIGITAL DATA PROCESSING SYSTEM WITH SPLIT
READING OPERATIONS and assigned to the same assignee as the present invention.
Background of the Invention This invention generally relates to digital data 10 processing systems. More specifically it relates to a processor for use in such data processing systems.
A digital data processing system comprises three basic elements: namely, a memory element, an input-output element and a processor element. The memory element stores information in addressable storage locations. This information includes data and instructions for processing the data. The processor element transfers information from the memory element. It interprets the incoming informstion as either data or an instruction. An Pg. 3 ;
instruction-includes an operation code that specifies, in coded form, the operation to be performed by the processor. An instruction may also include information that specifies one or more operands. The information that specifies an operand is called an operand specifier.
In a simple digital data processing system, the processor operates in response to instructions that have a fixed format and a fixed length. More specifically, in one such digital data processing system the instructions are classified as memory reference instructions and operation instructions, the latter also being known as "microinstructions". Each memory ; reference instruction requires an operand specifier to specify the address of the location to which the instruction refers.
Therefore, the instruction comprises an operation code and an operand specifier. In this system the memory is divided into pages. The most significant bit in the operand address controls whether the processor interprets the operand address as referring to the page containing the instruction or to a reference page. The microinstructions contain no operand specifiers, operands being implicitly addressed by the instructions.
These simple instructions of fixed length and fixed format provide very elementary functions. It is, therefore, ., .

Pg. 4 difficult to write a program which will solve a complex problem, primarily because a very large number of instructions are required.
More recent processors perform more complex functions in response to single instructions. Some of these processors still involve fixed format instructions, but, to a limited degree, they are capable of responding to instructions of variable length. For example, one such processor allows variable length instructions that include an init~al byte (a fixed group of binary digits or bits) which the processor interprets as an operation code. This operation code then is followed in the instruction by successive bytes that designate predetermined registers in the central processor. However, even in this approach, the instruction format is still fixed.
Another type of central processor that provides a type il B of variable length instruction is used in a PDPll data processing system and is disclosed in the foregoing U.S. Patent 3,614,741. In that processor an instruction may include up to j two operand specifiers. Moreover, the instruction and all the information for specifying the two operands can require from two through six consecutive byte positions in the program. An operator group of instructions, for example, contains no operand specifiers, but the instruction is stored as one word comprising !^~

5~
,, Pg. s ~, two bytes. Other instructions contain two operand addresses.
Both operands may be specified within the instruction word. If, however, both operand addresses in an instruction specify an addressing mode that identifies the program counter, six consecutive byte positions in the program are required to define the instruction completely. With this approach, however, the length of the operand is implicitly specified because the operation code defines the number of operands and other bits in the instruction itself define the total length of the operand specifiers.
Thus, even in these central processors, it is often necessary to process two or more instructions in order to perform a specific function. For example, if a programmer wishes .1 j to add two numbers and store the sum in a third memory location without disturbing the locations that store the addends, he must use an instruction to copy one addend into the third location and then an instruction for adding the other addend with the contents of the third location. The constraints imposed by these ~ instructions can lead to programming errors and processor i 20 inefficiency-Therefore, it is an object of this invention to provide a processor for a digital data processing system that is adapted to process a flexible set of instructions.

, ' ', ., . ' , ' ' ,. . - . .

Pg. 6 Another object of this invention is to provide a processor for use in a digital data processing system that can process an instruction having any length.
Another object of this invention is to provide a processor for a digital data processing system that processes - variable length instructions, thereby to enable a programmer to write more compact programs.
Still another object of this invention is to provide a processor for a digital data processing system in which the ; 10 instructions processed by the central processor can easily be extended to include any number of operand specifiers.
Yet another object of this invention is to provide a central processor which can process an instruction with a variable-length operation code.
; Summary of the Invention In accordance with this invention, an instruction ~' includes an operation code and some number of operand specifiers. An instruction is retrieved from memory beginning at a location that contains the first byte of the instruction. The central processor tests the first byte to determine whether the operation code comprises one or two bytes. The central processor interprets successive bytes associated with the operation code f ,~

.. ' '. '' . ' ' ':, '. ',, ., ' "':: `'.: . . : '. '`. " . .

5~

as operand specifiers.
Briefly described, the present invention provides a central pro-cessor means for processing operands in response to instructions in a data processing system, the data processing system additionally including a memory means or storing the operands and instructions, each operand comprising at least one information bit and each instruction including an operation code having at least one information byte and certain of the instructions includ-ing at least one operand specifier, each operand specifier comprising at least one information byte and identifying the location for an operand in the data processing system, said central processor means comprising: program counter means for identi$ying locations in the memory means of operation codes in successive instructions, instruction retrieval means connected to said program counter means for normally sequentially retrieving successive bytes of infor-mation from the memory means to which said instruction retrieval means con-nects, operation code decoding means connected to said instruction retrieval means for ascertaining, in response to the operation code, the number of operand specifiers that the instruction contains, and operand specifler de-coding means connected to said instruction retrieval means and to said operation code decoding means for sequentially decoding successive bytes of the information following the operation code to identify a location for each specified operand, said operand specifier decoding means being responsive to the information bytes that indicate the number of information bytes in the operand specifier and that constitute each operand specifier, thereby to en-able retrieval from the memory means of successive instructions comprising a variable number of information bytes stored in contiguous byte locations in the memory means.
The invention ~ill now be described in greater detail with reference to the accompanying drawings, in which:

\ ~
~ l$~g~

Fig. 1 is a block diagram of a digital data processing system constructed in accordance with this invention;
Fig. 2A through 2D pictorially depict data types that are utilized in conjunction with a specific embodiment of this invention;
Fig. 3 is a block diagram of the central processor shown in Fig. l;
Fig. 4 depicts the format and organization of an instruction that can be processed in the central processor shown in Figs. 1 and 3;
Fig. 5 together with Figs. 5A, 5B and 5C constitute a block diagram of the data paths shown in Fig. 3;
Fig. 6A is a block diagram of the ins~ruction buffer and decode circuits shown in Fig. 3 and Figs. 6B and 6C depict certain signals that are transmitted by the circuits shown in :' .~ .
~!
....

! .

'`', :

~, .

~ -7a-~, ~; ~

... . .... .. ...

5~i~
Figure 6A;
Figures 7 and 7A constitute a flow diagram that is useful in understanding the operation of the central processor unit shown in Figures 1 and 3;
Figure 8A depicts the format of a specific instruction;
Figure 8B depicts certain information that is derived from that instruction; and Figures 8C-1, 8C-2 and 8C-3 constitute a flow diagram that defines the operation of the central processor shown in Figures 1 and 3 in response to that instruction;
Figures 9A and 9B depict another format of the instruction shown in Figure 8A and Figures 9C-1 and 9C-2 constitute a flow d~a-gram that defines the operation of the central processor shown in Figures 1 and 3 in response to that modified instruction; and Figures lOA and lOB illustrate the format for instruc-tions that are useful in calling subroutines while Figures lOC-l, lOC-2A, lOC-2B, lOC-3 and lOC-4 constitute a flow diagram that defines the operation of the central processor shown in 'I
;j Figures l and 3 in response to those instructions.
! Description of an Illustrative Embodiment General Discussion ! Referring to Figure 1, the basic elements of a data processing system that embodies our invention comprise a central I
''' , ,, ~ .; .
~; ,c,~

processor unit 10, memory units 11 and I/O units 12. A
synchronous backplane interconnection (SBI) 14 interconnects the central processor unit 1OJ memory units 11 and I/O units 12.
The central processor unit 10 comprises an operator's console 15, an SBI interface and memory cache circuit 16, an address translation buffer circuit 17, an instruction buffer circuit 18 and a data path and internal register circuit l9. The SBI
interface and memory cache circuit 16 provides the necessary interfacing circuitry for transferring information over the SBI
14 to the memory units 11 and I/O units 12. The circuit 16 receives all data from the memory and all address translations from theibuffer circuit 17. It includes an associative memory, ~ or cache. Anytime data is written into the cache memory in the `, circuit 16 from the data path and internal register circuit 19, ,,7' that data is also written into a corresponding location in the memory units 11.
This specific embodiment of the central processor 10 operates with virtual addresses. The address translation buffer circuit 17 converts the virtual addresses to physical addresses which the memory cache circuit 16 uses either to determine whether it contains data from the corresponding location or to initiate a transfer from the corresponding actual location in the meDOry units 11. The instruction buffer circuit 18 includes, .

_ g _ ,..":.~, ~:.: ~ . : , :, ~ : - : .- ,., .. ::: . . . -, :

as described later, means for storing instructions, or portions thereof, as they are retrieved either from the cache memory directly or from the memory unit 11.
The operator's console 15 serves as the operator interface. It allows the operator to examine and deposit data, halt the operation of the central processor unit 10 or step it through a sequence of program instructions. It also enables an operator to initialize the system through a bootstrap procedure and perform various diagnostic procedures on the entire data processing system.
In Figure 1, the memory units 11 comprises two memory controllers 20A and 20B. Each memory controller connects to a . . .
~- plurality of memory arrays. Specifically, memory controller 20A
connects to memory arrays 21A whlle memory controller 20B
connects to memory arrays 21B. The operation of the memory unit 11 is disclosed in detail in the copending Canadian patent !
application Serial Nos. 314,182 and 314,208.
Several types of I/O units 12 are shown. An I/O bus adapter 22 interconnects various input/output (I/0) devices 23, such as teletypewriters, to the bus 14. The interconnection, ~.
' operation and transfer of signals between the I/0 bus adapter 22 .,i ~ and the I/0 devices 23 is disclosed in United States Patent :
3,710,324.
;~ Two other I/O units 12 provide a secondary storage ~' :.,~ ,: . . , . i .

Pg. 11 facility for the data processing system. They include a secondary storage bus adapter 24 and a plurallty of disk drives 25. There is also shown a secondary storage bus adapter 26 and a tape drive 27. The interconnection of the secondary storage bus adapters 24 and 26 and their respective disk drives 25 and tape drive 27 is disclosed in the foregoing U.S. Patent 3,999,163.
c ~;~v~ 3~ \~2_ ~k~. Patent application Serial No. (83-203~- describes the interactions of the elements over the SBI 14. For purposes of the following discussion, it will be helpful to summarize these interactions and to define specific terms including the designation of the data items, or groups, which this specific embodiment of the invention can process. The basic, or most `~ elementary, information group is a byte. This is shown in Fig.
2A and it includes eight bits in this specific embodiment of the invention. In order of increasing size, the next information 1l group is a word, which is shown in Fig. 2B as comprising two bytes. In~ Fig. 2C there is depicted a "longword" that comprises two consecutive words or four consecutive bytes. Fig. 2D depicts a "quadword" which comprises two consecutive longwords, i.e., four consecutive words or eight consecutive bytes. Any transfer of information over the SBI 14 involves a longword.
The SBI 14 is time-division multiplexed and includes :' - .

:,, , , , , . .~ .. .. . ... . .

-: :. :. . .. - : ... : .. -. :::: . .::.. : , : :: ... .. ~

~ 83-200 Pg. 12 signal paths for carrying information and control signals. In terms of this invention, the information includes control information and data. Control information is the intelligence used to control and provide the basis for data processing whereas data is program-generated information which is the object of the processing itself. ;~-Each unit that connects to the SBI is called a nexus.
The specific system shown in Fig. 1 includes six nexuses. A
' nexus is defined further in terms of its function during an ;, 10 exchange of information. At least two SBI transactions are l necessary to exchange information between two nexuses. During a ~:y first transaction, one nexus, as a transmitting commander nexus, transmits command and address information to all the nexuses.
This nexus is called a transmitting nexus because it is driving the SBI 14 and a commander nexus because it has transmitted the command and address information. During this transaction all JI other nexuses are receiving nexuses. However, only one receiving l nexus will respond to the address information. That nexus is a "' , responder nexus and it transmits a confirmation of receipt of the command and address information at a fixed interval after the commander nexus transmits that information. Thus, if the central processor unit 10 needs to retrieve data from the memory controller 20A, the central processor unit 10 becomes a ,.... :, , . : . . . - : :: .

:

1$~
Pg. 13 commander nexus and transmits a read command and an address to - which the memory controller 20A will eeact initially as a receiving nexus and then as a responder nexus.
After some interval, the memory controller 20A will be prepared to send the retrieved data to the central processor ~ unit 10. As described in the foregoing copending patent 3 applications, it seeks control of the SBI 14. When it gains control, the memory controller 20A becomes a transmitting responder nexus and transfers the requested data onto the SBI 14 for transfer to the central processor unit 10. During this .A, transaction, the central processor unit 10 is a receiving commander nexus.
Similar transactions occur for any information exchange between any two nexuses, although the memory controllers normally function only as responder nexuses and the central processor unit normally functions only as a commander nexus~ For purposes of this invention, it will be apparent that typical information exchanges will involve the transfer of instructions, operand specifiers and related information, and data to the central processing unit 10 and the transfer of processed data back to the memory unit 11.
The SBI interface and memory cache circuit 16, as the name implies, includes a cache, or associative, memory. For , 5~
Pg. 14 transfers of information to the central processing unit 10, the cache memory first will be interrogated to determine whether it already contains the required information. If it does, no exchange of information with the memory unit 11 is necessary. If the cache memory does not contain that information, the SBI
interface circuitry initiates a memory reading operation that involves a quadword. This information is transferred into the cache memory along with the physical addresses in memory for that information. Simultaneously, the information is routed to the instruction buffer circuit 18 if an instruction is being transferred or to the data path and internal register circuit 19 if other information is being transferred. If the central processor 10 transfers information back to the memory unit 11, it transfers the information into the cache memory. The SBI
interface and memory cache circuit 16 then initiates the necessary SBI transactions to first transmit the necessary command and address information and then the data. The details c~ c~ ~
of these transactions are disclosed in ~H~ Patent Application 3~
Serial No. ~ 2~St. An understanding of these details is not necessary for an understanding of this invention.
Fig. 3 is a generalized block diagram of the central processor unit 10. It depicts the operator's console 15, the SBI
14 and the other circuits that constitute the SBI interface and . ~, .

.. - . .. : ..... , .. . . : , ,. ,, . ~ , . , .

Pg. 15 memory cache circuit 16, the address translation buffer circuit .~ 17 and the instruction buffer circuit 18. More specifically, the central processor unit 10 operates under timing established by a ~`! clock generator 30. Specific timing becomes more apparent in the discussion related to the flow diagramsO The SBI interface and memory cache circuit 16 comprises an SBI control circuit 31 that ' connects to the SBI 14 and to a physical address ~PA) bus 32.
The PA bus 32 connects to a data cache circuit 33 and to a ~i translation buffer 34. The translation buffer 34 converts ;~'. 10 virtual address tvA) information and other control information ~: into a physical address that is transmitted simultaneously to : the SBI control 31 and data cache 33. Data from the data cache ~: 33 or from any other location on the S~I 14 that passes through the SBI control 31 is conveyed to other elements in the central :~
processor unit 10 over a memory data (MD) bus 35. These units include ~rdata ~ 36 and an instruction buffer and decode ¢!
~ circuit 37.
i A microprogram control ~UPC) bus 38 conveys signals from the instruction buffer and decode circuit 37 to a program , 20 control store 40~ The program control store 40 then generates various control signals~onto a CS bus 41, and this bus conveys signals to the translation buffer 34, the data paths 36, the instruction buffer and decoder 37 and to a traps-interrupts ~, 1$~
pg . 16 ~r arbitrator circuit 42 ~ These circuits and the operator's console 15 communicate over an instruction data (ID) bus 43 with a microsequencer 44 that controls the sequence of operations in i response to microinstructions stored in the program control store 40~
~ The microsequencer 44 establishes a retrieval state J for obtaining an instruction. The program countcr, which specifies the beginning address of the next instruction to be retrieved, passes from data paths 36 through the translation 1 10 buffer 34 onto the PA bus 32~ If the data cache 33 contains valid information in a location corresponding to the specified physical address, it transmits data over the MD bus 35 to the I instruction buffer and decode circuit 37~ As the instruction , buffer and decode circuit 37 decodes the instruction, the microsequencer 44 establishes other data paths that transfer other information to the translation buffer 34 thereby to transfer other data into registers in the data paths 36 from either the data cache 33 or, after a retrieval from the memory units 11 or other memory locations on the SBI 14~ from the SBI
control 31~ If the instruction requires data to be transferred to a physically addressed location, the microsequencer 44 establishes the data paths that are necessary to transfer signals to the translation buffer 34~ thereby to form the . .: ., pg. 17 physical address, and to transfer the data simultaneously to the data cache 33 and to the SBI control 31. During any such transfer the SBI control 31 initiates an exchange with the specified memory location.
Fig. 4 depicts a typical instruction that can be processed by the central processor unit 10 shown in Fig. 3. The instruction, shown at the top of Fig. 4, lncludes an operation code 50 that is depicted as one byte in length. It will become ; apparçnt from the following discussion, however, that the central processor unit 10 can be adapted to process multiple-byte operation codes. In this specific instruction three operand specifiers 51, 52 and 53 follow the operation code in sequence.
The operand specifiers 51 and 52 each comprise one byte whereas the operand specifier 53 comprises two bytes. The format of a single-byte operand specifier also is shown in Fig. 4. It comprises two fields. The high-order bits constitute a register mode field and the low-order bits constitute a register address field. The register address field specifes a particular register that is located in the data paths circuit 36 shown in Fig. 3 and shown in more detail in Fig. 5. In this specific embodiment the bytes comprise 8 bits so 4 bits are available for each of the register mode and register address fields, thereby enabling any one of sixteen general purpose registers to be addressed by an ' ;~, , . . .. . . .

~ Pg. 18 - operand specifier.
i If the two most significant bits of the register mode .
^ field 54 are zeroes, (register modes 0 through 3), the operand specifier 51 includes the operand, i.e., a literal, which can comprise any data value up to 6 bits representing decimal numbers from 0 through 63.
;'il ' j If the register mode field 54 contains a decimal value :-! of 4, as shown in the register mode field 54A for the operand specifier 53, an index mode is specified. When the register mode field, such as register mode field 54A specifies an indexed addressing mode, the corresponding register field 55A identifies one of the general purpose registers that is to be used as an index register in processing the operand specifier. A secondary operand specifier is included in the instruction for indexed addressing. This secondary operand specifier provides a base address to which the contents of the designated index register are added. A more detailed description of indexed addressing is included later.
When the register mode field 54 contains a "5", register mode addressing is specified. In this mode the general purpose register addressed by the register field contains the operand.
For each of register modes 6, 7 and 8, the specified ~,, . -~ 5~ Pg. 19 . ~ .
~: register contains the memory address for the operand. In mode 6 the designated register contains the address of the operand. In i register mode 7 the contents of the designated register are first decremented before ascertaining the address; in mode 8 the , 5 designated register contents are incremented after the register , ~
is used to determine the address. Register mode 9 corresponds to register mode 8, except that ~he contents of the designated regist~r specify the address in memory at which the operand address will be found rather than the operand itself.
Modes 10 through 15 are all displacement modes. In the displacement mode the displacement value, which may comprise a byte, word, or longword in modes 10, 12 and 14 respectively, is added to the contents in designated register to obtain the operand address. Corresponding operations occur in modes 11, 13 and 15 except that the sum of the displacement value and register contents identifies a memory address at which the address of the operand can be found.
In each of the foregoing modes 8 through 15, the register field 55 of the operand specifier can designate any of the general registers which include the program counter.

Specific Discussioni. Initial instruction processing '';;~' ~ 83-200 . ~
Pg. 20 .' .
Figs. 5 and 6A disclose the data paths 36 and the `, instruction buffer and decode circuit 37 in detail. There are :
some basic operating characteristics of this specific embodiment which optimize the performance of the central processor unit 10.
A detailed knowledge of these operations is not necessary to an understanding of this invention so they are merely summarized.
In Figure 6A, the instruction buffer and decode circuit 37 comprises an instruction buffer 60 that stores eight consecutive bytes. Transfers into the instruction buffer 60 are made in response to signals from an instruction buffer control circuit 61. Each byte position in the instruction buffer 64 contains a validity bit position that indicates whether the data in the ; remainder of that byte position is valid (i.e., the validity bitposition is cleared once the byte is no longer needed). If this validity bit indicates that the data in a specific one or more byte positions is no longer valid, the instruction buffer control circuit 61 generates an IB REQ signal that requests a transfer to the instruction buffer 60 over the MD bus 35 either from the data cache 33 or through the SBI control 31. Other circuitry in the instruction buffer control circuit 61 detects the highest order byte position with invalid data and shifts higher order bytes into those byte positions. During these transfers, data in all higher bytes is altered.
.

. , ~,., ... ,, .. ,, . ., . .. ..... ,.,.. .; .. .. . ... .. . . . .

"'~
5~L~
The transfers over the MD bus 35 are longwords (Figure 2C) that pass through a multiplexer 62. A shift network 63 also is associated with the output of the instruction buffer 60 and -the input of the multiplexer 62 for use in shifting the data bytes. Thus, the instruction buffer control circuit 61 properly routes the appropriate information into the designated byte positions in the instruction buffer 60. In effect, the instruction buffer control circuit 61 thereby continuously fills the instruction buffer 60 with valid data.
The response of the central--processor unit 10 to a typical instruction can now be considered. The instruction buffer control 61 issues an instruction buffer request (IB REQ) signal. At this time, the contents of a program counter register 64 in Figure 5A, that contains a virtual address, is transferred through a B multiplexer lBMX) 65 in Figure 5B and an arithmetic-logic unit (ALU) 66 to both a virtual address ~VA) latch 67 in Figure 5A and an instruction buffer address ~IBA) latch 68. The virtual address latch 67 stores the instruction address for purposes of establishing the physical address with the circuitry in the translation buffer circuit 34. The instruction buffer address latch 68 is utilized during the subsequent transfer of information into the ~nstruction buffer 60 ~Figure 6A) as informa-I

tion is used from that buffer and becomes obsolete. The foregoing operation constitutrs step Al in Figure 7.

'!

. ...... .
~;

Pg. 22 In step A2, the incoming information that appears on the MD bus 35 in Fig. 6A constitutes all or part of the , instruction. This information is transferred through the ` multiplexer 62, in response to signals from the instruction ` 5 buffer control circuit 61, and into the instruction buffer 60.
At this time, the byte 0 position of the instruction buffer 60 contains operation code information. In this specific embodiment, each operation code comprises only one byte.
However, it will be clear from the following discussion that the operation code could comprise two or more bytes and that circuitry analogous to subsequently described circuitry for decoding operand specifiers would decode such multiple-byte operation codes.
~ Assuming that only byte 0 position in the instruction 7 ~ 15 buffer 60 contains the operation code, the byte 1 position contains all or part of a first operand specifier. Byte 0 is i stored in a byte 0 latch 70 that controls an execution address memory 71. The contents of the byte 1 position are applied to a specifier decode logic circuit 72 along with output signals from the execution address memory 71.
The execution address memory 71 stores a table which includes entries for every instruction that can be executed by ~ the central processing unit 10. The location of a particular : ,i ... :, . . . .

.
.
Pg. 23 entry in that table is derived from the operation code signals from the byte 0 latch 70 and from signals from an execution point counter 73. Initially the execution point counter 73 is set to a reference number (e.g. 0). As each operand specifier is decoded, the execution point counter 73 is advanced to define a new table entry. Each entry in the table identifies certain characteristics of the operand specifier such as the size of the expected data item and whether the operand specifier identifies a location from which or to which the operand is to be transferred. Signals for each selected table entry pass to the specifier decode logic 72 to control a portion of the starting ~ 3 L address that the microsequencer 44'uses ~o establish the data paths and sequence for decoding the operand specifier. The UPC
bus 38 carries the signals from the specifier decode logic 72 to the microsequencer 44.
Fig. 6B depicts the characteristics of the operand specifier that are retained in a specific embodiment of the execution address memory 71. The two low-order bits from the execution address memory 73 specify the type of data item that ; 20 is involved; normally a data item comprises either an integer number or a floating point number. The next two bits in order indicate the length of the operand. The following two bits specify the operation that is to occur. The last two bits .--, ' ~

~ 3 Pg. 24 determine information concerning access. For example, if the byte 0 latch 70 and execution point counter 73 identify a location containing the binary number 01001000, the corresponding operand specifier designates a longword integer number that is to be retrieved from memory. As previously stated, there is an entry in the execution address memory 71 for each operand specifier in each instruction that the central processor unit 10 can process. ~hus, the operation code from the - byte 0 latch 70 produces a base address and the execution point counter 73 produces signals that are combined with the base address to identify, in sequence, the table entries corresponding to each operand specifier.
Signals from the execution address memory 71 and the operand specifier in byte 1 position of the instruction buffer are transferred to the specifier decode logic 72 that identifies a starting sequence address for any given operand specifier in response to those signals. The starting address for any given microinstruction in the sequence comprises high-order bits that depend upon the instruction itself and low-order bits that depend upon the nature of the information in the operand specifier. Typical low-order address bits are shown in Fig. 6C.
More specifically, if the register mode field of the operand - specifier contains a "4" and the register field does not :
~ Pg. 25 ' designate the program counter, the low-order starting address bits are "lC" (in hexadecimal notation). This then controls the ; location at which the microsequencer 44 begins to execute a sequence beginning with microinsteuction located in the program control store 40 (Fig. 3) at the location identified by the starting address.
; Before this information is decoded, however, the microsequencer 44 continues to perform other operations. In step A3'the microsequencer 44 uses the register field positions in the byte 1 position of the instruction buffer 60 to transfer to ,. s ~3 an A latch 75~the contents of a register in the register memory 76 that corresponds to the contents of the register field. If the register mode field in the operand specifier defines any of modes 0 through 3, the operand specifier contains the operand and the operand specifier is decoded. The microsequencer 44 then either begins to process the next operand specifier in the instruction or executes the instruction.
Assuming that the operand specifier does not include a literal, the microsequencer shifts from step A3 to step A4. In this step the contents of the register in the eegister memory 80 identified by the register field of the information in the byte 1 location of the instuction buffer 60 are transferred to a B
latch 81. In this specific embodiment, the A and B register -, .. : . - : .. . . . .

~ pg. 26 memories 76 and 80 are maintained as copies of one another and constitute all the general purpose registers that can be addressed by the contents of the register field of any operand specifier. For any mode other than a literal mode, the B latch 81 contains an address. Therefore, in step A5, the microsequencer 44 establishes a data path through the B
multiplexer 65 and the ALU 66 and transfers the address to the virtual address latch 67. In addition, this addresses passes, without alteration, through a shifting circuit 82, a DF
multiplexer 83 and a demultiplexer 84 to a D register 85. Those bits that would correspond to the exponent part of a floating point number are simultaneously transferred from the ALU 32 into an exponent section 86 of the data paths 36.
In step A6 the system transfers the contents of the program counter 64 to a program count save register 90 thereby to enable certain instructions that require long processing intervals to be suspended in the event an interruption occurs.
Circuitry for detecting interruption conditions and controlling tracing operations then is enabled. The microsequencer 44 in Fig. 3 transfers the contents of the byte 2 through 5 positions in the instruction buffer 60 over the ID bus 43 and through a Q
multiplexer 91 to a Q register 92. These byte locations contain information that represents potential displacement values if the .. . .:.:.. . ~,, :...... . -; . ;.. :;.. :.,. . .. ;., ,-, .; -" , ,, , , , ~ . . . , .. ,.,.. . . ,. ......... ~:

~ Pg. 27 operand specifier defines one of the displacement modes.
In step A8'the instruction buffer control 61 is enabled to request transfers of information in order to continuously fill the instruction buffer 60 with valid s information. If a number of bytes in the instruction buffer can be cleared, this clearing operation is performed in step A9 and, in step A10, the program counter 64 is incremented to compensate for the number of bytes that have been cleared. This clearing operation and program counter update are performed if relevant data is already in the Q register 92. In step A11 the central processor lO determines whether the operand specifier contains a literal. If it does, the microsequencer 44 branches to step Al2 to place the literal in the Q register 92. Then the next operand specifier is decoded or, if all the operand specifiers have been decoded, the central processor unit 10 processes the operand or operands in response to the operation code. If the operand specifier does not contain a literal, the microsequencer 44 branches to step Al3 to complete the operand specifier decoding operation.
At this point in the sequence, the A latch 75 contains information corresponding to the register bit positions from the byte 2 location in the instruction buffer 60 (6A). The B latch 81, virtual address latch 67 and D register 85 contain the "

' Pg. 28 contents of the register that was selected by the register field bits in the byte 1 position of the instruction buffer 60. The Q
~ ~ s~ ~ c ~ ~
A register 92 contains any }~h~ets~ stream data that may exist while the program counter 64 contains the address of the next operand specifier. Further operations depend upon the specific instruction being decoded and the nature of the operand specifier. There are numerous ways in which the central processor can complete the operand specifier decoding operation.
An exhaustive description of each possibility would require an extraordinary amount of description. However, the operation of a central processor unit 10 in accordance with this invention can be clearly understood by examining the operation of the central processor unit 10 in response to some typical instructions.

ii. Decoding Operand Specifiers in an Adding Instruction a. Literal and Displacement Addressing Modes Fig. 8A depicts an instruction for adding information in two locations and depositing the sum in a third location without affecting either the first or second storage locations as it would appear in the instruction buffer 60 after the instruction has been retrieved in step A2 in Fig. 7. Fig. 8B
depicts the information stored at the table entries for the --operation code associated with this instruction which is "Cl".

,~1 ;

.. ... . . . . . ..

" ~ . `'' '~'. ',',. ' ::': '"- :' ',`,. ' ''' '''' ',' '' '':

Pg. 29 The meaning of the particular bit positions that constitute the operand specifier information are shown in Fig. 6B.
The first operand specifier is "07". With the execution point counter 73 at "00", the corresponding table entry in the execution address memory 71~contains the following information: (1) a specifier has been selected (bits 4 and 5);
(2) the operand is an integer number (bits 0 and 1); (3) the operand contains four bytes (bits 2 and 3); and (4) the operand is being read from the memory (bits 6 and 7). Furthermore, the ; 10 information that is transferred from byte 1 position in the instruction buffer 60 into the specifier decode logic 72 causes the specifier decode logic 72 to produce "00" as the low-order bits in the starting address for the microsequencer 44. (See Fig. 6B.) Following the sequence in Fig. 7, the microsequencer 44, in step Bl in Fig. 8C, establishes the necessary data paths to transfer this literal, namely "7" from the Q register 92 to the D register 85 through a data aligner 93 and the D
multiplexer 84. At this point, the instruction buffer control 61 shifts bytes 2 through 7 one byte position to the right and advances the execution point counter 73 to "01" (step B2). From the table in Fig. 8B will be seen that this indicates that the information now in byte 1 is an operand specifier for a longword integer number that is to be transferred into the central - : . :: . .: - :: - . - .

~ P9. 30 processor unit 10.
Now the system immediately transfers back to the steps in Fig. 7. At step All the second operand specifier is evaluated. In combination with the information now provided by the various tables in Figs. 4, 6B, -6C and 8B, the microsequencer responds to establish the sequence of data paths that are necessary to decode an operand specifier that uses a byte displacement mode of addressing. During this decoding sequence the A latch 75 and B latch 81 both receive the contents of the register Rl (step B3). The Q register receives the byte displacement value "20" byte 3 in step B4. In step B5 the ALU
66 produces the sum of the contents of the B latch 81 which contains the contents of the designated register and the contents of the Q register 92 which contains the displacement lS value. More specifically, the contents of the Q register 92 pass through the RA multiplexer 94 and an A multiplexer 95 into the A
~ input of ALU 66 while the contents of the B latch 81 pass J through the B multiplexer 65 into the ALU 66. The sum of those two inputs represent the displaced address which is then 1 20 transferred to the virtual address latch 67 and also back ,~ through the shifting network 82, DF multiplexer 83 and Q
I multiplexer 91 to the Q register 92. Now, in step B6, the microsequencer 44 enables the instruction buffer control 61 to .~

Pg. 31 clear out the contents of the second operand specifier and to initiate a request to obtain the second operand in step B7. In step B8 the microsequencer 44 transfers the second operand from the MD bus through another data aligner 96 and the D multiplexer 84 to the D register 85 and the first operand is transferred to the Q register 92.
Now the microsequencer 44 advances the execution point counter 73 (step B9) to the third table entry in Fig. 8B that specifies an execution. Therefore, the microsequencer 44 controls the ALU 66 so that it generates the arithmetic sum of the two addends and transfers the sum into the D register 85 during step 810.
In step Bll the microsequencer 44 advances the execution counter 73 to "11", the final state shown in Fig. 8B.
The information in the table indicates that the operand specifier designates an address in memory to which a four-byte integer number is to be written. The value C2 is resident in the ` byte 1 position of the instruction buffer 60, and the "C" in the register mode field defines a word displacement address.
Therefore, the microsequencer 44 uses steps B12 through B16 to calculate the memory address and to initiate a transfee of the sum to that memory location. When these steps have been completed, the microsequencer 44 clears the execution pointe ..

5:~5 Pg. 32 ; counter 73 in step B17 and reverts to the steps in Fig. 7 thereby to initiate the transfer and decoding of the next instruction in sequence.
' - 5 _. Indexed Addressing Mode The third operand specifier shown in Fig.8A defined a word displacement mode. If the adding instruction were to be - used iteratively and it were desired to store successive sums in an array of locations, a programmer might elect to utilize the word displacement mode but also to index the locations. Such an indexed displaced address can be produced with this central processor unit. The programmer would alter the third operand specifier in Fig. 8A to appear as the instruction in Fig. 9A.
That instrucrion identifies the R7 register as an index register.
More specifically, the original byte 4 position in the instruction buffer contains "47" when the instruction decoding operation begins. Step Cl in Fig. 9C corresponds to step Bll in Fig. 8C. In step Cl, the execution point counter 73 in Fig. 6A
is advanced thereby to indicate a writing operation with a longword integer number. At this time, the A latch 75 and B
latch 81 both contain the contents of register 7; the Q register 92 and the virtual address latch 67 contain the second operand J

4~ Pg. 33 .
address and the D register 85 contains the sum of the addition ; operation. At the time of step Cl, the third operand specifier occupies the byte 2 through byte 5 positions in the instruction buffer 60. Thus, the A latch 75 will contain the contents of the R7 register which is the designated index register. In step C2 the contents of the A latch are transferred through the A
multiplexer 95 and ALU 66 to the shifting circuit 82.
The shifting network 82 shifts the index value to the left by a number of positions that corresponds to the LENGTH
signals from the execution address memory 71 during step C3. In this case, a longword is involved, so the LENGTH field contains "10" and the index is shifted two positions thereby effectively to multiply the index value by 4 and compensate for the size of , the longword data item that is to be transferred. If a byte is `~ 15 being transferred, no shift will occur so the index is effectively multiplied by 1 whereas if a quadword is being transferred, the index register contents are shifted to the left by three times, thereby to effectively multiply the index by 8 and compensate for the eight-byte quadword size. Thus, this ; 20 operation scales the index value to the size of the data item being transferred.
After scaling, the index value is stored in a C
register memory 97 at a predetermined location that is specified /

.. ;, .: . : , ..

1~4~ Pg. 34 as a T7 register during step C4. Also the contents of the byte 1 position in the instruction buffer 60 are clear,ed so the value "C" shifts into the byte 1 position. At step C5 the contents of byte positions 2 through 5, which includes a displacement value "0140" are transferred to the Q register 92 over the ID bus 43.
Then, depending upon the operation code and the operand specifier being processed, the specifier decode logic 72 controls the clearing of byte positions 1 through 5 in the instruction buffer in step C6 and increments the program counter ' 10 by a corresponding number in step C7. During step C8 the instruction buffer control 61 is enabled to retrive information from any location identified by the contents of the virtual address latch 67. In step C9 the arithmetic sum in the D
register 85 is moved to the Q register 92 and the displacement number "0140" is moved from the Q register 92 to the D register 85. The B latch 81 contains the contents of register 2 and this value is moved through the B multiplexer 65 to the input of the ALU 66 in step C10. The displacement value from the Q register 92 is moved to the A input. The sum constitutes the displaced address, and it is tranferred back to the D register 85 and to the virtual address latch 67, although it is not used. In step Cll the remaining byte portions of the third operand specifier are cleared.

... . . : ... .... .. .. . ,,, :.. , , ,.... . .: .:
- . - . . . .... . . . . , . ; ~ . .. . , . : - .. ~ . .. . . .

5~
''' The indexing operation then occurs. In step Cl2 the contents of the T7 register in the register memory 97 are transferred to a C latch 98. This is the scaled index, and during step C13 it is transferred through the B multiplexer 65 to the B input of the ALU 66. At the same time, the displaced address is transferred from the D register 85 through the RA
multiplexer 94 and the A multiplexer 95 to the A input of the ALU 66. The indexed address is then produced by adding the numbers at the two inputs and transferring the sum, which is the indexed address, to D register 85. In step C14 this address is , moved to the virtual address latch 67.
The operand now is in the Q register 92. The microsequencer 44 moves this sum from the Q register 92 back to the D register 85. Then, in step C14, the microsequencer 44 moves the operand through another data aliqner 96 onto the MD
bus 35 for transfer to the memory unit ll and the data cache 33 i at the location addressed by the contents of the virtual address latch 67. As a final step, the execution point counter 73 and the byte 0 position in the instruction buffer 60 are cleared.
This enables buffer control circuit 61 to shift the next valid data in the instruction buffer 60 into the 0 and successive byte positions.
From the foregoing discussion, it will be apparent ~ Pg. 36 that the index mode is not a separate and exclusive mode. It is an extension to any of the available addressing modes that reference memory (i.e., modes 6 through 15). These modes are marked with asterisks in Fig. 4. The indexing mode is implemented with a single byte which specifies thé index register and this can be combined with any further extension of the operand specifier which can comprise from one to nine additional bytes. In this connection the indexing mode can be considered to provide a base register which contains a physical ; 10 offset plus the index register which contains the logical offset in an array. The scaling provided by the shifting operation ; automatically compensates for the data word size so the index register itself does represent a logical offset of one data item notwithstanding the size of that data item. It will also be apparent that the variable length nature of the operands specifiers further enhance the indexing mode because an instruction only includes the space for indexing information when an indexed address is to be produced.

iii. Subroutine Calling Instructions Figs. lOA and lOB depict two different subroutine calling instructions. The calling instruction in Fig. lOA is a "CALLG" instruction and comprises an one-byte operation code ':' ' Pg. 37 "FA" followed in this specific figure by a one-byte operand ~ specifier to define an argument list and a one-byte operand ; specifier to define a destination, namely the first location in the subroutine being called. Fig. lQB shows a "CALLS" calling instruction with an operation code "FBN. The ~ALLG instruction shown in lOA calls a subroutine when the argument list is stored at various locations in the memory whereas the CALLS instruction in Fig. lOB calls a subroutine when the calling subroutine has already transferred the argument list to be used into a memory stack identified by the R14 general purpose register that operates as a stack pointer register. The argument list contains input addresses and values to be used by the subroutine and ~ output addresses for the output values produced by the `~ subroutine.
Referring now to Fig. lOC-l, in Step Dl, the central processor unit 10 evaluates the first operand specifier and transfers the argument list address in the case of the instruction shown in Fig. lOA or the argument count in the case of the instruction shown in Fig. lOB to the D register 85. In step D2 the contents of the D register 85 are transferred to the Q register 92 and the destination field in the destination operand specifier is evaluated. The resulting initial address for the subroutine is moved to the D register 85 and to the .~ ~
,;

'` ` : '' . `- `. ` . ~ -: ~ : . : . ' Pg. 38 virtual address latch 67.
In accordance with one aspect of this calling instruction, the first location of the subroutine contains a subroutine mask that is interpreted as follows. Bit positions 0 through 11 correspond directly to general registers R0 through Rll. Each bit position in the subroutine mask has been set or cleared depending upon whether the contents of the corresponding general purpose register are to be saved or not. As apparent, '~e.,~;3'~ ~S
the contents of a general purpose eegiGtcr will be saved if the subroutine will alter the contents of that general purpose register. The remaining general purpose registers R12 through ~e_ R15 either are always saved or'never saved. More specifically, the R12 register constitutes an argument pointer register and it is always saved. Likewise, the R13 register constitutes a frame pointer register, and the R15 register constitutes a program counter register; they also are always saved. On the other hand, the R14 register constitutes the stack pointer register and is never saved. Thus, the four m~ost significant bit positions in the subroutine mask can be used for other purposes.
In this particular embodiment, bit positions 12 and 13 are always 0, although they could be used for other purposes.
Bits 14 and 15, on the other hand, establish the initial conditions of the integer overflow and decimal overflow error ,: ;,~ .,' . ,, , , !

Pg. 39 condition flags upon entry to the subroutine itself.
, ~
Still referring to Fig. lOC-l and Step D3, the program counter 64 previously has been incremented thereby to identify the first instruction following the subroutine calling .
instruction in the calling routine. Next, the Q register 92 is cleared and the subroutine mask is moved from the D register 85 to a T2 register in the C registee memory 97. Bit positions 12 and 13 in the subroutine mask are tested to determine if they have a 0 value. If they do not, an error condition exists and appropriate trapping conditions occur. Normally, step D5 teansfers to step D6 whereupon the subroutine mask is transferred to the C latch 98. In step D7 the number of ones in the subroutine mask are counted in order to establish the number of general registers which need to be stored to preserve the state of the calling routine. Step D8 represents a branch which either transfers operation to the step shown in Fig. lOC-2A for the call instruction shown in Fig. lOA or Fig. lOC-2B for the call instruction shown in lOB.
Assuming that the CALLG instruction shown in Fig. lOA
is being decoded, it is necessary next to establish the total space in the memory stack that will be occupied by the state of the calling routine. For this instruction, five additional longwords will be saved. Thus, in step D9 that number is added ,~

~ Pg. 40 to the number of ones in the mask and the sum is converted into a number of bytes and then used to determine, with the contents of the stack pointer register, the last location in the stack (step D10). As previously indicated, the central processor unit 10 operates as a virtually addressed machine. Therefore, steps ; must be taken to assure that there is sufficie~t space in the memory stack allocated to the particular program being implemented to accomodate all the registers that will be saved.
During step Dll the contents of the R14 register, the stack pointer register, are transferred to the A and B latches 75 and 81 and the least two significant bits of the R14 register are transferred to a T4 register in the C register memory 97 in step D12.
In step D12 the stack pointer also is aligned by replacing the two least significant bits in the R14 register with zeroes thereby forcing the address in that register to define a longword boundary. As transfers into and from the memory units ll and the cache memory unit are made on longword boundaries, this alignment procedure assures that each register can be saved with a single memory transfer and improves the overall efficiency of the instruction. Otherwise, there would be a possibility of having to perform two transfers to save each register thereby greatly increasing the amount of time required :.
,~.. ,~ ,,, ,,,,,, ",.. ........... ...... .. ... .

j: ' pg. gl to execute the calling instruction and subsequent instructions in the subroutine that normally are aligned.
After alignment, the aligned contents of the SP
register are decremented to identiy successively a sequence of vacant longword locations in the memory. This enables the microsequencer 44, in step D13, to transfer the contents of the program counter 64 and those general purpose registers that are specified in the subroutine mask into the memory stack. This step saves the location of the calling routine at which the instruction following the calling instruction will be found and those general purpose registers that will be used by the subroutine. After completing step D13, the state of the calling ; routine has been saved, so the central processor transfers to the steps shown in Fig. lOC-3.
Fig. lOC-2B sets forth the steps taken if the CALLS
instruction shown in Fig. lOB is being decoded. In steps D14 and Dl5, the central processor unit 10 again determines whether there is sufficient space in the memory stack allocated to it for storing the information. The two least significant bits of the SP register are moved to a T4 register in the C register memory 97 in step D16. In step D17, the argument count from the T3 register in the C register memory 97 moves to the Q register 92. In addition a CALLG/CALLS flag is set. This flag is saved Pg. 42 subsequently in the memory stack and is used later by the return instruction to control the retrieval of information from the memory stack. Thus, the CALLG and CALLS instructions can be used ` to call a subroutine interchangably. The SP register is decremented to identify the next available location and the decremented contents are stored in the D register 85. Then the argument count in the Q register 92 is stoeed in the memory stack thereby to complete the argument list. During step D18 the contents of the D register are modified so the R14, or stack pointer, register is aligned on a longword boundary for the next available location. In step Dl9, the microsequencer 44 saves the calling routine state by saving the program counter and general purpose registers that will be used by the subroutine in the memory stack as it does in step D13 in Fig. lOC-2A beginning at the aligned location in the memory stack.
Now referring to Fig. lOC-3, the microsequencer 44 transfers to step D20 after completing the transfers represented by step D13 in Fig. lOC-2A and step D19 in Fig. lOC-2B. More specifically, the contents of the R13 register that acts as the frame pointer register are then transferred to the next available location in the memory stack. This is followed by the contents of the R12 register that constitutes the argument pointer register. In step D22, the condition flags for the \
~ 5~ pg~ 43 calling routine are cleared. Next the central processor unit 10 transfers the starting address for the subroutine from the Tl register in the C register memory 97 to the virtual address latch 67 and the program counter 64 (step D23). Then the instruction buffer control 61 begins transferring the first instruction in the subroutine to the instruction buffer 60. The ; microsequencer 44, in step D24, forms a word from the old processor status word, the subroutine mask, the stack alignment bits and the CALLS/CALLG flag and saves this word in the memory stack. In step D25 the microsequencer 44 transfers the contents of the stack pointer register to the R13 register as the new register frame pointer. Next the T bit is set to correspond to the T bit in the calling routine in step D26; and, in step D27, the microsequencer 44 sets the decimal and integer overflow flags in accordance with the two most significant bits in the subroutine mask; other flags, such as a floating underflow flag, can also be controlled.
i In step D28, the information is transferred into the Rl2 register as the new argument pointer register. If the instruction is the CALLG instruction shown in Fig. lOA, this information contains the address of the first location in the argument list which, in turn, contains the argument count. If the instruction is the CALLS instruction shown in Fig. lOB, this J

. .

.

Pg. 44 information contains value of the stack pointer after the argument count operand is moved to the memory stack. In either case, the next operation is to store, in step D28, a zero value for a condition handler address is stored in the next available locat~on of the memory stack. This reserves a location in the memory stack for any subsequent condition handler address and also indicates that initially no condition handler exists.
A condition handler is a secondary subroutine which can be called if some unusual condition occurs during the execution of the primary subeoutine. Specifically, a condition handler subroutine is used to return the data processing system to a known state in the event of some error. For example, if a subroutine were to attempt to access a non-existent file, a condition handler subroutine could be called. In such a application, the subroutine would store the initial address for the condition handler subroutine in the reserved location in the memory stack.
After step D28 the central processor can begin to process the first instruction in the subroutine which the instruction buffer control 61 began to retrieve in step D23.
The two subroutine calling instructions are very powerful. When either calling instruction has been completed, all information that is necessary for a transfer to and from a subroutine has ~J

" " ~ ~ ~ " ", ~ " "

.

Pg. 45 been properly saved. More specifically, the memory stack contains the calling routine program counter and other information that preserves the state of the calling routine.
The arguments are easily retrieved by using the argument pointer in the R12 register and the various condition flags are set, so the environment for the subroutine also is established.
The last instruction in the subroutine is a return instruction which comprises a single operation code; it has no operand specifiers. In response to this instruction, the contents of the current frame pointer in the R13 register are modified and transferred back to the R14 register to indicate the bottom of the memory stack that was established by the previous call instruction and enables the microsequencer 44 to pass immediately to the beginning of the relavant portions of ~*
,..... .
the stack.
The contents of the next location in the memory stack includes ~1) the processor status for the calling routine, (2) the subroutine mask, (3) the indication of whether subroutine was called by the instruction in Fig. lOA or lOB, and (4) the two-bit value stored during stack alignment. The subroutine mask is tested to determine whether bits positions 0 through 11 are zero. If they are, no registers need to be restored so it is possible to isolate the saved subroutine mask and test thé two pg. 46 high-order bits in the saved subroutine mask thereby to reestablish the decimal and integer overflow flags. If the bits 0 through 11 of the mask contain any ones then those registers must then retrieved. Next, the stack pointer is properly S aligned in response to the saved stack alignment bits. The ; central processor unit tests the bit which identifies the calling instruction. If the instruction in Fig. 10A has been called, the return is complete, so the microsequencer 44 begins to process the next instruction in the calling routine.
Otherwise, it calls the argument count from the memory stack, increments that count by one, converts that count into the number of bytes, adds the byte number to the contents of the stack pointer register and stores that sum into the virtual address latch 67. Then the retrieved program counter is used to enable the instruction buffer control 61 to retrieve the next instruction from memory which is the instructi~n following the call instruction in the calling routine thereby to complete the return from the calling instruction shown in Fig. 10B.
In summary, there is described a data processing system that includes a processor that decodes various types of instructions which can have any given length. Certain of these instructions are program control instructions that contain no operand specifiers. Other instructions may contain one or more ~, g. 47 opeeand specifiers, and each operand specifier defines the location of an operand. In accordance with this invention, an operand specifier may comprise any number of bytes which the central processor unit utilizes to calculate a final address.
The objects of this invention are met by such a processor because the ability of the central processor unit to decode instructions having different numbers of operand specifiers and having operand specifiers of different sizes enables it to process a very Plexible set of instructions. Moreover, as each instruction is sized according to the function it must perform in the instruction stream, no ields must be devoted to irrelevant information. Therefore, programs tend to be compact and the programmer's job is simplified.
The foregoing description is limited to a specific embodiment of this invention. It will be apparent, however, that this invention can be practiced in data processing systems having diverse basic _ or in systems that use different internal circuitry than is described in thiC
specification with the attainment of some or all of the foregoing objects and advantages of this invention. Therefore, it i8 the object oP the appended claims to cover all such variations and modifications as come within the true spirlt and scope of this invention.

Claims (17)

THE EMBODIMENTS OF THE INVENTION IN WHICH AN EXCLUSIVE
PROPERTY OR PRIVILEGE IS CLAIMED ARE DEFINED AS FOLLOWS:
1. A central processor means for processing operands in response to instructions in a data processing system, the data processing system addition-ally including a memory means for storing the operands and instructions, each operand comprising at least one information bit and each instruction including an operation code having at least one information byte and certain of the instructions including at least one operand specifier, each operand specifier comprising at least one information byte and identifying the location for an operand in the data processing system, said central processor means comprising:
program counter means for identifying locations in the memory means of oper-ation codes in successive instructions, instruction retrieval means connected to said program counter means for normally sequentially retrieving successive bytes of information from the memory means to which said instruction retrieval means connects, operation code decoding means connected to said instruction retrieval means for ascertaining, in response to the operation code, the number of operand specifiers that the instruction contains, and operand specifier decoding means connected to said instruction retrieval means and to said operation code decoding means for sequentially decoding successive bytes of the information following the operation code to identify a location for each specified operand, said operand specifier decoding means being responsive to the information bytes that indicate the number of information bytes in the operand specifier and that constitute each operand specifier, thereby to enable retrieval from the memory means of successive instructions comprising a variable number of information bytes stored in contiguous byte locations in the memory means.
2. A central processor means as recited in claim 1 wherein said instruction retrieval means includes: instruction buffer means for receiving the successive information bytes from a predetermined number of locations in the memory means beginning at the location specified by said program counter means, and transfer means connected to said program counter means and said instruction buffer means for transferring the information from the memory means to said instruction buffer means, and said program counter means further includes means for identifying the first information byte location of the operation code and each operand specifier in each instruction.
3. A central processor means as recited in claim 2 wherein said instruction buffer means includes interconnected multiple byte register means for storing a predetermined number of successive information bytes that are retrieved from initial locations identified by said program counter means and latch means connected to a first byte register means for storing an information byte of the operation code.
4. A central processor means as recited in claim 3 wherein said instruction buffer means includes shifting network means connected to the output of said multiple byte register means and multiplexer means selective-ly coupling one of the outputs of said shifting network means and said transfer means to the input of said multiple byte register means.
5. A central processor means as recited in claim 4 wherein said instruction buffer means includes instruction buffer control means connected to said multiple byte register means, said multiplexer means and said trans-fer means for requesting transfers of information to said instruction buffer means.
6. A central processor means as recited in claim 5 wherein said multiple byte register means includes a storage location means for each information byte, each said storage location means including a validity bit position to identify each said byte storage location means that contains valid information, said instruction buffer control means being responsive to said validity bits for shifting valid information bytes into locations that contain invalid information bytes.
7. A central processor means as recited in claim 6 wherein said transfer means includes means responsive to the number of vacant locations in said instruction buffer means and the successive transfers of information to said instruction buffer means for advancing said program counter means to identify the successive initial locations of a next memory operation code or operand specifier in the memory means.
8. A central processor means as recited in claim 1 wherein said instruction retrieval means includes latch means for storing an information byte in an operation code and wherein said central processing means addition-ally comprises control means connected to said operation code decoding means for establishing a sequence of control states within said central processing means for processing the instruction.
9. A central processor means as recited in claim 8 wherein said operand specifier decoding means comprises: addressing means connected to said operation code decoding means and said control means for generating a sequence of addresses for said operation code decoding means, and specifier decode logic means connected to said operation code decoding means and to said instruction retrieval means for generating a starting address that is used by said control means for establishing a set of control states that process the operand specifier to identify the location for the operand.
10. A central processor means as recited in claim 9 wherein said addressing means includes execution point counter means connected to said control means for establishing a set of count values, and said operation code decoding means includes execution address memory means connected to said execution point counter means, said operation code latch means and said specifier decode logic means for generating a starting address for said specifier decode logic means in response to the operation code and the state of said execution point counter means.
11. A central processor means as recited in claim 10 wherein said execution address memory means includes means for storing information corres-ponding to the size of an operand and information for specifying the numerical characteristic of the operand.
12. A central processor means as recited in claim 11 wherein said execution address memory means further includes means for storing information for identifying whether the information bytes in said instruction retrieval means constitute an operand specifier.
13. A central processor means as recited in claim 11 wherein said execution address memory means further includes means for storing information for identifying the nature of the operand transfer that is to be performed.
14. A central processor means as recited in claim 10 wherein said central processing means includes a plurality of the general purpose registers and an operand specifier includes register identification portion and a mode portion, said specifier decode logic means being responsive to the register identification portion and the mode portion.
15. A central processor means as recited in claim 14 wherein the mode portion of an operand specifier identifies a literal mode and said central processor means includes means connected to said specifier decode logic means for using the contents of said general purpose register identified by the register identification portion of said operand specifier as the operand.
16. A central processor means as recited in claim 14 wherein the location for an operand is in the memory means and said central processor means includes means connected to said specifier decode logic means and responsive to the mode portion operand specifier for converting the contents of said general purpose register designated by the register identification portion into a memory means address for the operand.
17. A central processor means as recited in claim 1 wherein said instruction buffer means additionally includes means for indicating whether the first information byte in an operation code is the first of plural information bytes in the operation code, said instruction decoding means being responsive to said indicating means for causing the second information byte in the instruction to be decoded as part of the operation code.
CA314,183A 1977-10-25 1978-10-25 Central processor unit for executing instructions of variable length Expired CA1114515A (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US84505577A 1977-10-25 1977-10-25
US845,055 1977-10-25

Publications (1)

Publication Number Publication Date
CA1114515A true CA1114515A (en) 1981-12-15

Family

ID=25294286

Family Applications (1)

Application Number Title Priority Date Filing Date
CA314,183A Expired CA1114515A (en) 1977-10-25 1978-10-25 Central processor unit for executing instructions of variable length

Country Status (9)

Country Link
JP (1) JPS5931733B2 (en)
AU (1) AU518656B2 (en)
BR (1) BR7807060A (en)
CA (1) CA1114515A (en)
DE (1) DE2846520A1 (en)
ES (1) ES474427A1 (en)
FR (1) FR2407519B1 (en)
GB (1) GB2007887B (en)
IN (1) IN150275B (en)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4415969A (en) * 1980-02-07 1983-11-15 Intel Corporation Macroinstruction translator unit for use in a microprocessor
US4491908A (en) * 1981-12-01 1985-01-01 Honeywell Information Systems Inc. Microprogrammed control of extended integer and commercial instruction processor instructions through use of a data type field in a central processor unit
US4586130A (en) * 1983-10-03 1986-04-29 Digital Equipment Corporation Central processing unit for a digital computer
US5761491A (en) * 1996-04-15 1998-06-02 Motorola Inc. Data processing system and method for storing and restoring a stack pointer

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3573851A (en) * 1968-07-11 1971-04-06 Texas Instruments Inc Memory buffer for vector streaming
US3577189A (en) * 1969-01-15 1971-05-04 Ibm Apparatus and method in a digital computer for allowing improved program branching with branch anticipation reduction of the number of branches, and reduction of branch delays
US3614740A (en) * 1970-03-23 1971-10-19 Digital Equipment Corp Data processing system with circuits for transferring between operating routines, interruption routines and subroutines
US3614741A (en) * 1970-03-23 1971-10-19 Digital Equipment Corp Data processing system with instruction addresses identifying one of a plurality of registers including the program counter
US3710324A (en) * 1970-04-01 1973-01-09 Digital Equipment Corp Data processing system
US3999163A (en) * 1974-01-10 1976-12-21 Digital Equipment Corporation Secondary storage facility for data processing systems
DE2419837B2 (en) * 1974-04-24 1976-12-02 Nixdorf Computer Ag, 4790 Paderborn CIRCUIT ARRANGEMENT FOR ADDRESSING A MICROPROGRAM IN DATA PROCESSING DEVICES AND METHODS FOR EXECUTING JUMP COMMANDS
JPS5145946A (en) * 1974-10-17 1976-04-19 Fujitsu Ltd DEETASHORISHI SUTEMU
JPS5282149A (en) * 1975-12-29 1977-07-09 Fujitsu Ltd Instruction address control system

Also Published As

Publication number Publication date
DE2846520C2 (en) 1991-10-24
BR7807060A (en) 1979-07-17
FR2407519B1 (en) 1987-08-28
FR2407519A1 (en) 1979-05-25
JPS5931733B2 (en) 1984-08-03
IN150275B (en) 1982-08-28
AU518656B2 (en) 1981-10-15
GB2007887A (en) 1979-05-23
ES474427A1 (en) 1979-04-16
DE2846520A1 (en) 1979-04-26
GB2007887B (en) 1982-07-28
AU4104578A (en) 1980-05-01
JPS5484943A (en) 1979-07-06

Similar Documents

Publication Publication Date Title
US4236206A (en) Central processor unit for executing instructions of variable length
CA1114518A (en) Central processor unit for executing instructions with a special operand specifier
US4395758A (en) Accelerator processor for a data processing system
US4338663A (en) Calling instructions for a data processing system
US4454578A (en) Data processing unit with pipelined operands
US4524416A (en) Stack mechanism with the ability to dynamically alter the size of a stack in a data processing system
EP0071028B1 (en) Instructionshandling unit in a data processing system with instruction substitution and method of operation
US4394725A (en) Apparatus and method for transferring information units between processes in a multiprocessing system
US4297743A (en) Call and stack mechanism for procedures executing in different rings
US4241399A (en) Calling instructions for a data processing system
US4361868A (en) Device for increasing the length of a logic computer address
US6064815A (en) System and method for generating fix-up code facilitating avoidance of an exception of a predetermined type in a digital computer system
US3955180A (en) Table driven emulation system
US4620275A (en) Computer system
US4395757A (en) Process synchronization utilizing semaphores
US5442802A (en) Asynchronous co-processor data mover method and means
US4369494A (en) Apparatus and method for providing synchronization between processes and events occurring at different times in a data processing system
US4926317A (en) Hierarchical memory system with logical cache, physical cache, and address translation unit for generating a sequence of physical addresses
US4084224A (en) System of controlling procedure execution using process control blocks
US4077058A (en) Method and apparatus for executing an extended decor instruction
US5218712A (en) Providing a data processor with a user-mode accessible mode of operations in which the processor performs processing operations without interruption
US5317717A (en) Apparatus and method for main memory unit protection using access and fault logic signals
US5522051A (en) Method and apparatus for stack manipulation in a pipelined processor
US4812972A (en) Microcode computer having dispatch and main control stores for storing the first and the remaining microinstructions of machine instructions
CA1114515A (en) Central processor unit for executing instructions of variable length

Legal Events

Date Code Title Description
MKEX Expiry