Abstract:
In a data processor for handling data comprising words of n-bits, a plurality of (n+m)-bit registers is provided for use as general purpose and address expansion registers, and effective addresss of (n+m)-bits are generated by adding addresses having n bits and provided in the instructions with the (n+m)-bit content of registers designated by the instructions. Thus, a data processor can be designed so as to have an expandable address bit length and flexible addressing with little additional hardware.

Description:
This is a continuation of application Ser. No. 617,849 filed on June 8, 1984, abandoned, which is a continuation of application Ser. No. 315,878, filed on Oct. 28, 1981, abandoned, which is a continuation of application Ser. No. 165,045 filed on July 1, 1980, abandoned, which is a continuation of application Ser. No. 954,539 filed Oct. 25, 1975, abandoned. 
    
    
     BACKGROUND OF THE INVENTION 
     1. Field of the Invention 
     The present invention relates to a digital data processor which handles data comprising words of n-bits wherein address modification for generating (n+m)-bit addresses requires comparatively little hardware and has a high degree of freedom. 
     2. Description of the Prior Art 
     In a data processor for n-bit words (hereinafter referred to simply as a processor), and particularly for a value of n in the range from 8 to 32, an instruction is composed in general of 2 to 3 words, and the first word includes an operation code part and a register designation part, while the other words may each be used for designating the location of an operand. Therefore, the memory address is limited to n-bits, and the capacity of the memory unit is limited to 2 n  words. 
     Presently, as a method of expanding a memory address to n+m bits in such a processor, the base register method and the bank method are well known. 
     In the base register method, a base register of n+m bits is provided for base address modification, and an (n+m)-bit address is obtained by adding the n-bit address given in an instruction with the content of said base register. In this method, memory word capacity can be used effectively since the base address can be selected freely, but on the other hand, it is not suited to a small size processor since a relatively large amount of hardware is required as will be described later. U.S. Pat. No. 3,949,378 discloses one example of the prior art base register method. 
     In the bank method, an m-bit bank designation register is provided, and an (n+m)-bit address is obtained by concatenating (connecting in series) the content of the bank designation register to the high order side of the n-bit address given in the instruction. In this method, memory word capacity cannot be used effectively since the boundaries of each memory area can be designated only in terms of every 2 n  words, however, only a small amount of hardware is required for this concatenation. 
     The prior art base register method is explained in reference to FIG. 1, wherein, by way of example, and for the subsequent disclosure following, n=16 and m=3. The figure shows a 19-bit instruction counter 1 and a memory space 2 of 2 19  =512K words. In the address 7, designated by the content of the instruction counter 1, the 1st word of a 2-word instruction is stored, and in the adjacent address the 16 bit content of the 2nd word of the same instruction is stored. The effective operand address 6 is obtained by simultaneously adding with a three input adder (1) the 16-bit content 3 of the 2nd word of the instruction, (2) the 16-bit content 4 of the general purpose register designated by the register designation part in the 1st word, and (3) the 19-bit content 5 of the base address register. Said general purpose register is used as the index register. 
     The meaning of index modification and base address modification is now explained. When plural programs run on one processor on a time sharing basis, the base address indicates the heating address of the memory area in which each program can be used. When a certain program runs, the base address for such a program is placed in the base address register by the control program. In general, the memory area used in each program is a maximum of 64K(=2 16 ) words, but more areas can also be used if provided for at the time of program generation. When the same sub-routine or list information is used in different parts of a program, an effective address for desired data in the relevant sub-routine or list information can be defined by adding the relative address in the sub-routine or list with the heading address of the relevant sub-routine or list information. In this case, the heading address of the sub-routine is indicated by an index and stored in the index registers. The index registers are generally used also as general purpose registers. In case a plurality of sub-routines or list information is used in one program, it is desirable to prepare all of the heading addresses for the index registers. Because it takes longer to load these heading addresses from the memory each time required, many index registers are required. Since the base address does not change while one program runs, one or two base addresses are sufficient in general. 
     Although it is possible to perform the index modification and base modification separately by using a 2-input adder, it is not practical because a longer time is taken. Thus a 3-input adder is generally used. 
     As explained above, the base register method requires a 3-input adder for practical operation and much hardware is required, so that the method is not suited to a small size processor. 
     The bank method is now explained in reference to FIG. 2, showing a 19-bit instruction counter 11 and a 512K word memory space 12. The 19-bit effective address 16 is obtained with the two input adder by adding (1) the content (the 2nd word of the instruction) of the address next to address 17 with (2) the index register 14 indicated by the register designation part in the 1st word, and by concatenating the content of the 3-bit bank designation register 15 to the upper bit of the sum. In this method, a 2-bit adder can be used and little hardware is required for this concentration, but on the other hand, there are disadvantages. 
     Here, each area of 2 16  =64K words is called a bank. As described in the explanation of the base register method, when assigning areas within 64K words to be used for each program, it is inevitable to assign one bank to each program. Even if a certain program requires a memory area of less than 64K words, the remaining area becomes useless because it is difficult to make the other program use the remaining area of the assigned bank. 
     SUMMARY OF THE INVENTION 
     It is an object of the present invention to realize address modification for designating an increased-bit base address without increasing the amount of hardware. 
     It is another object of the present invention to realize address modification as in the existing base register methods without increasing the amount of hardware. 
     In order to achieve these purposes by the present invention, plural registers are provided with (n+m)-bit capacity for use as expanded index registers and general purpose registers, and index modification and base address modification are conducted by a single modification operation. 
     By conducting the index and base address modification operations with a single operation, the requisite hardware for this address modification can be reduced. Flexibility of addressing is not limited in the multiple application of expanded index registers, and additional hardware is not required in using these index registers also for the general purpose registers. The configuration and workings of this invention are illustrated generally by the embodiments described below in reference to the drawings. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIG. 1 demonstrates schematically the prior art base register method of address expansion; 
     FIG. 2 demonstrates schematically the prior art bank method of address expansion; 
     FIG. 3 demonstrates schematically one embodiment of address modification according to the present invention; 
     FIG. 4 demonstrates one example of the sub-routine link instruction according to the present invention; and 
     FIG. 5 shows a block diagram of one embodiment of the processor of the present invention. 
    
    
     DESCRIPTION OF THE PREFERRED EMBODIMENTS 
     The address modification operation of the present invention is explained by reference to FIG. 3, showing a 19-bit instruction counter 21 and a 512K word memory space 22. The 19-bit effective address 26 can be obtained simply by adding with a two input adder (1) the content (2nd word of the instruction) of the address adjacent to address 27 indicated by the instruction counter with (2) the 19-bit content of the expanded index (index plus base) register 24 designated by the register designation part of the 1st word. Since a 3-input adder is not required, the hardware can be reduced, and since each index register is expanded up to 19 bits, it can also be used for the base address modification function. Namely, in each expanded index register of the present invention, a value is obtained by adding in advance the conventional index address and the conventional base address, the sum being the corresponding heading address, that is, the expanded index address. This addition should be done early in the program step, and since many index registers are available and can be used also for the general purpose registers, each value once obtained by addition can be stored. Therefore, there is little problem when the same index is used many times. 
     An example of operating the sub-routine link instruction in the present invention is explained in reference to FIG. 4, where the reference characters 21 to 27 correspond to the same elements as those in FIG. 3. The first 16 bit word 31 of a 32-bit instruction is stored in address 27, designated by the value in the instruction counter 21, and comprises the operation code OP and register designation parts R1 and R2. The 2nd word 32 of the instruction is the displacement of the operand address, which is stored in the address 28 adjacent to address 27. When a sub-routine link instruction is detected as a result of decoding the operating code in the first word 27 of the instruction, the value in the instruction counter 21 may be saved in the general purpose register 29 as designated, for example, by the register designation part R1 (2 may be added to the initial value for designating a next instruction, for example). In parallel with such operation, the 2nd word is added to the content (the heading address of the sub-routine) of the general purpose register (the register containing the sum of the index and base headings) which is designated by the register designation part R2. Then, the result of the addition is placed in the instruction counter 21. As a result, the instruction on data information in the sub-routine 30 is read out from the memory by the next read-out operation. Then, the instruction number saved in the general purpose register 29 is moved again to the instruction counter 21 when processing under the sub-routine 30 has come to an end. Thus, the initial program can be executed continuously. 
     A block diagram of an embodiment of the processor based on the present invention is now explained in reference to FIG. 5, which shows a 19-bit instruction counter 41, general purpose registers 42 respectively having 3-bit expanded portions ER0 to ERi and 16-bit basic parts GR0 to GRi, a 32-bit instruction register 43, a 16-bit register 44 for storing displacement, a 2-input adder 45 for address calculation, a 19-bit address register 46 for holding the effective address, an instruction execution register 47 in which data to be processed in a logic and arithmetic component ALU48 are temporarily held, a memory 49, an instruction decoder 50, a 16-bit internal data bus 51, and an external bus 52 comprising a 16-bit data bus and a 19-bit address bus. 
     In the instruction counter 41, an increment is automatically added each time one instruction is read out from the memory. An instruction which requires memory access for obtaining the operand is generally a 2-word instruction and the displacement is stored in the 2nd word. Since only one word is necessary for an instruction which uses the data in the general purpose registers 42 as the operand, such an instruction is loaded in the upper 16 bits of the instruction register 43. When the instruction in the instruction register 43 is determined by means of the instruction decoder 50 to require memory access, the 19-bit content in the general purpose register designated by the register destination part R2 is added via the line 64 to the 16-bit content of the register 44 by the adder 45 and used as the effective address. Then, it is put into the address register 46 in order to allow access to the memory 49. The 16-bit data from the memory 49 is sent to the register 47 via the bus 52 and then input to ALU48. Simultaneously, the 16-bit basic part of the general purpose register 42 designated by the register designation part R1 may be input to ALU48 via the line 65 to the bus 51, depending on the decoded operating instructions. The result of the operation may be for example, stored in the basic port of the general purpose register designated by R1 via the bus 51 and line 63. 
     Generally in data operations, the read/write operation is conducted only with the 16-bit basic parts GR0 and GRi of the general purpose registers 42, while the address calculation 1 and the read operation is conducted simultaneously using both the basic parts GR0 and GRi and the expanded parts ER0 and ERi (i.e., the full 19 bits). These operations are controlled by the output of the decoder 50. 
     The operation of writing into the expanded parts ER0 to ERi of the general purpose registers 42 is now explained. The aforementioned 19-bit base address is stored in a 2-word area of an address in the memory. The data in these two words are read out to the instruction execution register 47, and directly or after addition with the desired 16-bit index address, are written by ALU48 into one of the general purpose registers 42. In this case, the lower 16 bits are first writtenvia the bus 51 and line 63 and then the upper three bits are written via the lower three bits of bus 51 and line 62. The bus 51 has a 16-bit width. It is desirable that ALU48 should have a 19-bit width. 
     However, if the memory area assigned to one program is considerably smaller than 64K words, and therefore assignment of the entire area covering the 64K-word boundary is unnecessary, the ALU48 may have a 16-bit width, because no overflow due to addition of the 16-bit index and the lower 16 bits of the base address will be generated. 
     The incremental value (+1 or +2, as mentioned above) is not always added to the contents of the instruction counter 41, since it may also be loaded with the 19-bit value from the general purpose register 42, or loaded by the output of ALU48 as described concerning FIG. 4. 
     The various controls mentioned above can easily be attained by using a control means utilizing a micro-program for the decoder 50. 
     As explained above, the present invention realizes a data processor in which a general purpose register is used as both a base register and an index register by being expanded up to n+m bits, and the same addressing function of the prior art base register method is achieved with relatively little hardware by using a 2-input adder for the address modification.