United States Patent4516199
Frieder , ; et al.May 7, 1985

Title

Data processing system

Abstract

A data processing system comprising an active and intelligent main store including a main memory, a main store controller for accessing the main memory in a manner allowing different address and data structures, and a main store bus connected to the controller. At least one processor of a first type is connected to the main store bus, this being an auxiliary processor for performing input-output and other operations. At least one processor of a second type also is connected to the main store bus, this being an execution processor for fetching, decoding and executing instructions. All or some of either or both of the auxiliary processors and execution processors may be different. A supervisory processor for initiating configuring and monitoring the system is connected to the main store bus. A communication bus is connected to the processors of the first and second types and to the supervisory processor. A diagnostic bus connects the supervisory processor to each of the processors of the first and second types. An input-output bus ensemble is connected to the supervisory processor and to each auxiliary processor. At least one device and associated device controller can be connected to the input-output bus ensemble. At least one direct memory access controller can be connected between the main store bus and the input-output bus ensemble.


Inventors:Frieder; Gideon (Williamsville, NY), Hughes; David T.  (Amherst, NY), Kline; Mark H.  (Williamsville, NY), Liebel, Jr.; John T.  (Williamsville, NY), Meier; David P.  (Orchard Park, NY), Wolff; Edward A.  (Tonawanda, NY)
Assignee:Nanodata Computer Corporation (Buffalo, NY)
Appl. No.:213380
Filed:December 5, 1980

Current U.S. Class:710/20 710/22 
Field of Search:364/2MSFile,9MSFile

U.S. Patent Documents
3905023September 1975Perpiglia
4228496October 1980Katzman et al.
Primary Examiner: Heckler; Thomas M.
Assistant Examiner: Mills; John G.
Attorney, Agent or Firm:Christel, Bean & Linihan

Parent Case Text



This is a division of application Ser. No. 083,677, filed Oct. 11, 1979.

Claims


We claim:
1. An input-output arrangement for a data processing system including a main store and at least one device controller, said arrangement comprising:
(a) at least one input-output bus connected to said device controller;
(b) a processor for controlling said input-output bus;
(c) first connecting means separate from said input-output bus for connecting said processor to said main store;
(d) second connecting means for connecting said processor to said input-output bus;
(e) a direct memory access controller;
(f) third connecting means for connecting said direct memory access controller to said main store;
(g) fourth connecting means for connecting said direct memory access controller to said input-output bus; and
(h) fifth connecting means separate from said input-output bus for connecting said direct memory access controller to said device controller;
(i) said first, second and fourth connecting means enabling said processor to initiate transfer of information through said direct memory access controller while itself simultaneously participating in information transfer and maintaining control over said direct memory access controller, said first, second, third, fourth and fifth connecting means allowing parallel transfers of information between said processor and said main store, between said direct memory access controller and said main store, between said processor and said device controller and between said direct memory access controller and said device controller.

2. An input-output arrangement according to claim 1 further comprising:
(a) at least one additional direct memory access controller;
(b) means for connecting said direct memory access controller to said main store;
(c) means for connecting said additional direct memory access controller to said input-output bus; and
(d) said processor controlling said additional direct memory access controller in a manner similar to that of said first-named direct memory access controller.

3. An input-output arrangement according to claim 1 further including:
(a) at least one additional processor;
(b) means for connecting said additional processor to said main store; and
(c) means for connecting said processor to said input-output bus.

4. An input-output arrangement according to claim 3 wherein said processors are inhomogeneous.

5. An input-output arrangement according to claim 3 wherein said processors and said direct memory access controller are interconnected in a manner such that two of said processors can control a single direct memory access controller.

6. An input-output arrangement according to claim 1 further including:
(a) another input-output bus connected to said device controller;
(b) means for connecting said processor to said other input-output bus; and
(c) means for connecting said direct memory access controller to said other input-output bus.

7. An input-output arrangement according to claim 1, wherein said direct memory access controller includes first-in-first-out memory means arranged to receive and transfer information transferred through said direct memory access controller from said device controller to said main store and from said main store to said device controller, said first-in-first-out memory means serving to give said processor sufficient time to respond to interventions.

8. An input-output arrangement according to claim 1 further including another input-output bus connected to said direct memory access controller and another processor connected in controlling relation to said other input-output bus, and wherein said direct memory access controller includes:
(a) first and second identical register means;
(b) means for loading data computed by said first-named processor through said first-named input-output bus into said first register means and for independently loading data computed by said other processor through said other input-output bus into said second register means; and
(c) comparison means operatively connected to said first and second register means for comparing the contents of said first and second register means and signalling when said contents are different to stop the transfer of information.

9. An input-output arrangement for a data processing system including a main store, a first input-output bus, a device controller connected to said first input-output bus, a first processor connected to said first input-output bus, a direct memory access controller connected to said input-output bus and to said main store having a portion for transferring information between said device controller and said main store and a portion for controlling said transfer including first register means arranged to be loaded from said input-output bus, characterized by:
(a) second register means in said controlling portion of said direct memory access controller and identical to said first register means;
(b) a second input-output bus connected to said direct memory access controller for loading said second register means;
(c) a second processor connected to said second input-output bus;
(d) said first and second registers being independently loaded with data computed by said first and second processors, respectively; and
(e) comparison means operatively connected to said first and second register means for comparing the contents of said first and second register means and signalling when said contents are different to stop the transfer of information.

10. An input-output arrangement according to claim 9, wherein said transferring portion of said direct memory access controller includes first-in-first-out memory means arranged to receive and transfer information transferred through said direct memory access controller from said device controller to said main store and from said main store to said device controller, said first-in-first-out memory means serving to give said first processor sufficient time to respond to interventions.

Description

BACKGROUND OF THE INVENTION

This invention relates to digested data processing systems, and more particularly to a new and improved multiprocessor arrangement.

Currently available data processing systems can be divided roughly into two categories; Those which support a single, selected instruction set and those which by design support multiple instruction sets. The latter category includes machines which have two or more sets of microcode sequences, sometimes supported by special hardware features, to implement predefined instruction sets. Both categories can be of the single processor or multiprocessor variety. In the case of multiprocessors, it has been customary to provide only one architecture of processors for the support of the user instruction set. Whenever applicable, prior systems have distributed operating system functions and support over some number of processors, all of which have used the memory system as a passive element.

SUMMARY OF THE INVENTION

It is, therefore, a primary object of this invention to provide a new and improved digital data processing system.

It is a further object of this invention to provide a new and improved data processing system of the multiprocessor type.

It is a further object of this invention to provide a multiprocessor arrangement where all or some of the processors may be different not only in design but also in the user instructions that the processors support.

It is a further object of this invention to provide such a multiprocessor arrangement having the capability to accommodate additional processors in the future having diverse instructions sets not necessarily originally contemplated.

It is a further object of this invention to provide communications, diagnostic and supervisory support for such diverse multiprocessors arrangement.

It is a further object of this invention to provide a data processing system having an active, intelligent main memory system to support diverse memory structures.

It is a further object of the present invention to provide a data processing system in which functions which had been done by the processor or processors, will be subsumed in the memory system, thus providing essentially the capability of an active and intelligent memory system which provides parallel, diverse memory management functions independently of the operation of the processors.

It is a further object of the present invention to provide such a memory system which allows for addition of memory structure subsequent to manufacture and installation of the data processing system of which it is a part.

It is a further object of the present invention to provide such a memory system which enables processors to share in overlapped, shared or exclusive fashion thereby enabling each processor to access the same information in potentially diverse form.

It is a further object of the present invention to provide such a multiprocessor arrangement enabling pooling of processor groups and providing all connection, data access, control, monitoring and diagnostic capabilities to support such pooling.

It is a further object of the present invention to provide a heterogeneous, modular and expandable data processing system in which expansion is accomplished by properly added hardware modules and where the total system operation is under the supervision of a special diagnostic processor which has its own dedicated diagnostic bus.

It is a further object of the present invention to provide a data processing system having input-output facilities and controls which enhance the degree of parallelism between data transfers while allowing well defined but potentially diverse loci of control in the form of auxiliary processors.

It is a further object of the present invention to provide a data processing system having such input-output facilities in a manner that allows both shared and exclusive access to peripheral devices by diverse input-output protocols and data structures, and wherein potentially diverse procedures can proceed in parallel even if controlled by a single locus of control.

It is a further object of the present invention to provide a data processing system having diverse, parallel processing capabilities which can perform diverse processing of input-output structures independently and parallel to the processing of the potentially diverse user instruction sets.

The present invention provides a data processing system comprising a plurality of tightly coupled processors which are connected together in the system in a manner such that any processor can communicate with any other processor in order to transfer control information and data associated with the control information through the system. The processors can be of three categories, two of which can include a plurality of processors, and the processors are connected together in a manner such that the processors of the two categories are capable of being different. The system further comprises an active intelligent main store including main memory means, main memory control means operatively connected to the main memory means for accessing the main memory means in a manner allowing different address and data structures, and main store bus means for connecting the processors to the intelligent main store enabling the processors to share the memory.

The processors of one of the afore-mentioned two categories are auxiliary processors for performing input-output and other operations, and the processors of the other of the categories are execution processors for fetching, decoding and executing instructions. The third category of processors can include a supervisory processor for initiating, configuring and monitoring the system, and this processor also is connected to the main store bus means. A communication bus means is connected to all of the processors, and a diagnostic bus means connects the supervisory processor to each of the auxiliary processors and execution processors and to the main store. An input-output bus ensemble is connected to the supervisory processor and to each auxiliary processor. At least one device and associated device controller can be connected to the input-output bus ensemble. At least one direct memory access controller can be connected between the main store bus means and the input-output bus ensemble.

The foregoing and additional advantages and characterizing features of the present invention will be come clearly apparent upon a reading of the ensuing detailed description together with the included drawing wherein:

BRIEF DESCRIPTION OF THE DRAWING FIGURES

FIG. 1 is a schematic block diagram of a digital data processing system according to the present invention;

FIG. 2 is a schematic block diagram of the intelligent main store of the system of FIG. 1;

FIG. 3 is a schematic block diagram of an execution processor of the system of FIG. 1;

FIG. 4 is a schematic block diagram of a portion of the input-output subsystem of the system of FIG. 1;

FIG. 5 is a schematic block diagram of the supervisory processor of the system of FIG. 1;

FIG. 6 is a schematic block diagram further illustrating the intelligent main store of the system of FIG. 1;

FIG. 7 is a schematic block diagram of a main store function module of the intelligent main store shown in FIG. 6;

FIG. 8 is a schematic block diagram of the virtual memory controller in the function module shown in FIG. 7;

FIG. 9 is a logic diagram of the data logic path of the main store controller of the intelligent main store shown in FIG. 6;

FIG. 10 is a logic diagram of the address and control logic path in the main store controller of the intelligent main store shown in FIG. 6;

FIG. 11 is a logic diagram of a main store data module of the intelligent main store shown in FIG. 6;

FIG. 12 is a schematic block diagram of a direct memory access controller of the system of FIG. 1

FIG. 13 is a schematic block diagram of an auxiliary processor of the system of FIG. 1;

FIG. 14 is a schematic block diagram further illustrating the supervisory processor of the system of FIG. 1; and

FIG. 15 is a schematic block diagram of the main store bus interface of the supervisory processor shown in FIG. 14.

DETAILED DESCRIPTION OF THE ILLUSTRATED EMBODIMENT

Brief System Description

The data processing system of the present invention is illustrated in FIG. 1 and is organized around an intelligent main memory subsystem including an intelligent main store generally designated 12 and a main storage bus means 14 operatively associated with the intelligent main store in a manner which will be described. The system further comprises a plurality of tightly-coupled processors, and the processors are of three categories. The term tightly coupled as used herein is intended to include processors which apart from any memory they may have all share a common memory space and have the ability to communicate with each other at high speed and send an interrupt signal at any point in time. In the system shown, two of the categories each includes a plurality of processors. As illustrated in FIG. 1, one of the categories of processors are identified as auxiliary processors designated 16 and 16'. Another category is identified as execution processors designated 18 and 18'. For convenience in illustration, only two auxiliary processors 16,16' and only two execution processors 18,18' are shown, but a smaller or larger number of processors can be included in the system of the present invention. The third category of processors is a supervisory processor designated 20. The nature and operation of the processors will be described in detail presently.

The system of FIG. 1 further comprises means in the form of a communication bus generally designated 22 for connecting the processors together in the system in a manner such that any processor can communicate with any other processor in order to transfer control information and data associated with the control information through the system. As will be explained in further detail presently, the communication bus 22 connects the processors in a manner such that the processors of the two categories are capbble of being different. In other words, auxiliary processors 16 and 16' are capable of being different from one another, and execution processors 18 and 18' are capable of being different from one another. A diagnostic bus means 24
is provided for connecting the supervisory processor 20 to all of the other processors in the system, as well as to the main store system.

The data processing system of the present invention further comprises a bus arrangement 28 comprising a plurality of additional buses also defined as an input-output bus ensemble. The processors of one of the categories, in particular the auxiliary processors 16 and 16', are connected in controlling relation to the bus arrangement 28. As shown in FIG. 1, the supervisory processor 20 also is connected in controlling relation to the bus arrangement 28. At least one device and associated device controller (not shown in FIG. 1) are operatively connected to ensemble 28.

The system of the present invention may include some number of direct memory access controllers, and in the system shown in FIG. 1 there are two direct memory access controllers designated 30 and 30'. Each direct memory access controller is connected to the main storage bus means 14 and to the input-output bus ensemble 28.

Referring now to FIG. 2, the intelligent main store 12, which is characterized by high speed and flexibility, comprises a main memory 34 and a main store controller generally designated 36. The main store controller 36 provides access to the main memory 34 for all units of the system, i.e. it serves as an interface between the main memory 34 and all units such as processors of the system. The main store controller 36 supports virtual memory translation and protection and controls parallel requests of the memory from the various processors in the system. The main store controller includes a modular, hard-wired unit which drives a very high speed control memory (not shown in FIG. 2) which can be used for scratch pad, flag and other control information storage. This same hard-wired unit also drives the main memory 34 which may be viewed as being of moderate speed and relatively large size. The main store controller presents to the rest of the system a speed and structure independent way of utilizing the main memory 34. Since the system of the present invention is designed to support multiple virtual machines, it is desired that the memory structure be as general as possible. However, generality can be expensive and slow. Accordingly, as a balance, the main store controller 36 supports various memory structures through high speed control modules. The function or control modules provide, for example, base and field length registers, virtual memory control, memory protect schemes and data remapping schemes. The modules are selected by bits on the memory bus 14 in a manner which will be described. This not only provides a choice of functions but it also provides the system with the capability to implement a rather general microprogrammed control to provide such functions. The main store controller 36 generates timing, controls refresh, decodes addresses, and buffers data lines. It also provides base register addition, priority arbitration error correction/detection, address and data traps, address out of range detection, memory bus data parity generation, memory bus address and data parity verification, and other functions as necessary and as defined by the various function modules.

The main store bus 14 is bidirectional in nature and supplies and receives address and data information and control bits associated therewith. Although the system shown includes one bus 14, the system has the capability to accommodate additional main store buses. The exact information which is present on a given main store bus signal line is defined by the selected function module and by the processor which is enabled to the main store bus at that instant in time. The nature and operation of the control or function modules of the main store controller 36 will be described in detail presently.

The system of the present invention may include at least one execution processor 18 which provides the system with high speed execution of a chosen instruction set. The nature of the present invention allows for a configuration containing as little as one auxiliary processor and one supervisory processor with the main store 12 and all four buses. However, including the execution processor provides efficient emulation. In particular, the execution processor performs the instruction set of a target machine being emulated. The system of the present invention can include a plurality of execution processors 18, which may be all different, all identical or a mixture thereof. In any event, one or more execution processors maybe included in the system and serve to fetch, decode and execute instructions. Thus each execution processor 18 also may be viewed as a central processing unit. The execution processor 18 is a combination hard wired and microcoded device. The design objectives of the execution processor are to optimize the execution speed of a limited instruction set.

It should be clear that the data processing system of the present invention has the capability of providing a rather general execution processor which will emulate any one of a given list of machines. The preferred approach, however, is to provide a number of dedicated execution processors that will provide the performance and the target machines that are most useful for the system users. For example, in an illustrative system, the execution processor 18 can be designed to emulate an IBM
370 machine with the execution speed exceeding that of a model 148. The execution processor, in this illustrative case, provides overlap capabilities and, at each point in time, there are multiple instructions in various stages of execution.

For convenience in illustration, only two execution processors 18 and 18' are shown in FIG. 1 but the system can include a larger number of execution processors if desired. Each execution processor is connected to the main store bus 14 and to the communication and diagnostic buses 22 and 24, respectively. In particular, processor 18 is connected through path 40 to main store bus 14 and through paths 42 and 44 to the communication bus 22 and diagnostic bus 24, respectively. Similarly, processor 18' is connected through path 40' to main store bus 14 and through paths 42' and 44' to the busses 22 and 24, respectively.

The auxiliary processor 16 may be viewed as a microprogrammable processor having a changeable instruction set. While the execution processor 18 provides execution of a selected instruction set, the auxiliary processor 16 supplies all additional services such as system support, input-output processing, and special instructions support. The auxiliary processor 16 permits implementation in microcode of such things as communication subsystems and file management subsystems. Thus, the auxiliary processor 16 performs input-output operations, automatic input-output error checking and recovery, and performs other systems tasks that may have been programmed by the user or provided by the manufacturer.

An illustrative auxiliary processor 16 has up to 120 kilo bytes of internal memory which is independent of all other memories in the system. The auxiliary processor 16 operates at sub-microsecond instruction speeds, is preprogrammed and provides hardware support of concurrent task execution, automatic status save/restore operations, firmware tasks scheduling, and includes an arbitrary number of register sets limited only by the number of resident tasks and available memory.

Each auxiliary processor can be built, for example, of microprogrammable bit slices and the instruction set for each auxiliary processor is defined by a horizontal code designated nanocode for the bit slices which construct the machine. For each application class of the auxiliary processor there is a special nanocode set which implements the proper instruction set. All instruction sets, however, share a common architectural concept: that is, an interrupt driven, self-virtualizable architecture with nanocode scheduling of tasks, location independent code, and variable number of registers which can also be addressed as memory.

The auxiliary processor 16 performs input-output emulation of two types: channel emulation and device emulation. Channel emulation involves for example processing of input-output instruction, fetching and decoding channel command words, storing channel status words and sending commands to device controllers. The auxiliary processor instruction set which is used for channel emulation basically involves memory to memory and control operations. Pseudo memory locations are assigned to the external resources: the main store bus data, address and control lines, the input-output data address and control registers and the communication bus 22. All these registers and controls are of various lengths and are manipulated by special instructions. These instructions and the pseudo memory locations for resources simplify and considerably speed up the input-output driving provided by the auxiliary processor. Device emulation, also performed by the auxiliary processor, involves mapping commands of the device being emulated into the proper format for the physical device and mapping status information from the device into a proper format for the execution processor. It also involves mapping the data formats assumed by the execution processor into the possibly different data formats of the physical device.

The auxiliary processor 16 serves as part of the input-output portion or subsystem of the data processing system, and thus serves to provide a high degree of flexibility, performance, expandability and reliability. The input-output subsystem includes, along with the auxiliary processor 16 or a number thereof, one or more of the direct memory access controllers 30 and high speed data channels associated therewith and one or more busses of the input-output bus ensemble 28 each connected to a large number of device controllers. When the auxiliary processor serves as a channel emulator it is connected to the input-output busses. On these input-output busses there are two types of devices, (not shown in FIG. 1). The first are high speed type devices such as discs and tapes and these are connected through their respective device controllers to the input-output bus ensemble 28 and to a port of a direct memory access controller 30. The second type are low speed devices which are connected through their respective device controllers to an input-output bus alone.

With respect to the high speed devices, the actual control of the information transfer to or from the main store is done via the direct memory access controller 30. This control is initiated, monitored and terminated by the auxiliary processor
16 via the input-output bus connection to the direct memory access controller 30 and to the device itself. The auxiliary processor 16 sends control information and receives status information from the device controller. If desired, a high speed device can be operated in the system without a direct memory access controller 30. In this case, the direct memory access junction is provided by the auxiliary processor. The actual transfer of data, using control provided by the direct memory access controller 30, does not load the auxiliary processor 16 thus freeing it for other tasks. The hardware of the direct memory access controller 30 has access priority to the main store bus 14 over any auxiliary processor 16 or execution processor 18, and it shares the main store bus 14 in a priority protocol with other direct memory access controllers.

The slow speed devices ae controlled directly by the auxiliary processor 16. The data transfer is done by reading or writing an input-output register one byte at a time. All data packing, unpacking and conversions which are not done by the device controller are done by the auxiliary processor 16. Considerable memory bus load reduction can be achieved with the relatively wide main store bus 14.

Thus, the auxiliary processor 16 serves as an intelligent channel controller, supervising operation of the direct memory access controllers 30 and the device controllers. The auxiliary processors, direct memory access controllers, and device controllers in the system are all capable of being programmably switched from one bus to another. Multiple auxiliary processors, direct memory access controllers and busses provide a high degree of redunancy, usually allowing the system to continue operation if one or more of these components fails. Thus, the auxiliary processor, in addition or as part of performing input-output emulation, performs input-output bus, direct memory access controller and device controller management. Such management functions include handling input-output bus status and data interrupts, transferring commands and data over the input-output bus, setting up proper parameters in the direct memory access controller, co-ordinating interaction between device controller and direct memory access controller, and participating in low level device control where necessary.

For convenience in illustration, two auxiliary processors 16 and 16' are shown in FIG. 1 but a different number can be provided, for example up to about fourteen in a single system. Each auxiliary processor is connected to the maine store bus
14, to the communication and diagnostic busses 22 and 24, respectively, and to the input-output bus ensemble 28. In particular, auxiliary processor 16 is connected by path 48 to the main store bus 14, by path 50 to the input-output ensemble 28, by path
52 to the communication bus 22, and by path 54 to the diagnostic bus 24. Similarly, processor 16' is connected through path 48' to the main store bus 14, through path 50' to the input-output bus ensemble 28, through path 52' to the communication bus 22, and through path 54' to the diagnostic bus 24.

The supervisory processor 20 initiates, configures, and monitors the data processing system. The supervisory processor 20 has access to all regular system components for overall control of the system. For maintenance and reliability considerations, the supervisory processor is connected to its own diagnostic bus, i.e. the diagnostic bus 24, which in turn is connected to all other parts of the system i.e. to the auxiliary processors 16, the execution processors 18 and the intelligent main store 12. The supervisory processor 20 and diagnostic bus 24 thus provide the basis for system-wide control and diagnostic capability. In addition, the supervisory processor 20 interfaces to the communication bus 22, the main store bus 14, and the input-output bus ensemble 28 to simulate the operation of the other system processors. In particular, supervisory processor 20 is connected by path 60 to communication bus 22, by path 62 to the diagnostic bus 24, and by path 64 to the input-output bus ensemble 28. The supervisory processor also is connected by path 66 to the main store bus 14. The diagnostic bus 24 is connected by a path 68 to the main store bus 14.

The supervisory processor 20 constantly monitors all system resources, responds to operation requests, and initiates automatic recovery if necessary. In particular, the supervisory processor 20 is responsible for initializing the system, i.e. loading writable control memories, partitioning the main memory and allocating the auxiliary processors 16 to various tasks. The supervisory processor also monitors operation of the system, logging errors as they occur and performing appropriate error recovery procedures when necessary. The supervisory processor also performs tasks of a system console, such as reading, displaying and changing memories and registers, starting and stopping processors and breakpoints, to mention a few. The supervisory processor contains a remote interface connection which allows diagnosis and updating of the system microcode. Furthermore, the supervisory processor serves as both a local and a remote diagnostic tool, being capable of diagnosing memories, busses, processors, input-output channels and peripherals.

The speed and performance of the supervisory processor 20 has the least impact on the system as it is actually not necessary during normal operation of the system. The supervisory processor is employed for user and operator interface, machine status display, as a diagnostic tool for microprograms, for diagnosis of faults in all units including input-output devices and as a very advanced controller for remote diagnosis. When the system is in actual operation, the supervisory processor provides operator interface an integrity control. Upon any occurrence of hardware failure, the supervisory processor initiates and controls soft and firm recovery procedures.

The supervisory processor 20 is connected by the diagnostic bus 24 to the auxiliary processor 16 and to the execution processor 18, and it is connected also to the input-output ensemble 28. In the connection to the auxiliary processors 16 and to the input-output bus ensemble 28 the supervisory processor 20 can serve in a dual role. It can appear as an input-output device for the auxilliary processor 16 thus simulating an arbitrary device, or it can appear as an auxiliary processor 16 as far as the devices are concerned. This dual role is extremely important for diagnostic purposes. The connection of the supervisory processor 20 through the diagnostic bus 24 to the execution processors 18 is used for single stepping, for invocation of diagnostic microcode procedures, for loading and reading of internal registers and flags, and for various system measurement functions.

The software of the supervisory processor 20 is based on two different considerations. The first is reliability, availability and servicability support for the hardware and firmware. The second is the creation of the user interface and user indicators for the machines which are emulated by the particular execution processors currently incorporated in the system.

In the data processing system of the present invention there are four bus groups: the main store bus 14, the communication and control bus 22, the diagnostic bus 24 and the input-output bus ensemble 28. The memory bus or main store bus 14
already has been described in connection with the intelligent main store 12. The communication and control bus 22 is not really a bus but a storage device which can be read and written by each of the units connected to it, i.e. by each of the auxiliary processors 16, execution processors 18 and by the supervisory processor 20. Some of the bits in the communication and control bus 22 are hardwired to control signals in the various processors. The connections are controlled strictly by convention and design. The communication and control bus 22 allows communication between execution processors 18 for networking purposes, between auxiliary processors 16 for load sharing and between execution processors 18 and auxiliary processors 16 for input-output initiation, input-output status interrupts, input-output status interrogation, assignment of tasks and synchronization. The communication and control bus 22 is parity protected, as are all other busses.

The diagnostic bus 24 provides a path for the supervisory processor to interrogate all the functional units in the system, and the supervisory processor has complete control over this bus. The diagnostic bus 24 is used to read and write the auxiliary processors 16, to control devices, to initiate interrupts, to load and control registers in all input-output devices, and for execution processor dependent diagnostic functions. The diagnostic bus provides a path for loading control memories, for reading registers, memories and machine state, for servicing error conditions which the various functional units are not handling themselves, and for running diagnostics on various busses and functional units. The diagnostic bus 24 usually is not active during normal system operations, although it can be excerised for such operations as "spying" on the system, performance analysis, etc.

The input-output bus ensemble 28 of the system illustrated in FIG. 1 is built from four input-output busses. Each input-output bus is capable of transmitting both data and control information. Each device controller in the system has to be connected to one of the input-output busses and optionally can be connected to any number of them. The input-output bus ensemble 28 is used for transfer of control information for both low speed and high speed devices and for transmission of low speed data. Low speed is defined as rates of up to 300 kilobytes per second on a continuous basis or speeds of up to two million bytes per second in bursts which do not exceed 8 kilobytes and which are infrequent enough not to saturate the capability of the auxiliary processors which are connected to that bus. High speed input-output operation is divided into two categories, up to five million bytes per second and from five to sixteen million bytes per second, but data flowing at these data rates are not handled via the input-output bus ensemble as will be explained presently.

In operation, the inherent simplicity of the system architecture coupled with the built-in emulating power permits a rather clean procedure for the emulation of any real machine on the system of the present invention. Assume that a machine is chosen as a target for emulation. The input-output part, including communication protocol, interrupt conventions, and parallelism of the chosen machine are analyzed and implemented in microcode for the auxiliary processor 16. This microcode is vertical and easy to implement. Additional necessary instructions can be added via a horizontal code known as nanocode. The hardware characteristics of the direct memory access controllers 30 and the high speed operation of the auxiliary processor 16 permits efficient handling of high speed devices, and the high speed and width of the main store bus 14 permits simultaneous operation of many high speed devices. In parallel to the implementation of the microcode, the dedicated bits of the auxiliary processor
16 in the communication bus 22 are assigned fixed functions. These bits will serve for communication between the auxiliary processor 16 and the execution processor 18. Also, the code necessary for the supervisory processor 20 is developed in parallel, as is the execution processors 18 for the chosen machine. In particular, the system user must write or acquire programs written in the instruction set performed by the execution processor 18.

When the system is initiated, all the power of a parallel distributed host framework is unleashed. In particular, the following are done in completely controlled, parallel operation: One or more execution processors 18 fetch, decode and execute instructions. One or more auxiliary processors 16 perform input-output operations, automatic input-output checking and recovery. In addition, each auxiliary processor 16 performs other system tasks that may have been programmed by the user or provided by the manufacturer. The intelligent main store 12 supports virtual memory translation and protection, and it controls parallel memory requests from the auxiliary processor 16 and from the execution processor 18. The supervisory processor 20 constantly monitors the system resources, responds to operation requests, and if necessary initiates automatic recovery.

Thus, all the system components operate in complete parallelism. The input-output is usually performed in parallel, and if the instruction is looping until input-output completion, completion is signalled via the communication bus 22. When instructions are executed by the execution processor 18, if the instructions signal input-output or there is any need of service by the auxiliary processor 16, the auxiliary processor 16 is notified via the communication bus 22 causing an interrupt condition. If no auxiliary processor service is necessary, the instruction is executed by the execution processor 18. Before the next instruction fetch, the communication bus 22 is interrogated for a signal from an auxiliary processor 16. Only one bit has to be interrogated, and depending upon the design of the execution processor 18, it invokes either no overhead or one microinstruction. At any time, the supervisory processor 20 can stop or alter the processing in all execution processors 18 and auxiliary processors 16.

In addition to the parallelism between an execution processor 18 and an auxiliary processor 16 which serves it, there can be a built-in parallelism in the execution processor itself, for example between the fetch and execute cycles. There also can be parallelism between the auxiliary processors themselves and between the various execution processors. The system of the present invention has the flexibility to allow variations in the actual degree of parallelism implemented in each particular system and for each target machine.

The arrangement of internal busses allows the execution processors 18 and auxiliary processor 16 in the system to form a network of processors. The execution processor 18 sends input-output commands, etc. to the auxiliary processors 16 while the auxiliary processors return status information. This arrangement is also used for transferring interprocessor commands in multiple processor configurations and allows the transfer of interprocessor control information.

The communication protocol implemented accepts messages from the processors and automatically insures that each message reaches the proper destination. If the destination processor is busy, the system will give other processors time to send messages and then will try to deliver the message again. The communication system works autonomously and does not require that either the sending or receiving processor be occupied with the details of the transfer.

The system of the present invention, accordingly, is a universal host for virtual machines. By way of further example, when the system is used to emulate an IBM 370 machine, the auxiliary processor 16 is a 16 bit sub-microsecond, register to register, memory to register and memory to memory architecture wherein each task has its own register set. In the IBM 370 emulation, the auxiliary processor 16 is called by an execution processor 18 each time the latter encounters an input-output instruction and each time a microcoded operationg system support feature is requested. The auxiliary processors 16 are programmed to perform complete channel command word processing, all input output driving, device error recovery, all retry and data overrun processing, channel command word prefetched if allowed etc. The operating system which is running on the execution processor 18 is spared all routine retries reducing considerably the system overhead. The particular structure of the execution processor 18 for emulation of an IBM 370 machine will be described in further detail presently.

The system of the present invention advantageoulsy has the capability of including multiple execution processors 18 and multiple auxiliary processors 16. This allows different execution processors or central processing units to share the system resources of main store, auxiliary processors and peripherals, and it allows execution processors to work together in networks, as front end processors or as independent central processing units. This capability also allows addition of auxiliary processors to handle heavy input-output loads, to emulate some computer systems without the need for execution processors, and for data preprocessing and data routing. It also allows greater system reliability with back-up auxiliary and execution processors and permitting an auxiliary or execution processor to be serviced while others are running.

In the system of the present invention, each of the two categories of processors, i.e. auxilary processors 16 and execution processors 18, is capable of using the other of the two categories as a pool. For example, an execution processor 18
while requesting an auxiliary processor sevice via the communications bus 22 can direct that request to a group of auxiliary processors 16 rather than to a particular auxiliary processor. The service granted will be at the discretion of the group of auxiliary processors 16 rather than at the discretion of the requesting execution processor 18. As the service request includes the identification of the requesting execution processor 18, there is no problem encountered in the reply to the request by the auxiliary processor which will eventually honor the request. The foregoing procedure can be performed in the opposite direction, i.e. an auxiliary processor 16 requesting execution processor service. In addition, if desired one processor of a group or category can utilize the others of that same category as a pool. In this connection, the communication bus 22 message contains, among others 4 source identification bits and 4 destination identification bits. Each processor can be set up to recognize one or more of these destination identifications, one of these being that processor's own identification bit and the other bits being a pool identification.

Detailed System Description

The intelligent main store 12, as shown in FIG. 2 includes a main memory 34 which is built from interchangable modules whereby addresses can be reassigned without changes in the physical memory. It comprises 72 bit data words and 8 error correction bits providing standard single bit error correction, and double bit error detection. The main memory 34 receives 27 bit wide addresses along path 70 from the main store controller 36. Data travels along path 72 between main memory 34 and the main store controller 36. The main store bus 14 accomodates 104 data/address lines, which are typically divided into 72 data lines, 32 address lines, and 41 control and parity lines. It allows easy change in the total data width (which can be between 1
and 72 bits) and in the total address width (which can be between 1 and 104 bits if the address/data is time multiplexed, or between 32 to 96 bits if the data and address are sent at the same time). Actual implementation of the bus is dependent on the mumber of parallel requests that can be handled by the memory controller 36. For example, in a machine where only one memory request is handled at one time, the physical implementation is a single bus with priority selection capable of transferring one datum and one address each 500 nanoseconds, i.e. one 72 bit unit every 500 nanoseconds thereby achieving a data rate of better than 16 million bytes per second. By way of further example, in the emulation of an IBM 370 machine, of the total of 104
address/data bits of the bus 14, 64 of the data bits and 24 of the address bits are used in parallel.

As shown in FIG. 2, the main store controller 36 is arranged into three portions, one portion 74 containing the special function or control modules, a second portion 76 containing control logic, and a third portion 78 containing error correction logic. The function or control modules enable the main store controller 36 to support various protection schemes, virtual memory schemes, dynamic address translation schemes and address/packing methods. The main store controller 36 can map addresses to any place in the main memory 34, and it also serves to control parallel memory requests from other system processors. In an exemplary system as illustrated in FIG. 2, where there are concurrent special separate control modules, each providing virtual memory control, memory protection, memory relocation base registers, and data mapping, the desired control module is selected by bits on the main store bus 14. Although the physical residence of the control module is shown within the main store controller 36, it could be elsewhere in the system depending on such considerations as cost and performance. However, logically the functions of the controller modules are considered part of the memory system. There are typically up to four function or control modules in a system, one for each virtual machine type.

The objective of generality with low cost is achieved by including in the system configuration of the main store controller 36 only those control or function modules which are required by the virtual architecture which the system user desires. For example, the function units or modules designed for a machine emulating the IBM 370 machine accept 24 bit wide addresses and 64 bit wide data, although the memory bus 14 has a defined path width of 104 bits for data and address that can be used in any way that is desired.

There is no preferred organization of the main memory 34 external to the main store controller. In the present embodiment, main memory 34 is built from 72 bit words, plus eight error correction code bits for each word. The control or function modules within portion 74 are specially designed to map the required memory format into the internal memory format. The main store controller 36 issues 27 bit wide addresses to the memory, providing a maximum physical limit of more than 1 billion bytes, i.e. 2.sup.27 words of 8 bytes each. The main store controller accepts logical addresses up to 104 bits wide from the main store bus 14, and the currently active control module provides interpretation and mapping into 27 bit physical word address.

The intelligent main store 12 also has associated therewith a control memory (not shown in FIGS. 1 and 2) which enhances the capability to implement the various memory structures in the main store controller 36. The control memory, which will be described in detail presently, contains data patterns and control information which may change from one target machine architecture to another. It consists of up to 256 words each 72 bits wide. The actual logical width and length of the data present in the control memory depends upon the design and current selection of the appropriate control modules. By way of example, in the implementation of an IBM 370 compatible machine, the control memory contains the control registers and the storage protection keys. The control memory also can store other pertinent information at the microprogrammer's choice. The sixteen general purpose registers and four floating point registers of the IBM 370 machine can also be stored in this control memory, although in the exemplary embodiment described herein they do not reside in the control memory.

FIG. 3 shows in further detail the structure of an execution processor 18. The structure shown in FIG. 3 is for the situation when the system of the present invention emulates an IBM 370 machine. The structure of other execution processors used in the system for emulating other machines may be different. The execution processor 18 illustrated in FIG. 3 includes a number of parallel units. There is a memory interface unit 80, also designated a paging and virtual storage management unit, which is connected to the path 40 leading to the main store bus 14. There is an instruction prefetch unit 82 connected by a path 83 to the memory interface 80. An instruction preprocessing unit 84 is connected by a path 85 to the instruction prefetch unit
82. The execution processor 18 of FIG. 3 also includes an instruction execution unit 86 which is connected through a bus interface (not shown) and through the path 42 to the communication bus 22. The execution unit 86 is connected through a path 87 to the instruction unit 84. The execution processor 18 also includes an operand fetch and store subsystem designated 88. Unit 88 is connected through a path 89 to the execution unit 86, through a path 90 to the instruction unit 84, and through a path 91
to the memory interface 80. There is provided a diagnostic bus interface 92 which is connected through path 44 to the diagnostic bus 24 and which, in turn, is connected through a path 93 to all functional portions or subsections of the execution processor 18. The path to unit 82 is via unit 84. Finally, the execution processor 18 includes interrupt logic designated 94 and which is connected through a path 95 to the instruction prefetch subsystem 82, through a path 96 to the instruction unit
84, through a path 97 to the execution unit 86, and through a path 98 to the operand fetch and store system 88.

The memory interface 80 serves as a means for reserving the memory bus 14 in transferring information to and from the main store. It can include virtual memory support and virtual memory translation options, which belong logically to the main store controller 36. The memory interface 80 implements dynamic address translation supplemented with an 8 or 16 entry contents addressable memory using a modified least recently used replacement algorithm, provides translation with no access for operand pretesting requirements, performs load real address translation, provides address traps on instruction fetch, operand fetch and result store and can retry memory accesses up to 15 times on main store bus 14 parity error. In the exemplary system for emulating an IBM 370 machine, because of the way the virtual memory operates on the IBM 370 machine, the hardware support for this option can be placed physically in the execution processor 18 although it logically belongs to main store controller
36. The memory interface 80 also feeds the instruction prefetch 82 through the path 83.

The instruction prefetch unit 82 consists of two eight byte buffers. As instructions are processed from one of the buffers, the prefetch unit is operating constantly to fill the other one. Therefore, at least eight bytes of instructions are always available to the instruction unit 84, while eight bytes are being fetched. The only exception occurs during interrupts and during some of the system branch conditions. Thus, the instruction prefetch subsystem 84 prefetches instruction sequences, loads the 16 byte buffer 8 bytes at a time, loads the instruction register of unit 84 from the buffer and automatically attempts to keep itself filled. The instruction sequence is changed by loading a new address from the instruction unit 84.

The instruction unit 84 decodes the instruction, computes operand addresses, pretests storage operands for page accessibility through the operand fetch unit 88, and issues requests to the operand fetch unit 88 for preloading of operands and prefetching of operands from storage through unit 88. It also serves to fill the two buffers of the instruction prefetch unit 82. The instruction unit 84 is designed to assure that operands which are necessary for effective address computation or the operands which are needed by the instruction currently in the instruction unit 84 are not being changed by a previous operation being executed by the execution unit 86. The instruction unit 84 also detects most non-data specification errors, detects instruction modification when a result is sent to main storage, and detects general register modification of base and index registers used in address precalculation. It also transfers pertinent execution information to the execution unit 86 and initiates interruption program status words swapping routines as a function of interrupt logic. The instruction unit 84 also provides instruction traps, parity protection on instruction unit 84 to execution unit 86 transfer paths and word parity on a control store included in the unit which contains resident diagnostic routines.

The execution unit 86 accepts addresses, fetches operands, executes the previously decoded instruction, sets condition codes and stores the result. It executes the instruction whose microcode pointer was already prepared by the instruction unit
84. The operands for the instruction, if possible, have already been prefetched by the operand prefetch unit. After execution is completed the result is sent to the operand post store unit 88 through path 89. The execution unit 86 also issues a communication request to an appropriate auxiliary processor 16 whenever input-output instructions are encountered. Selection of the auxiliary processor 16 is based on address information supplied by the instruction unit 84. This information is used to address a small memory in the execution unit 86, i.e. a channel mapping memory, the output of which is the number of the auxiliary processors 16 that is the target of the communication message. In order to allow error recovery, soft-fail features and reconfigurability, this channel mapping memory can be reloaded at any time by the supervisory processor 20.

The execution unit 86 provides instruction execution with optimization on the set of instructions found to be the most important and widely used. It contains general purpose registers, floating point registers and a working store, and it also contains arithmetic, logic and shift elements necessary for instruction execution. The execution unit 86 contains byte handling circuitry, and it handles byte orientation of operands, detects the remainder of non-data specification errors, and detects data specification errors. It passes input-output instructions to auxiliary processors 16 over communication bus 22 and accepts input-output interruption and status information from auxiliary processors 16 over communications bus 22. The execution unit
86 provides byte parity protection on all data paths and registers of the unit, includes a control store which contains resident diagnostic routines, and provides word parity protection on that control store.

The instruction unit 84 and the execution unit 86 work in parallel. At each point in time, a minimum of two and a maximum of eight instructions are in an overlapped state of prefetching, decoding or execution. The operand post store unit 88
receives and deposits results from the execution unit along path 89 and causes eventual storage of that result in the main memory. The unit 88 can initiate a pretest request, i.e. translate with no access, of an address supplied by the instruction unit
84. All storage requests and multiple word operands are pretested if they cross a page boundary. The unit 88 also can initiate a prefetch request of an operand from an address supplied by the instruction unit 84. In this connection, all single operands are prefetched. The operand fetch and store unit 88 initiates a fetch request of an operand from an address supplied by the execution unit 86, and it initiates a store request of a result from address and data supplied by the execution unit 86. Storage of results is deferred until after the prefetch of the next operand unless both refer to the same double word.

The interrupt logic 94 collects interrupt requests, performs masking, generates a microprogram trap address to an appropriate interrupt handling routine in the instruction unit 84, and initiates instruction retry on error detected in the instruction unit 84 or execution unit 86.

The diagnostic interface 92 provides an interface from the diagnostic bus 24 to the interrupt logic 94, the instruction unit 84, the instruction prefetch subsystem 82, paging and virtual storage management 80, operand fetch and store subsystem 88
and the execution unit 86 via path 93. The diagnostic interface 92 has access to the control stores of the instruction unit 84 and execution unit 86, has access to the control store sequences, and has access to the other functional units of the execution processor. It provides micro-control and macro-control of execution processor 18, initiates address and instruction traps, and has capability of interrupting the supervisory processor 20 on execution processor 18 status changes, error conditions and state conditions.

The preferred embodiment of the auxiliary processor 16, as previously described, is built from microprogrammable bit slices. The word size is variable and in the case of the illustrative system for emulating IBM 370 services the word size is 16
bits, but it can be extended as described. The auxiliary processor 16 has a speed independent design which enables it to fetch and execute instructions from a mixed speed control store. For example, one could envisage two components for the storage of the auxiliary processor 16 to consist of a very high speed memory, for example 75 nanoseconds, and a lower speed memory, for example 150 nanoseconds. The total memory of the current embodiment cannot exceed 120 kilobytes. The design thus facilitates the implementation of control programs in a way that has the effect of a cache without the need for complex and costly control. To this end one employs program measurement, memory allocation and locality of reference techniques. Optimization of this nature is possible as the number of programs to be executed in the auxiliary processor 16 is limited. An arbitrary number of registres is mapped on the high speed memory. The total number of registers that each task in the auxiliary processor 16 can use is limited to 256 but the total number of tasks is limited only by the memory capacity which is 120 kilobytes. The auxiliary processor 16 also has a 72 bit wide main store interface.

As previously described, the data processing system includes four principal buses. The main store bus 14 has been described in detail previously. The communication bus 22 has a data width of 16 bits and 18 control and status lines are provided in addition to the data lines. The diagnostic bus 24 has 8 bits of data, one parity bit and 9 control lines and each input-output within the input/output bus ensemble 28 has 9 data lines, one parity bit and 10 control lines.

The input-output system includes the auxiliary processor, input output bus ensemble, direct memory access controller, device controllers and associated devices. There are two basic modes of operation: byte mode which is either low speed or short high speed burst and high speed mode. In all modes, the control initiation and necessary intelligence is contained in the auxiliary processor 16. Actual data transfer is done by the auxiliary processor 16 in byte mode and by the direct memory access controller 30 in high speed mode. Each auxiliary processor can be connected, at any time, to two input-output buses. Each input-output bus can be connected to two different auxiliary processors. At each point in time there is only one live connection, i.e. at each point in time there is only one auxiliary processor 16 active for each input output bus. This means that a maximum of eight auxiliary processors 16 can be active, in parallel, at any given time in the system of the present invention. The auxiliary processor 16 recognizes only byte mode input-output. High speed mode input-output is handled by the direct memory access controllers 30, which, in turn, are loaded with control information by the auxiliary processor 16 operating in the byte burst mode. The input-output system provides unified input-output structure for all execution processors 18, allows execution processors 18 to share peripherals, has capability of sixteen 7 Mega bit/second data paths to main store 12, has capability of eight 300 kilobit/second data paths to auxiliary processors, and has provision for complete redundancy of processors, busses and controllers.

There can be provided up to sixteen direct memory access controllers 30 in a system. Each DMA controller 30 has its own internal buffer memory to smooth out main store 12 requests, arranged as a 64 to 512 byte long FIFO queue, and byte packing logic which will be described in detail presently. Each DMA controller is connected directly to the main store bus 14 with a 72 bit wide main store interface and to up to four input-output busses. At each point in time, only one of these connections can be active, with the maximum transfer rate being 7 million bytes per second. Each DMA controller 30 is supervised by an auxiliary processor 16, manages high speed data paths from input-output controllers to main store 12, and can connect to multiple data paths, but only one at a time.

FIG. 4 illustrates an example of input-output system connections using two auxiliary processors 16 and 16', two direct memory access controllers 30 and 30', two input-output busses 102 and 104 and three device controllers 106, 108 and 110. Two of the device controllers, in particular controllers 108 and 110, are connected to the direct memory access controllers 30. The device controller 106 is operatively associated with the unit record peripheral device 112, the device controller 108 is operatively associated with a disc type device 114, and the device controller 110 is operatively associated with a tape device 116. The connections of the auxiliary processors 16 and 16' to the main store bus 14, communication bus 22, and diagnostic bus
24 are identified with the same reference numerals of FIG. 1. For convenience in illustration, the connections between auxiliary processor 16 and the input-output busses 102 and 104, which comprise the input output bus ensemble, are identified 50a and
50b, respectively. Similarly, the connections of auxiliary processor 16' to the busses 102 and 104 are identified 50a' and 50b'. The direct memory access controllers 30 and 30' are connected by paths 120 and 122, respectively, to the main store bus 14. DMA controller 30 is connected by paths 124 and 126 to the input output busses 102 and 104 respectively. Similarly, DMA controller 30' is connected by paths 128 and 130 to the input output busses 102 and 104, respectively. DMA controller 30 is connected by paths 132 and 134 to the device controllers 108 and 110. DMA controller 30' is connected by the paths 136 and 138 to the device controllers 108 and 110.

The input-output system fulfills some desirable objectives such as relief or input-output computations and testing by the execution processors 18, use of simple and low cost device controllers, the special high speed burst capability and data path multiplexing for efficiency and hardware failure handling. The input-output system has a redundant parallel design in that a partial failure may be handled by the remaining components. As previously mentioned, the auxiliary processors 16 are programmed with nano-instructions to allow them to do the testing and execution of input-output transfer thus freeing the execution processor 18 or central processing unit from the steps of input-output communications. The auxiliary processors 16 are configured on multiple input-output busses, thus providing multiple data channels, and the particular channel is determined by the supervisory processor 20 which is the ultimate controller in the system. On the channel the data exchanges are controlled by the intelligence of the auxiliary processor 16. The peripheral device controllers are controlled by the micro-programs in an auxiliary processor 16.

An auxiliary processor 16 advantageously can initiate transfer of information through a direct memory access controller 30 while itself simultaneously participating in information transfer via the I/O busses and maintaining control over that direct memory access controller 30. Transfers of information between the auxiliary processor 16 and the main store 12, between the direct memory access controller 30 and the main store 12 between auxiliary processor 16 and a device controller, and between the direct memory access controller 30 and the device controller all occur in parallel.

Whenever an auxiliary processor 16 wishes to communicate with a peripheral device it first must connect with the associated device controller. This is relatively simple since the device controller interfaces to multiple input-output paths. The initial default path of these controllers is set in hardware and is known in the software of the supervisory processor 20. On system power up or system reset all the device controllers will be on their default channel. Their operational channel will be determined by the programming in the supervisory processor 20. When required by an execution unit 86 of an execution processor 18 the associated auxiliary processor 16 will go to the correct channel by looking in a table, filled by the supervisory processor 20, for the assigned channel. To make the connection, the auxiliary processor will output the identification of the particular device controller data lines. When the input-output control lines indicate there is a device controller identification by asserting the control signals ADDRESS and DATA strobed with DAV, the device controllers check for a match with their switch programmable identification. If a device controller finds an identification match it responds by asserting the control signal DACK, ending the sequence. All other device controllers whose identifications do not match are disconnected from the channel. A device controller, which is connected, recognizes all functions and data issued on the channel as intended for it until disconnected by an identification connection sequence which is not its match or by an interrupt acknowledge sequence.

When a device controller is connected it is told what to do by function codes sent from the auxiliary processor 16. To send a function code the auxiliary processor 16 puts the appropriate code for the process on the data line and flags the function by asserting a control signal CONTROL strobed with the signal DAV. When the device receives the function, it responds with the signal DACK, ending the transfer. Functions sent by the auxiliary processor 16 can be immediate orders which cause a responsive without further need of transfer. An example would be the sending of reset function. There are input-output functions which require data to execute, like the filling of a status interrupts enable register of the function to fill a printer's line buffer.

The foregoing communications must all be in a direction from the auxiliary processor 16 to the device controllers. The transfer of data can go in either direction. In particular, if an auxiliary processor 16 wants to output data it first transfers a function as previously explained telling the device controllers what to do with the data which will be sent. An example would be to fill a status interrupt enable register. Data is sent by putting the word on the data lines and asserting the control signal DATA to indicate it is a data word, and strobing the information with the control signal DAV. When this occurs the device controller will take the data and respond with the signal DACK then use the data as indicated by the last function sent by the auxiliary processor 16. When the auxiliary processor 16 senses the signal DACK, it knows the device controller received the data so it releases the data lines and drops the signal DAV.

Data can be input from a device controller in a similar manner. The auxiliary processor 16 would transfer a function telling the device controller to send it some particular data. Then, when the device controller sees there is a data transfer indicated by the signals DATA and DAV, it puts its data out and flags it with the signal DACK. When the auxiliary processor 16 senses the signal DACK it knows the data word is on the data lines and receivers. When the auxiliary processor 16 accepts the data word it drops the signal DAV informing the device controller which then releases the data lines and drops the signal DACK ending the transfer.

An example of the way an auxiliary processor 16 would output a message is the printing of a line by a line printer. First the auxiliary processor 16 connects to the device controller of the line printer by using the connection sequence explained hereinabove. To monitor the status of the device controller the auxiliary processor 16 could send a function to fill a status interrupt enable register, and then send an interrupt mask, if it was desired to handle status in an interrupt mode. Alternately, the auxiliary processor 16 could send a function to have the status register sent as a data transfer and poll it. The auxiliary processor 16 would then send a function which would tell the device controller to fill its line buffer with the following stream of data. Each character would be sent as a data transfer. Once the auxiliary processor 16 had sent out the characters to be printed it would send a command telling the device controller to have the line printed.

The foregoing procedure does not have to be continuous. The auxiliary processor 16 could, anywhere in the sequence, connect to a different device controller and disconnect from the former device controller to make a different transfer and thereafter reconnect to the former device controller and finish the sequence where it left off.

There is another way an auxiliary processor 16 can exchange information, which is by using the direct memory access controller 30. Basically, each DMA controller 30 is an interface between the memory bus 14 and the high speed input-output devices. The auxiliary processor 16 sets up the DMA controller 30 over the bus 102 to do a transfer between the device and memory. Briefly, the auxiliary processor 16 connects to DMA controller 30 over the input-output bus and sends a command to operate on a free DMA channel. Then a command which sets the parameters of the DMA controller 30 is sent. After the controller 30 is set up, the auxiliary processor 16 connects to the device and commands it to operate on the DMA channel. Enabling data interrupts will start the transfer. The auxiliary processor 16 then enables the appropriate status interrupts to indicate when the transfer terminates.

Data can also be transferred within an interrupt structure. Two sets of REQ, PREACK, and RACK control signal lines, one for data transfers and one for status interrupts, are used. The interrupt sequence would proceed as follows. A device needing service will assert the REQ line which is common to all devices. The auxiliary processor 16 senses the REQ signal and responds with the PREACK signal to be followed by RACK. When PREACK is asserted all devices are forced to disconnect from the channel for the duration of the PREACK signal. When RACK occurs the highest priority interrupting device connects to the bus. Transfers can take place as if the device was connected by having its identification output.

The auxiliary processor 16 will not know which device is interrupting, so in order to get the device identification the auxiliary processor 16 asserts ADDRESS and CONTROL signals simultaneously. When the control signal DAV is sent, the interrupting device will put its identification on the data lines and return the signal DACK. When the auxiliary processor 16 senses DACK, it reads the device identification from the data lines and drops the signal DAV which causes the device to release the data line and drop the signal DACK. The state of the ninth bit, the most significant bit, will tell the auxiliary processor 16 if the interrupting device needs input or output service.

The auxiliary processor 16 can initiate any type of transfer during an interrupt acknowledge sequence in the normal way, but because data transfer should be done as fast as possible there is provided a single step data transfer method. During an interrupt acknowledge sequence, a device will respond to the signal combination of ADDRESS-CONTROL and DAV by putting its identification and the signal DACK on the bus. If the device detects a second occurrence of the above condition, it is designed to initiate a data transfer. If the transfer is an input transfer, the auxiliary processor 16 sends DAV to signal that it is ready for the data. The device responds with the data and the signal DACK. If the transfer is an output transfer the auxiliary processor 16 places the data on the data line and asserts the signal DAV. The signal DACK from the device means that the data has been received. To end the sequence, the auxiliary processor 16 simply drops the RACK and PREACK signal lines. The interrupting device disconnects and the last device which was connected by a connection sequence is back on. With the foregoing procedure, the auxiliary processor 16 is able to handle an interrupt about every 3 microseconds.

Thus, the input-output system may be viewed as comprising three groups: the auxiliary processor 16, the busses, and the various controllers wherein a bus is the interconnection path between the device controllers and the auxiliary processor 16. The device controllers for most slow speed devices such as card readers and line printers can comprise cable drivers, a buffer register, and a few control flip-flops with the auxiliary processor 16 handling such functions as control and status decisions, translation and packing. The bus can comprise a number of tristate or open collector lines which will provide a path for all data, command and control lines. If the auxiliary processor 16 and device controllers all reside physically on the same backplane, the bus can consist of a set of backplane connections.

The following signal lines make up the input-output bus. Nine data lines are used to pass data, command, and device identification information. One DAV signal line and one DACK signal line provide a send/acknowledge control line pair that indicates when a transmitting device is sending data and when a receiving device has accepted data. Two REQ and two REQACK signal lines provide two request/acknowledge pairs, one pair for data interrupts and one for status interrupts. Two sets are provided for the reason that the auxiliary processor 16 may distinguish between the two groups of interrupts. One ADDR Out line tells the devices that the information on the data lines is a device identification when the DAV signal is true and the Control/Data line specifies data. The Control/Data line tells the devices that the information on the data lines is either a function or data when the ADDR Out line is low. When Control and ADDR Out are asserted, the channel is in an interrupt sequence and all signals on the channel are ignored unless the device is selected for interrupt mode. Finally, one IORESET line initializes the devices on the channel.

Since there will be several devices connected to the bus, there is a bus protocol for communicating between the devices and the auxiliary processor 16. Except for the interrupt sequences, the auxiliary processor 16 is responsible for initiating all bus transfers. Multiple auxiliary processors 16 may share the same bus. Attempts by more than one auxiliary processor 16 to use the same bus are resolved over a separate communication path. Except for interrupt sequences, a device must be logically connected to the auxiliary processor 16 before communication sequences may take place. The connection is accomplished as follows:

(1) The auxiliary processor 16 loads a register going to the bus with a device identification code, then asserts DAV, ADDR Out, and DATA.

(2) The auxiliary processor clock stops until the DACK signal appears or a timeout condition occurs.

(3) Each device senses the DAV and ADDR Out signals and compares the value on the data lines with identification of that device. If the data and identification correspond the device connects to the channel, sends the DACK signal and remains connected until another connection sequence occurs. The device temporarily disconnects from the bus during interrupt sequences when the ADDR Out and control lines are both asserted. When the device connects to the channel, it responds to the DAV signal with a DACK signal to indicate that it has received the command.

Once a device has been connected to the bus, the auxiliary processor 16 may do such things as load device registers, read device registers, send special functions, and place the device in burst transfer mode. The auxiliary processor 16 does not send device identification for each data transfer if the processor is communicating with only one device.

The following examples illustrate in further detail the reading and writing of device registers and show the role that function commands play in channel communication. The procedure for loading a device register is as follows:

(1) The auxiliary processor 16 connects to the device as previously described.

(2) The auxiliary processor 16 loads the bus register with the function code to be sent and asserts DAV and CONTROL signal lines.

(3) The device uses the DAV signal to load the function on the data lines into a function code register in the device and responds to the auxiliary processor 16 with the DACK signal.

(4) The auxiliary processor 16 senses DACK, drops DAV, loads the bus register with the data that will be loaded into the device register and asserts DAV and DATA.

(5) The device uses the DAV and DATA signal, along with decode logic in the device to generate a load register pulse and strobes the data lines into the register to be loaded. The device also responds to the DAV signal with DACK. The auxiliary processor 16 may keep loading the register without sending another function code since the function register will stay loaded with the function until it is reloaded, which is useful when doing such things as data transfers.

The procedure for reading device registers is very similar to the procedure for loading them. Steps 1 through 3 are the same whether loading or reading registers except for the function code. After loading the function register of a device the auxiliary processor asserts DAV and DATA to signal the device that it is ready to accept data and to generate a function pulse. The device puts the data on the data lines and sends DACK to indicate that the data is available. The device holds the data until the auxiliary processor drops DAV. When the auxiliary processor senses DACK it takes the data and drops DAV. Again, the auxiliary processor may keep reading the register without having to send a function code each time if it has not disturbed the function register.

The above procedure is sufficient to explain the operation of the channel. Once a connection between an the Auxiliary Processor 16 and a device controller is established, the transfer of data may proceed in two different ways. If the device was not put in burst mode, the transfer will be made at the request of the auxiliary Processor 16, enabling the latter to process the data on the run according to preset requirements. This will typically enable data rates up to 300K bytes/second. If the device was put in burst mode, then the data is transferred at the highest speed that the device can support. The auxiliary processor 16 will do no processing on the data--it will only store the data in its memory. Typically, the data rates that can be supported will be up to 2M bytes/seconds.

While the above described procedure is the preferred way of handling data flowing in relatively low speed, it is in the nature of this invention to support very high speed data rates without the need to tie up an auxiliary processor 16. This is accomplished by using the DMA (Direct Memory Access) controllers 30. The auxiliary processor 16 is used to establish logical connections between a high speed device controller, say 108, and a DMA controller, say 30. Also, the auxiliary processor 16 is used to set up all control information for the transfer, as will be described, and to monitor end of transfer conditions. While the actual transfer is performed, the auxiliary processor is free to communicate with other devices.

The actual DMA procedure is as follows. The DMA controller 30 and the device controller have a dedicated connection 132, which is referred to as the DMA channel. As necessary, and where it will not cause confusion, path 120 will be referred to as part of the DMA channel. In addition to its data lines, the DMA channel has two control lines BREQ and BREQACK. DMA channel operation proceeds as follows:

(1) The auxiliary processor 16 connects the device to the I/O bus as described earlier and sends a command to connect the device to the DMA channel. The auxiliary processor 16 is responsible for disconnecting other devices from the channel.

(2) The auxiliary processor 16 sets up Buffer Address Register (BAR), Word Count Register (WC), and packing sequence functions. The auxiliary processor must allow status interrupts from the device so that it knows if the transfer is terminated before the word count reaches zero.

(3) The auxiliary processor 16 starts the input-output transfer. At this point, the auxiliary processor only monitors the transfer while hardware takes care of the actual routing of data and channel protocol.

(4) The data transfer is performed using the data BREQ and BREQACK lines. When the device needs data or has data to input, it asserts the BREQ line. If the transfer is input, the data must be on the data lines when the BREQ is asserted. The DMA channel controller 30 senses the BREQ and either takes the data from the data lines or puts data on the data lines, depending on whether the transfer is input or output. It then sends BREQACK to signal receipt or availability of data and end the byte transfer.

The foregoing is illustrated in further detail in connection with FIG. 4. Whenever a request is made to auxiliary processor 16 for a high speed transfer, for example from the disc 114 associated with controller 108, the auxiliary processor 16
will load the memory address and byte count information into direct memory access controller 30, the control information into the device controller 108 establishing connection to direct memory access controller 30, if such connection has not already been made, and then initiate operation of the direct memory access controller 30. All this communicating is done via one of the input-output busses 102 or 104. At the same time, the other auxiliary processor 16' can use the other input-output bus for whatever task it is doing.

Once the direct memory access transfer is initiated, both the input and output bus and the auxiliary processor 16 are free. The DMA controller 30 will feed the device 108 continuously, will buffer the data in its own memory, and will request the memory bus 14 each time a physical word, 64 or 72 bits, is available until the byte count is reduced to zero. At that point in time, the bytes which do not constitute a full word are transferred to the main memory. The data flow from the device 114
will not be interrupted but continues and is buffered in the memory of the direct memory access controller 30. If there is an interrupt, the auxiliary processor for that controller, in particular auxiliary processor 16, is interrupted indicating a status change in the DMA controller 30. At that time, the auxiliary processor 16 may stop the flow of data into the DMA controller 30 and void the first-in first-out mode of operation or it may reload the address and count registers of the DMA controller 30 with new values and direct it to transfer the data buffered in it to the next location therein or it may reload the controller with new commands and initiates a new input-output sequence.

Such operation of DMA controller 30 enables easy data and command chaining, prevents repetitive initiation of devices, and distributes the control function between the sophisticated auxiliary processors and the relatively simple DMA controllers. In byte mode, the input-output is done directly under control of the auxiliary processor 16. The architecture of the auxiliary processor is geared to the controller functions it has to perform. As previously explained, the auxiliary processor 16 has the capability to field different kinds of interrupts. Data interrupts are handled without actual interruption of the running task. Status interrupts cause rescheduling and selection of a new task.

FIG. 5 illustrates in further detail the supervisory processor 20 of the system. For convenience in illustration the input-output bus ensemble 28 is shown comprising the two input-output busses 102 and 104 of FIG. 4 which are connected by paths designated 64a and 64b, respectively, to the supervisory processor. The same reference numerals as in FIG. 1 are used to identify the connections of the supervisory processor 20 to the main store bus 14, communication bus 22 and diagnostic bus 24. The supervisory processor 20 comprises a supervisory store 154 which contains the commands utilized in initializing the system, and a supervisory and diagnostic processing unit 156 for carrying out the commands in store 154 as well as performing the various monitoring procedures. The supervisory processor also includes a remote diagnostic interface 158 for diagnosis and updating of the system microcode. The supervisory processor 20 is operatively connected to the system console which in the illustration of FIG. 5 includes a c.r.t. keyboard and diskette 162.

The system of the present invention thus is a multiprocessor arrangement where some or all of the auxiliary processors 16 and some or all of the execution processors 18 may be different not only in design by also in the user instructions which the processors support. The system has the capability to accommodate additional processors with diverse instruction sets which were not necessarily known at the time the system was manufactured. The communications bus 22, diagnostic bus 24 and supervisory processor 20 support, simultaneously, such diverse processors.

The active, intelligent memory system of the present invention supports diverse memory structures which may be required by the heterogeneous nature of the system. Functions which heretofore were done by the processor or processors, will be subsumed in the memory system of the present invention, thus providing essentially the capability of an active and intelligent memory system which provides parallel, diverse memory management functions independently of the operation of the processors. The auxiliary processor 16 and execution processors 18 are able to share the memory in overlapped, shared or exclusive fashion, enabling each of the new processors to access the same information in potentially diverse form. Also, the memory system is designed and constructed in such manner that allows addition of memory structures after the whole computer system is manufactured and installed.

The data processing system of the present invention enables pooling of processor groups in the manner previously described and provides all connection, data access, control, monitoring and diagnostic capabilities to support such pooling. The system is a heterogeneous, modular expandable system in which expansion is done by properly added hardware modules, and where the total operation is under the supervision of a special diagnostic processor in the form of supervisory processor 20 which has its own dedicated diagnostic bus 24.

The system of the present invention provides input-output facilities and controls which enhance the degree of parallelism between data transfers while allowing well defined but potentially diverse loci of control in the form of the auxiliary processors 16. The input-output facilities allow both shared and exclusive access to peripheral devices by diverse input-output protocols and data structures. If the peripheral devices are exclusively assigned to any input-output procedures, then these potentially diverse procedures can proceed in parallel even if they are controlled by a single locus of control. The data processing system of the present invention has diverse parallel processing capabilities which can perform diverse processing of input-output structures independently and parallel to the processing of the potentially diverse user instruction sets. Such data processing capability may be included in the original system or added as an afterthought, completely isolating the nature of the peripheral devices from the user program. This capability, if present at all in prior art systems, was part of the instruction processor, either as separate instructions or as program sequences.

As a result of the bus connections to the processors, particularly those of the communications bus 22 and the input-output bus ensemble 28, the supervisory processor 20 is part of the group containing the auxiliary processors 16 as viewed by the execution processors 18. As a result, a request sent by the execution processors 18 to the auxiliary processors 16 may be honored by the supervisory processor 20 instead of by the auxiliary processors 16. Likewise, a request sent by the auxiliary processors 16 to the execution processors 18 may instead be honored by the supervisory processor 20.

FIG. 6 illustrates in further detail the intelligent main store according to the present invention. A plurality of main store function modules 170,170' are connected to the main store bus 14. While for convenience only two such modules are illustrated in FIG. 6, additional ones can of course be included. Each main store function module 170, 170' is logically part of the main store controller, to be described, and each function module provides each special execution processor, i.e. central processor, related functions that are physically located within the intelligent main store. These include, for example, access protection, address indexing and control registers, and virtual memory control including address translation and content addressable memory. Thus, there is a multiplicity of function modules, each of which is a logical unit designed to serve a specific user, such user being any other device or component in the system which has access to main store bus 14 and can assert control over it. The intelligent main store further comprises a main store controller module 172 which is operatively connected to each of the main store function modules 170, 170'. The main store controller provides all timing and control needed for accessing all portions of the intelligent main store as well as providing single bit error correction-double bit error detection circuitry and diagnostic support circuitry. The intelligent main store, finally, includes a plurality of main memory data modules 174 and 174'. Only two are shown in FIG. 6 for convenience in illustration although typically a large number are provided. Each data module contains a large number of bytes of storage organized in terms of byte words plus error correction.

In the intelligent main store of the present invention, the addresses given to the memory are logical rather than physical. As a result, the memory will accept as valid, addresses for non-existent storage and will act on them in accordance with the function modules included. In the intelligent main store of the present invention certain operations, resolution of differences, etc. conventionally performed at the processor level in a system are performed in the main store. For example, page faults instead of being signalled back to the user are handled internally in the main store by a function module designed specially to do that.

In the system of the present invention the various ports, i.e. the execution processors 18, auxiliary processors 16 DMA controllers and supervisory processor 20, request access to the intelligent main store and are granted access on a fixed priority basis. In the general case, a processor designated 176 in FIG. 6 is operatively connected to the main store bus 14 and has the capability of accessing the main store. In addition to representing one or more of the processors of the system of the present invention, this processor 176 could be a machine similar to that shown in U.S. Pat. No. 3,766,532 issued Oct. 16, 1973 and assigned to the assignee of the present invention. The disclosure of that patent is hereby incorporated by reference. The MIX and MOD connections to the local store as shown in FIG. 1 of that patent would be replaced by connection to the main store bus 14. The control fields T3,T7 and T37 also are operatively connected to control lines of the main store bus lines 14. These controls are interperted by a function module in the intelligent main store to serve as a memory for the system shown in that patent. Also, in col. 33 of that patent, other appropriate connections are identified. By way of further example, a function module so designed could interface a peripheral memory to the system main memory which function module will cause virtual memory management independent and parallel to any user.

In the exemplary embodiment of the present invention, the multiple main store function modules 170,170' are employed to enable up to four different processor types to access the main store, each processor using different protection mechanisms and related functions. The single main store controller module 172 handles all storage control and timing logic as well as error detection and correction circuits. Many main memory data modules 174,174' may be used with logical address space being 32 bits wide and physical address space being 25 bits wide as determined by the main store controller 172. In addition, diagnostic paths are provided in all the sections of the main intelligent main store. Such paths are not described herein and are not necessary for operation of the intelligent main store.

The 104 address/data lines and the 41 control lines of main store bus 14 can be used depending on the function module selected. As an example of a particular possible usage of these lines, the main store bus 14 includes 72 data bits arranged in eight bytes of data, nine bytes each. There are 32 address bits which identify logical or real addresses. There are eight byte control bits whereby each bit determines whether that particular data byte is written into memory on a write cycle. There are six identification bits, four of which specify which port is accessing the main store and two of which indicate which main store function module path is to be used. There are four key bits and an enable bit which specify the particular code for main store protection within the main store function module and whether or not it should be activated. Each module contains a different protection mechanism determined by its respective processor in the system and these bits specify that mechanism. Two exception bits relate to functions known as address out of range and protection exception. There is a read/write bit which specifies a read or write operation. There are six arbitration bits which serve as a priority arbitrator, and there are six function bits which define the main store operation. Finally, there are fourteen parity bits to determine bus failures.

The main store bus 14 is a time division multiplexed bus with each prot, i.e. processor, gaining access to the bus through an asynchronous arbitrator. Once one port is in control of the bus, the 32 address bits, eight byte control bits, four key bits, six identification bits, six function bits, read-write bit, and data bits and parity bits if a write mode is occuring, are enabled onto the bus. The six function lines define the type of access to the main store system. The supervisory processor
20 uses some of these function codes to excerise the main store in a diagnostic mode. The main store bus 14 completes its cycle by returning data during a read operation and issuing a "data available" signal in either the read or write mode which releases the arbitration circuit for the next cycle.

FIG. 7 illustrates in further detail one of the main store function modules, for example module 170. By way of example, the main store function module described herein is for use in connection with emulating an IBM 370 machine, and the module illustrated in FIG. 7 implements virtual memory control including address translation and content addressable memory in a manner which will be described in detail presently.

Only five functions explicitly access the main store function module 170, and any other main store accesses are transmitted through to the main store controller module 172. In this connection, there is a bidirectional data path 182 leading from the main store bus 14 to a buffer 184, an internal data path 186 connected between buffer 184 and another buffer 188 which, in turn, is connected to a bidirectional data path 190 leading to the main store controller module 172. The five functions which explicitiy access the main store function module 170 are known as the storage key, control register, reset reference bit, base register and field length register functions.

An arrangement of a plurality of control registers 192 is connected to the path 186 for receiving data therefrom. This is an 8K bit control register organized as 256 words each 32 bits wide and is subdivided into four 64 word sections. The control register 192, which may be viewed as a high speed control memory, is accessed by issuing a read-write cycle to the main store with a function of one. In the illustrative system, data is placed on the main store bus data bits numbered 32-63. Each of the four 64 word sections is addressed by using the main store bus identification bits numbered 2 and 3 as the two most significant address bits and by using the six lower order or least significant bits of the main store bus address for specifying the remaining address bits. The size of the control register arrangement 192 can depend upon the specific main store function module which is referenced. The control register arrangement 192 is used for multiprogramming purposes or other programming purposes determined by the specific processor involved.

The main store function module 170 illustrated in FIG. 7 provides protection against improper main store access. To this end, a memory designated 194 is connected to the path 186 for receiving data therefrom and contains the main store protection information. Information concerning the particular access requested is present on line 196 from the main store bus 14 which line 196 is connected to one input of a protection mechanism or comparison mechanism designated 198. The output of memory 194 is connected by line 200 to another input of the mechanism 198. If the access is improper, a violation is signalled on a line 200 which transmits a command signal to the main store controller module 172 to prevent the access. In particular, this means that on fetching, the information is not available to the processor and on storing the contents of the storage location are not changed. An error indication also is returned to the processor.

For use in emulating an IBM 370 machine, memory 194 is a 56K bit memory provided for "key in storage" to implement page replacement algorithms and storage protection. The memory space is organized as 8K by 7 bits. The 7 bits appear as the main store bus data bits numbered 56-62 in the illustrative system when reading or writing the storage key memories. Reference, either explicit or implicit, is made using the main store bus address bits number 8-20. This provides protection for a total of
16 Megabytes of memory in 2K byte blocks. The field contains four access control bits, a fetch protection bit, a reference bit and a change bit.

Thus, when an access is requested, the protection key associated with request for storage access is transmitted on line 196 to the comparison mechanism 198. The four access control bits of the key in storage are matched against the four bit protection key to determine whether or not access is permitted. As to the remaining bits of the storage key field, the fetch protection bit applies to fetch-type references, and a zero in this bit position indicates that only store type references are monitored and that fetching with any protection key is permitted. A one in this bit position indicates that protection applies to both fetching and storing. Both the references bit and the change bit are associated with dynamic address translation. The reference bit normally is set to one each time there is reference to a location in the corresponding storage block either for storing or fetching information, and the change bit is set to one each time information is stored into the corresponding storage block. The reset reference bit instruction clears the reference bit in the key in storage memory as well as reading back the entire 7 bit field.

The address bits from the main store bus 14 are transmitted through a first path 204, a buffer 206, an internal path 208, another buffer 210 and an external path 212 to the main store controller module 172.

The main store function module 170 further includes means for obtaining a physical main store address in the form of a base register 214 having a path 216 for receiving data connected to the path 186. A base register command (not shown) loads and reads the base register 214 in the appropriate mode, the command being sent over the main store bus 14. The base register bits are the sixteen bits numbered 48 through 63 of the main store bus data. These are sent to the main store controller 172
over path 218 and there they are added to the bits 0-31 of the main store address to obtain the physical main store address. In the main store controller 172 the base register is added to the two most significant bytes of the address. Thus, when access to a normal main store location is executed, the base register 214 in the main store function module 170 is added to the most significant address bits and any overflow is ignored, this being done in the main store controller module 172. The result is the physical main store address.

The main store function module 170 further comprises a field length register 220 having a path 222 for receiving data connected to the path 186. The main store bus address, i.e. bits 0-31, also is compared against the field length register 220. If the address is greater in width than the word stored in the field length register 220, the address is said to be out of its physical memory space and is intruding on another user's space. An address exception signal is returned with no data having been read and no memory modifications having been performed. The address exception signal is a non-programmable error bit. In particular, the main store bus address on path 208 is connected by a path 224 to one input of a field length detector or comparator 226. A path 228 transfers the contents of field length register 220 to another input of the comparator 226. If the address on path 228 is greater than the address on path 224, the address exception signal appears on line 230.

The main store function module 170 further comprises an identification code comparison means 232 which receives a two bit identification code on path 233 from the main store bus 14. If the code on path 233 matches the code for this particular module stored in the comparator 232, an enabling signal for the module appears on line 234 which, in turn, is connected to the active components of the module 170, i.e. control registers 192, protection memory 194, protection mechanism 198, base register
214, field length register 220 and field length detector 226. The main store bus 14 also will send an operation code known as clear main store function module at appropriate times.

The main store function module 170 further comprises a virtual memory controller 236 which provides translation of address from logical to real for the execution processor in a manner which will be described. Controller 236 is connected by path
237 to the data path 186 of module 170 and it is connected by path 238 to address path 208. The enabling signal line 234 from component 232 also is connected to controller 236.

The main store function module 170 also can include a special interface 240 to a peripheral device which interface 240 is connected by a path 242 to the data path 186 and is connected by a path 244 to the address path 208 as shown in FIG. 7. As a result, main store function module 170 can be directly connected to a peripheral storage device through interface 240 so as to provide autonomous virtual memory management without processor or operating system intervention. In addition, the foregoing can be provided for any number of the main store function modules.

Diagnostic control and paths generally designated 246 in FIG. 7 are provided for the main store function module 170, and connections to appropriate components of the module are collectively designated 248. The control and paths 246 also are connected to the diagnostic bus 24 as shown in FIG. 7.

Thus, the main store function module 170 may be viewed as function means for providing internal to the main storage means the capacity of virtual to physical address translation, base register addressing, memory protection and data remaping. Furthermore, there can be a multiplicity of function means like module 170, each capable of implementing diverse virtual to physical address translation methods, memory protection methods or data remapping methods.

FIG. 8 shows in further detail the virtual memory controller 236 of the main store function module 170 of FIG. 7. The virtual memory controller 236 receives logical addresses from a port in the system in particular from an execution processor
18, along a path 250 connected to main store bus 14. These logical addresses are transmitted to an associative array designated 252 which includes the combination of a CAM (content addressable memory) and a RAM (random access memory). The CAM is a sixteen entry type wherein each entry includes 13 logical address bits, one reference bit, and one valid bit. The RAM is also a sixteen entry type wherein each entry includes 13 real address bits. The CAM has 2K and 4K page sizes. Associated with the associative array 252 is appropriate functional logic 270 providing entry replacement, hit detection and insertion control. Suitable control logic is connected in controlling relation to the array and to the functional logic, the control logic operating in response to a START CAM signal on a control line 254. A real address output provided by associative array 252 is present on an output path 258 which is connected by one branch path 260 to one input of a multiplexer 264, the outlet of which goes to the main store controller. This path supplies the address to memory when the address was contained in the array 252. When an entry is not in the array, the address translator 276 performs its translation function and inserts the result along paths 280
and 282 under control of the control logic 270. The associative array control logic 270 also synchronizes operation of the associative array 252 with other components of the virtual memory controller 236 and provides other appropriate control for the operations specified. The control 270 is connected to the array 252 by a path 272.

The virtual memory controller 236 further comprises an address translator designated 276. Data bits read from the main store data modules 174 are received in a data register 275 from which they are transmitted along a path 278 to the input of translator 276. The translation process requires multiple accesses to main store. For background information on such translation process, reference may be made to Operating Systems: A Systematic View by William S. Davis, Addison-Wesley 1977, the disclosure of which is hereby incorporated by reference, and in particular to Chapter 15, beginning on page 271. The address in each case is sent along path 294. The translation result provided by the address translator is sent along a path 280 to another input of the multiplexer 264. The translation result also is sent along one branch path 282 to an input of the associative array 252, for insertion for future associations to the array, and also along branch path 284 to another input of multiplexer 268. This is for results of special instructions. In this case the resultant address is to be returned. The output of multiplexer 268, which is a real address, is applied through the path 250. The other input of multiplexer 268 is connected by a branch path 288 to the data path 294. This path is for returning an error address, during special instructions.

An intermediate address output provided by the translator 276 is transmitted by the path 294 to a third input of the multiplexer 264. A fourth input to multiplexer 264 is connected by a branch path 296 to the logical address path 250. This serves as a