WO1981001066A1 - Systeme de traitement de donnees - Google Patents
Systeme de traitement de donnees Download PDFInfo
- Publication number
- WO1981001066A1 WO1981001066A1 PCT/US1980/001314 US8001314W WO8101066A1 WO 1981001066 A1 WO1981001066 A1 WO 1981001066A1 US 8001314 W US8001314 W US 8001314W WO 8101066 A1 WO8101066 A1 WO 8101066A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- bus
- processor
- main store
- processors
- data
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8007—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/26—Functional testing
- G06F11/273—Tester hardware, i.e. output processing circuits
- G06F11/2736—Tester hardware, i.e. output processing circuits using a dedicated service processor for test
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/18—Handling requests for interconnection or transfer for access to memory bus based on priority control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/161—Computing infrastructure, e.g. computer clusters, blade chassis or hardware partitioning
Definitions
- This invention relates to digital data processing systems, and more particularly to a new and improved multiprocessor arrangement.
- 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 membry means fbr accessing the main memory means in a manner allowing different address and data structures, and main store 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.
- 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;
- Fig.15 is a schematic block diagram of the main store bus interface of the supervisory processor shown in Fig. 14. Best Mode for Carrying Out the Invention
- 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 of 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.
- two of the categories each includes a plurality of processors.
- one of the categories of the processors are identified as auxiliary processors designated 16 and 16'.
- execution processors designated 18 and 18' 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.
- the communication bus 22 connects the processors in a manner such that the processors of the two categories are capable of being different.
- auxiliary processors 16 and 16' are capable of being different from one another
- 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 comproses 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.
- 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.
- 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, hardwired 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 referesh, 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.
- 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.
- 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 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.
- 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 busses 22 and 34, respectively.
- 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.
- processor 18' is connected through path 40' to main store bus 14 and through paths 42' and 44' to the buses 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 peeres in the system.
- the auxiliary prbcessor 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.
- nanocode for the bit slices which construct the machine.
- 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 emultation involves for example processing of input-output instruction, fetching and decoding channel commandwords, 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 psuedo memory locations for resources simplify and considerably speed up the input-output driving provided by the auxiliary processor.
- 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 flexibiliaty, 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.
- the auxiliary processor When the auxiliary processor serves as a channel emulator it is connected to the input-output busses.
- 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.
- 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 are 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.
- 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.
- Mulitple 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.
- 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.
- management functions include handling input- cutput bus status and data interrupts, transferring commands and data over the input-output bus, setting up proper parameters in the direct memory access controllers, co-ordination interaction between device controller and direct memory access controller, and participating in low level device control where necessary.
- 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 themain store bus 14, to the communication and diagnostic bussess 22 and 24, respectively, and to the input-output ensemble 28.
- 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.
- 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 30 has access to all regular system components for overall control of the system.
- 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 processor 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.
- supervisory processor 20 interfaces to the communications bus 22, the main store bus 14, and the input-output bus ensemble 28 to stimulate the operation of the other system-processors,
- 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.
- 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.
- the supervisory processor serves as both a local and 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.
- the supervisory processor provides operator interface and 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.
- the supervisory processor 20 can serve in a dual role. It can appear as an input-output device for the auxiliary 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 extermely 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.
- the 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 communicaticn 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 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.
- 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.
- 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.
- 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.
- 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.
- 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 request 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.
- 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. Ther 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 configuration 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 destinaticn 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.
- 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.
- 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 operating 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 advantageously 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 permitting an auxiliary or execution processor to be serviced while others are running.
- each of the two categories of processors i.e. auxiliary processors 16 and execution processors 18, is capable of using the other of the two categories as a pool.
- an execution processor 18 while requesting an auxiliary processor service 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.
- 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.
- one processor of a group or category can utilize the others of that same category as a pool.
- the communication bus 22 message contains, amont others 4 source identification bits and 4 destination identification bits.
- Each processor can be set up to recognize one or more of these destination identification, one of these being that processor's own identification bit and the other bits being a pool identification.
- 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.
- the main memory 34 receives 27 bit wide addresses along path 70 from the main store controller 36. Data travels along path
- 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 number 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.
- 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 protion 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.
- the desired control module is selected by bits on the main store bus 14.
- 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.
- 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.
- 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 wya that is desired.
- main memory 34 there is no preferred organization of the main memory 34 external to the main store controller.
- the 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 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 targetmachine 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.
- 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 storedin 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.
- An instruction preprocessing unit 84 is connected by a path 85 to the instruction prefetch unit 82.
- the 3 also includes an instruction execution unit 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 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 function portions or subsections of the execution processor 18.
- the path to unit 82 is via unit 84.
- 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.
- 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 fili 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 mainstorage, 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 prefeteched 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 instructicn 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 prefeteched.
- 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 microporgram 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 subsystems 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 previsously described, is built from micro programmable 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 facilitate the implementation of control programs in a way that has the effect of a cache without the need for comples and costly control.
- the auxiliary processor 16 also has a 72 bit wide main store inteface.
- the data processing system includes four principal busses.
- 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 asssociated 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 busses. Each input-output bus can be connected to two different auxiliary processors.
- auxiliary processor 16 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.
- Each DMA controller 30 has its own internal buffer memory to smooth out main store 12 requests, arranged as a 64 to 513 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.
- 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
- 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.
- auxiliary processor 16 connections between auxiliary processor 16 and the input-output busses 102 and 104, which comprises the input output bus ensemble, are identified 50a and 50b, respectively.
- 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.
- 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 thepaths 136 and 138 to the device controllers 108 and 110.
- the input-output system fulfills some desirable objectives such as relief of 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.
- the auxiliary processors 16 are programmed with nanoinstructions 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.
- auxiliary processor 16 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 processcr 20. On system power 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.
- the device controllers 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.
- auxiliary processor 16 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 thedata 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 response 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.
- 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 receives. 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.
- 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.
- 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 a 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.
- PREACK When PREACK is asserted all devices are forced to disconnect from the channel for the duration of the PREACK signal.
- 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.
- the interrupting device When the control signal DAV is sent, the interrupting device will put its identification on the data lines and return the signal DACK.
- 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
- 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.
- 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.
- 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.
- 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.
- 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 processors 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 twoREQACK 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.
- 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.
- 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.
- one IORESET line initializes the devices on the channel.
- auxiliary processor 16 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:
- the auxiliary processcr 16 Ioads a register going to the bus with a device identification code, then asserts DAV, ADDR Out, and DATA.
- 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.
- the auxiliar 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 deivce.
- the auxiliary processor 16 connects to the device as previsously described.
- the auxiliary processor 16 loads the bus register with the function code to be sent and asserts DAV and CONTROL signal lines.
- 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.
- 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 thins 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.
- the auxiliary processor 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 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.
- 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.
- DMA Direct Memory Access
- the actual DMA procedure is as follows.
- the DMA controller and the device controller have a dedicated connection 132, which is referred to as the DMA channel.
- path 120 will be referred to as part of the DMA channel.
- the DMA channel has two control lines BREQ and BREQACK, DMA channel operation proceeds as follows:
- 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.
- the auxiliary processor 16 sets up Buffer Address Register (BAR) , Word Count Register
- the auxiliary processor must allow status interrupts from the device so that it knows if the transfer is determined 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 line. 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 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.
- auxiliary processor 16 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.
- 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 alreadybeen made, and then initiates operation of the direct memory access controller 30. All this communicating is done via one of the input- output busses 102 or 104.
- the other auxiliary processor 16' can use the other-input-output bus for whatever task it is doing.
- 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.
- 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.
- 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.
- 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.
- auxiliary processor 16 has the capability to field different kinds of interrupts. Data interrupts are handled without actual interruption of the running tasks. Status interrupts cause rescheduling and selection of a new task.
- Fig. 5 illustrates in further detail the supervisory processor 20 of the system.
- 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 operativley 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 but 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, sharedor exclusive fashion, enabling each of the new processors to access the same information in potentially diverse form.
- 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 anafterthought, 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 programs sequences.
- 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 themain 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 themain 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.
- 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 correctiondouble 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 8 byte words plus error correction.
- 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.
- 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.
- 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.
- this processor 176 could be a machine similar to that shown in United States patent no. 3,766,532 October 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.
- a function module in the intelligent main store to serve as a memory for the system shown in that patent.
- other appropriate connections are identified.
- 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.
- the multiple main store function modules170, 170' are employed to enable up to four different processors types to access the main store, each processor using different protection mechanism 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.
- main memory data modules 174,174' may be used with logical address space being 32 wide and physical address space being 25 bits wide as determined by the main store controller 172.
- 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.
- identification bits 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 port, i.e. processor, gaining access to the bus through an asynchronous arbitrator.
- 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.
- the main store function module described herein is for use in connection with emulating an IBM 370 machine, and the mode 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.
- main store controller module 172 Only five functions explicity access the main store function module 170, and any other main store accesses are transmitted through to the main store controller module 172.
- main store controller module 172 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 leasing to the main store controller module 172.
- the five functions which explicity access the main store function module 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 bit 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.
- 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.
- 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.
- memory 194 is a 56 K memory provided for "key in storage” to implement page replacement algorithms and storage protection.
- the memory space is organized as 8 K 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.
- the four access control bits of the key in storage are matched against the four bit protect ion key to determine whether or not access is permitted.
- 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 stcring.
- Both the reference 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.
- the main store controller 172 In the main store controller
- the base register 172 is added to the two most significant bytes of the address.
- 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 users'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.
- this 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
- 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.
- controller 236 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.
- 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 remapping. 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.
- 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.
- the address translator 276 performs its translation furnciton 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
- 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 path when no translation is desired.
- the multiplexer 264 selects among the inputs on the four paths 260, 280,296 and 294 and provides an output on a path 300 which is sent to the main store controller as a memory address.
- the translator control 302 includes logic which provides all timing and control to address translator logic 276, multiplexer 264, and error detection logic 314. It controls sequencing of main store requests to acquire segment and page tables to complete the desired translation. Control signals from the main store bus 14 are transmitted to the translator control 302 along a path 304. A START TRANSLATE control signal also from the main store bus 14 is connected by a line 306 to associative array control 270 for synchronization and by a branch line 308 to the translator control 302. Associative array control 270 is connected through path 310 to translator control 302 which, in turn, is connected in controlling relation to address translator 276 through a path 312.
- Logic 314 detects any one of five translation errors which could occur during the translation process. If an error occurs, logic 314 causes termination of the translation process and returns an appropriate error flag to the processor.
- Diagnostic control and paths designated 340 are connected by lines collectively designated 342 to appropriate locations in the virtual memory controller 236, the control paths 340 also being connected to the diagnostic bus 24.
- the virtual memory controller 236 provides translation of logical addresses supplied by and available to programs in the execution processor 18 real addresses in the main memory.
- the execution processor 18 has the capacity to access the main memory through the virtual memory controller 236 in many different modes which are specified by the function lines. Either the execution processor 18, through microcode routines, or the supervisory processor 20, through the diagnostic bus interface, is capable of executing any of the functions defined. The functions specify either normal or diagnostic control through the virtual memory controller and the main memory.
- the virtual memory controller 236 of the present embodiment uses four different functions or commands identified as normal, translate/no access, load real address, and purge.
- a normal access command associates the most significant address bits in the sixteen entry CAM of array 252. If a hit in the CAM occurs, meaning the upper address bits of a logical address match a CAM entry and the valid bit associated with that entry is a one, then the real address from the CAM is concatenated with the lower bits and a main memory access is initiated.
- Array 252 is provided with internal wiring to provide this concatanation. If no hit occurs in the CAM, then the address translator 276 functions to translate the logical address into a real address which then is present on path 280.
- the cycle ends returning no errors. This indicates that the page, i.e. block of address for translation from logical to real, is in the main memory. If no hit occurs, then operation of the translator 276 is started by a signal on line 306. If no errors occur, then the real address is placed in the CAM and the cycle ends. Otherwise, the cycle ends immediately upon error indication and that status is returned. Finally the purge command resets all valid bits, and this essentially removes all entries from the CAM.
- the reference bit is set to equal one and the entire CAM is checked for at least one reference bit equaling zero. If setting the reference bit equal to one sets the last reference bit, then all other reference bits in the other entries are reset. This assures that there is always at lease one entry with a zero reference bit where replacement can occur.
- a number of function codes can be provided for diagnostic purposes in the virtual memory controller 236.
- one function code is employed to access the associative array 252 directly.
- the address lines numbered 28-31 on the main store bus 14 are used to determine the entry selected, while thedata lines numbered 35-63 on that bus reflect the content.
- Another code is employed to access the data register 275 directly.
- Data register 275 holds data returned from the main store data modules 174 during translations, and also during access of main store 12 by the supervisory processor 20. Additional background information on dynamic address translation and virtual storage may be obtained from the previously referenced textbook entitled Operating Systems: A Systematic View.
- the one main store controller 172 in the arrangement of Fig. 6 provides all the necessary timing and control needed for accessing all of the main memory data modules 174 as well as full single bit error correction-double bit error detection and diagnostic support circuitry.
- the main data path logic of the main store controller 172 is shown in Fig. 9 and the address and control logic paths are shown in Fig. 10.
- the bidirectional data bus 190 from a main store function module 170 shown in Fig. 7 is connected to a buffer 400.
- the path 190 contains 8 bytes where each byte could be either 8 or 9 bits wide.
- An 8 byte path 402, from buffer 400 is connected to one input of a byte multiplexer 404.
- the particular bytes of the eight data bytes to be written in the main memory are enabled by the eight byte control lines or bits on a path 406 connected to a byte control buffer 408, the contents of which are transferred by a path 410 to a control input of the multiplexer 404.
- the byte control bits in buffer 408 are controlled by a read control signal on line 412.
- In the read mode all lines of the path 410 are forced to enable reading of all 8 bytes of data.
- all lines of path 410 exhibit senses of the byte control lines in path 406 to enable writing of only specified bytes. These controls are necessary since an entire double word (27bits) of data are accessed simultaneously.
- a read modify write is effected for byte writeability.
- the output of the byte multiplexer 404 is transmitted over an 8 byte path 414 to a double word register 416.
- the double word register 416 is the only clocked register in this memory access path and is used to hold data transfers and to excerise logic in the diagnostic mode.
- the output of multiplexer 404 also is connected by a path 418 to a mask register 420 which, in turn, is connectedly a path 422 to one input of a double word multiplexer 424.
- the contents of the double word register 416 are transferred by a path 426 to another input of the multiplexer 424.
- the output of the multiplexer is connected by a path 428 to one side of a buffer 430, the other side of which is connected to a bidirectional 8 byte path 432 leading to the main store data modules.
- Data read from the main memory sent along path 432 is received in buffer 430 and transmitted by a path 434 to a third input of the multiplexer 424.
- the output of multiplexer 424 also is connected by a path 436 to the buffer 400 and also by a branch path 438 to a bus parity generator designated 440.
- An eight bit path 442 transmits bus data parity bits to the main store bus 14.
- the logic circuit of Fig. 9 further includes error detection and correcticn circuitry.
- the paths 422 and 436 are connected by branch paths 450 and 452, respectively, to inputs of a bit flip gate 454, the output of which is connected through a path 456 to a check bit generator/checker circuit 458.
- the circuit 458 has an input or control gate 460 associated therewith.
- One input to gate 460 is a check mode control signal on a line 462.
- the other input is an eight bit path 464 leading from a buffer 466 which, in turn, is connected to an eight bit bidirectional path 468 connected to the main store data modules.
- the output of the check bit generator/ checker circuit 458 is connected by one eight bit path 470 to the buffer 466 and also is connected by another eight bit path 472 to a correction code generator circuit 474.
- Correction code generator 474 includes logic necessary to select one of 72 lines to activate which will be used for correcting the error data. This is done by decoding the 8 error correction code lines of path 472 into 72 correction lines comprising the path 482.
- the path 472 is connected by a branch path 476 to the input of an error detector circuit 478, the output of which is present on a line 480.
- Error detector 478 includes logic which can input the 8 error correction code lines and determine whether a single bit error or double bit error occurred.
- the output of the correction code generator 474 is connected by a path 482 to one input of a corrector gate 484.
- the other input to gate 484 is obtained through a path 486 leading from the output of the gate 454.
- the output of the corrector gate 484 is connected by a path 488 to another input of the byte multiplexer 404.
- the circuit of Fig. 9 further includes a data trap register 490 which is filled by bits from a path 492 leading from the path 418 and which is connected by a path 494 to the input of a comparator 496.
- Another input to the comparator 496 is provided by a path 498 leading from the path 426.
- R /W MODE and ENABLE signals are connected to comparator 496 by lines 500 and 502, respectively.
- the output of the comparator 496 is a data trap signal present on the line 504.
- Diagnostic control and paths designated 506 are connected by lines collectively designated 508 to appropriate locations in the arrangement of Fig. 9, the control and paths 506 being connected to the diagnostic bus 24.
- data is passed through the buffer 430, the multiplexer 424 and through the bit flip gate 454 into the error correcting logic where the data is combined with the check bits from circuit 458 to form eight appropriate correction bits on path 472 to be used by the error corrector 474 to modify the data on path 486.
- the corrected data on path 488 then is gated through the byte multiplexer 404 to the double word register 416 where it is clocked into and sent along path 436 and through buffer 400 via path 190 to the port, i.e. the processor, initiating the cycle.
- the same procedure occurs up to the point where the corrected data is written into the double word register 416.
- the selected bytes to be written into the main memory are placed into the double word register 416 with the existing data that is not to be changed.
- This new double word is then sent to the appropriate main memory data module through path 426, multiplexer 424, path 428, buffer 430 and path 432.
- it is also sent through the error correction logic to generate the check bits which also are sent to the appropriate main memory data module, In particular, this is done through the bit flip gate 454 and path 456 to the check bit generator 458 and then along path 470 to the buffer 466 to the path 468.
- the main store controller Being located at the end of the main memory path, the main store controller detects parity errors that are created in both the data and address paths. When returning data to the port, the main store controller also generates parity for error detection in the port, this being done by the bus parity generator 440.
- Various main store function codes are employed to control the various states of the data path logic circuit of the main store controller 172. Both on line and off line diagnostic capabilities exist using these functions. Any error condition arising from the use of these special state controls is detected by means of the diagnostic bus 24. For example, a data register function provides the capability to load and read the 8 byte double word register 416 directly. In order for this to occur the byte controls from the buffer 408 must be active.
- a bit flip mask function accesses the read/write bit flip mask register 420 in the data path logic.
- the data trap register 490 is a read/write register which holds the data word to be used for comparison against the data word from the main store to generate data trap interrupts.
- the main store data word on line 498 is compared by the circuitry 496 with the trap value stored in register 490.
- the trap value matches the data
- the enable bit is set, and when the R/W mode bit matches, an error condition will be generated.
- a R/W mode bit enables the comparator 496 to match on either a read operation, a write operation or both.
- the error correction circuit includes single bit error correction, double bit error detection circuitry. This is enabled or disabled by using a particular main store function. When enabled, any single bit storage failures will be corrected automatically. Error circuitry is unaffected by the control bit.
- the bit flip mask register 420 provides a means to force independent multiple or single bit errors into the data path of the single bit error correction, double bit error detection logic to determine where failures occur.
- This bit flip mask register 420 is enabled by a particular main store function. When any bit in the mask register 420 is set to zero, the incoming data bit is inverted, and if the error correction circuitry is functioning properly, data will be corrected and an error will be sensed. This mask can be used for both single bit error correction, double bit error detection hardware fault check and fault diagnosis.
- Fig. 10 illustrates the main store controller address and control paths.
- the port or processor base address is conveyed along the 16 bit path 218 from a main store function module 170 and applied to an arrangement of buffers 510.
- the port or processor address on the 32 bit path 212 from the main store function module 170 is connected to the buffers 510 as well as the port data signal on path 190.
- control signals on a path 512 from the main store function module 170 are connected to the buffers 510.
- the port base address and the port address signals leave the buffers 510 on paths 514 and 516, respectively, and are applied to the inputs of a base adder 518.
- the base adder 518 is a 16 bit adder and functions to add the base address from the main store function module to the most significant bits of the incoming address to generate an absolute address present on path 520. This is an address to the actual main memory data module.
- the adder 518 is disabled or enabled by a particular function and bit setting in the state control register 554. Overflow detection is provided by means of a physical memory size detector
- the path 520 is connected to a buffer 524, and a path 526 leading therefrom transmits the absolute address to the main memory, i.e. main memory data modules.
- the buffered control signals from line 512 are applied by a path 530 to a logic circuit 532 for generating memory timing, control and refresh signals.
- the signals provide for periodic refreshing, precharging, address multiplexing and operation timing for the main store data modules which are comprised of dynamic access memory chips. These characteristics are all controlled by the main store controller 172 and there is no programmable control over any of these characteristics. Refreshing is done by a cycle stealing technique.
- the output of the logic circuit 532 is transmitted by a path 534 through the buffers 524 and then along a path
- the arrangement of Fig. 10 includes circuitry for comparing the physical address generated by adder 518 with a trap value.
- the path 520 leading from adder 518 is connected by a path 540 to one input of a range comparator 542.
- a path 544 leading from the buffer 510 transmits bits from the path 190 to an address trap register 546 for storing the trap value during a specified main store operation.
- the bits stored in register 546 are transmitted through a path 548 to another input of the comparator 542.
- the address trap register 546 contains an upper and lower 24 bit address used to generate the error or trap conditions. This is a read/write register.
- the data field includes one bit serving as a read mode for the data trap, another bit serving as an enable read/ write mode comparison for the address trap, another bit serving as a read mode check for the address trap, 29 bits serving as an upper address range byte and 29 bits serving as a lower range address.
- the address is between and upper and lower bounds, when the enable bit is set, and when the read/write mode enable switch is off, an error condition will be generated.
- the read/write mode enable switch is on the mode specified must match also. Trapping on equivalence with an address is possible if the upper and lower bounds are equal.
- the address trap indication is present on line 550 , and it is sensed as an interrupt condition by error handling logic 580 which will be described presently.
- Line 550 also is connected to most of the components in the arrangements of Figs. 9 and 10.
- the circuit of Fig. 10 further comprises an information register designated 554 which is a write only register containing information about the state and interrupt conditions in the main store controller 172.
- a path 556 transmits bits from the path 544 to the register 554.
- a path 556 transmits bits fromthe path 544 to the register 554.
- the output signals for indicating the various conditions or states and for generating interrupts are present on a plurality of lines collectively designated 558 which are connected to all components in Fig. 10.
- the arrangement of Fig. 10 also includes address and data parity generators and detectors designated 564. Since the main store controller 172 is located at the end of the main memory path it detects parity errors that are created in both the data path and address path.
- the arrangement also includes logic circuit means designated 566 for generating the power on command and the main memory clear signal.
- logic designated 568 for generating system clear and clock signals, this logic being timed by a 40 megahertz generator 570.
- the system clear and clock logic circuits 568 are connected by a path 572 to the buffers 524 and a path 574 leading from buffers 524 is connected to all points in the system needing clear signals and clock signals.
- path 574 contains clock signals at frequencies of 40 mhz, 20 mhz, 4 mhz, and 1 mhz along with the clear signal.
- the arrangement of Fig. 10 finally includes error handling logic and status registers 580 for detecting any error conditions arising from use of special state controls in the main store controller 172.
- the logic is connected to all components of the arrangement of Fig. 10 by lines collectively designated 582.
- the output of unit 580 is connected by a path 584 to buffers 510 and then by a path 586 to the diagnostic bus 24.
- diagnostic control and paths designated 590 are connected by lines collectively designated 592 to appropriate locations in the arrangement of Fig. 10.
- the control and paths 590 also are connected to diagnostic bus 24.
- a number of conditions in the main store controller 172 can cause interrupts.
- the conditions are all independently enabled by the state control 554 to generate interrupts. Any condition which causes an interrupt may also independently be allowed to cause a main memory halt which will freeze the main memory from any other accesses until it is reset by the supervisory processor 20.
- Illustrative conditions are address transmission parity error, data transmission parity error, correctable (single bit) storage error, uncorrectable (double bit) storage parity error, and address or data trap.
- the interrupt will be sent to the supervisory processor 20 over the diagnostic bus 24 and the condition causing the interrupt will be read also by means of the diagnostic bus 24.
- various status bits associated with these conditions may be read through the diagnostic bus connection to the main store 12 and then read as data. There will be an interrupt identification.
- the status register 580 can be reset by issuing a control signal over the diagnostic bus 24.
- Fig. 11 illustrates one of the main store data modules 174 of the main memory.
- the number of data modules 174 included in the system can be varied, and each main store data module 174 contains 256 kilobytes of storage organized as 32 K by 72 bit words plus error correction.
- the supervisory processor 20 has limited explicit control over the main store data modules 174, although it can access any of them through normal main store accesses.
- the supervisory processor 20 can load and read an identification register that identifies the main store data module on a logical basis.
- the address lines numbered six thru thirteen on the main store bus 14 are compared against the aforementioned identification register, and where a match occurs that main store module stores data during a write operation and sources data during a read operation.
- Each main store data module 174 has a unique identification for proper operation.
- the supervisory processor 20 accesses the aforementioned identification register by executing a particular function with the board address in the bit positions six thru thirteen in the illustrative embodiment.
- a mechanical switch 600 also designated S/R, is located on the main memory data module 174 and it determines whether a fixed identification or the aforementioned identification register designated 602 is used for comparison against the incoming upper address bits numbered six thru thirteen on the main store bus 14 as previously described to select the module for a memory access.
- the output of the switch 600 is connected by a line 604 to the control input of a multiplexer 606.
- a register 608 associated with the switch 600 stores the fixed identification.
- An eight bit output path 610 leads from the register 608 to one input of the multiplexer 606.
- the input to the identification register 602 is a data input from the supervisory processor 20 as previsously described.
- the bits numbered fifty six thru sixty three on the main store bus 14 in the present embodiment are conveyed by paths 612 to the register 602.
- a clock signal for the identification register 602 is applied by line 614.
- the contents of register 602 are transferred by an eight bit path 616 to the other input of multiplexer 606.
- the output of multiplexer 606 is connected by an eight bit path 618 to one input of a comparatbr 620.
- the address bits numbered six thru thirteen from the main store bus 14 are transmitted along an eight bit path 622 through a buffer 624 and along another eight bit path 626 to the other input of comparator 620.
- the bit S/R on line 604 equals one then the module selection is based on the contents of register 608 associated with the mechanical switch.
- identification register 602. is written and read by invoking a particular main store function code designated main store access.
- this particular main memory data module is to be selected for access, that is determined by the comparison of the address bits on path 626 with or against the identification bits on line 618. That is done by comparator 620 to produce a module select signal on the line 628.
- An enabling signal from the main store controller module 172 is sent along line 630 through buffers 624 and line 632 to multiplexer 620.
- the output of the fixed identification register 608 associated with switch 600 is connected by an eight bit path 634 to one input of another comparator 636.
- the eight bit path 626 also is connected by an eight bit path 638 to the other input of comparator 636.
- the comparator 636 is enabled by a signal from the main store controller sent along line 640 through a buffer 642 and then along a line 644 to the comparator 636.
- the output of comparator 636 is connected by a line 646 to an input of another multiplexer 648.
- the select signal on line 628 from comparator 620 also is connected by a line 650 to another input of the multiplexer 648.
- Write and logical zero signals from the main store controller are applied to other inputs of the multiplexer by lines 652 and 654, respectively.
- a read command signal from the main store controller is transmitted along line 656 through buffers 624 and along lines 658 and 660 to another input of the multiplexer 648.
- Another logical zero input from the main store controller is applied by a line 662 to the multiplexer.
- the multiplexer 648 is enabled by a signal from the main store controller transmitted on a line 664 through the buffers 624 and along a line 666 to the multiplexer.
- One output of the multiplexer 648 is applied by a line 668 to an input of each of the two gates 670 and 672.
- the other input of gate 670 is connected gy a line 674.
- gate 670 on line 676 is a clock signal sent to the identification register 602.
- the other input to gate 672 is connected to the line 658, and the output of gate 672 on line 678 is a read command signal.
- the output of multiplexer 606 also is applied by an eight bit path 680 to a gate 682.
- the signal S/R indicating the state of switch 600 also is applied by a line 684 to another input of the gate 682.
- the gate is enabled by a signal on line 686 from the output of multiplexer 648.
- the eight bit output of gate 682 is sent by an eight bit path 6.88 to the supervisory processor for diagnostic purposes on the diagnostic bus 24.
- a one bit path 690 also sends an indication of the state of S/R to the supervisory processor.
- the memory module contains a plurality of chips collectively designated 700 arranged on the main memory data module.
- the module or board contains a total of 160 chips, each chip being a 16 K by 1 memory chip, and the chips are arranged in two rows of eight chips each.
- eighty chips are arranged in the upper row and some designated C uo , C u 9 , C u 79 are illustrated in Fig. 11. These are arranged in eight groups of ten bits each.
- Data flowing to and from the module is on an eight bit bidirectional path designated 702.
- the path 702 is connected at one end to path 432 associated with the main store controller, and is connected at the other end to transceivers 704 which, in turn, are controlled by the read control signal on line 678.
- Two branch paths 706 abd 708 connect transceivers 704 to the memory chips on board 700 for data flow to and from the memory chips 700, respectively.
- a write enable signal from the main store controller is sent along line 710 through buffers 624 and line 712 to all the memory chips.
- Another control signal designated CAS from the main store controller enables writing on the write mode and output on the read mode.
- the signal is transmitted on line 716 through buffers 624 and then through a line 718 to one input of a gate 720, the other input of which is the select signal on line 628.
- a gate 720 the other input of which is the select signal on line 628.
- An eight bit byte control word on path 724 from the main store controller 172 is sent through the buffers 624 and another eight bit path 726 to one input of a decoder 728.
- a two bit address signal from the main store controller is transmitted through a path 730, the buffers 624 and a path 732 to the other input of decoder 728. Selection of either the upper or lower row of memory chips is determined by the signals designated RASU, RASL on line 732 which is based on a particular address bit from the main store bus 14. Since the main memory data module is byte addressable, the eight byte control lines represented by path 726 are gated with each RAS signal. The result is sixteen different RAS lines which are connected to the array so that any combination of the eight bytes, each containing ten bits, can be activated in any one of the two rows of chips on board 700. Two of these sixteen lines are designated 734 and 736 in Fig. 11. A seven bit path 714 from the main store controller contains control information which is sent through buffers 624 and a seve bit path 716 to all memory chips.
- Fig. 12 illustrates in further detail one of the direct memory access controllers in a DMA (direct memory access) channel, for example the controller 30 shown in Fig. 4.
- the controller includes an interface to the DMA channel including bus control logic 750 and a logical switch 752 for controlling the direction of data transfer.
- the bus control logic 750 and logical switch 752 are operatively connected to branches 132c and 132d, respectively, of the DMA bus 132, which, in turn, is connected to a device controller, for example device controller 108 shown in Fig. 4.
- the DMA interface includes nine data bits with parity which travel through logical switch 752 and three control bits which are received in bus control logic 750 after being sent from a device controller 108 which is requesting the DMA controller 30. While device controller 108, auxiliary processor 16 and busses 102,104 are shown in Fig. 12 for purposes of illustration, it is to be understood that they are not part of DMA controller 30.
- the DMA controller 30 further comprises an expandable FIFO (first-in first-out) memory 754 having a minimum capacity of sixty four bytes.
- the FIFO memory 754 can be of the type commercially available from Monolithic Memories under model no. 6704.
- a nine bit wide data input path 756 to the FIFO memory 754 receives data from two source paths under control of a logical switch 758 similar to logical switch 752.
- the logical switches are controlled by Read/Write control signals on line 760 depending upon whether the mode of operation is reading or writing the main store.
- a nine bit wide data path 764 transmits data received from the device controller and DMA bus 132 when the Write signal is present on line 760, and this data passes through logical switch 758 to the FIFO memory input path 756 when the Write signal is on line 760.
- Data received from the main store in a manner which will be described, is transmitted by a nine bit data path 765 to logical switch 758 which passes this data on through to path 756 when the Read control signal is on line 760.
- Bits from the bus control logic 750 are applied by a path 766 to the FIFO memory 754 where they are decoded for control and identification purposes.
- Data words at the output of the FIFO memory 754 leave through a nine bit wide path having a first branch 768 leading to the logical switch 752 and a second branch 770 leading to a main store interface.
- a memory control 772 is operatively connected to FIFO memory 754 and will be described in further detail presently.
- the DMA controller 30 further comprises a main store interface including a first set of memory buffer registers 774,774' for providing a data output to the main store.
- Each of the memory buffer registers 774 for example contains nine bits, and usually eight such registers are included in a typical DMA controller 30 although only the two registers 774 and 774' are shown in Fig. 12 for convenience.
- the nine bit wide path 770 from the output of the FIFO memory 754 is ccnnected to each register 774,774' etc, of the register set. All of the registers, in turn, are connected through buffers generally designated 776 to bus 120 which is an extension of the main store bus 14 as shown in Fig. 4.
- registers 778,778' receive data read from the main memory which is transmitted along bus 120. These registers are similar to the register 774, that is each containing nine bits and there being a total of eight such registers. The contents of these registers are transferred to the nine bit path 764 leading to logical switch 758 ultimately to the input of the FIFO memory 754.
- the main store interface thus includes seventy two data bits in the illustrative example.
- the main store interface further comprises a buffer address register designated 780 which can contain 32 address bits and parity bits.
- the contents of the buffer address register 780 register are transferred by a path 782 through the buffers 776 to the bus 120 and ultimately to the main store 12.
- the main store interface also includes a byte control register 784 which serves as an addressable latch.
- the three least significant bits of the address stored in buffer address register 780, also designated byte pointer bits, are transmitted by a path 786 to control the byte control register 784.
- Other controls for byte control register 784 come from path 788 in a manner which will be described.
- the contents of byte control register 784 are transferred by a path 790 through buffers 776 to the bus 120.
- main store cycle control designated 790 which includes a number of registers and associated logic.
- a number of control lines collectively designated 792 are connected to control lines on the main store bus 14.
- One of the registers in the main store cycle control 790 contains the read/write bit which is decoded and provides a signal on line 760 leading from main store cycle control 790 to switch 758.
- Other registers in the main store cycle control 790 store bits sent from the auxiliary processors 16 and containing information for selection of a function module in the intelligent main store 12, identification codes and protect keys. These bits are received by main store cycle control 790 over paths which will be described.
- the DMA conteoller 30 further comprises byte packing logic which is provided by a packing PROM (programmable read only memory) 794 in conjunction with a portion of the previously described byte control register 784.
- the primary function of the byte packing logic is to control the manner in which the data bytes are arranged in or removed from the registers 774,774' and arranged or removed from the registers 778,778'.
- the packing PROM 794 provides output control signals on lines connected to all of the main store interface registers 774,774' and 788,778' In particular, load enable signals are connected by lines 796 and 796' to the registers 774 and 774' and similarly read enable signals by lines 798 and 798' to the registers 778 and 778'.
- a register 800 for storing bits designated P 0 P 1 is connected to the packing PROM 794 for a purpose to be described.
- the DMA controller 30 further comprises a plurality of channel control registers. One of these is the buffer address register 780 previously described. There is also provided a byte transfer count register 802 which provides an indication of the byte count being decremented to zero through a line included in the path designated 806, the other end of which is connected to the main store cycle 790. As shown in Fig. 12, signals in the path 788 leading to byte control register 784 are connected to path 806 and a path 808 leading from the packing PROM 794. Path 806 also is connected by a path 810 to the FIFO memory control 772. A FIFO counter 812 is connected through a path 814 to path 806.
- a BAR/BC (buffer address register/byte count) control designated 816 is connected by a path 818 to the main store cycle control 790.
- the buffer address register 780, byte transfer count register 802 and BAR/BC control 816 comprise a subsystem designated 820 in Fig. 12 which is available commercially as a set of integrated circuits from Advanced Micro Devices under model no. 2940.
- the DMA controller 30 further comprises an input- output channel inteface.
- an inteface unit 822 is connected to the execution 124 of the input- output bus 102 as shown in Fig. 4, and an interface unit 824 is connected to the extension 126 of input- output bus 104.
- the interface units 822 and 824 are connected through respective paths as shown in
- Fig. 12 under control of a logical switch 826 to the input of an input/output channel control 828, the output of which is connected to a single path 830. Path 830, in turn, is connected by branch paths 832, 834 and 836 to the BAR/BC control 816, byte transfer register 802 and buffer address register 780.
- the input/output channel control 828 contains logic enabling a device controller to be connected to an I/O channel.
- a function command generator designated 840 is a part of the I/O channel control 828 and comprises the combination of a counter and decoder. Output signals from generator 840, in particular from the decoder thereof, are designated FC and are connected to various components of the DMA controller 30 as shown in Fig. 12.
- the DMA controller 30 of the present invention also comprises a duplicate byte transfer count register 848 connected to path 830 by a branch path 850 and a duplicate buffer address register 852 connected by a branch path 854 to path 830. There is also provided a comparator 856 for comparing the contents of the duplicate registers.
- the state of the duplicate byte transfer count registers 802 and 848 are transferred by paths 858 and 86Q , respectively, to inputs of the comparator 856.
- the contents of the duplicate buffer address register 780 and 852 are transferred by paths 862 and 864, respectively, to other inputs of the comparator 856.
- comparator 856 When there is a difference between the contents of registers 802 and 848 or between the registers 780 and 852 or both, comparator 856 provides a signal on lines 866 which is utilized to cause the auxiliary processor 16 to stop the transfer.
- the registers 802 and 780 are loaded from one auxiliary processor for example processor 16, and the registers 848 and 852 are loaded independently from the other auxiliary processors 16'.
- Each auxiliary processor 16 computes the data to be loaded into the registers independently of one another. Comparing the one set of registers against the other and issuing a command to stop the transfer if the register contents are different as described above insures that no errors occur.
- the device controller sending the data requests the DMA controller 30 by means of control bits sent to bus control logic 750. and then to FIFO memory 754.
- the write signal sent from the auxiliary processor 16 is on lines 760 and 762 causing logical switches 752 and 758 to allow data from the DMA bus to flow through paths 764 and 756 into the FIFO memory 754.
- the data goes into FIFO memory 754 in nine bit bytes under control of the memory control 772 which keeps track of the amount of data going in, stored in and leaving from the FIFO memory 754.
- the nine bit bytes leave FIFO memory 754 and are transmitted to the memory buffer registers 774,774'.
- the order in which the bytes are placed in the memory buffer register i.e. normal packing, reverse packing, every two bytes reversed, reversed and every two bytes reversed is controlled by the packing PROM 794.
- the information stored in byte control register 784 tells which of the memory buffer registers 774 and 774' contains valid data.
- the contents are transferred through buffers to DMA bus 120 and then through main store bus 14 to a storage location in the main store, the address of which is contained in buffer address register 780 and which is also transferred to the main store controller via the main store bus 14.
- the information and controls from the main store cycle control 790 also are transferred to the main store controller.
- the number of bytes transferred to the main store 12 is controlled by the count stored in byte transfer count registers 802.
- the contents of registers 780,802 were supplied from the auxiliary processors 16. When the byte transfer count becomes zero, indicating the end of the transfer, an indication of such can be transmitted over path 806 to path 810 and to memory control 772.
- FIFO memory 754 in the DMA controller 30 gives the auxiliary processor 16 time to respond when an intervention, such as data chaining, is required. For example, during a transfer of data to a block of addresses in main store 12, there may arise a need to intervene and transfer the data from the device controller 108 to a different main store location. The presence of the FIFO memory 754 which receives the data from the main store 12 gives the auxiliary processor 16 sufficient time to respond to this intervention need. FIFO counter 812 tells how much data remains in FIFO memory 754 at any time and is a useful status indicator.
- the address from which data is to be read is sent to the buffer address register 780 from the auxiliary processor 16 which also sends the byte count information to register 802.
- the device controller 108 which is to receive thedata sends control bits to bus control logic 750 and then to FIFO memory 754.
- the read signal sent from the auxiliary processor 16 is on line 760 causing switches 758 and 752 to allow data from path 765 to flow into FIFO memory 754 along path 756 and then out of memory 754 along path 768 to DMA bus 132 and then to the requesting device controller 108.
- the data read from main store 12 in response to appropriate commands flows along bus 120 into the memory interface registers 778,778'.
- the order in which the contents of the registers are transmitted along path 765 is controlled by the packing PROM 794 in a manner similar to that for a write operation.
- the number of bytes read from main store 12 and transferred to registers 778,778' is controlled by the count stored in register 802 in a manner similar to that of the write mode.
- An auxiliary processor 16 decides which d.m.a. channel will be connected to a particular device controller 108, and the auxiliary processor 16 connects to the DMA controller 30 by means of the input-output channel using the connection procedure previously described. Then the auxiliary processor 16 proceed to start loading functions into the DMA controller 30. In particular, functions which are device dependent and intended to control the direct memory access transfer are loaded into the counter of the function generator 840 and the output of the counter is decoded to provide load enables for the registers. The registers are loaded with the information needed for the main store transfers.
- Data is loaded in the following order: first the buffer address registers 780 and byte count register 802, next a main store interface control register within the main store cycle control 790, next a protect key register within main store cycle control 790, next a thirty two bit quantity to the buffer address register 780 and finally a sixteen bit quantity to the byte transfer count register 802.
- Tables I and II The foregoing data loading procedure is illustrated in Tables I and II as follows: a) the BAR and BC control register Control Register
- ID 0 - ID 3 a four bit ID code which may be the ID of the AP, could be used for diagnostic information if main store bus hangs.
- F 1 F 2 a code telling which of the main store interface cards to use in accessing main store (i.e. IBM 370, etc.) allows selection of different protection schemes, base registers, and other emulation dependent main store modifiers. c) protect key register
- SUPR suppress data transfer to/from M.S. DCH data chaining KYEN enable the protect key mechanism
- KY 1 -KY 4 a four bit protect key d) BAR a 32 bit quantity, loaded 8 bits at a time, mos significant byte first e) BC a 16 bit quantity, loaded 8 bits at a time, most significant byte first
- the function command generator 840 comprising counter and the decoder also feed address input to the P 0 P 1 register 800 connected to the packing PROM 794.
- the function command generator 840 also provides the controls on lines FC connected to the various components as shown in Fig. 12.
- the auxiliary processor 16 may load a function command and put the function command generator 840 in an auto increment mode. This allows the auxiliary processor 16 to send a sequence of parameters to the DMA controller 30 without reloading the function command generator 840 each time to tell the DMA controller where the data is going.
- the subsystem designated 820 in Fig. 12 is provided with clock signals from the input-output channel when it is being loaded with parameters and it is provided with clock pulses from another source when it is controlling the address and word count of a direct memory access transfer since then it must increment on each direct memory access byte transfer.
- This latter source is controlled by a bit from the packing PROM 794 which gates one of the signals as the clock.
- the auxiliary processor 16 After the registers listed in Tables I and II hereinabove are loaded with information needed for the main store transfers, the auxiliary processor 16 must send a command to connect a DMA controller to a particular direct memory access bus. At this point the DMA controller 30 is ready to transfer data to or from the device controller 108 that is connected to the other end of the DMA bus 132. The auxiliary processor 16 then must connect to the device controller 108, set up any necessary parameters and send a start input-output command to the device controller. When a device controller, for example controller 108 in Fig. 4 is ready to send or receive data it asserts the control signal BREQ on the DMA bus 132.
- the device controller 108 If the device controller 108 is sending data to the DMA controller 30 the data must be stable on the data line when the BREQ signal is asserted and the data must be held back until the control signal BREQACK is received from the DMA controller 30. If the DMA controller 30 is sending data to the device controller 108, the data will be stable when the signal BREQACK is asserted and will be held until the device controller 108 removes the BREQ signal.
- the byte transfer count register 802 is updated.
- the buffer address register 780 is updated at the same time as the byte transfer count register 802.
- the updating of the buffer address register 780 and byte transfer count register 303 must be handled specially when the transfer is from the DMA controller 30 to main store 12.
- the registers 780 and 802 are normally updated when the data is transferred from the FIFO memory 754 to the memory buffer registers 774,774'. However, the update is postponed until after the main store transfer on the last byte to be loaded into the registers 774,774' before the main store request.
- the buffer address register 780 and byte transfer count register 802 will then be proper.
- a separate control line WCONE is asserted by the DMA controller 30 along with the transfer of the last byte of data between the DMA controller 30 and the device controller 108.
- the WCONE signal is synchronized with the BREQ and sent to the device controller 108 when it occurs.
- the DMA controller 30 also maintains a status bit which indicates that all transfers to main store 12 are complete, but data is still left in the
- the WCONE signal is stored in the FIFO memory 754 along with the last byte of data so that the device controller 108 receives the WCONE signal simultaneously with the last data byte.
- the DMA controller 30 does not assert WCONE but instead generates a status interrupt to the auxiliary processor 16 requesting new buffer address register 780 and byte transfer count register 802 information.
- This data chaining interrupt is generated immediately upon the occurrence of byte transfer count zero.
- the amount of time the auxiliary processor 16 has to respond is directly related to the capacity of the FIFO memory 754 and inversely related to the transfer rate of the device controller 108.
- the DMA controller 30 stops transferring data to main store 12 after the data chaining interrupt. After the last byte of the byte transfer count register 802 has been loaded, the DMA controller is again enabled to transfer data to/ from main store 12.
- the data transfer to/from the device controller 108 is held up by not responding to the BREQ signal with a BRQACK signal. If the device controller 108 has to transfer another byte of data to/from the DMA controller 30 before the DMA controller 30 has responded to the last request for serivce, an overrun condition exists and a status interrupt will be sent to the auxiliary processor 16 by the device controller 108.
- the DMA controller 30 will alert the auxiliary processor 16 of its not busy status via a status interrupt.
- the device controller 108 will also give the auxiliary processor 16 a not busy interrupt when it is finished.
- the auxiliary processor 16 must send a channel end command to the DMA controller 30.
- This command indicates to the DMA controller that if the FIFO memory 754 becomes empty before the byte transfer count register 802 becomes zero the DMA controller 30 must generate channel end and if necessary force the transfer of the reset of the data to main store 12 as if the byte transfer count register 802 had become zero.
- a double word plus-byte parity bits will be strobed to or read from the memory buffer registers 774 and 778 depending upon the condition of the read/ write bit which previously was set up by the auxiliary processor 16. If a read main store condition is indicated the information from the main store bus 14 is clocked into the memory buffer registers 778. If a write main store is indicated the output of registers 774 will be enabled to the main store bus 14 on the signal from that bus.
- the FIFO memory 754 is uni-directional so that if the main store 12 is being read, the output of the registers 778 is enabled as the input to the FIFO memory 754.
- the outputs of the logical switch 752 on the DMA channel are enabled to the input of the FIFO memory 754.
- the output of FIFO memory 754 is either an input to the logical switch 752 when the main store 12 is being read or an output to the memory buffer registers 774 which will be transferred to the main store 12 on a write cycle.
- a shift in signal designated SI in Fig. 12 is sent to the FIFO memory 754 from the memory control 772 when the FIFO memory 754 asserts an in ready condition indicating that there is room at the input of the FIFO memory.
- the SI signal will be inhibited if any number of other conditions are asserted. The actual inhibiting can be done by the memory control 772. For example, the SI signal will be stopped if the memory buffer registers 778 are empty, i.e. if all the data has been read from the registers 778.
- the buffer empty or register empty condition is known when the last valid byte is shifted from the memory buffer registers 778 to the FIFO memory 754.
- the last byte is flagged by a byte in the packing PROM 794.
- packing PROM 794 picks off the bytes in the memory buffer registers 778 in the order indicated by the auxiliary processor 16 in the packing control.
- the last byte flag also comes up.
- the buffer is known to be empty.
- the foregoing condition could also create a request to the main store bus 14 for more data, provided the byte transfer count in register 802 has not become zero indicating the end of data requests.
- Another condition inhibiting the SI signal is when the byte transfer count contained in register 802 goes to zero.
- the shift in and shift out signals are provided in response to different conditions.
- the device controller 108 will signal that it has a byte of data by asserting the BREQ signal. If the input of the FIFO memory 754 is ready, the presence of the BREQ signal will cause the memory to shift in the byte and to provide an In Ready signal. When the In Ready signal goes off in response to the SI signal, that causes an acknowledgement signal to be sent to the device controller 108. The acknowledge signal is reset when the BREQ signal disappears.
- the shift out condition for this situation where data goes from the device controller 108 to the main store 12 is similar to the shift in condition in the opposite direction.
- the SO signal causes data to be put into the memory buffer registers 774,774' enabled by the packing PROM 794 when the FIFO memory 754 signals an out ready condition.
- the out ready condition signalled by FIFO memory 754 indicates that there is data at the output of FIFO memory 754 ready to be transferred.
- the shift out of data from the FIFO memory 754 to the memory buffer register 774,774' can be inhibited for a number of reasons. One reason the shift out condition is inhibited is the memory buffer registers 774,774' being full.
- each byte is transferred one at a time.
- the three least significant bits of the buffer address register 780 are sent along path 786 to the packing PROM 794 and the byte control register 784.
- the packing PROM output enables the transfer of one of the bytes to one of the memory buffer registers 774,774'.
- the byte control register 784 supplies a three bit code which addresses one of eight latches in the byte control register 784. The latch is strobed as each byte is transferred to the memory buffer registers 774,774'.
- the parity on all the bytes transferred into the FIFO memory 754 is checked. If a parity error occurs an error bit is sent through the FIFO memory 754 with an error word. A word which is marked with an error bit is not loaded into the memory buffer registers 774,774'. This is accomplished by having the parity error bit inhibit the SO signal. Similarly any errors flagged by the main store controller are loaded into one of the memory buffer registers 778,778' at the end of a main store transfer. After a byte from the register containing the main store error is shifted into the FIFO memory 754 the error will inhibit any additional SI signals until cleared. The byte which went into the FIFO memory 754 is marked by an error bit.
- a device controller 108 can signal a "done” condition by asserting the DMACA signal through bus control logic 750 and path 766. This indication is passed through the FIFO memory 754 with the byte in question. When that byte is strobed into the memory buffer registers 774 , 774 ; the "done" condition indication, received from the channel, causes a flip-flop (not shown) to go to a state including the out ready condition thereby preventing any further shift out of the FIFO memory 754.
- a main store request is sent under two conditions. When the last memory buffer register 774 is loaded during the main store write mode or when the last memory buffer register 778 is emptied during a read mode, provided the byte transfer count doesn't go to zero at the same time, a main store request is sent. A main store request also is sent during the main store write mode when the final byte previously transferred from the device controller 108 is shifted out of the FIFO memory 754. This byte was marked when the device controller 108 asserted the DMAWC signal. When the byte transfer count is one and its associated byte is strobed into the memory buffer registers 774,774', meaning that the DMA transfer is over, a request is sent to transfer the final bytes into the main store 12.
- the particular channel is predetermined by the auxiliary processor 16.
- the channel which is active is controlled by decoding the DMA channel select register in the bus control logic 750.
- the select register is programmable by the auxiliary processor 16 by sending the function indicating to load that register followed by the data going into it.
- the enable of either the set of receivers or the set of drivers in the logical switch 752 is determined by the read/write information, supplied from the auxiliary processor 16. An acknowledge signal goes out in bothcases and the BREQ signal is received in both cases.
- Fig. 13 shows in further detail one of the auxiliary processors 16 in the system of Fig. 1.
- the auxiliary processor includes a microprocessor generally designated 880 which, by way of example, can consist of a combination of four devices commercially available from Advanced Micro Devices under the designation Am2903.
- the device shown in Fig. 13 represents four 4 bit microprocessor slices employed in a stacked arrangement to give a total capacity of 16 bits.
- the four components are interconnected and the entire combination is connected to other parts of the auxiliary processor 16 in a manner which will be described.
- Each microprocessor slice contains a 16 word by 4 bit, two port random access memory, RAM, with latches on both output ports, a high performance arithmetic logic unit and shifter, a multipurpose
- the data output of the microprocessor slice 880 is connected by a branch path 884 to the input of an addressing means generally designated 886 for a memory of the auxiliary processor 16.
- the addressing means 886 includes two sixteen bit counters, one designated the memory counter and the other designated the program counter. There are three operations which can be performed on these registers. The first is to load either register, both registers or neither register. The second operation is selecting one of the registers as the memory address, and this operation is independent of loading the register. The third operation involves incrementing the register chosenas the memory address.
- the counting function provided by the addressing means 886 allows incrementing of addresses without using the microprocessor slice 880 for that task.
- the generated address output is present on path 888 and applied to the address input of an auxiliary processor memory 890, also identified as the microprocessor memory.
- the micro memory 890 stores sixteen bit words plus parity and is expandable in 4K word increments to 120 K bytes.
- the memory has a seventy nanosecond cycle time, and the address is a word address.
- the micromemory 890 contains both instructions and data, and instructions are executed from the micromemory 890.
- the data input for the micro memory 890 is transmitted along a path designated 892 in Fig. 13.
- This path is divided into four branches each containing the byte logic circuits 894a-d,respectively, whichserve to interchange or shift the data bytes when desired.
- One reason for ths is that the micro memory 890 is not byte addressable.
- the capability of shifting the bytes before the data enters the micro memory 890 is useful in such things as character transfers.
- Data enters the micromemory 890 through the paths 896 and 898.
- the data read out from the memory 890 is present on the two paths 900 and 902 which, in turn, become four branch paths each containing byte logic circuits 904a-d, respectively, similar to the byte logic circuits 894a-dat the memory input. This permites swapping or interchanging of the bytes in the data output.
- the output of down counter 912 is applied through an eight bit data path 914 to another input of the multiplexer 908.
- the address bits on path leading from addressing means 886 are connected by an eight bit path 916 path to a third input of the multiplexer 908.
- the multiplexer 908 provides a 16 bit output selected from any one of the three input data paths 906,914 and 916.
- the 16 bit output path 9-20 of the multiplexer 908 is divided into four separate 4 bit outputs each applied to corresponding inputs of the four microprocessor slices. As shown in Fig. 13, a four bit path leads from path 920 to the data input of each microprocessor slice 880. The 16 bits from path 920 are applied by a path 922 to another portion of the system in a manner which will be described.
- the eight bit output of the down counter 912 also is applied by a path 924 as an address input to a PROM (programmable read only memory) designated
- PROM 926 The 16 bit output of PROM 926 is divided into four corresponding four bit outputs applied to respective microprocessor slices. This group of four 4 bit paths is generally designated 928 connecting PROM 926 and microprocessor 880.
- the PROM 926 generates patterns as a function of the output of the down counter 912, and it is used in such operations as bit masking, generation of constants, and test of bits.
- the eight bit output of the counter 912 also is transmitted along a path 930 to components for generating addresses for selecting registers in another portion of the auxiliary processor 16, that portion to be described presently.
- path 930 is connected to the input of a buffer 932, and the path 888 containing addresses for the micromemory 890 also is connected by a branch path 934 to another buffer 936 and to a decoder 938.
- the output of the decoder 938 is connected in controlling relation to the two buffers 932 and 936 as shown in Fig. 13, and the contents of the two buffers 932 and 936 are combined into a single input for an input-output address decoder designated 940.
- the output 942 of this decoder contains the addresses for selecting registers in another portion of the auxiliary processor 16 and is connected thereto in a manner which will be described.
- the auxiliary processor 16 is programmable on two levels, one of which involves instructions from the micro memory 890, the other of which involves an instruction set obtained from a control portion of the auxiliary processor 16. This level is the lower level and provides a mapping from the operation codes of the instructions coming from micromemory 890 to various function and control lines in the system.
- the control portion receives words from the micro memory 890 on path 944 connected to the input of a three state buffer 946.
- the control portion also includes another three state buffer 948, and the contents of the two buffers 946 and 948 are combined and applied to the data input of an address sequencer 950.
- address sequencer 950 can be a microprogram controller commercially available from Advanced Micro Devices under model no. AM2910.
- Output words from address sequencer 950 are applied through a path 954 to the address input of a memory 956, designated a nanostore.
- the nanostore 956 has the capability to contain up to 1024 words each fifty six bits in width and has a cycle time of sicty nanoseconds.
- the address sequencer 950 controls the sequence of execution of microinstructions stored in the nanostore 956.
- the words selected from nanostore 956 are transmitted through a path 958 to a pipeline register 960.
- the pipeline register 960 is provided to contain the bits which provide control signals for the other functional portions of the auxiliary processor 16. Providing the pipeline register 960 enables the commands to be stacked up and allows one command to be punched before execution of a previously received command is finished.
- Control bits from the output of the pipeline register 960 are present on a line designated P. This same line is applied to other components of the system to provide controls as shown as in Fig. 13. Additional control bits from register 960 are transmittted by a path 962 to the address input of address sequencer 950 and to the control inputs of buffers 946 and 948. Other control bits from pipeline register 960 are sent along a path 964 to the input of the three state buffer 948. Additional control bits from pipeline register 960 are transmitted by a path 966 to one input of a condition code circuit 968, the output of which is connected by line 970 to a control input of address sequencer 950.
- control bits from register 960 are transmitted by a path 972 to the input of the test selection logic circuit 974, the output of which is connected to another input of the conditioning code circuit 968.
- a status register 976 receives signals from other portions of the syste such as main store 12, communications bus 22, the input-output portion of the system, etc. The contents of register 976 are transferred along a path 978 to the test selection circuit 974.
- the test selection circuit 974 includes logic which selects input conditions from information contained in status register 976, and the conditioning code circuit 968 provides a transformation in the form of complementing the test selection bit.
- the auxiliary processor 16 further includes components for interfacing with the main store 12, a DMA controller 30, the input-output bus ensemble 28, and the communication bus 22.
- the memory interface includes a pair of 72 bit buffer registers 980 and 982, one for each direction, connected through the bidirectional path 48 to the main store bus 14.
- path 48 which contains 72 bits plus parity bits, is separated into a first branch for conveying bits into register 980 and a second branch for receiving bits from the other register 982.
- the registers 980 and 982, in turn, are connected to nine bit paths 984 and 986, respectively, and the directions of the paths are indicated by the arrows in Fig. 13.
- Path 984 is connected through a 16 bit branch path 988 to the output 882 from the microprocessor slices, and path 986 is connected to the 16 bit path 922 leading from the output of the multiplexer 908.
- the main store interface also includes a buffer to the direct memory access controller 30 including a first register 990 for storing the 16 bit byte count and a second register 992 for storing the 32 bit buffer address word.
- the output of register 992 is connected through a 32 plus parity bit path 996 to the main store bus 14.
- the registers 990 and 992 are connected by the bidirectional paths 998 and 1000, respectively, to the path 988 from the microprocessor slices.
- control circuit 1004 for the byte packing in the interface which includes a 16 bit wide bidirectional output path 1006 which also is connected to the 16 bit path 988 from the microprocessor slices.
- the control output of circuit 1004 is connected by a path 1008 to a main store control circuit 1010 which controls setting memory requests, loading buffers 980 and 982, etc.
- Two outputs of circuit 1010 are connected by paths 1012 and 1014 to the registers 992 and 990, respectively, for controlling incrementing of those registers.
- Another output of circuit 1010 is connected by line 1015 to buffers 980,982 for controlling loading of the same.
- the output of control circuit 1004 also is connected by a path designated 1016 to the other registers of the interface.
- the input-output channel interface includes a pair of buffer registers 1020 and 1024 connected through the bidirectional nine bit plus parity input-output channel path 50 to the I/O bus ensemble 28.
- Register 1024 is connected by a nine bit path 1026 to the 16 bit path 922 leading from the multiplexer 908, and register 1020 is connected by a nine bit path 1028 to the 16 bit path 988 from the microporcessor slice and via path 892 to micromemory 890.
- the communication bus interface includes a pari of registers 1030,1032 connected through the bidirectional path 52 to communication bus 22. This provides communication with the other auxiliary processors 16 as well as the execution processor 18.
- Register 1032 is connected through a 16 bit path 1034 to the path 988 from the microprocessor slice and then via path 892 to micromemory 890 and register 1030 is connected by a 16 bit path 1036 to the path 922 from multiplexer 908.
- the auxiliary processor 16 finally includes a diagnostic interface logic circuit designated 1040.
- One input to the circuit is connected by a path 1042 to the 16 bit path 922 leading from the multiplexer 908.
- Another input of circuit 1040 is connected to the diagnostic bus 24 and, accordingly, to the supervisory processor 20.
- a third input is connected to a path 1044 for receiving the entire contents of pipeline register 960.
- the output of the diagnostic interface 1040 is connected by a path 1046 to the 16 bit path 988 connected to the micro processor slice and to the path 892 connected to micromemory 890.
- the diagnostic interface 1040 contains control logic which allows the supervisory processor 20 to take control of the auxiliary processor 16 by disabling control signals, registers, etc. of the auxiliary processor 16 and introducing diagnostic and supervisory signals from the supervisory processor 20.
- the micromemory 890 contains the microcode by means of which the auxiliary processor 16 implements the various operations performed in the context of the overall system operation as previously explained. This would include, for example, control of the channel, main store port and some input-output devices as well as emulating input-output devices.
- Data and address information such as requests for service, data to be processed and new words to be stored in memory 890 are received through the appropriate buffer or interface and transmitted along path 988 and ultimately separated into address and data inputs to micromemory 890.
- the memory 890 and microprocessor slice 880 co-operate to generate instructions, identification codes and similar quantities which are conveyed along path 922 to the appropriate interface and ultimately to the appropriate component of the system.
- auxiliary processor 16 This is the upper level of programming for the auxiliary processor 16 where instructions are executed out of the program memory 890 which contains both instructions and data. The foregoing is all under control of the instruction set for the auxiliary processor 16 which is defined by the words in nanostore 956 which provide the control signals P to the various components of the auxiliary processor 16 as indicated in Fig. 13. This is the lower level of programming for auxiliary processor 16 where the instruction set is defined by providing a mapping from the op codes of words in nanostore 956 to the various function and control lines necessary to sequence the microprocessor slice 880.
- Fig. 14 illustrates in further detail the supervisory processor 20 shown in Figs. 1 and 5.
- the supervisory store designated 154 in Fig. 5 also is shown in the arrangement of Fig. 14 and is a 64K bit plus parity memory.
- the memory 154 stores instructions and data for such operations as initializing, configuring and diagnosing the system.
- the remote diagnostic interface 158 and diskette device 162 shown in Fig. 5 also are included in Fig. 14.
- the remainder of the arrangement of Fig. 14 is the supervisory and diagnostic processing unit designated 156 in Fig. 5. It includes a central processing unit 1060 which fetches, decodes and executes instructions associated with operation of the supervisory processor.
- unit 1060 can be a microprocessor commercially available from Zilog, Inc.
- the unit 1060 is connected through a bidirectional bus 1062 to buffers 1064 which, in turn, are connected to another bidirectional bus 1066 which leads through bus branches 1066a-g tovarious interfaces which will be described. Buffers 1064 send timing and control signals form the central processing unit 1060 to memory 154 over path 1068. Memory 154 is connected by a bidirectional bus branch 1070 to bus 1066 for transmission of data and address quantities to and from memory 154. Address quantities on bus 1062 are transmitted by a path 1072 from buffers 1064 to an input-output address decoder 1074. Decoder 1074 functions to select the particular interface which is to be operative at any given point in time.
- a memory bus interface 1080 which will be described in detail presently which is operatively connected between bus branch 1066a and the main store bus 14.
- There is a diagnostic bus interface 1082 operatively connected between bus branch 1066a and the diagnostic bus 24, a communication bus interface 1084 connected between the bus branch 1066c and the communication bus 22, and an input-output bus interface 1086 operatively connected between the bus branch 1066d and the input- output bus combination designated 102,104 in Fig. 5.
- the interface units 1082,1084 and 1086 are based on programmable interface controllers commercially available from Zilog, Inc. under the designation Z80A-PIO.
- a console interface is operatively connected between the bus branch 1066e and dual serial channels designated 1090,1092.
- interface unit 1088 can be a programmable dual channel device commercially available from Zilog, Inc. under the designation Z80A-SI0.
- a supervisory processor DMA interface controller 1095 is connected to the bus branch 1066f.
- interface unit 1094 can be a programmable, single channel device commercially available from Zilog, Inc. under the designation Z80A-DMA.
- a floppy disk interface controller 1096 is connected to the bus branch 1066g.
- interface unit 1096 can be a programmable floppy disk controller commercially available from
- a bidirectional path 1098 connectes the interface units 1094 and 1096 together.
- a cable 110 connects the floppy disk controller 1096 to appropriate drives.
- Diskette devices 162,162' also shown in Fig. 5 are connected to cable 1100.
- a multiple number of diskette devices can be used, for example up to eight.
- lines 1110, 1112, 1114, 1116, 1118, 1120 and 1122 connect outputs of the decoder circuit 1074 to the interface units 1080, 1082, 1084, 1086, 1088, 1094 and 1096, respectively.
- a word received by decoder 1074 is decoded to a signal on one or more of these lines for selecting one or more interface units which are to be active at a particular point in time.
- the arrangement of Fig. 14 further includes an arbitration circuit 1128 connected to another bus branch 1066h and to lines 1130, 1132, 1134, 1136, 1138, 1140 and 1142 from the interface units 1080, 1082, 1084, 1088, 1094 and 1096, respectively. These lines transmit service requests from the corresponding interface units and the circuit 1128 determines in what order the requests are to be honored.
- An output of decoder 1074 is transmitted by line 1148 to arbitration circuit 1128.
- the output of circuit 1128, indicating a request is pending, is transmitted by line 1150 to the processor 1060,
- Fig. 15 illustrates in further detail the memory bus interface 1080 of the arrangement of Fig. 14.
- the bus branch 1066a shown in Fig. 14 has data and address portions designated 1066a (Data) and 1066a (Address), respectively, in Fig. 15.
- the data portion of the bus is connected to a buffer 1160 which, in turn, is connected to a bus 1162 which is an extension of the bus branch portion 1066a (Data).
- Bus 1162 is divided into a plurality of branches leading to components for separating the data bits conveyed by bus 1162 on an operational or functional basis. For example, one branch of bus 1162 is connected to a component 1168 through which 72 bits plus 8 parity bits are transmitted through buffers 1170 to the main store bu 14.
- component 1172 72 bits plus 8 parity bits received from the main store bus 14 are received through component 1172 and returned through a branch bus to the bus 1162.
- the foregoing operation cocurs in a similar manner for the other components between bus 1162 and buffers 1170 which, for convenience, are labeled according to function in Fig. 15 with the bit size of the paths between the components and buffers 1170 being indicated by the numbers alongside the paths in Fig. 15.
- the component 1174 labeled "Fixed ID" is not connected to bus 1162 and includes switches for providing the indicated function.
- the bus portion 1066A (Address) is connected to the input of an address decoder 1180, the output of which is connected by a plurality of control lines, collectively designated 1182, to each of the components associated with buffers 1170. By virtue of this arrangement, both the component and the direction of data flow are selected.
- a pointer register and counter 1186 is connected through paths 1188 and 1190 to the components as shown in Fig. 15.
- a bus control logic circuit 1192 is connected by path 1194 to the buffers 1170 for providing arbitration for the transfer to and from main store bus 14.
- the interface finally comprises a logic circuit 1196 for providing signals indicative of interrupts status and error conditions which are sent by line 1130 to the arbitration circuit 1128 shown in Fig. 14.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Quality & Reliability (AREA)
- Multi Processors (AREA)
Abstract
Un systeme de traitement de donnees comprend un magasin principal actif et d'intelligence (12) consistant en une memoire principale (34), une unite principale de controle de magasin (36) pour l'acces a la memoire principale de maniere a permettre differentes structures d'adresses et de donnees, et un bus de magasin principal (14) connecte a l'unite de controle (36). Au moins un processeur d'un premier type est connecte au bus de magasin principal, celui-ci etant un processeur auxiliaire (16) pour effectuer des operations d'entree/sortie et autres. Au moins un processeur du second type est egalement connecte au bus de magasin principal, celui-ci etant un processeur d'execution (18) pour extraire decoder et executer des instructions. Tous ou certains des processeurs d'execution (18) et l'un ou l'autre ou les deux processeurs auxiliaires (16) peuvent etre differents. Un processeur de supervision (20) pour initier la configuration et la surveillance du systeme est connecte au bus de magasin principal. Un bus de communication (22) est connecte aux processeurs du premier et du second types et au processeur de supervision (20). Un bus de diagnostic (24) connecte le processeur de supervision (20) a chacun des processeurs du premier et du second types. Un ensemble de bus d'entree/sortie (28) est connecte au processeur de supervision (20) et a chaque processeur auxiliaire (16). Au moins un dispositif (112) et un controleur de dispositif associe (106) peuvent etre connectes a l'ensemble de bus d'entree-sortie (28). Au moins une unite de controle d'acces direct a la memoire (30) peut etre connectee entre le bus de magasin principal (14) et l'ensemble de bus entree-sortie (28).
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
AU64888/80A AU6488880A (en) | 1979-10-11 | 1980-10-06 | Data processing system |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US8367779A | 1979-10-11 | 1979-10-11 | |
US06/083,648 US4354225A (en) | 1979-10-11 | 1979-10-11 | Intelligent main store for data processing systems |
US83677 | 1998-05-22 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO1981001066A1 true WO1981001066A1 (fr) | 1981-04-16 |
Family
ID=26769550
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/US1980/001314 WO1981001066A1 (fr) | 1979-10-11 | 1980-10-06 | Systeme de traitement de donnees |
Country Status (2)
Country | Link |
---|---|
EP (1) | EP0037424A1 (fr) |
WO (1) | WO1981001066A1 (fr) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0075713A2 (fr) * | 1981-09-30 | 1983-04-06 | Siemens Aktiengesellschaft | Unité fonctionnelle additionnelle dans un microprocesseur, système à microprocesseur et méthode pour son fonctionnement |
GB2156550A (en) * | 1984-03-28 | 1985-10-09 | Daisy Systems Corp | Digital computer for implementing event driven simulation algorithm |
EP0184657A2 (fr) * | 1984-10-31 | 1986-06-18 | Flexible Computer Corporation | Système de traitement numérique à multi-ordinateur |
EP0204827A1 (fr) * | 1984-12-10 | 1986-12-17 | Advanced Computer Communications | Controleur de communication utilisant une memoire a acces aleatoire a connexions multiples |
EP0141445B1 (fr) * | 1983-09-14 | 1989-03-15 | Koninklijke Philips Electronics N.V. | Dispositif fonctionnel isolé comprenant un micro-ordinateur |
US4814983A (en) * | 1984-03-28 | 1989-03-21 | Daisy Systems Corporation | Digital computer for implementing event driven simulation algorithm |
WO1989003574A1 (fr) * | 1987-10-06 | 1989-04-20 | Fraunhofer Gesellschaft Zur Förderung Der Angewand | Procede de codage numerique adaptatif par transformees |
US4872125A (en) * | 1987-06-26 | 1989-10-03 | Daisy Systems Corporation | Multiple processor accelerator for logic simulation |
US4873656A (en) * | 1987-06-26 | 1989-10-10 | Daisy Systems Corporation | Multiple processor accelerator for logic simulation |
US4916647A (en) * | 1987-06-26 | 1990-04-10 | Daisy Systems Corporation | Hardwired pipeline processor for logic simulation |
EP0426156A2 (fr) * | 1989-11-03 | 1991-05-08 | Compaq Computer Corporation | Commande de disque souple avec vérification des opérations DMA |
Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3893084A (en) * | 1973-05-01 | 1975-07-01 | Digital Equipment Corp | Memory access control system |
US3905023A (en) * | 1973-08-15 | 1975-09-09 | Burroughs Corp | Large scale multi-level information processing system employing improved failsaft techniques |
US4015243A (en) * | 1975-06-02 | 1977-03-29 | Kurpanek Horst G | Multi-processing computer system |
US4032899A (en) * | 1975-05-05 | 1977-06-28 | International Business Machines Corporation | Apparatus and method for switching of data |
US4034347A (en) * | 1975-08-08 | 1977-07-05 | Bell Telephone Laboratories, Incorporated | Method and apparatus for controlling a multiprocessor system |
US4035777A (en) * | 1973-12-14 | 1977-07-12 | Derek Vidion Moreton | Data processing system including parallel bus transfer control port |
US4038645A (en) * | 1976-04-30 | 1977-07-26 | International Business Machines Corporation | Non-translatable storage protection control system |
US4065809A (en) * | 1976-05-27 | 1977-12-27 | Tokyo Shibaura Electric Co., Ltd. | Multi-processing system for controlling microcomputers and memories |
US4084230A (en) * | 1976-11-29 | 1978-04-11 | International Business Machines Corporation | Hybrid semiconductor memory with on-chip associative page addressing, page replacement and control |
US4107773A (en) * | 1974-05-13 | 1978-08-15 | Texas Instruments Incorporated | Advanced array transform processor with fixed/floating point formats |
US4130865A (en) * | 1974-06-05 | 1978-12-19 | Bolt Beranek And Newman Inc. | Multiprocessor computer apparatus employing distributed communications paths and a passive task register |
US4133030A (en) * | 1977-01-19 | 1979-01-02 | Honeywell Information Systems Inc. | Control system providing for the transfer of data in a communications processing system employing channel dedicated control blocks |
US4149239A (en) * | 1976-02-13 | 1979-04-10 | Digital Equipment Corporation | Secondary storage facility for connecting to a digital data processing system by separate control information and data transfer paths |
US4200930A (en) * | 1977-05-23 | 1980-04-29 | Burroughs Corporation | Adapter cluster module for data communications subsystem |
US4228496A (en) * | 1976-09-07 | 1980-10-14 | Tandem Computers Incorporated | Multiprocessor system |
-
1980
- 1980-10-06 WO PCT/US1980/001314 patent/WO1981001066A1/fr not_active Application Discontinuation
-
1981
- 1981-04-21 EP EP19800902206 patent/EP0037424A1/fr not_active Withdrawn
Patent Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3893084A (en) * | 1973-05-01 | 1975-07-01 | Digital Equipment Corp | Memory access control system |
US3905023A (en) * | 1973-08-15 | 1975-09-09 | Burroughs Corp | Large scale multi-level information processing system employing improved failsaft techniques |
US4035777A (en) * | 1973-12-14 | 1977-07-12 | Derek Vidion Moreton | Data processing system including parallel bus transfer control port |
US4107773A (en) * | 1974-05-13 | 1978-08-15 | Texas Instruments Incorporated | Advanced array transform processor with fixed/floating point formats |
US4130865A (en) * | 1974-06-05 | 1978-12-19 | Bolt Beranek And Newman Inc. | Multiprocessor computer apparatus employing distributed communications paths and a passive task register |
US4032899A (en) * | 1975-05-05 | 1977-06-28 | International Business Machines Corporation | Apparatus and method for switching of data |
US4015243A (en) * | 1975-06-02 | 1977-03-29 | Kurpanek Horst G | Multi-processing computer system |
US4034347A (en) * | 1975-08-08 | 1977-07-05 | Bell Telephone Laboratories, Incorporated | Method and apparatus for controlling a multiprocessor system |
US4149239A (en) * | 1976-02-13 | 1979-04-10 | Digital Equipment Corporation | Secondary storage facility for connecting to a digital data processing system by separate control information and data transfer paths |
US4038645A (en) * | 1976-04-30 | 1977-07-26 | International Business Machines Corporation | Non-translatable storage protection control system |
US4065809A (en) * | 1976-05-27 | 1977-12-27 | Tokyo Shibaura Electric Co., Ltd. | Multi-processing system for controlling microcomputers and memories |
US4228496A (en) * | 1976-09-07 | 1980-10-14 | Tandem Computers Incorporated | Multiprocessor system |
US4084230A (en) * | 1976-11-29 | 1978-04-11 | International Business Machines Corporation | Hybrid semiconductor memory with on-chip associative page addressing, page replacement and control |
US4133030A (en) * | 1977-01-19 | 1979-01-02 | Honeywell Information Systems Inc. | Control system providing for the transfer of data in a communications processing system employing channel dedicated control blocks |
US4200930A (en) * | 1977-05-23 | 1980-04-29 | Burroughs Corporation | Adapter cluster module for data communications subsystem |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0075713A3 (fr) * | 1981-09-30 | 1986-02-19 | Siemens Aktiengesellschaft | Unité fonctionnelle additionnelle dans un microprocesseur, système à microprocesseur et méthode pour son fonctionnement |
EP0075713A2 (fr) * | 1981-09-30 | 1983-04-06 | Siemens Aktiengesellschaft | Unité fonctionnelle additionnelle dans un microprocesseur, système à microprocesseur et méthode pour son fonctionnement |
EP0141445B1 (fr) * | 1983-09-14 | 1989-03-15 | Koninklijke Philips Electronics N.V. | Dispositif fonctionnel isolé comprenant un micro-ordinateur |
GB2156550A (en) * | 1984-03-28 | 1985-10-09 | Daisy Systems Corp | Digital computer for implementing event driven simulation algorithm |
US4751637A (en) * | 1984-03-28 | 1988-06-14 | Daisy Systems Corporation | Digital computer for implementing event driven simulation algorithm |
US4814983A (en) * | 1984-03-28 | 1989-03-21 | Daisy Systems Corporation | Digital computer for implementing event driven simulation algorithm |
EP0184657A2 (fr) * | 1984-10-31 | 1986-06-18 | Flexible Computer Corporation | Système de traitement numérique à multi-ordinateur |
EP0184657A3 (fr) * | 1984-10-31 | 1987-02-04 | Flexible Computer Corporation | Système de traitement numérique à multi-ordinateur |
EP0204827A1 (fr) * | 1984-12-10 | 1986-12-17 | Advanced Computer Communications | Controleur de communication utilisant une memoire a acces aleatoire a connexions multiples |
EP0204827A4 (fr) * | 1984-12-10 | 1989-02-13 | Advanced Comp Comm | Controleur de communication utilisant une memoire a acces aleatoire a connexions multiples. |
US4872125A (en) * | 1987-06-26 | 1989-10-03 | Daisy Systems Corporation | Multiple processor accelerator for logic simulation |
US4873656A (en) * | 1987-06-26 | 1989-10-10 | Daisy Systems Corporation | Multiple processor accelerator for logic simulation |
US4916647A (en) * | 1987-06-26 | 1990-04-10 | Daisy Systems Corporation | Hardwired pipeline processor for logic simulation |
WO1989003574A1 (fr) * | 1987-10-06 | 1989-04-20 | Fraunhofer Gesellschaft Zur Förderung Der Angewand | Procede de codage numerique adaptatif par transformees |
EP0426156A2 (fr) * | 1989-11-03 | 1991-05-08 | Compaq Computer Corporation | Commande de disque souple avec vérification des opérations DMA |
EP0426156A3 (en) * | 1989-11-03 | 1995-03-15 | Compaq Computer Corp | Floppy disk controller with dma verify operations |
US5442753A (en) * | 1989-11-03 | 1995-08-15 | Compaq Computer Corp. | Circuitry for providing replica data transfer signal during DMA verify operations |
Also Published As
Publication number | Publication date |
---|---|
EP0037424A1 (fr) | 1981-10-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US4354225A (en) | Intelligent main store for data processing systems | |
US4527237A (en) | Data processing system | |
US4516199A (en) | Data processing system | |
US4028675A (en) | Method and apparatus for refreshing semiconductor memories in multi-port and multi-module memory system | |
US4500958A (en) | Memory controller with data rotation arrangement | |
US3673576A (en) | Programmable computer-peripheral interface | |
US4418382A (en) | Information exchange processor | |
US4003033A (en) | Architecture for a microprogrammed device controller | |
EP0173809B1 (fr) | Appareil et méthode pour l'arbitrage des requêtes d'interruption / DMA multiplexées | |
EP0175873B1 (fr) | Concentrateur de message sans dispositif de balayage et multiplexeur de communication | |
US4031517A (en) | Emulation of target system interrupts through the use of counters | |
US4860244A (en) | Buffer system for input/output portion of digital data processing system | |
US4025906A (en) | Apparatus for identifying the type of devices coupled to a data processing system controller | |
US4028668A (en) | Apparatus for selectively addressing sections and locations in a device controller's memory | |
US4412281A (en) | Distributed signal processing system | |
US4870704A (en) | Multicomputer digital processing system | |
US4495571A (en) | Data processing system having synchronous bus wait/retry cycle | |
US4750113A (en) | Dual function I/O controller | |
US4300193A (en) | Data processing system having data multiplex control apparatus | |
EP0209565B1 (fr) | Processeur de liaison de transmission de donnees imprimante-bande | |
US4509115A (en) | Two-port memory controller | |
US4293908A (en) | Data processing system having direct memory access bus cycle | |
EP0175620B1 (fr) | Disposition de vérification d'accès pour système numérique de traitement de données ayant une mémoire avec pagination à la demande | |
JPH0782479B2 (ja) | エラ−検出、分離および回復装置 | |
WO1981001066A1 (fr) | Systeme de traitement de donnees |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AK | Designated states |
Designated state(s): AT AU BR CH DE DK FI GB HU JP KP LU NL NO RO SE SU |
|
AL | Designated countries for regional patents |
Designated state(s): AT CH DE FR GB LU NL SE |
|
WWE | Wipo information: entry into national phase |
Ref document number: 1980902206 Country of ref document: EP |
|
WWP | Wipo information: published in national office |
Ref document number: 1980902206 Country of ref document: EP |
|
WWW | Wipo information: withdrawn in national office |
Ref document number: 1980902206 Country of ref document: EP |