Abstract:
Address generating apparatus which uses narrow data paths for generating a wide logical address and which also provides for programs to access very large shared data structures outside their normally available addressing range and over an extended range of addresses. Selective indexed addressing is employed for providing index data which is also used for deriving variable dimension override data. During address generation, selected index data is added to a displacement provided by an instruction for deriving a dimension override value as well as an offset. The derived dimension override value is used to selectively access an address locating entry in a table of entries corresponding to the applicable program. The resulting accessed address locating entry is in turn used to determine the particular portion of memory against which the offset is to be applied.

Description:
CROSS REFERENCE TO RELATED PATENT APPLICATION 
     This application contains subject matter relating to our commonly assigned patent application Ser. No. 278,155, filed June 29, 1981, for ADDRESS GENERATING APPARATUS AND METHOD, B. Gaither, et al., inventors. 
     BACKGROUND OF THE INVENTION 
     This invention relates generally to improved methods and apparatus for generating a memory address in a data processing system and more particularly to improved methods and apparatus for generating a relatively large virtual or logical address in a data processing system employing virtual or mapped data storage. The most direct approach to generating a large address is to provide a data processor having sufficiently wide data paths to accommodate all of the bits of the address. However, the hardware required for such an approach would be quite expensive. 
     Another known approach is to provide relatively narrow data paths in the data processor and to then provide for making multiple passes of these narrow data paths in order to manipulate addresses wider than the data paths. The difficulty with this multiple pass approach is that the requirement for these multiple passes results in a significant slow-down in operating speed. 
     One way of overcoming the disadvantages of the multiple pass approach summarized above is disclosed in U.S. Pat. No. 4,251,860 issued Feb. 17, 1981, G. R. Mitchell et al., inventors. In this patent, an embodiment is disclosed which permits the use of relatively narrow data widths while avoiding the need for multiple passes in order to produce a large virtual address. This is accomplished by splitting the base address registers which contain the data that is used to form the virtual address into segment registers and offset registers. Then, operation is provided so that only the offset portion of a selected base address is required to participate in arithmetic operations in order to form a virtual address, thereby permitting narrow data paths to be used even though the generated virtual address is much wider. 
     Additional background information regarding addressing techniques can be found in U.S. Pat. No. 4,240,139, issued Dec. 16, 1980; in the article &#34;Indexed Mapping Extends Microprocessor Addressing Range,&#34; Ian LeMair, Computer Design, August 1980, pp. 111-118; in the article &#34;Storage Relocation Translator,&#34; P. L. Martinez, IBM Technical Disclosure Bulletin, Vol. 23, No. 5, October 1980, pp. 1785-1789; in the article &#34;Relocation Translator Address Bit Scheme,&#34; P. L. Martinez, IBM Technical Disclosure Bulletin, Vol. 23, No. 6, November 1980, pp. 2199 and 2200; and in the references cited in the above patent and articles. 
     SUMMARY OF THE INVENTION 
     In a preferred embodiment of the present invention, a generally similar approach is employed as is disclosed in the aforementioned U.S. Pat. No. 4,251,860 for permitting narrow data paths to be used generating a much wider address without the need for multiple passes. However, the present invention goes significantly farther in providing very much more flexible and versatile address generating capabilities over an extended range of addresses and in a relatively simple and inexpensive manner. 
     Briefly, in a preferred embodiment of the invention, these added capabilities are achieved by employing indexing in a unique dual-purpose manner to provide a dimension override addressing option which permits a program to generate addresses which are able to access very large data structures outside of the normally available addressing range of the program and over an extended range of memory addresses. 
     The specific nature of the invention as well as other features, advantages, objects, and uses of the invention will become apparent from the following detailed description taken in conjunction with the accompanying drawings. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIG. 1 is a block and schematic diagram illustrating a preferred embodiment of the invention. 
     FIG. 2 illustrates an example of the operation of FIG. 1 wherein neither indexing nor dimension override are provided. 
     FIG. 3 is a graphical representation illustrating the results of the example of FIG. 2. 
     FIG. 4 illustrates an example of the operation of FIG. 1 wherein indexing is provided without dimension override. 
     FIG. 5 is a graphical representation illustrating the results of the example of FIG. 4. 
     FIG. 6 illustrates an example of the operation of FIG. 1 wherein both indexing and dimension override are provided. 
     FIG. 7 is a graphical representation illustrating the results of the example of FIG. 6. 
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
     Like numerals and characters represent like elements throughout the figures of the drawings. 
     In prior art virtual or logical address systems, such as disclosed in the aforementioned U.S. Pat. No. 4,251,860, it is typical to consider memory storage as being divided into identifiable regions commonly referred to as blocks or segments, each segment providing enough addresses so that programs or data stored in them will not try to assign the same addresses more than once. These segments are typically referenced by a two-part logical address, the first part identifying a particular one of the segments, and the second part identifying an offset within the segment. 
     In the embodiment disclosed in the aforementioned U.S. Pat. No. 4,251,860, the generation of a virtual address from an instruction involves the use of a base register field provided by the instruction to select a base address comprised of segment and offset values which are split up into separate segment and offset registers, these segment and offset values together constituting the selected base address. A displacement field which is also provided by the instruction is then added to the value contained in the selected offset register to provide a resultant offset value which is concatentated with the segment portion of the base address contained in the selected segment register to form the desired virtual address. Since only the offset portion of the selected base address need be added to the displacement field to form the virtual address, much narrower data paths are required than would otherwise be possible. 
     Although the virtual address generation approach disclosed in the aforementioned U.S. Pat. No. 4,251,860 permits a large virtual address to be generated using relatively narrow data paths, it will be evident that the virtual address which can be generated by an instruction is limited to the adding of the instruction&#39;s displacement field to a particular base address selected by the instruction&#39;s base register field. If an overflow is detected, indicating that the resulting address encroaches on the next segment, operation is aborted. It will thus be understood that the address range which each instruction can access using the approach disclosed in U.S. Pat. No. 4,251,860 is limited to a single segment. The preferred embodiment of the present invention illustrated in FIG. 1 maintains the narrow data path advantages of U.S. Pat. No. 4,251,860 while, on the other hand, making it possible for the same instruction to generate addresses capable of accessing data in a plurality of different segments, as will become evident from the description which follows. 
     Thus, referring to FIG. 1, it will be understood that, as typically occurs during data processing operations, an instruction to be processed is fetched and placed in an instruction register 10. As shown, a typical instruction includes an opcode OP which designates the operation to be performed, and an address portion comprised of an index I and a displacement D which, as will be described hereinafter, together cooperate in the generation of a virtual or logical address. Typically, the opcode OP is sent to the data processor&#39;s execution unit (not shown) for performance of the operation designated by the opcode on the data in memory corresponding to the generated address. The particular manner in which such execution may be performed is not part of the present invention. 
     Still with reference to FIG. 1, it will be seen that the displacement D of the instruction in the instruction register 10 is applied to the right input of an arithmetic and logic unit (ALU) 12, while the index selector IS is applied to an index decoder 14 whose output selects a particular one of a plurality of index registers 16. The selected index 16a is applied to the left side of the ALU 12 for addition with the displacement D from the instruction register 10. The resulting sum at the output of the ALU 12 is stored in an extended address register 15 having an offset portion 15a and a dimension override portion 15b. It will be understood that, depending on the address range which it is desired to permit an instruction to access, the extended addressing register 15 is preferably made wide enough to accommodate the largest sum appearing at the output of the ALU 12 without overflow. 
     As indicated in FIG. 1, the offset portion 15a in the extended address register 15 is the offset value of the desired virtual or logical address and is loaded into the offset portion 20a of a logical address register 20. The dimension override portion 15b is used to derive the segment which is loaded into the segment portion of the logical address register 20. More specifically, as will be understood from FIG. 1, the dimension override portion 15b of the extended address register 15 is applied to a dimension override decoder 23 which also receives a program number signal indicative of a particular one of a plurality of programs being run by the processor. The program number causes this dimension override decoder 23 to select a particular one of a plurality of segment tables (one for each program being run), and the dimension override portion 15b causes the dimension override decoder 23 to select a particular segment entry 48 in the selected segment table. It will be understood that these segment tables 25 may be provided as part of the CPU&#39;s main storage or as separate hardware of firmware. 
     Each of the segment tables 25 in FIG. 1 includes a plurality of segment entries 48 designating the particular storage segments which its respective program will be permitted to access. These segment entries 48 need not correspond to contiguous portions in real memory. Since one or more of these segment entries 48 may be privileged and/or shared by other programs, each segment entry 48 includes segment check bit 48a which is sent to the CPU to permit appropriate action to be taken in the event the selected segment is invalid or unavailable. Such action may, for example, include interrupting the program until the selected segment becomes available. 
     Assuming that the segment check bit 48a indicates that the selected segment entry 48 in the selected segment table 25 is valid and available, the dimension override decoder 23 then causes this selected segment entry 48 to be read out into the segment portion 20b of the logical address register 20. The concatenated offset and segment in the respective offset and segment portions 20a and 20b of the logical address register 20 thus constitute the full logical address which is applied to an address translator 30 (which may be of conventional form) for translation or mapping into a physical address which is then applied to the CPU main storage 40. 
     The versatility and flexibility of the address generation approach of the present invention will now be demonstrated with reference to the examples illustrated in FIGS. 2-7 along with FIG. 1. For these examples, it will be assumed that the selected segment entry loaded into the segment portion 20b of the logical address register corresponds to the base address of a segment, that the offset loaded into the offset portion 20a is the offset within this segment, and that the address translator 30 concatenates these portions 20a and 20b to obtain the real address in the CPU main storage 40. However, it is to be understood that the present invention is also applicable for use with other types of address translation techniques for deriving a real address in response to the contents of portions 20a and 20b. 
     FIGS. 2 and 3 illustrate an example where neither indexing nor dimension override is called for by an instruction, as indicated by the selected index register 16 (selected by the index selector IS in the instruction register 10 in FIG. 1) being all zeroes. Typically, each index register 16 may comprise eight binary coded decimal digits. For the case where the selected index register 16 is all zeroes, as illustrated in FIG. 2, the resulting sum loaded into the extended address register 15 is merely the displacement D in the instruction register 10 in FIG. 1. Ordinarily, the maximum value of the displacement D is not large enough to cause any carry over into the dimension override portion 15b of the extended address register 15 so that the dimension override portion 15b will remain at an all zero value, as illustrated in FIG. 2. Typically, the offset portion 15a of the extended address register may comprise six binary coded decimal digits, while the dimension override portion 15b may comprise two binary coded decimal digits. 
     The all zero value of the dimension override portion 15b in the extended address register 15 selects (via the dimension override decoder 23) the first one of the entries 48 in the segment table 25 corresponding to the current program number. This first entry, which is loaded into the segment portion 20b of the logical address register 20, is merely the base address of segment B which will be assumed to be assigned to the current program. The resulting address in segment B is diagrammatically illustrated in FIG. 3. 
     Considering next the example shown in FIGS. 4 and 5, this example illustrates a situation where indexing is being called for without dimension override. As shown in FIG. 4 the selected index register 16 is, for example, assumed to be 00012163, and the displacement D is, for example, assumed to be 900054. The sum provided by the ALU 12 is thus 912217. The dimension override portion 15b in the extended address register 15 thus remains all zeroes since the sum 912217 provides no carry over into the dimension override portion 15b. Accordingly, the first entry of the segment table 25 is again selected, causing the segment B base register address to again be loaded into the segment portion 20b of the logical address register 20 so as to point to the segment B base address, while the sum 912217 in the offset portion 15a of the extended address register 15 is loaded into the offset portion 20a of the logical address register 20. A typical resulting address is illustrated in FIG. 5. 
     The last example to be considered is shown in FIGS. 6 and 7 and illustrates the situation where both indexing and dimension override are being called for. This is indicated in FIG. 6 where the valve in the selected index registed is now assumed to have the larger value 1142131, while the displacement D is again assumed to be 900054. Since the sum now provided at the output of the ALU 12 is 02042185, there is a carry over of 02 into the dimension override portion 15b of the extended address register 15. Thus, the dimension override portion 15b now loads into the segment portion 20b of the logical address register 20, the third entry in the segment table 25 corresponding, for example, to the base address of a segment Q. This segment Q may, for example, contain a portion of a large table or other large data structure which is shared by a number of programs and which is too large for inclusion in any one of the program&#39;s assigned segments. A typical resulting logical address in segment Q is illustrated in FIG. 7. Of course, if the check bit 48a of the selected entry 48 indicates that it is invalid or unavailable, then the CPU will abort the operation, which may be accomplished in a conventional manner. 
     It will be understood from the example of FIGS. 6 and 7 that, since the value loaded into the dimension override portion 15b of the extended address register 15 is the carry over from the sum of the displacement D and the selected index register 16, there is no need to restrict or abort the translation when overflow occurs, as is the case, for example, in the aforementioned U.S. Pat. No. 4,251,860, thereby permitting a greatly extended range of addresses to be accessed by an instruction. 
     Although the present invention has been described in connection with a particular illustrative embodiment, it will be understood that many variations in construction, arrangement and use are possible within the scope of the invention. For example, the present invention is applicable for use with mapped memory as well as virtual memory and various other types of memory organizations. 
     The present invention is thus to be considered as including all possible modifications and variations encompassed within the scope of the appended claims.