DATA PROCESSING SYSTEM WITH HIERARCHICAL MEMORY PROTECTION

Abstract: 32-bit logical addresses (LA0-31) on an address bus (26) include three bits (LA1-3) whose decimal values 0 to 7 define a hierarchy of address regions or rings of decreasing level of protection. Memory protection includes the constraint that a user effectively residing in any ring is derived access to all lower numbered rings. Ring protection logic (111) compares the said three bits (LA1-3) of an address with three bits (CRE1-3) identifying the previously-selected ring. If the com­ parison shows a jump to a lower ring, protection logic (110) prohibits the memory access.

Description: DATA PROCESSING SYSTEM This invention relates generally to a data processing system of the kind defined in the introductory part of claim 1. This application is one of four divisional applications all divided out of our parent application 81301836.3. The numbers and publication numbers of the other three divisional applications are as follows: The parent application was published under the number 0 039 227 and reference should be made to that publication for a complete description of the whole system. The present application is concerned with an improved way of providing protection for data in a memory storage means whereby access to different groups of data is protected in accordance with different levels of privilege. The invention is defined in the characterising part of claim 1 and further features and aspects of the invention are defined in the further claims. The preferred embodiment of the invention utilizes a hierarchical memory storage, wherein information is stored in different segment storage regions (rings), access to the rings being controlled in a privileged manner so that access to different rings are governed by different levels of privilege. The invention will be described in more detail, by way of example, with reference to the accompanying drawings, in which: Figure 1 shows a block diagram of the overall data processing system of the invention; Figure 2 shows a block diagram of the system cache unit of the system of Figure 1; Figure 3 shows a block diagram of the bank controller unit of the system of Figure 1; Figure 4 shows a block diagram of a module of the main memory unit of the system of Figure 1; Figures 5 and 6 are diagrams illustrating address translation operations; Figures 7 to 9 show block diagrams which represent the address translation unit of the system of Figure 1; and Figures 10 to 28 show specific logic circuitry for implementing the address translation unit of Figures 7 to 9. In connection with the above figures, where a particular figure requires more than one sheet of drawings, each subsequent sheet is designated by the same figure number with sequential letters appended thereto. General Description Before describing a specific implementation of the system of the invention, it is helpful to discuss the overall concept thereof in more general terms so that the characteristics that are desired can be described and the description of a particular implementation can be better understood. A significant aspect of the system of the invention, as discussed above, is the size of the logical address space which is available. For purposes of convenience in distinguishing between the previous NOVA and Eclipse systems, the extended system as discussed herein will sometimes be referred to as the "Eagle" system. In the Eagle system, for example, the logical address space can be as high as 4 gigabytes (more accurately the prefix "giga" is 30 1,073,741,824, or 2 , so that 4 gigabytes is, more accurately, 4,294,967,296) where a byte is defined as having 8 bits of precision. As used hereinafter, a "word" is defined as having 16 bits of precision (i.e. equivalent to 2 bytes) and a "doubleword" as having 32 bits of precision (equal to two words, or four bytes). Because of the increased logical address space the overall system is able to support an instruction set which is larger than that supported by a Nova system or an Eclipse system having, for example, a much smaller logical address space. The overall capability of the system can be best understood by those in the art by examination of the set of the extended instructions which are capable of being performed by the system. The complete instruction set for the computer described herein is set forth in the last publication listed in Appendix A and available from Data General Corporation. The e particular instructions which are of interest to the subject matter of the invention are set forth in Appendix B incorporated as a part of this specification. Such instruction set includes the extended instruction set (which can be referred to as the Eagle instruction set) and the Eclipse C-350 instruction set, as well as the Nova instruction set, all of which are capable of being handled by the system, the latter two instruction sets being already disclosed as part of the above publications. All Nova and Eclipse instructions are executed according to the principles and specifications presented in the above-referenced publications. The binary encodings of the extended instructions which are supported by the system of the invention are shown in Appendix B. A significant difference exists between the systems having extended instructions in accordance with the invention and systems having extended instructions which have been suggested by others. In any system in which an extended instruction set effectively represents a "supper" set of a previous, or original, set of instructions, all of the instructions must be suitably decoded for machine operations. Normally, such systems utilize a decoding sub-system for decoding both the original instruction set and for decoding the extended instruction set. The decoder operates so as to permit the decoding of only one of the instruction sets at a time, the original instruction set and the extended instruction set being in effect, mutually exclusive. In order to determine which instruction is to be decoded, a unique instruction must be used to set a "mode bit", i.e., a single bit which in one state indicates that the original instruction set is to be decoded and in the other state indicates that the extended instruction set is to be decoded. However, in neither case can the decoding subsystem be made available to decode either of the both sets simultaneously. Such approach inserts a limitation on the overall machine operation since it is never possible to simultaneously decode instructions from different instruction sets of an overall super set thereof. The system of the invention, however, avoids such mutual exclusivity and is arranged to be capable of decoding instructions from either set or both sets at any one time. A decoder PROM (programmable read-only-memory) system is utilized for decoding both the extended Eagle instruction set and the original or basic instruction sets as, for example, the original Nova and Eclipse instruction set. Each instruction to be decoded includes the information which determines which decoder is to be utilized, such determination thereby being inherently carried in each instruction word which is to be decoded. As seen in Appendix B, for example, the information is contained in bits g and 12-15. Thus, in the extended Eagle instruction set, bit ¯ is always a "1" while bits 12-15 are always "1001" for all instructions of the extended instruction set except for those extended instrutions which use a "1^ in bit 8 and the encoding "011000" in bits 10-15 and a 1" in bit "0", a "0" in bit 5, and the encoding "111000" in bits 10-15. On the other hand, the original Eclipse instructions are such that bit B is a and bits 12-15 are "1000". Further, in cases where the instruction does not carry either the Eagle coded bits or the Eclipse coded bits, such instruction is interpreted as a NOVA instruction. Because each instruction carries with it an identification as to which instruction set the instruction belongs, the system operates to decode instructions on a non-mutually exclusive basis. In order to support the extended operations of the system, the configuration thereof requires an augmentation of the registers which were previously available in the original system of which the new system is an extension. The following registers are utilized in the system and are discussed in more detail later with respect to the particular implementation described in connection with specific figures below. The register set includes fixed point registers, floating point registers, stack management registers and memory management registers. Fixed Point Registers The system includes four fixed point accumulators (ACC -3), one program counter (PC) and one processor status register (PSR) - Each of the accumulators has 32 bit precision which can accomodate (1) a 16 bit operand which can be sign extended to 32 bits; (2) a 15 bit address which can be zero extended to 28 bits, the higher order 3 bits of the program counter being appended thereto together with a zero bit, all of which can be appended for storage in the accumulator; or (3) an 8 bit byte which can be zero extended to 32 bits before storage in the accumulator. The program counter has 31 bits of precision, bits 1-3 identifying one of 8 current memory rings (discussed in more detail below) and bits 4-31 of which accommodate an address offset for instruction addresses. For Eclipse operation, for example, which normally requires only a 15 bit program counter, the bits 1-3 identify the current memory ring as in a 31 bit extended operation while the 15 least significant bits 17-31 represent the 15 bit Eclipse program counter and bits 4-16 are all zeros. The processor status register is a 16 bit register which provides an overflow mask bit which if set will result in a fixed point overflow. Additionally the register includes a fixed point overflow indicator bit and a bit which indicates that a micro interrupt has occurred. Other bits in the register are reserved and are thus available for potential future use. Floating Point Registers The system includes four floating point accumulators (FPAC #-3) and one floating point status register (FPSR). Each of the floating point accumulators contains 64 bits of precision which is sufficient to wholly contain a double precision floating point value. The floating point registers of the extended system are identical to the Eclipse floating point accumulators (FPAC) which are discussed in the aforementioned publications. The floating point status register also has 64 bits of precision, 32 bits of which act as the floating point program counter. In the event of a floating point fault the floating point program counter bits define the address of the floating point instruction that caused the fault. Four other bits are utilized, respectively, to indicate an exponent overflow condition, an exponent underflow condition, a divide-by-zero condition and a mantissa overflow condition. Another counter bit will result in a floating point fault if any of the above latter four bits are also set. The floating point counter also includes a zero bit and negative bit, as are generally used in status registers, as well as bits for indicating a floating point rounding mode of operation and an interrupt resume operations. Stack Management Registers The system of the invention utilizes four 32 bit registers to manage the memory stack, which registers include a stack pointer, a stack limit, a stack base, and a frame pointer. The stack pointer register references the double word entry at the top of the stack. When a wpushw operation occurs, all the bits of the stack pointer are incremented by 2 and the "pushed" object is placed in the double word addressed by the new value of the stack pointer. In a wpopw operation the double word addressed by the current value of the stack pointer is placed in a designated register and all 32 bits of the stack pointer are then decremented by 2. The frame pointer register references the first available double word minus two in the current frame. The stack limit contains an address that is used to determine stack overflow. After any stack operation pushes objects onto the stack, the stack pointer is compared to the stack limit. If the stack pointer is greater than the stack limit a stack fault is signaled. The stack base contains an address that is used to determine the stack underflow. After any stack operation that pops objects from the stack, the stack pointer is compared to the stack base. If the stack pointer is less than the stack base a stack fault is signaled. Memory Management Registers Eight registers are used to manage memory, such registers each being designated as a segment base register (SBR) having 32 bits of precision, the memory being divided into eight segments, or rings, thereof. The SBR's in the system described herein are formed as part of scratch pad registers on an address translation unit (ATU) of the system, as discussed in more detail below. One bit of each SBR indicates whether or not the segment associated therewith can be referenced (i.e. is there a valid or an invalid reference to such segment). Another bit indicates the maximum length of the segment offset field i.e. whether or not the reference is a one level page table or a two level page table, as explained in more detail below. A third bit of each segment base register indicates whether a Nova/Eclipse instruction for loading an effective address of a Nova/Eclipse I/O instruction is being executed. Another bit represents a "protection" bit which indicates whether or not an#I/O instruction can be executed or whether the execution thereof would be a violation of the protection granted to such segment. Nineteen of the bits contain a physical address which identifies the physical address in the memory of the indicated page table. Discussions of the addressing of page tables in the memory are presented in more detail below including a discussion of the memory locations in each segment. Overall System A block diagram of a preferred embodiment of the invention is shown in FIG. 1. The central processor portion of the system comprises an arithmetic logic unit (ALP) 11, an instruction processor unit 12, a micro-sequencer unit 13 and an address translation unit (ATU) 14. The memory system includes a main memory unit 16, an auxiliary cache memory unit 17 and a memory control unit identified as bank controller unit 18. A centr#1 processor address bus 19 permits the transfer of addresses among the instruction processor unit 12, the address translation unit 14 and the memory system. A control processor mem- mory (CPM) bus 20 permits the transfer of instructions and operands among arithmetic logic unit 11, instruction processor unit 12, address translation unit 14 and the memory system 15. I/O address bus 21 and I/O memory/data bus 22 permit the transfers of addresses and data respectively with respect to I/O devices via I/O channel unit 23, as well as the transfers thereof between the memory system and a console control processor unit 24. Suitable control buses for the transfer of control signals among the various units of the overall system are provided as buses 25-31 described in more detail below. Appropriate teletype and floppy disc. systems 33 and 34, respectively, can be utilized with the system, particularly in the diagnostics mode of operation via console control processor unit 24 by way of a suitable micro processor computer 35. Memory System In accordance with a preferred embodiment of the invention the memory system comprises up to two megabytes of main memory 16 and, if desired, the system can be expanded even further as, for example, to 4 megabytes. It should be noted that sufficient bits are reserved in the physical address fields so as to allow for system expansion to one billion bytes of memory. The interface between the main memory unit 16 and the remainder of the system is via the dual port cache memory unit 17, data being transferred between the main memory and the cache memory unit in blocks of 16 bytes. The cache memory unit herein will usually be referred to as the "system cache" (SYS CACHE) to distinguish it from a separate cache memory in the instruction processor unit which latter memory will normally be referred to as the "instruction cache" (I CACKLE) unit. The system cache unit 17 services CPU requests for data transfers on port 17A of its two ports and services requests from the I/O system at port 17B thereof. CPU data transfers can include "byte-alignedbyte" transfers, "word-aligned-word- transfers, and double word transfers. I/O data transfers can include "word-aligned-word" transfers, "double word-aligned-double word" transfers and 16 byte block transfers. The main memory unit 16 can include from one to eight 256-kilobyte memory modules, as shown in FIG.4. Each memory module contains a memory array of 156 16 K dynamic random access memories (RAtIs), organized at each module in the form of four planes 8-3 of 16K 39-bit words each. Each word comprises 32 bits of data and 7 error correction bits, as discussed in more detail below. Memory timing and control for the RAMs of each memory module is accomplished on the memory bank controller board 18. The control signals from the memory bank controller are clocked into a register on each memory module, the outputs thereof driving the "planes8" RAMs. The outputs from such reigister are clocked a fixed time later into another register which drives the "plane-l" RAMs. Such pipe line operation continues through "plane-2" RAMs and "plane-3" RAMs so that all four planes receive the same control signals at fixed intervals (e.g. 110 nanosecond intervals), resulting in the transfer of a block of four consecutive 39-bit words. Memory bank controller 18 has three main functions. First of all, it provides an interface between the system cache 17 and the memory modules of the main memory unit 16. Secondly, it performs necessary error checking and correction operation and, thirdly, it controls the refresh operation of the dynamic RAMs on each of the memory modules. he details of the interface between the system cache and the bank controller are discussed in more detail below. The error checking and correction logic on the bank controller performs single-bit error correction and doublebit error detection using a 7 bit error correction Hamming code as is well known in the art. The 7 check bits generated for each 32 bit data word are stored with such word in the main memory modules. When the word is subsequently read from memory, all 39 bits are decoded to produce a 7 bit pattern of syndrome bits which pattern identifies which, if any, single bit is in error and indicates when more than one bit is in error. When a correctable single-bit occurs, the console control processor 24 is provided with the address and the syndrome bit pattern of the failing bit. The data is thereupon corrected and sent to the system cache after a fixed time delay equal to a system clock period, e.g. 110 nanoseconds in a particular embodiment, in accordance with well-known error correcting operation, the remaining words in the pipe line operation being prevented from transfer until the corrected signal is made available by the use of a suitable inhibit signal identified as the BC ERROR signal. Substantially immediate correction of single bit errors is desirable so that such errors do not grow into multiple bit errors. A conventional technique can be used in which the corrected data is written back into memory only when it has been read and found to be in error. Two problems arise with such a technique. First of all, the memory locations which are not often read are not often corrected and, secondly, significant time can be wasted in trying to correct a failure if it occurs in a frequently accessed memory location. The system of the invention can avoid such problems by utilizing a separate process for monitoring all of the main memory locations so that each location therein is checked and corrected, if necessary, once every two seconds. Such checking is performed during the memory refresh cycle and does not reduce the availability of the memory to the system. A detailed description of such a technique is disclosed in U.S. Patent Application, Serial No. 1 43 675 and our corresponding British Patent Application 8112082 (Published under Serial No 2 0 730)¯ The system cache unit 17 represents the sole connection between the main memory unit 16 and the remainder of the system and consists of a memory system port 38 for connection to the main memory and two requestor ports, 17A and 17B, as discussed above, one intended primarily for handling CPU requests and one intended primarily for handling I/O requests. The system cache board also provides a direct access path 39 between the I/O port and the memory system port providing for direct block transfers therebetween. Cache board 17 also includes a 16-kilobyte, direct mapped high speed cache data store 40 having a block size of 16 bytes which can be accessed from either the I/O or the CPU requestor port. Block diagrams ef the logic utilized in the system cache unit 17, the bank controller unit 18 and a typical memory module of the main memory unit 16 are shown in FIGS. 2,3, and 4. As can be seen in FIG. 2, the system cache data store 40 receives all requests for data from the memory other than block transfer requests from the I/O port which are serviced by the main memory directly. In the particular embodiment described, the cache data store receives the data address at the address input of either CPORT 17A or IPORT 17B which address is placed in either CPORT address register 41 or IPORT address register 42. The incoming address includes a Tag portion, an Index portion and a word pointer portion as follows: EMI17.1 <tb> 9 <SEP> /8 <SEP> ag <SEP> 8; <tb> TAG <SEP> - <SEP> I <SEP> <SEP> INDEX <SEP> WP <SEP> <tb> The three least significant bits 29-31 of the cache data store address specify the word pointer, which identifies the desired word within a block of the 16 byte 8 word block of the data store. The remaining bits 9-28 identify the block address which corresponds exactly to the address which would be used to fetch the desired block from the main memory. The latter bits are divided into Tag bits 9-18 and Index bits 19-28 as shown. The system cache as depicted in FIG.2 includes a "Tag" Store Unit 43. Data store 40 is a high speed memory array of 4K x 32 bit words (i.e. 1K 16-byte blocks) and holds a copy of a block of words from main memory. The data store is addressed by the index and word pointer bits of the cache data store address word, the index being a 10-bit address of a block within the data store 40 and the three word pointer bits pointing to the desired word within the selected block, as mentioned above. A data store block may be used to buffer any data block of main memory which shares the same index The function of the Tag store 43 is to identify which of the many possible blocks from the main memory is buffered in each 16 byte block of-the data store 40. Tag store 43 is a high speed array of 1K 12-bit words and is addressed by the 10-bit index portion off the memory address. Each 12-bit word contains ten bits which identify the block from the main memory which is buffered in data store 40. When the main memory is 4 megabytes or less, the first two bits of this tag are needed only for future expansion of the main memory capacity and can be zero. Bits 10 and 11 are flags to indicate the status of the data. Thus a 'valid" flag V indicates that the indentifiable data store block contains valid data. For example, if an I/O port operation were to request a block "write" to main memory which modifies the contents of a block which has already been buffered in the data store 40, the valid flag of that block would be reset to indicate that its data is no longer valid. A "modify" flag M indicates that the contents of the data store block have been modified. Thus, if a data block is removed from the data store 40 to make room for a new data block from main memory, the removed data block is written back to main memory if the modified data flag is set. A second tag store unit 44 is shown on the system cache board, which latter tag store is a replica of the instruction cache (ICACHE) tag store which is described later. The ICACHE tag store is used on the system cache board to determine when a write to memory would affect the contents of the instruction cache at the instruction processor. When such an effect would occur, as indicated by a comparison at comparator 45 of the incoming address and the ICACHE addresses, the system cache alerts the instruction processor by asserting an "instruction cache write" signal, as indicated in FIG. 2, to inform the instruction cache (ICACHE) at the instruction processor board of the location of the block which has been so modified. In the operation of the system cache all requests are initially assumed to be "read" requests, since even when a "write" request occurs it is possible that the data to be written will need to be read and modified (a "read-modify-write" operation) before the write operation is to be performed. If the system cache is not busy when a request is received at an input port, the data store 40 and the tag store 43 are accessed simultaneously, using the appropriate portions of the received input address as discussed above. The data from the location in the data store 40 which has been addressed is loaded into the cache write data register 46 via multiplexer 48 if the data transfer is a write into memory operation so that in the next cycle the contents of the write data register 46 can be enabled onto the bus via multiplexer 47 and bus driver unit 49. If the data is a read operation the data output from data store 40 is supplied at the CPORT or IPORT, as required, via multiplexer 48 and driver units 50 and 51, respectively. The data from the tag store 43 is first examined to determine if the requested data, is, in fact, in the data store 40. The tag portion of the word which is read from the tag store is compared at comparator 52 with the tag portion of the address which has been submitted by the requestor and the valid flag checked to see that it is set. If such comparison is successful (a system cache "hit) the data from data store 40 is the desired data and the requestor is permitted to receive it or to write it into memory. If the comparison fails (a system cache "miss") the data block which has been requested is not in the cache data store 40 and must be brought in from the main memory. Such an occurrence is termed a "cache faulty condition and, when such fault occurs, the requestor is prevented from loading in data until after the fault is resolved. Once the data is available for the requestor the requestor must signal that it wishes to accept the data and, if the requestor does not do so when the data first becomes available, the read operation will be repeated until the requestor indicates its willingness to accept the data. Because access to the data in data store 40 requires two system clock cycles to complete, the cache addresses as received from requestors can be "pipe-lined" in a manner such that two accesses can be in progress at any one time. Advantage is taken of this ability to pipe-line access requests by intertwining the accessors of one of the input ports with those of the other input ports An appropriate clocking signal, which has a frequency one-half that of the basic system clock, is used to indicate which requestor port is allowed to access the cache data store at any given time. As a result there is no interference between CPU and I/O port accesses except during a cache fault. The only exception is that both I/O and CPU ports are not allowed to be in the process of accessing the same data store block at the same time. An example of the intertwining operation between the ports for a read operation is discussed below. In the particular example described the CPU port requestor does not choose to take the data at the first opportunity so that a read repeat occurs. EMI21.1 <tb> <SEP> t0 <SEP> <SEP> tl <SEP> t2 <SEP> t3 <SEP> t4 <SEP> t5 <tb> CPU <SEP> Address <SEP> and <SEP> Tag <SEP> and <SEP> Data <SEP> <SEP> ready. <SEP> Data <SEP> Store <SEP> Data <SEP> Ready. <SEP> <tb> Data <SEP> <SEP> STSRT <SEP> Data <SEP> Stores <SEP> Requestor <SEP> read <SEP> Requestor <SEP> <tb> READ <SEP> Signal <SEP> on <SEP> read. <SEP> does <SEP> not <SEP> again. <SEP> asserts <SEP> RT <SEP> <tb> <SEP> bus <SEP> <SEP> assert <SEP> Br <SEP> <SEP> Signal <SEP> and <tb> <SEP> Signal. <SEP> loads <SEP> data. <tb> Idle <SEP> <SEP> cycle <SEP> Address <SEP> and <SEP> Tag <SEP> and <SEP> Data <SEP> ready. <SEP> <SEP> Idle <SEP> cycle <tb> PCRr <SEP> or <SEP> end <SEP> of <SEP> SIARP <SEP> <SEP> Data <SEP> <SEP> Stores <SEP> Requestor <SEP> or <SEP> start <SEP> of <tb> READ <SEP> last <SEP> Signal <SEP> on <SEP> read. <SEP> asserts <SEP> RT <SEP> next <tb> <SEP> access. <SEP> bus. <SEP> Signal <SEP> and <SEP> access. <tb> <SEP> loads <SEP> data. <tb> For a cache write operation, the cache, at the time the memory write access is initiated, assumes that a read-modifywrite operation will be performed and accordingly does a read as described above. However, even if the transfer is to be a simple write operation, the tag store information must be read to determine the location at which the incoming data will be written so that in actuality no time is lost in performing a superfluous data store read operation. For a simple write operation, or for the write portion of a read-modify-write operation, the requestor asserts a write transfer (WT) signal to indicate completion of the transfer. Instead of driving the data from the output register onto the memory port 38 the system cache loads an input register 53 with the data which is to be written from the data bus at the end of the cycle and writes it into the data store 40 during the next cycle. If a cache fault results from such a write request, the system cache accepts the data to be written into the input register but does not write it into the data store 40 until after the fault is resolved. An example of a CPU port write request in a manner similar to that discussed above for a read request is shown below. EMI22.1 <tb> <SEP> t0 <SEP> t <SEP> <SEP> t <SEP> <SEP> t3 <SEP> t4 <SEP> t5 <tb> CPU <SEP> address <SEP> and <SEP> Tag <SEP> and <SEP> Data <SEP> ready. <SEP> <SEP> ta <SEP> <SEP> Store <SEP> Idle <SEP> cycle. <tb> PORT <SEP> START <SEP> <SEP> and <SEP> Data <SEP> Stores <SEP> Requestor <SEP> written. <tb> WRITE <SEP> hRIIE <SEP> <SEP> read. <SEP> asserts <SEP> wot <SEP> <tb> <SEP> Signals <SEP> on <SEP> Signal <SEP> and <tb> <SEP> hls. <SEP> <SEP> sends <SEP> data. <SEP> <tb> no <SEP> Idle <SEP> cycle <SEP> Address <SEP> and <SEP> Tag <SEP> and <SEP> Data <SEP> ready. <SEP> Td1 <SEP> cycle <tb> PORT <SEP> <SEP> or <SEP> end <SEP> of <SEP> STµRT <SEP> <SEP> Data <SEP> Stores <SEP> Requestor <SEP> or <SEP> start <SEP> of <tb> READ <SEP> last <SEP> Signalon <SEP> read. <SEP> asserts <SEP> RT <SEP> next <tb> <SEP> access. <SEP> bus. <SEP> <SEP> Signal <SEP> and <SEP> access. <SEP> <tb> <SEP> loads <SEP> data. <SEP> <tb> The examples discussed above show single read or single write operations. It is also possible for a requestor to submit a new address and a START signal along with the read transfer (RT) and/or write transfer (WT) signal, so that consecutive read operations or consecutive write operations from a single port can be performed every two cache cycles (a CPU cycle, for example, is equivalent to two cache cycles) unless a cache fault occurs. However, if a read access is initiated at the same time that a write transfer is performed, the data store 40 cannot be read on the next cycle because it is being written into at that time. When this condition happens, the read operation requires an additional two cache cycles for completion. If the requestor is aware that a read operation is following a write transfer and wishes to avoid a wasted cycle, the requestor can either delay starting the read request until the next cycle or it may start the read request to wait an extra cycle before requesting the data transfer. In either case useful work could be done in the otherwise wasted cycle, although initiation of a read followed by a wait for an extra cycle is usually more desirable because it allows a cache fault to be detected at an earlier point in time. A read-modify-write operation can be accomplished by asserting a START signal and WRITE signal along with the address, followed by a read transfer at a later cycle and a write transfer at a still later cycle. When a WRITE signal is signaled at the start of an access, the system cache will not consider that the access has been completed until a write transfer is performed. During such operation all other requestors are prohibited from accessing the same data. Thus, requestors utilizing the same input port are prevented from access by the fact that the first requestor controls the bus during the entire read-modify-write operation. Requestors on the other port are prevented from access by the fact that both ports are prohibited from accessing the same data store block at the same time. Such prohibition also prevents requestors at another port from removing a block of data from the cache data store when the system cache is in the middle of an operation. If the system cache board receives a write transfer request when a write operation has not been previously indicated or, if it receives a read transfer and a write transfer request simultaneously, access to the system cache data store is aborted without the transfer of any data. If such simultaneous read and write transfer requests are asserted at the beginning of the next cycle after the START request, the access may be avoided without even initiating an unnecessary cache fault indication. In addition to the above transfers, the system cache board has the capability of performing direct write transfers between the input ports and the main memory, the bulk of such data traffic being capable of being handled without affecting the contents of the cache data store 40. If the requested transfer is a block write transfer, the data is written directly into the main memory via data write register 40A, MUX 48 and write data register 46 Data transfers at the I/O port are not allowed when the CPU port is in the process of accessing data which has the same Index as the I/O block which is to be transferred. Data read-modify-write transfers are also not permitted by the system. In the overall system cache block diagram shown in FIG. 2, the input registers for the CPU request port and the I/O request port are shown as data registers 54 and 55. Addresses associated with the data at such registers are supplied to the CPU address register 41 and the I/O address register 42, each address comprising the Index, Tag and Word Pointer as discussed above ADDRESS TRANSLATION UNIT The address translation unit (ATU) 14 is shown broadly in FIGS. 7 to 9, the primary function of such unit being to translate a user's logical address (LA) into a corresponding physical address (PA) in the physical address space of the processor's memory modules discussed above. Such translation is effectively performed in two ways, one, by accessing a page from the system cache or from main memory at the particular page table entry specified in a field of the logical address and placing the accessed page in a translation store unit for use in performing the address translation, a sequence of operations normally designated as a Long Address Translation (LAT) and, the other, by accessing additional references to a page that has already been selected for access after an LAT has been performed and the page selected by the LAT is already present in the translation store. The latter translation provides an accelerated address reference and can be accomplished by saving, at the end of every long Address Translation, the address of the physical page which has been accessed. As mentioned, the physical page involved is stored in a high speed random access memory (RAM) file designated in FIG. 7 at ATU translation store 100. Translations of addresses on the physical page which is stored in the ATU translation store 100 are available to the processor within one operating time cycle of the CPU, while normally the Long Address Translation will take a plurality of such cycles for a reference which requires a single level page table reference (e.g. 3 cycles) or a two-level page table reference (e.g. 5 cycles), where the page in question is available in the system cache memory. Even longer times may be required if the page involved can not be found in the system cache memory and must be accessed from main memory. A secondary function of the ATU is to emulate all operations of the previous system of which the present system is an extension, e.g., in the system described, to perform all Eclipse memory management processor unit (MMPUl) address translation operations, as described in the above referenced publication for such systems, in an efficient and compatible way, such emulated operations being described in more detail later. In order to understand more clearly the translation of a logical word address (a byte address when shifted right by one position produces a word address), the logical word address can be defined as shown below: EMI26.1 <tb> <SEP> 0 <SEP> 1 <SEP> 3 <SEP> 4 <SEP> 21 <SEP> 22 <SEP> 31 <tb> lx <SEP> <SEP> SEGMENT <SEP> wGICA1, <SEP> <SEP> PAGE <SEP> ADDRESS <SEP> OFFSET <tb> <SEP> 1 <SEP> 15 <SEP> 21 <tb> <SEP> Li <SEP> INDEX <SEP> 'MD <tb> <SEP> 2 <SEP> 14 <tb> As seen therein, the segment and logical page address is 21 bits long, the segment and logical page address being divided into two fields, the Tag field and the Index field. The Tag field is defined as bits LA 2-14 while the Index field is defined as bit lAl plus bits LA 15-21. As seen in FIG. 7 when a logical word address LA-31 is received from the arithmetic logic unit (ALU) on the logical address bus 26 it is latched into a logical address register (LAR) 10t. The Index bits LA 15-21 are taken directly from the logical address bus to address four RAM stores, the first being a Tag store 102, which retains the tag portions of the logical addresses corresponding to the physical addresses saved in the ATU physical address (PA) translation store 100. The Index bits LA 15-21 are also supplied to a validity store RAM unit 103 and to a protection store RAM unit 104, as discussed below. If the physical address translation store 100 contains valid address translations, when a memory access is started the logical address is loaded into the logical address register 101 and the Index (bits LA 15-21) is used to select a location in the store. In the particular system described, even though there is a valid address translation at such location in translation store 100, it may not be the correct one. Corresponding with each index of the logical addresses (and each address location in the translation store) there are a selected number of possible "tags", each tag corresponding to a unique physical page address. Only one of such tags and its corresponding physical page address can be saved in the translation store 100 at the location selected by the Index. Therefore the "tag" (TAG 2-14) that corresponds to the Index in question and is currently stored in the tag store 102 is compared at comparator 105 to the "tag" in the logical address register (LA 2-14). If the "tags" correspond, the address translation contained in the translation store 100 is the correct one and can be used to supply the desired physical address (signified by an ATU HIT signal at the output of comparator 105). If they do not match, a Long Address Translation operation must be performed to obtain the desired physical page address from the system cache or main memory. The physical page address which is thereby accessed by such LAT procedure to replace the physical page address previously contained in the ATU translation store 100 is placed on the appropriate transfer bus (CPM bus 20). At the completion of the long address translation, the Wtagw taken from the logical address register (LAR2-l4) is written into the tag store 102 at the location selected by the index and the physical page address from the memory data register 106 (MD 18-31) is written into the translation store 100 at the location specified by the index. The ATU configuration shown in FIG. 7 also contains further components which are used to place the translated physical address of a desired physical page table on the physical page address (PA) bus 27. There are three other possible sources of physical page table addresses, the first of which is bits SBR 18-31 of a segment base register which segment base register can also be located in scratch pad units of the address translatiiii unit. This address is used to reference either a high order page table (HOPT) of a two-level page table or the low order page table (LOPT) of a one-level page table. Since the segment base registers are located at the ATU, such addres can be obtained from the logical address bus 26 as LA 18-31. The following diagrams depict the results of the control actions initiated by the arithmetic translation unit (ATU) to perform a long address translation in which a physical address is derived from a logical address by traversing the one-and two-level page tables in the main memory Fig 5 depicts a one-level page table traversal, while Fig 6 depicts a two-level page table traversal, the physical address bits 3-21 of the final physical address (i.e., the desired memory allocation data) being placed in the translation store 100 so that when the corresponding logical address is subsequently requires a translation, the physical address is available (an ATU HIT occurs) and there is no need for subsequent long address translation. The logical word address to be translated for a one-level page table translation has the format shown in Fig 5. Bits 1-3 of the word address specify one of the eight segment base registers (SBRs). The ATU uses the contents of this valid SBR to form the physical address of a page table entry (PTE), as shown at point (1) of Fig 5. The selected SBR contains a bit (bit 1) which specifies whether the page table traversal is a one-level (bit 1 is zero) or a two-level (bit 1 is a one) page table. In Fig 5 a page table entry address comprising the starting address of a selected page table and page table entry offset specifying a page address therein. To form this physical page address, the ATU begins with the physical address as shown at (2) of Fig 5. This address becomes bits 3-21 of the PTE address. Bits 13-21 of the logical word address become bits 22-30 of the PTE address. The ATU appends a zero to the right of the PTE address, making a 29-bit word address. Bits 3-21 of the PTE address (unchanged in the step above) specify the starting address of a page table. Bits 22-31 of the PTE address specify an offset from the start of the table to some PTE (labelled PTEn in Fig 5). This PTE specifies the starting address of a page of memory, as shown at (3) of Fig 5. PTEn bits 13-31, the page address, becomes bits 3-21 of the physical address, as shown at (4) of Fig 5. The page offset field specified in bits 22-31 of the logical word address becomes bits 22-31 of the physical address. This is the physical word address translated from the original word address. The physical address bits 3-21 are placed in the translation store as the memory allocation data for subsequent use if the same logical word address requires subsequent translation. It should be noted that when using a one-level page table, bits 4-12 of the logical word address must be zero. If they are not zero and bit 1 of the SBR indicates a one-level page table is required, a page fault occurs. Just as in the one-level page table translation process, in the two-level page table translation depicted in Fig 6 the processor produces a physical address. the logical word address to be translated has the format showninthe diagram, the steps (1) to (4) being substantially the same as in Fig 5 except that bits 4-12 of the logical word address become bits 22-30 of the PTE address. The ATU appends a zero to the right of the PTE address, making a 29-bit word address. Bits 1-3 of the word address specify one of the eight segment base registers (SBRs). Bits 3-21 of the PTE address specify the starting address of a page table. Bits 22-31 of the PTE address specify an offset from the start of the table to some PTE (labelled PTEn). The PTE specifies the starting address of a page table. Thus, the ATU now constructs the address of a second PTE from the address at (4). The physical address specified in bits 13-31 of the first (PTEn) becomes bits 3-21 of the address of the second PTEm. Bits 13-21 of the logical word address become bits 22-30 of the second PTE's address. The ATU appends a zero to the right of the second PTE address to make a 29-bit word address. Bits 3-21 of the second PTE address specify the starting address of a second page table. Bits 22-31 of the second PTE address specify an offset from khs start of the second table to some PTE (labelled PTEm in Fig 6). The second PTEL gpecifies the starting address of a page, as shown at (5) in Fig 6. The second PTE:'s bits 13-31, the page address, become bits 3-21 of the physical address and the page offset specified in bits 22-31 of the logical word address becomes bits 22-31 of the physical address, as shown at (6) in Fig 6. This last value is the final physical word address. The physical page table address for the low order page table of a two-level page table is in bits 18-31 of the high order page table entry (HOPTE) which must be fetched from the main memory. Thus, the second possible source of the physical page table address is the memory data register (MD) 105 which holds the data that arrives on the physical memory data (CPM) bus 20 as MD 18-31. A suitable page table multiplexer 107 is used to select which of the two sources will drive the physical address bus when its outputs are enabled. The third and final source is to drive the physical page address bus 27 directly through a physical mode buffer 108, such buffer being used to address physical memory directly lPHY 8-21) from buts LA 8-21 of the logical address bus. Such buffer is enabled while the ATU unit is turned off (i.e., no address translation is required) since the physical address in that mode is the same as the logical address and no translation is necessary. Bits PHY 22-31 of the physical address are offset by displacement bits, there being three possible origins for the offset. The first source of such offset is from bits LA 22-31 of the logical address bus which bits are used while in physical mode (no address translation is necessary) as well as the offset in the object page. The second source of the offset is bits LAR 4-12 (referred to as two-level page table bits in Fig 6. above) of the logical address register which is used as an offset within the high order page table during a long address translation. Since this source is only nine bits long and page table entries are double words aligned on even word boundaries, a ten bit offset (to form PHY22-31) is constructed by appending a zero bit to the least significant bit. The final source for the offset is bits LAR 13-21 (referred to as one-level page table bits in Fig 6) of the logical address register which is used as an offset within the low order page table during a long address translation. A zero bit is appended to the least significant bit of this source also. Offset multiplexer 109 is used to select the desired one of such three offset sources. The following discussion summarizes the address bit sources for forming a low order or high order page table entry address in main memory in making a long address translation. The address of the page table entry is formed from address fields in a segment base register (SBR) and from address fields in the logical address register. The address fields of a segment base register can be depicted as follows: EMI32.1 <tb> Ol <SEP> <SEP> 2 <SEP> 3 <SEP> 4 <SEP> 12 <SEP> 13 <SEP> 31 <tb> VL <SEP> <SEP> ILEFII/O <SEP> <SEP> RESERVED <SEP> <SEP> PHYSICAL <SEP> ADDRESS <tb> SEGMENT BASE REGISTER Depending on whether a one-level (low order) or a two-1eeel (high order) page table entry is called for, the SBR address field comprising bits 4-12 or the SBR address field comprising bits 13-21 is transferred to the memory data register 106 to form the higher order bits of the page table entry. As mentioned above, the eight SBR registers are located in 8 of the 256 locations of scratch pad registers on the ATU. This use of such scratch pad locations for the segment base registers can be contrasted with prior known systems wherein the segment base register (or registers comparable thereto) in a segment, or ring, protection memory system are all located at specified locations in the main memory. By placing them in a scratch-pad memory located in a processing unit of the system, as in the ATU unit here, the higher order page table entry bits are acquired more rapidly than they would be if it were necessary to fetch them from main memory and, hence, the speed at which page table entries can be made is improved considerably. One of the bits of an SBR (identified above as "V" bit) is examined to determine whether the SBR contents are valid. Another bit (identified above as "L bit) is examined to determine whether a l-level or a 2-level page table entry is required so that the correct field is supplied to the memory data register. Other bit fields of the SBR are used to determine whether a Load Effective Address (LEF) instruction (such LEF instruction is part of the Eclipse instruction set as explained more fully in the above cited publications therein) or I/O instruction is required. Thus in a selected state the LEF Enable bit will enable an LEF instruction while a selected state of the I/O Protect bit will determine whether an I/O instruction can be permitted. The remaining field of the SBR contains the address offset bits. As is also seen in FIG. 7 a variety of protection checks are made for each reference to memory, which protection checks are made by the use of protection store unit 104, protection logic unit 110 and ring protection logic unit 111 for providing appropriate fault code bits (FLTCD W-3) which are supplied to the micro-sequencer (described below) via driver 112 on to the CPD bus 25 for initiating appropriate fault ii. nicro-code routines depending on which fault has occured. The following six protection checks can be made: 1. Validity storage protection 2. Read protection 3. Write protection 4. Execute protection 5. Defer protection 6. Ring m imization protection A validity storage protection check determines whether the corresponding block of memory to which a memory reference is made has been allocated and is accessible to the current user of the system. she validity storage field is a one-bit field which is located, for example, at bit zero of each of the segment base registers (located on an ATU board as discussed above) or at bit zero in each of the high order page table entry addresses and low order page table entry addresses. In a particular embodiment, for example, a "1" indicates that the corresponding block has been so allocated and is accessible whereas a "0" indicates that the user cannot use such a memory block. Generally when a new user enters the system all pages and segments in the logical address space which are allocated to that user, except those containing the operating system, are marked invalid. Validity bits are then set valid as the system begins allocating logical memory to such new user. If a user makes a memory reference to an invalid page, an invalid page table, or an invalid segment, the memory reference is aborted and a validity storage protection error is then signaled by the fault code bits on the CPD bus. The read protection field is a one-bit field normally located at a selected bit (bit 2, for example} in each of the low order page table entry addresses and a check thereof determines whether the corresponding object page can or cannot be read by the current user. If the page cannot be read, a read error is signaled by the fault code bits on the CPD bus. In a similar manner a check of the write protection error field determines whether the corresponding object page can be written into by the current user, an appropriate write error being signaled by the fault code bits if the user attempts to write into a page to which he is not allowed. The execute protection field is a one-bit field which is located at a selected bit (e.g. bit 4) in each of the low order page table entry addresses and a check thereof determines whether instructions from a corresponding object page can or cannot be executed by the current user. If such an instruction fetch is not allowed, an execute error is signaled by the fault code bits on the CPD bus. Execute protection is normally checked only during the first fetch within a page and any additional instruction fetches are performed using the physical page address fran the first fetch, which for such purpose is retained by the instruction processor. When a user is attempting to reference a location in memory and is utilizing a chain of indirect addresses to do so, the system will abort the operation if a chain of more than a selected number of said indirect addresses is encountered. For example, in the system under discussion if a chain of more than sixteen indirect addresses is encountered the operation is appropriately aborted and a defer error is signaled by the fault code bits on the CPD bus. Such protection is utilized, for example, normally when the system has performed a loop operation and the system, because of a fault in the operation thereof, continues to repeat the indirect loop addressing process without being able to break free from the loop operation. Ring maximization protection is utilized when the user is attempting to reference a logical location in memory in a lower ring (segment) than the current ring of execution (CRE 1-3). Since such operation is not permitted by the system, the operation must be aborted if the user attempts to reference a lower ring than currently being used and a ring maximization error is signaled on the CPD bus. Since the logical address space is divided into eight rings, or segments, a ring which the user desires to reference can be indicated by bits 1-3, for example, of the logical address. The specific loqic circuitry utilized for such protection checks (i.e., the protection store 104 and the protection loqic 110 and the protection logic 111 associated therewith) is shown in FIGS. 8 and 9 . Thus, logic for the veneration of the read error, write error, execution error and validity error signals is shown in FIG. B and logic for generating the defer error and ring maximization error signals being shown in FIG. 9. With respect to the protection system, since logical address space is partitioned into eight hierarchical regions (i.e. the "rings" or "segments") the partitioning can be delineated by the segment field of the logical address. Thus, segment number 0 is always assigned to ring 0 (ring 0 being the ring in which only priviledged instructions can be executed), segment 1 is always assigned to ring 1, and so forth. Such approach differs from previous systems using a segmented hierarchical address space in that the ring number is not independent of the logical address space. In contrast, in the system discussed here, each ring is directly bound in the space so that segment 0 is always allocated to ring 0, segment 1 to ring 1, and so forth. The access field in a page table entry comprises three bits (MD 2-4) is shown in FIG. 7 and indicates the capabilities of the referenced data item in the logical address space, i.e. as to whether the reference data item is to be a read access, a write access, or an execute access, the protection store 104 responding to such bits to produce either a read enable signal (RD ENB), or a write enable (#iR vNB) or an execute enable (EX ENB). The ring protection governs the proper interpretation of the access privileges of the user to a particular ring, a user being permitted access only to selected, consecutively numbered rings. Thus, access can only be made to a bracket of rings (an access bracket) if the effective source for such reference is within the appropriate access bracket. For example, the read bracket of a data reference in any ring is the ring number. That is, a data address reference to segment 5 (ring 5), for example, can never legitimately originate from an effective source which is greater than 5. In other words an effective source in segment 5 can never reference a ring lower than ring 5 and, therefore, if a reference from an effective source greater than 5 attempts to access ring 5 a ring maximun error (MAX ERR) will be signaled as shown by the logic in FIG. 7 . A table showing such ring protection operation is shown below: EMI38.1 <tb> <SEP> i <SEP> #i#az#sc#t <SEP> Space <tb> Effective <tb> Source <SEP> \ <tb> #pace <tb> Spacz <tb> <SEP> RING <SEP> 1 <SEP> Fault <SEP> Val-Rl <SEP> Val# <SEP> ... <SEP> Vale7 <tb> <SEP> RING <SEP> 2 <SEP> Fault <SEP> Fault <SEP> val# <SEP> ... <SEP> Valet7 <tb> <SEP> RSIGG <SEP> 7 <SEP> Fault <SEP> Fault <SEP> Fault <SEP> ... <SEP> ValR7 <tb> In summary, in order to make a ring access, the ring maximization function is used to determine whether or not the reference is a valid ring reference and, if it is, the page table entry that references the address datum is examined to see if the page is a valid one. Then, if the read protection bit indicates that such valid page can be read, the read can be performed. If any one of the examinations shows a protection error (i.e., ring maximization error, validity error, or read error) the read is aborted and an appropriate fault code routine is called. Similarly, appropriate examination for protection errors for write access and execute access situations can also be performed. In an hierachical address space such as discussed above, it is desirable to mediate and authenticate any attempt to switch rings, i.e., to obtain access to a ring (segment) other than the ring which is currently being used (a "ring crossing" operation). The performing of a ring crossing operation is authenticated as follows. Any ring crossing attempts occur only as a result of an explicit attempt to do so by a program control instruction, and such explicit attempt can occur only if the following conditions are satisfied. (1) The program control instruction is of the form of a subroutine "call", i.e., where access is desired to a subroutine in another ring (LCALL - see Appendix B), or a subroutine "return", i.e., where a subroutine in another ring has been accessed and it is desired to return to the original ring (WRTN and WPOPB - see Appendix B). All other program control instructions (e.g., JUMP) ignore the ring field of the effective address required for the instruction and such instructions can only transfer to locations within the correct segment. (2) The direction of a subroutine call crossing must be to a lower ring number (i.e., inwardly toward ring 0) wherein the lower ring has a higher order of protection and the current ring of execution and the direction of a subroutine return crossing must be to a higher ring number (i.e., outwardly away from ring 0) wherein the higher ring has a lower order of protection than the called ring containing the subroutine. Outward calls and inward returns are trapped as protection faults. (3) The target segment of the effective branch address is not in the segment identified by bits 1-3 of the program counter. In the above conditions are met the return address for outward returns is merely interpreted as a normal word address. However, if the above conditions are met for an inward call, the branch address is interpreted as follows: EMI40.1 <tb> 0 <SEP> 1 <SEP> 3 <SEP> 4 <SEP> 15 <SEP> 16 <SEP> 31 <tb> X <SEP> SBR <SEP> NOT <SEP> USED <SEP> GATE <SEP> <SEP> NUMBER <SEP> 31 <tb> <SEP> Inward <SEP> Call <SEP> BranchAddress <tb> Bits 16-31 are interpreted as a "gate" into the specified segment (SBR of bits 1-3) in the target space. The gate number is used to verify that the specified gate is in the called segment and, upon verification, to associate on instruction address with the specified gate via a "gate array" in the called segment, as discussed below. The location of the gate array in any called segment is indicated by a pointer contained in particular locations of the called segment (erg., in a particular embodiment the pointer locations may be specified as locations 34 and 35 in each segment. The structure of the gate array is as follows: EMI41.1 <tb> 0 <tb> NOT <SEP> USED <SEP> MAX <SEP> NO. <SEP> OF <SEP> GATES <tb> <SEP> GATE <tb> X <SEP> B <SEP> <SEP> BRACKET <SEP> i <SEP> P <SEP> C <SEP> OFFSET <SEP> | <SEP> <SEP> GATE <SEP> O <tb> <SEP> GATE <SEP> ss <SEP> <SEP> GATE <tb> <SEP> X <SEP> <SEP> BRACKET <SEP> P <SEP> C <SEP> OFFSET <SEP> (MAX-l) <SEP> <tb> 0 <SEP> 34 <SEP> 31 <tb> <SEP> Gate <SEP> Array <tb> The gate number of the pointer which referenced the target segment is compared with bits 16-31 of the first 32 bits of the gate array. If the gate number is greater than or equal to the maximum number of gates in the gate array, the ring crossing call is not permitted and a protection fault occurs (if the maximum number of gates is 0, the segment involved cannot be a valid target of an inward ring crossing call operation). If the gate number is less than the maximum number of gates, the gate number is then used to index into one of the gates of the gate array which follows the first 32 bits thereof. The contents of the indexed gate are read and are used to control two actions. First, the effective source is compared to the gate bracket bits 1-3 of the indexed gate. The effective source must be less than or equal to the referenced gate bits and, if so, the PC offset bits 4-31 become the least significant 28 bits of the program counter and bits 1-3 of the program counter are set to the segment containing the gate array. If the gate in a ring crossing operation, as described above, is a permitted entry point to the ring to which the crossing is made, a-new stack is constructed. In order to do so a stack switching operation must occur since there is only one stack per ring. Thus, before the new stack can be created, the contents of the current stack management registers must be saved at specified memory locations of the caller's ring. The callee's stack can then be created, the arguments from the caller's stack being copied onto the newly created callee's stack, the number of such arguments being specified by the X or the LCALL instruction (see Appendix B). An appropriate check is first made to determine whether copying of all of the arguments would created a stack overflow condition. If so, a stack fault is signalled, the ring crossing being permitted and the fault being processed in the called ring. In order to emulate operation of ECLIPSE address translation operations appropriate emulation control signals for placing the ATU in the ECLIPSE operating mode are required as shown by emulation control logic unit 115 which, in response to coded instructions generated by the microsequencer board 13 produces such signals to permit operation for 16-bit addresses equivalent to the memory management protection unit (MMPU) of ECLIPSE comparators as described in the aforesaid publications thereon. Specific logic circuitry for implementing the various blocks of the address translation unit shown in FIGS. 7 - 9 are shown in FIGS. 10 to 28. FIG. 10 depicts the translation store unit 100 supplied with bits MD-nil- from the memory data register 106 and in turn supplying the translated physical address bits 8-21 which have resulted from a translation of the logical address bits LA 15-21. FIG. 10 also shows the page table address multi plexer unit 107 and physical mode buffer unit 108. In addition, such figure includes the "last block" register unit 116 which during an ECLIPSE MMPU emulation operation provides the physical address bits PHY 8-21. FIG. 10 also shows the LMP Data Register. FIG. 11 shows Tag Store 102 and Protection Store 1cm,. Tag comparator unit 135 is depicted in FIG. 12. FIG. 13 shows the logical address register 101, while physical address offset multiplexer 109 and the logical address register CPD bus driver unit are shown in FIGS. 14 and 15 respectively. The physical address bus driver units for filing the appropriate physical address bit PHY8-21 are shown in FIG. 16. Protection logic including fault detection and cache block crossing trap logic is depicted in FIGS.17 to 21 protection logic identification encoder unit 110 being shown in FIG. 17 the fault code bit drive unit 112 being shown in FIG. 18 ring protection logic circuit 111 being shown in FIG. 19 and the fault detection and cache block crossing logic being shown in FIGS. 20 and 21. Validity store unit 103 is shown in FIG. 22 together with translation purge logic and the multiplexer associated therewith. The translation register of FIG. 7 is depicted in detail in FIG. 23. The reference/modify storage and control logic unit is shown in FIG. 24, the state save drive unit associated therewith being depicted in FIG. 25. The 16 bit MMPU emulation control logic is shown in FIG. 26. ATU timing logic is shown in FIG. 27 and suitable system code interface logic is shown in FIG. 28. Another operation unique to the system described herein involves the loading of the segment base registers (SBR) of the system and related to the LSBRA instruction described in the instruction set of Appendix B. As explained above, the SRB's of the system are not located in the main memory but are more readily available on the ATU board of the system. The eight segment base registers of the system each contain a double word of a block of eight double words. the operation described here relates to the loading of such SBR's with an eight double-word block from memory, the starting address of which is contained in a selected accumulator of the system (e.g. AC¯). The LSBRA operation then loads such block into the SBR's in the manner shown by the table designated in connection with the LSBRA instruction in Appendix B. APPENDIX A DATA GENERAL CORPORATION MANUAL NO TITLE 015-000 009 HOW TO USE THE NOVA COMPUTER 014-000 092 ECLIPSE M/600 PRINCIPLES OF OPERATION 014-000 629 INTERFACE DESIGN1 S REFERENCE NOVA AND ECLIPSE LINE COMPUTERS 014-000 617 PROGRAMMER's REFERENCE NOVA 4 014-000 648 ECLIPSE MV/8000 PRINCIPLES OF OPERATION APPENDIX B Jump JMP EMI46.1 <tb> 0 <SEP> 1 <SEP> 2 <SEP> 3 <SEP> 4 <SEP> 5 <SEP> 6 <SEP> 7 <SEP> 8 <tb> Computes the effective address, E, and places it in the program counter. Sequential operation continues with the word addressed by the updated value of the program counter. The 32-bit effective address generated by this instruction is constrained to be within the first 32 Kword of the current segment. Carry remains unchanged and overflow is 0. Jump to Subroutine JSR (@) displacement (,index) EMI46.2 <tb> <SEP> O <SEP> tSPCEzN1T, <SEP> 'l5 <tb> 0 <SEP> 1 <SEP> 2 <SEP> 3 <SEP> 4 <SEP> 5 <SEP> 6 <SEP> 7 <SEP> 8 <SEP> 15 <tb> Increments and stores the value of the program counter in AC3, and then places a new address in the program counter. Computes the effective address, E; then places the address of the next sequential instruction in bits 16-31 of AC3. Places E in the program counter. Sequential operation continues with the word addressed by the updated value of the program counter. The 32-bit effective address generated by this instruction is constrained to be within the first 32 Kword of the current segment. Carry remains unchanged and overflow is 0. NOTE: The instruction computes E before it places the incremented program counter in AC3. Call Subroutine (Long Displacement) LCALL opcode, argument count, displacement EMI47.1 <tb> o <SEP> 1 <SEP> 2 <SEP> 3 <SEP> 4 <SEP> 5 <SEP> 6 <SEP> 7 <SEP> 8 <SEP> 9 <SEP> 10 <SEP> 11 <SEP> 12 <SEP> 13 <SEP> 14 <SEP> 15 <SEP> 16 <SEP> 1747 <tb> <SEP> s <SEP> ARGUMENT <SEP> COdE <tb> <SEP> 48 <tb> Evalates the address of a subtroutine call. If the target address specifies an outward ring crossing, a protection fault (code = 7 in AC1) occurs. Note that the contents of the PC in the return block are undefined. If the target address specifies an inward ring call, then the instruction assumes the target address has the following format: EMI47.2 <tb> <SEP> RING <SEP> <SEP> UNUSED <SEP> GATE <SEP> <tb> 0 <SEP> 1 <SEP> 3 <SEP> 4 <SEP> 15 <SEP> 16 <SEP> 31 <tb> The instruction checks the gate field of the above format for a legal gate. If the specified gate is illegal, a protection (code = 6 in AC1) occurs and no subroutine call is made. Note that the value of the PC in the return block is undefined. If the specified gate is legal, or if the target address specifies an intra ring crossing, the instruction loads the contents of the PC, plus four, into AC3. The contents of AC3 always references the current ring. If bit O of the argument count is o, the instruction creates a word with the following format: EMI48.1 <tb> Jo <SEP> t311 <tb> 0 <SEP> 1 <SEP> 2 <SEP> 3 <SEP> 4 <SEP> 5 <SEP> 6 <SEP> 7 <SEP> 8 <SEP> 9 <SEP> 10 <SEP> 11 <SEP> 12 <SEP> 13 <SEP> 14 <SEP> 15 <SEP> 16 <SEP> 17 <SEP> 1AR1GUMEN,1; <SEP> 31 <tb> This instruction pushes this word onto the wide stack. If a stack overflow occurs after this push, a stack fault occurs and no subroutine call is made. Note that the value of the PC in the return block is undefined. If bit O of the argument count is 1, then the instruction assumes the top word of the wide stack has the following format: EMI48.2 <tb> o <SEP> 15 <SEP> 16 <SEP> 17 <SEP> 31 <SEP> <tb> The instruction modifies this word to include the correct settings of OVK and OVR in bits 0 and 1. Regardless of the setting of bit 0 of the argument count, the instruction next unconditionally sets OVR to 0 and loads the PC with the target address. Control then transfers to the word referenced by the PC. Load All Segment Base Registers LSBRA EMI48.3 1 <SEP> 1 <SEP> 0 <SEP> 0 <SEP> 0 <SEP> 1 <SEP> 1 <SEP> 1 <SEP> 0 <SEP> 1 <SEP> 2 <SEP> 3 <SEP> 4 <SEP> 5 <SEP> 6 <SEP> 7 <SEP> 8 <SEP> 9 <SEP> 10 <SEP> 11 <SEP> 12 <SEP> 13 <SEP> 14 <SEP> 15 <tb> loads the SBRs with new values. ACO contains the starting address of an 8 double word block. The instruction loads a copy of the contents of these words into SRBs as shown in the table below: EMI49.1 <tb> rouble <SEP> Word <SEP> in <SEP> Block <SEP> Destination <SEP> Order <SEP> saved <SEP> <tb> 1 <SEP> SBR1 <SEP> First <tb> 2 <SEP> SBR2 <SEP> Second <tb> 3 <SEP> SBR3 <SEP> Third <tb> 4 <SEP> SBR4 <SEP> Fourth <tb> 5 <SEP> SBRS <SEP> <SEP> Fifth <tb> 6 <SEP> SBR6 <SEP> Sixth <tb> 7 <SEP> SBR7 <SEP> Seventh <tb> 8 <SEP> SBR8 <SEP> Eighth <tb> After loading the SBRs, the instruction purges the ATU. If the ATU was disabled at the beginning of this instruction cycle, the processor enables it now. If an invalid address is loaded in SBR10, the processor disables the ATU and a protection fault occurs (code = 3 in AC1). This means that logical address are identical to physical addresses, and the fault is processed in physical address space. The instruction leaves ACO and carry unchanged; overflow is o. NOTE: This is a privileged instruction. Narrow Multiply NMUL acs, acd EMI49.2 <tb> 1 <SEP> | <SEP> ACS <SEP> ACD <SEP> 0 <SEP> 0 <SEP> 0 <SEP> 1 <SEP> 1 <SEP> 0 <SEP> 1 <SEP> 0 <SEP> 0 <SEP> 1 <SEP> <tb> 0 <SEP> 1 <SEP> 2 <SEP> 3 <SEP> 4 <SEP> 5 <SEP> 6 <SEP> 7 <SEP> 8 <SEP> 9 <SEP> 10 <SEP> 11 <SEP> 12 <SEP> 13 <SEP> 14 <SEP> 15 <tb> Multiplies the signed integer contained in bits 16-31 of ACD by the signed integer contained in bits 16-31 of ACS. If the result is outside the range of -32,768 to +32,767 inclusive, sets overflow to 1; otherwise, overflow is 0. Sign extends the lower 16 bits of the result to 32 bits and places these 32 bits in ACD. The contents of ACS and carry remain unchanged. Sign Extend SEX acs, acd EMI50.1 <tb> <SEP> 14 <tb> 10 <SEP> t{J <tb> Sign extends the 16-bit integer contained in ACS to 32 bits and loads the result into ACD. The contents of ACS remain unchanged, unless ACS and ACD are specified to be the same accumulator, Carry is unchanged and overflow is 0. Load PC WBR displacement EMI50.2 <tb> 1 <SEP> DISP <SEP> 0-3 <SEP> o <SEP> DISP <SEP> 4¯7 <SEP> 1 <SEP> 1 <SEP> 1 <SEP> O <SEP> O <SEP> O <SEP> <tb> 0 <SEP> 1 <SEP> 4 <SEP> 5 <SEP> 6 <SEP> 9 <SEP> 10 <SEP> 11 <SEP> 12 <SEP> 13 <SEP> 14 <SEP> 15 <tb> Adds the 31-bit value contained in the PC to the value of the displacement and places the results in the PC. Carry is unchanged and overflow is o. NOTE: The processor always forces the value loaded into the PC to reference a location in the current segment of execution. Wide Pop Block WPOPB EMI50.3 <tb> 0 <SEP> 1 <SEP> 2 <SEP> 3 <SEP> 4 <SEP> 5 <SEP> 6 <SEP> 7 <SEP> 8 <SEP> 9 <SEP> 10 <SEP> 11 <SEP> 12 <SEP> 13 <SEP> 14 <SEP> 15 <tb> Pops six double words off the wide stack and places them in the appropriate locations. The popped words and their destinations are as follows: EMI51.1 <tb> Double <SEP> Word <SEP> Destination <tb> <SEP> Popped <tb> <SEP> 1 <SEP> Bit <SEP> O <SEP> to <SEP> carry; <SEP> bits <SEP> 1-31 <SEP> to <SEP> PC <tb> <SEP> 2 <SEP> AC3 <tb> <SEP> 3 <SEP> AC2 <tb> <SEP> 4 <SEP> AC1 <tb> <SEP> 5 <SEP> AGO <tb> <SEP> 6 <SEP> Bit <SEP> O <SEP> to <SEP> OVK; <SEP> <SEP> bit <SEP> 1 <SEP> to <SEP> OVR; <SEP> bit <SEP> 2 <SEP> to <SEP> IRES; <tb> <SEP> bits <SEP> 17-31 <SEP> are <SEP> multiplied <SEP> by <SEP> 2 <SEP> and <tb> <SEP> incremented <SEP> by <SEP> 12. <SEP> This <SEP> number <SEP> <SEP> is <tb> <SEP> subtracted <SEP> from <SEP> WSP. <SEP> WSP <SEP> is <SEP> loaded <SEP> with <tb> <SEP> the <SEP> result. <tb> If the instruction specifies an inward ring crossing, then a protection fault occurs and the current wide stack remains unchanged. Note that the return block pushed as a result of the protection fault will contain undefined information. After the fault return block is pushed, AGO contains the contents of the PC (which point to the instruction that caused the fault) and AC1 contains the code 8. If the instruction specifies an intra-ring address, it pops the six double word block, then checks for stack underflow. If underflow has occurred, a stack underflow fault occurs. Note that the return block pushed as a result of the stack underflow will contain undefined information. After the fault return block is pushed, ACO contains the contents of the PC (which point to the instruction that caused the fault) and Acl contains the code 3. If there is no underflow, execution continues with the location addressed by the program counter. If the instruction specifies an outward crossing, it pops the six double word return block and checks for stack underflow. If underflow has occurred, a stack underflow fault occurs. Note that the return block pushed as a result of the stack underflow will contain undefined information. After the fault return block is pushed, ACO contains the contents of the PC (which point to the instruction that caused the fault) and AC1 contains the code 3. If there is no underflow, the instruction stores WSP and WFP in the appropriate page zero locations of the current segment. It then performs the outward ring crossing and loads the wide stack registers with the contents of the appropriate page zero locations of the new ring. Loads WSP with the value: (current contents of WSP) - (2 x (argument count)) Checks for stack underflow. If underflow has occurred, a stack underflow fault occurs. Note that the return block pushed as a results of the stack underflow will contain undefined information. After the fault return block is pushed, ACO contains the contents of the PC (which point to the instruction that caused the fault) and AC1 contains the code 3. If there is no underflow, execution continues with the location addressed by the program counter. Wide Return WR EMI52.1 1 <SEP> 0 <SEP> 0 <SEP> 0 <SEP> 1 <SEP> 1 <SEP> 0 <SEP> 1 <SEP> 0 <SEP> 1 <SEP> 0 <SEP> 0 <tb> O <SEP> 1 <SEP> 2 <SEP> 3 <SEP> 4 <SEP> 5 <SEP> 6 <SEP> 7 <SEP> 8 <SEP> 9 <SEP> 10 <SEP> 11 <SEP> 12 <SEP> 13 <SEP> 14 <SEP> <SEP> 15 <tb> Returns control from subroutines that issue a WSAVS or a WSAVR instruction at their entry point. Places the contents of WFP in WSP and executes a WPOPB instruction. Places the popped value of AC3 in WFP. call Subroutine (Extended Displacement) XCALL opcode, argument count, displacement EMI52.2 <tb> <SEP> <tb> 012 <SEP> <SEP> 3 <SEP> 4 <SEP> 567 <SEP> 891011121314151617 <SEP> - <SEP> <SEP> 313233 <SEP> 47 <tb> Evalues the address of a subroutine call. If the target address specifies an outward ring crossing, a protection fault (code = 7 in AC1) occurs. Note that the contents of the PC in the return block are undefined. If the target address specifies an inward ring call, then the instruction assumes the target address has the following format: EMI53.1 <tb> | <SEP> NEW <SEP> RING| <SEP> UNUSED <SEP> ¯¯ <SEP> GATE <SEP> <tb> 0 <SEP> 1 <SEP> 3 <SEP> 4 <SEP> 34 <SEP> 15 <SEP> 16 <SEP> 31 <tb> The instruction checks the gate field of the above format for a legal gate. If the specified gate is illegal, a protection fault (code = 6 in AC1) occurs and call is made. Note that the contents of the PC in the return block are undefined. If the specified gate is legal, or if the target address specifies an intra-ring crossing, then the instruction loads the contents of the PC, + 3, into AC3. The contents of AC3 will always references the current segment. If bit O of the argument count is 0, then the instruction creates a word with the following format: EMI53.2 <tb> <SEP> I <SEP> I <SEP> #WTt <SEP> pp <SEP> IIp#3l <tb> The instruction pushes this word onto the wide stack. If a stack overflow occurs after this push, a stack fault occurs and no call is made. Note that the value of the PC in the return block is undefined. If bit O of the argument count is 1, then the instruction assumes the top word of the wide stack has the following format: EMI53.3 <tb> <SEP> DON'T <SEP> CARE <SEP> <SEP> 0 <SEP> <SEP> ARGUMENT <SEP> COUNT <SEP> <tb> o <SEP> 15 <SEP> 16 <SEP> 17 <SEP> 31 <tb> The instruction modifies this word to include the correct settings of OVK and OVR in bits 0 and 1. Regardless of the setting of the argument count's bit 0, the instruction next unconditionally sets OVR to 0 and loads the PC with target address. Execution continues with the word references by the PC. Zero Extend ZEX acs, acd EMI54.1 <tb> <SEP> ACS <SEP> ACD1 <SEP> 2 <SEP> 3 <SEP> 4 <SEP> 5 <SEP> 6 <SEP> 7 <SEP> 8 <SEP> 9 <SEP> 10 <SEP> 11 <SEP> 12 <SEP> 13 <SEP> 14 <SEP> 15 <tb> Zero extends the 16-bit integer contained in ACS to 32 bits and loads the result into the ACD. The contents of ACS remain unchanged, unless ACS equals ACD. Carry is unchanged and overflow is 0.

Claims: CLAIMS 1. A data processing system which utilizes memory storage means (16) for storing a plurality of different groups of data, said memory storage means being capable of storing said different groups of data at different designated locations thereof, characterised in that the designated locations are identifiable (SEGMENT, LA1-3) as storage segment locations having a descending order of protection with respect to data reference accesses by an operator, the addresses of data in each group thereof having a plurality of selected segment bits (LA1-3) which identify the storage segment location in which said data is stored, and by means (111 Fig 4) for responding to the selected segment bits of an address which identify the storage segment locations at which a data reference access is requested to compare the selected segment bits with a plurality of previously selected segment bits (CRE1-3) which identify the storage segment location at which a requested data reference access has already been provided with respect to a preceding address; and means (110) responsive to the comparing means (111) for prohibiting a data reference access to an address at a storage segment location which the selected segment bits identify as a segment location having a lower order of protection than the segment location identified by the previously selected segment bits. 2. A system in accordance with claim 1, characterised in that the comparing means (111) includes means for providing a plurality of selected segment bits which correspond to the selected segment bits of an accessed address which identify the storage segment in which the data reference corresponding to the accessed address is stored; means responsive to the segment bits of an accessed address and to the segment bits of the next address to be accessed to determine the order of protection of the storage segment of said next address relative to the previously accessed address to provide a segment control signal (MAX ERR) when said next address corresponds to a data reference stored in a storage segment location having a lower order of protection than the storage segment location of a data reference at the previously accessed address (Fig 6). 3. A system in accordance with claim 2,-characterised in that the data reference access prohibiting means (110) includes means responsive to said segment control signal for producing a coded error protection signal (MAX ERR DEF ERR) which indicates that the data reference at the next address is in a storage segment location which is prohibited from access; and means (FAULT CODE ENCODER) responsive to the coded error signal for producing a coded fault signal identifying that a specified fault has occurred due to the presence of the coded error protection signal. 4. A system in accordance with claim 1, characterised by means (110, 111) for providing access to data references in a current storage segment; means for providing program control instructions which call for access to subroutines stored in a storage segment location different from the storage location currently being used for data references; means (Fig 16) responsive to the program control instructions for determining whether a specified called storage segment in which asuJxutine is located has a higher order of protection than the current storage segment; and means (Fig 17) further responsive totheprogram control instruction when the called storage segment has the higher order of protection for providing entry into the called storage segment and access to a subroutine therein. 5. A system in accordance with claim 4, characterised by means for indicating a subroutine call fault condition when the Called storage segment has a lower order of protection than the current storage segment. 6. A system in accordance with claim 4, characterised by means for providing a program control instruction which requires a return from operation with respect to a called storage segment to operation with respect to a previously used current storage segment; means for determining whether the previously used current storage segment has a lower order of protection than the called storage segment; and means responsive to a return address in the previously used current storage segment for providing access to the return address when the previously used current storage segment has the lower order of protection. 7. A system in accordance with claim 6, characterised by means for indicating a return fault condition when the previously used current storage segment has a higher order of protection than the called storage segment. 8. A system in accordance with claim 4, characterised in that the entry providing means includes means responsive to the program control instruction to provide a branch address including a first field (SBR, P.50) identifying the called storage segment and a second field (GATE NUMBER) specifying a coded gate number; the called storage segment having a storage location which identifies an array of gate numbers resident in the called storage segment; means for comparing the coded gate numbers of the branch address with the maximum gate number resident in the called storage segment; means for permitting the entry into the called storage segment and access to the suurutine therein when the coded gate rrnber is less than the mudmm gate number. 9. A system in accordance with claim 8, characterised by means for indicating a call fault condition when the coded gate number is equal to or greater than the maximum gate number. 10. A data processing system having a main memory (16) containing a plurality of segment storage regions, characterised by a plurality of memory management registers (SBR) each associated with one of the segment storage regions and capable of storing a 32-bit double word, the memory management registers being located externally (ATU 14) of the main memory; accumulator storage means for storing a starting address of a block of double words stored in main memory; instruction decode means responsive to one instruction requiring the storage of the block of data words into the memory management system for providing selected control signals; means responsive to the selected control signals for accessing the first word of the block of double words at the starting address in the main memory and for loading the double words in the block into the plurality of memory management registers, the double words being loaded sequentially into the registers in a preselected order.

Inventors: ALSING, CARL J., HENRY, CARL, HOLBERGER, KENNETH D., HOLLAND, CHARLES J., STAUDAHER, STEVEN M., WALLACH, STEVEN
Applicants: DATA GENERAL CORPORATION
Application year: 1981
Main classification: G06F12
IPC codes: G06F11, G06F9, G06F12