CA1123521A - High speed buffer memory system with word prefetch - Google Patents

High speed buffer memory system with word prefetch

Info

Publication number
CA1123521A
CA1123521A CA318,476A CA318476A CA1123521A CA 1123521 A CA1123521 A CA 1123521A CA 318476 A CA318476 A CA 318476A CA 1123521 A CA1123521 A CA 1123521A
Authority
CA
Canada
Prior art keywords
address
main memory
signals
system bus
raf
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired
Application number
CA318,476A
Other languages
French (fr)
Inventor
Thomas F. Joyce
Thomas O. Holtey
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Bull HN Information Systems Inc
Original Assignee
Honeywell Information Systems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Honeywell Information Systems Inc filed Critical Honeywell Information Systems Inc
Application granted granted Critical
Publication of CA1123521A publication Critical patent/CA1123521A/en
Expired legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F02COMBUSTION ENGINES; HOT-GAS OR COMBUSTION-PRODUCT ENGINE PLANTS
    • F02BINTERNAL-COMBUSTION PISTON ENGINES; COMBUSTION ENGINES IN GENERAL
    • F02B75/00Other engines
    • F02B75/02Engines characterised by their cycles, e.g. six-stroke
    • F02B2075/022Engines characterised by their cycles, e.g. six-stroke having less than six strokes per cycle
    • F02B2075/027Engines characterised by their cycles, e.g. six-stroke having less than six strokes per cycle four
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6022Using a prefetch buffer or dedicated prefetch cache

Abstract

ABSTRACT

A data processing system includes a plurality of system units all connected in common to a system bus. The system units include a central processor (CPU), a memory system and a high speed buffer or cache system. The cache system is word oriented and comprises a directory, a data buffer and associated control logic. The CPU requests data words by sending a main memory address of the requested data word to the cache system. If the cache does not have the information, apparatus in the cache requests the information from main memory, and in addition, the apparatus requests additional information from consecutively higher addresses.
If main memory is busy, the cache has apparatus to request fewer words.

Description

BACK~ROUND OF THE INVENTION
Field of the Invention This invention relates generally to minicomputing systems and more particularl~ to storage hierarchies having high speed low capacity storage devices and lower s~eed high capacity storage devices coupled in common to a systems bus.

Description of the Prior Art The storage hierarchy concept is based on the phenomena that individual stored programs under execution exhibit the behavior that in a given period of time a localized area of memory receives a very high frequency of usage. Thus, a memory organization that provides a relatively small size buffer at the CPU interface,and the various levels of increasing capacity slower storage can provide an efective access time that lies somewhere in between the range of the fastest and the slowest elements of the hierarchy and provides a large capaci~y memor~ system that is "transparent"
to the software.
Prior art was limited to storing the requested data word~with its ~address in hardware registers. When the need came about for expanded size, low cost buffers, the prior art u~ilized a block organization. If a particular word was requested by the CPU, the block containing that word was stored in a high speed data buffer. This had the disadvantage of bringing into the high speed buffer words with a relatively low probability of us~ge. Assuming a four word block, if word 4 is requested, the entire block including words lr 2 and 3 which may have a relatively low probability of usage, are brought into the high speed buffer. To optimize the usage of the memory hierarchv, the operating system w~

must oryanize memory in such a manner that software submodules and data blocks start with word l of the block. To overcome this difficulty, the prior art utilized a "block lookahead". When one block was in the high speed buffer, a decislon was made during the processing of a data word in that block to bring the next block into the high speed buffer.
U. S. Patent No. 3,231,868 issued to L. Bloom et al., entitled "Memory Arrangement for Electronic Data Processing System" discloses a "look aside" memory which stores a word in a register and its main memory address in an associated register. To improve perfor-mance, U. S. Patent No. 3,588,829, issued to L. J. Boland et al., discloses an eight-word block fetch to the high speed buffer from main memory if any word in the eight~word block is requested by the CPU.

An article by C. J. Conti, entitled "Concepts for Buffer Storage" published in the IEEE Computer Grouv News, March 1969, describes the transfer of 64-byte blocks as used on the IBM 360/85 when a ~articular byte of that block not currently in the buffer is requested. The~IBM 360/85 is described generally on pages 2 through 30 of the IBM System Journal, Vol. 71, No. l., 1968.
U. SO Patent No. 3,588,829 issued to Boland, et al., entitled "Integrated Memory System with Block Transfer to a Buffer Storel' describes the prefetching of a block of information if a word in that block is re~uested.
U. S. Patent No. 3,820,078 issued to Curley et al entltled "Multilevel Storage System Having A Buffer Store ~ith Variable Mapping Modes" describes the transfer of blocks of 32 bytes or half~blocks of 16 bytes from main memory to the high speed buffer when a word (4 bytes) of the block or half-block is requested by the CPU. Uv S. Patent No. 3,896,419 issued to Lange et al., entitled "Cache Memory Store In A Processor Of A Data Processing System" describes the transfer of a four word block from main memory to the high speed buffer when a word of that block is k _5_ requested by the CPU. U. S. Patent No. 3,898,624 issued to Tobias entitled "Data Processing System With Variable Prefetch and Replacement Algorithms" describes the prefetching of the next line (32 bytes) from main memory to the high speed buffer when a specific byte is requested by the CPU of the previous line.
In minicomputers, particularly those minicomputers which are organized in such a fashion that a plurality of system units are connected in common to a system bus, the prior art systems present a number of problems all having to do with reducing the through-put of the minicomputer. The prior art sends back to cache frommain memory the entire block of words in which the requested word is located. This includes words with addresses preceding the requested word and words with addresses following the requested words. In most cases, the CPU will require on the following cycle the word in the next higher address. Thls results in words with high probability of being used as well as words with ~lower probability of being used being transferred into cache. To over-come this problem, the prior art requires that the programmer or the operating system optimize their programs to start sequences off with words at the first address of each block. Another problem in the prior art is that a block of words transferring from main memory to cache comes over in successive cycles, for example, a 32 b~te block may be transferred in 8 cvcles, 4 bytes at a time. In the minicomputer bus oriented system, this would greatly reduce the throughput of the system.

O~J~CTS OF T~ INV~NTION_ It is an ~hject of the invQntion to provide a cache system having an increased throughput capability.

I~ `s another object of the inventlon to provide a system which minimizes main memory interference.

SU~ RY OF THE INVENTION
The above and other objects are achieved in a preferred embodiment of the present invention which comprises a main memory, a central processor (CPU), a cache store all connected in common to a system bus. The cache store provides first access to in~
formation previously fetched from main memory by way of the system bus. The CPU requests information from the cache system over a private CPU-cache interface. If the information is in cache, it is returned immediately to the CPU over the private CPU-cache interface. If the information is not in cache; then the cache requests the information over the system bus from main memory and the cache receives the requested information over the system bus from main memory. The probability is high that the next information requested by the CPU .Ls in the next higher address location in main memory. It would therefore increase the throughput of the overall data processing system if that information from the next higher address location could be brought into cache immediately. This invention provides apparatus for prefetching not only the information in the next higher address location, but prefetches information from a plurality of successively higher locations in main memory to cache over the system bus. In some main memory configurations when main memory is busy processing information from other systems connected to the system bus, and the cache requests information over the system bus, main memory sends out a "busy" logic signal over the system bus. This invention senses the busy signal and requests less information from main memory than if main memory were no-t busy.

In one embodiment, main memory is organized as an inter-leaved double fetch memory, that is even addresses are in one memory bank and odd addresses are in another memory bank. This allows some increase in main memory throughput. The double fetch feature provides up to 2 data words of information for each main memory request. Interleaved memories are used throughout the industry. This interleaved memory is conventional in design.
Typical interleaved memories are described in U.S. Patent No.
3,796,996, issued March 12, 1974.
~hen the CPU request, information from cache and that requested information is not in cache, apparatus in ~ache sends
2 requests over the system bus to main memory for a total of 4 data words of information. If main memory responds over the system bus that main memory is busy after receiving the first request, then logic circuits in cache respond to the "busy' by repeating the first request. When the first requ~Qst is accepted by main memory, cache sends the second request over the system bus to main memory. If main memory responds with a busy logic signal, then apparatus in~the cache cancels the second request and awaits the 2 data words of information from main memory over the system bus~
In another embodiment, main memory is organized as a banked double fetch memory, that is each memory bank has consecutive address locations. When the CPU requests information from cache and that requested information is not in cache, apparatus in cache sends 1 request to main memory over the system bus for 2 data words of information. If main memory responds over the system bus with a "busy" signal, then cache responds by repeating the request to main memory over the system bus.
3~
In accordance with the present invention, there is provided a data processing system comprising: a system bus; an addressable main memory cou-pled to said bus, said main memory including a plurality of sets of word loca-tions, each set of word locations b.eing defined by a column address, and each word ].ocation within a set being identified 'oy a row address; a cache unit coupled to said system bus, said cache unit comprises: a data buffer includ-ing a plurality of word locations arranged in a plurality of sets of word locations defined by said column addresses; a directory including a plurality of word locations corresponding in number to the numb.er of sets in said data buffer and being addressable by said column address, each word location of said directory storing a row address of a corresponding one of said words of said set stored in said data buffer; a central processor unit (CPU) coupled to said system ~us; an address register coupled to said system bus and to said CPU for receiving a fetch request address from said CPU, address generating means coupled to said address register for generating successive addresses from said fetch request address; a replacement address file (RAF) coupled to said CPU and said address generating means for receiving signals corresponding to said fetch request address and said successi.ve addresses respectively;
comparing means operatively connected to said clirectory and to said CPU for comparing at least a ~ortion of said ~etch request address with the row ad-dress read from said directory and generating a hit - no hit signal indicative of whether or not the word being requested is in said data store; timing means for generating control signals in response to said fetch request address for conditioning said address register and said RAF to store said fetch request address and requi:red successive addresses during a memory request cycle of operations; and, memory request means responsive to said no hit signal for transferring as part of a memory request said fetch request addres:s and requir-ed successive addres~es to said system hus for Eetch.ing the reqllested words from said main memory when said main memory is not busy. ~ ~-In accordance wit~.the present invention, there is further provided a data processing system compris:ing: a system bus; an addressab:le main memory coupled to said bus-, said main memory inclllding a plurality of locations; a data buffer including a plurality of locations; a directory including a plurality oE locations corresponding in number to the num~er oE locations in said data buffer for storing an address identifying a corresponding one of said locations of said data buffer; a central processor unit (CPU) coupled to said system bus; an address register coupled to said system bus and to said CPU for receiving a fetch request address from said CPU; address generating means coupled to said address register for generating successive addresses from said fetch request; a replacement address file (RAF) coupled to said CPU
and said address generating means for receiving signals corresponding to said fetch request address and said successive addresses respectively; comparing means operatively connected to said directory and to said CPU for comparing at least a portion of said -fetch request address with the address read from said directory and generating a hit - no hit signal indicative of whether or not the word being requested is in said data store; timing means for generat-ing control signals in response to said fetch request address for conditioning said address register and said RAF to store said fetch request address and re~uired successive addresses during a memory request cycle of operations; and memory reques* means responsive to said no hit signal for transferring as part of a memory request said fetch request address and required successive address-2Q es to said system bus for fetching the requested ~ords from said main memory when said main memory is not busy.
The novel features which are ~elieved to be characteristic of the invention both in its organization and method of operation, together with fur-ther objects and advantages, will be better understood from the fol]owing description when considered in connection with the accompanying drawings. It is to be expressly unders*ood, however, that each of the drawings is given for the purpose of illustration and description only and is not intended as a definition of the limits of the present invention.

9a -3~

BRIEF DESCRIPTION OF THE DRAWINGS
. . . _ Figure 1 is a block diagram of the overall system;
Figure 2 is a block diagram of the cache system;
Figure 3 is a logic circuit diagram of Clock Control and FIFO R/W Control;
Figure 4 is a logic circuit diagram of AOR and RAF
Control, the R~F Write Address Counter and the RAF Read Address Multiplexer;
Figure 5 is a logic circuit diagram of Cycle Control and System Bus Control;
Figure 6 is a timing diagram of the prefetch operation with an interleaved memory;
Figure 7 is a timing diagxam of~the prefetch operation with a ban]ced memory;
Figure 8 shows the system bus formats; and Figure 9 is a flow diagram illustrating the prefetch operation.

.

" .

2~

DESCRIPTION OF THE PREFERRED EMBODIMENTS
OVERALL SYSTEM
_ Figure 1 is a block diagram of a minicomputer system which comprises a central processor unit (CPU) 2, a main memory 3, an input/output multiplexer ~IOM) 7, a system bus S, a cache directory and data buffer (cache) 1 and a system support channel (SSC) 8. Not shown are the normal complement o~ standard peri-pherals connected to the system by SSC 8. With the exception of SSC 8, each unit couples to the s~istem bus 5 via an interface signal bus 4, SSC 8 couples to the IOM 7 through inpu~/output ~I/O~ bus 9. In addition, CPU 2 and cache 1 are interconnected by a private interface signal bus 6. IOM 7, I/O bus 9 and SSC 8 are not pertinent to the invention and will not be described in detail.
CPU 2 is designed for use as a co~munications network processor and is a firmware controlled 20 bits per word binary machine. Main memory 3 can be added to the system in modules of 32,768 words up to a maximum of 8 modules or 262,144 words.
~ain memory 3 is made up of random access MOS chips with 4,096 bits stored in each chip and has a read/wri~e cycle time of 550 nanoseconds. Cache 1 provides an intermediate hi~h speed storage ~Jith a maximum read/write cycle time of 240 nanoseconds. CPU 2 requests a data word from cache 1 over private interface 6 and obtains the data word if in cache 1 in 110 nanoseconds over private interface bus 6. If the requested data is not in cache 1, then CPU 2 receives the data via main memory 3, bus 5, cache 1 and bus 6 in 960 nanoseconds. If cache 1 was not in the system, then the CPU 2/main memory 3 read access time is 830 nanoseconds.

Usiny the preetch techniques of this inventions assures that in 3~

~ost cases over 90% of the requested data words are stored in cache 1 thereby greatly increasing the throughput of the system using cache l over a system without cache l. System bus 5 permits any two units on the bus to communicate with each otherO
To communicate, a unit must request a bus 5 cycle. When the bus 5 cycle is granted, that unit may address any other unit on bus 5.
I/O bus 9 is iden~ical to system bus 5 in performance and .in signal makeup. IOM 7 controls the flow of data betwaen bus 5 and the various communications and peripheral controllers of the system via I/O bus 9. SSC 8 is a microprogrammed peripheral controller which provides control for various devices (not shown).
Other controllers (not shown~ may also connect to I/O bus 9.
CPU 2 updates data in main memory 3 by sending the data word with its main memory 3 address and the appropriate control signals out on bus 5. Cache l, since it reads all information on bus S
into a register in cache l will be updated if that data word location is stored in cache l. This assures that information stored at each address location in cache l is the same as infor-mation stored at the corresponding address location in main memory 3.
CPU 2 requests data from cache 1 by sending the requested address ~RA) over private interface 6 to cache l. If the data i5 stored in cache l, the requested data is sent back to CPU 2 from cache l over private i.nterface 6. If the requested data is not in cache l, cache 1 requests the data of main memory 3 over bus S and in addition cache l requests three additional data words from address locations PR~l, PRA+2 and PRA~3 for the interleaved memory or one additional word of data from address location PRA+l for the banked memory9 ~en the data words are received from main memory 3 over bus 5 by cache l, they are 3~ ~

written into cache 1 and the requested data word is sent from cache 1 to CPU 2 over private interface 6 CACHE SYSTEM
Figure 2 shows the cache 1 system which includes a bus interface unit 10, a replacement and update unit 11, a cache directory and data buffer unit 12, an address control unit 13 and a private cache-CPU interface unit 6. Figure 2 is made up of 4 sheets~ The information flow is best 5een with sheet 2 at the left, sheet 1 on the right, sheet 3 helow sheet 1 and sheet 4 below sheet 3.

BUS INT~RFACE UNIT 10 - Figure 2, Sheet 1 Bus interface unit 10, Figure 2, comprises drivers 212, 214 and 218, receivers 213/ 215 and 217, and system bus control logic unit 219.
Bus interface unit 10 connects to bus 5 through interace signal bus 4. Bus 5, interface signal bus 4 and system bus control 219 are disclosed by UOS~ Patent Nos. 3,993,981 entitled "Apparatus For Processing Data Transfer Requests In A Data Processing System", and 4,030,075 entitled "Data Processing Systems ~aving Distri~uted Priority Network" and will be described herein only as necessary to provide continuity to the description.
The lB address leads BSAD05-22 are connected between bus 5 and the junction of ~he driver 212 and the receiver 213 of bus interface unit 10. The output of receivers 213, 215 and 217 connect to a First-In-First-Out (FIFO) buffer 2030 The 20 bit data word lines BSDT A, B, 00-15, BSDP 00, 08 are connected to the junction of the driver 214 and receiver 215. A number of control signal li~es are connected to the junction of the driver 218 and ~13-3~

the receiver 217~ These control logic signals sus request BSREQT, data cycle now BSDCN~I, bus acknowledge ssAcKR~ bus wait BSWAIT, BSAD 23, second half bus cycle ~SSHBC and bus double pull BSDBPL input system bus control 219 through receiver 217 and are distributed to other logic control units which will be descxibed infra as well as being sent out on bus 5 through driver 218.
The My Data Cycle Now logic signal MYDCN~- connects between System Bus Control 219 and dri~ers 212, 214 and 218.
Signal bus BSAD 08-17, the output of receiver 213 connects to Cycle Control 232 of the Replacement and Update Unit 11. The output of an address register (AOR) 207 18 bit address BAOR 05-22 in the address control unit 13 connects to the input of driver 212.
Cache identi~ication code 00028 and function code 8 or 018 are encoded on the input of a dr.iver 214 whose output is comlected to the bus 5 data lines 35DT A, B, 00-15. Logic circuit signals : described infra::are connected between other units o~ cache 1 and system bus control 219.
The receiver driver pairs 212 and 213, 214 and 215, and 217 and 218 are 26510 circuits described on paye 4-28 of the catalog 20 entitled "Schottky & Low Power Schottky Bipo:lar Memory, Logic &~
Inter~ace Published by Advanced Micro Devices, 901 Thompson Place, Sunnyvale, California 94086.

REPLACEMENT ~ND UPDATE UNIT 11 - Fi ure 2, Sheet 3 The replacement and update unit 11 Figure 2 includes the FIFO buffer 203, a local register (LR)204, buffer bypass drivers 205, FIFO R/W control 230, clock control 220 and cycle control 232.
Replacement and update unit 11 receives from Bus Interface Unit 10 the 18 bit update address BSAD 05-22, the 20 bit data word BSDT A, B, 00-15, BSDP 00, 08 and control signals all of which connect between FIFO 203 and their respective receivers 213, 215 and 217. A 18 line replacement address signal bus AOR
05-22 connects between the input of LR 204 and a replacement address file (RAF~ 206 output in address control unit 13. Signal busses FIFO 00-17~ FIFO 19-38 and FIFO L8, 39-43 connect between the FIFO 203 output and LR 204 input. Also connected between the replacement and update unit 11 and the other units of lS cache 1 are control signals described infra.
A 20 bit data word signal bus DATA 00-19-~ connects between ; the output of the buffer bypass driver 215 unit and a~junction 216 in cache directory and data buf~er unit 12. The 18 line update or replacement address signal bus FIFO 00-17+ connect between the output~of LR 2~04 and one input of 2:1 MUX 208, and the 20 bit data~output signal lines DATA 00-19- connect between the output of LR 204 and a cache data buffer 201.
Read address counter output logic signal FRADDR and FRBDDR
connect between FIFO R/W Control 230 and FIFO 203 as do write address counter output FWADDR and FWBDDR and Write Strobe signal FWRITE. Logic signal CYFIFO connects between FIFO R/W control 230, cycle control 232 and LR 204. Logic Signal FIFO 41+ connects between the FIFO bit position 41 output of FIFO 203 and FIFO read 3~

enable terminals for FIFO 00-17. Logic Signals FIFO 41- connects between the FIFO bit position 41 output of FIFO 203 and the RAF 206.
FIFO 18, 42 and 43 connect between a ~ead Address Multiplexer 233 and their respective bit position outputs of FIFO 203. Logic Signal MEMREQ connects between cycle control 232, System bus control 219 and a 2:1 MUX 209 switch. CLOCK0+ connects between Clock Control 220, cycle control 232 and o~her logic units described infra. Logic signal WO HIT+ connects bet~een FIFO R/W control 230, cycle control 232 and NA~D 231 of cache directory and data buffer Unit 12. Logic signal REPLACE connects between the LR 204 output, a 2:1 MUX 223 switch and a Round Robin 224 logic unit. Logic signal FEMPTY- connects between FIFO R~W control 230 and Clock Control 220. Logic signal CACHRQ connects between interface 6 and Clock Control 220 and logic signal CYCADN connects to inter-face 6 from cycle control 232.
FIFO 203 is organized as four 44-bit registe s made up of random access memory chips 74LS 670 described on page 7-526 of the TTL Data Book for Design Engineers, second edition, copy-right 1976 by Texas Instruments of Dallas, Texas. LR 204 is a 44 bit register made up of conventional flips ~lsing conventional desi~n techniques. Address, data and control information are gated by logic signal busses FIFO 00-17, FIFO 19-38 and FIFO 18, 39-43 respectively. FIFO 19-38, the data signal bus is gated through buffer bypass drivers 205 by logic signal INTERG~ going high. Bu~fer bypass drivers 205 are made up of 74 367 circui~s described on page S-69 of the aforementioned TTL Data ~ook.
FIFO R/W control 230 provides read address counter signals FR~DDR and FRBDDR, write address coun~er signals FWADDR and Fl~3DDR, a write strobe F~RITE to select the FIFO 203 registers for reading ~ ~3~

and writing. A FEMPTY- signal going hi~h indicating that the FIFO buffer is not empty starts CLOCX0+ cycling in clock control 220. A FIFO 41+ signal low indicates that the LR 204 18 bit address field LR 0-17 will be filled from RAF 206 over the 18 line AOR 05-22 signal bus.
The replacement cycle is operative in response to the CPU 2 memory request logic signal CACHRQ. lf the requested information is not in cache 1, a request for the information is sent by cache 1 to main memory 3 over bus 5. The requested information coming back from main memory 3 over bus 5 is sent to CPU2 and written into data buffer 201. This operation is called replace-ment.
Cache 1 reads all information on bus 5 into FIFO 203. If that information was to update main memory 3, then cache 1 checks to see if that main memory 3 address location is stored in the data buffer 201. If the information address location is stored in the data huffer 201, then the data word in that location is updated with the new information data word. This operation is called update. Co-pending relation applications 1 and 3 listed supra disclose the replacement and the update operation in more ~etail~

CAOEIE DIRECTORY ~YD DATA BUFFER 12 - Figure 2, sheet 4 The cache directory and data buffer 12 comprises the data buffer 201, the directory 202, 4 comparators 221a-d, the 2:1 MUX 208, a round robin 224 logic unit, a 2:1 MUX 223, 18 inverters 5 225, 20 ~IAND gates each of 251a-t, 252a-t, 253a-t, and 254a-t, an ~ND gate 231 and the junction 216.
Signal busses are coded as follows in the specifications and figures. For example, for row address ADDR 00-07-10, ADDR
is the signal name. ADDR 00-07 refers to the 8 signal leads 10 labeled ~DDR 00, ADDR 01~.. ADDR07. ADDR 00-07- indicates that the signals are low if th~y indicate a "1" and high if they indicated a "0". ADDR 00~07-10 indlcates that this signal bus 10 of 8 bit row address ADDR 00-07-.
Main memory 3 address BAOR 05-22+ signal lines connect 15 between bus 6 and one input of 2:1 MUX 208 of the cache directory and data buffer unit 12. Address signal lines FIFO 00-17+, connect between the output cf LR204 and the other input of 2:1 MUX 208.
2:1 MUX 208 output signal bus ADDR 00-17~ connects to 18 inverters 225 whose output ADDR 00-17-10 splits into row address ADDR
20 00-07-10 and column address ADDR 08-17-10. Row address ADDR
00-07-10 connects to directory 202 and to one input each of 4 comparators 221a-d. Column address ADDR 08-17-10 connects to the data buffer 201, directory 202 and column address ADDR 08-17+
connects to round robin 224. Row addresses ADDR 00-07-20, -21, 25 -22 and -23 connect to the second input each of 4 comparators 221a-d, logic signals HIT 0-3+ connect to an input of a 2:1 MUX 223 and also to one input each of 20 N~D 251a-t circuits, 20 NAND
252a-t circuits, 20 NAND 253a-t circuits and 20 N~ND 254a-t circuits.

~L ~, ~' 3 ~iO ~

The round robln 224 output, LEVEL 0-3~ connects to the second input of 2:1 MUX 223. The output of 2:1 MUX 223, the 4 logic signals WRITE 0-3 each connects to their respective level 0-3 of data buffer 201 and Directory 202. The outputs of data buffer 201 20 bit 5 signal busses CADP 00-19 -10, ~ 12 and -13 connect to ~he second input and logic signal INTERG~ connects to the third input of NAND 251a-t, 252a-t, 253a-t and 254a-t whose respective output signal busses CADP 00-19~ connects to junction 216. Data word signal bus CADP 00-19+ connects between junction 216 and interface 6. The output signals HIT 0-3~ connects to the input of NAND 231, the output of which connects to cycle control 232 and FIFO R/W control 230. 2:1 MUX's 203 and 223 are switched by logic signals ADDRSO+ and REPLACE respectively. Logic signal REPLACE connects to round robin 224.
Data buffer 201 is organlzed in four levels, each level storing 1,024 data words in 1,024 word locations addressed by 10-blt column address ADDR 08-17-10. Four words, one from each level, CADP 00-19-10, ~ 12, and -13 are read out of data buf~er 201 when the data buffer 201 is addressed. Directory 20 202 is also organized in four levels of 1jO24 memory locations in each lev~l. Each memory location stores an 8 bit row address.
When 10 bit column address ADDR 08-17-10 inputs directory 202, four 8 bit row addresses ~DDR 00-07-20, -21, -22 and -23 are read out of the four levels of directory 202 to four comparators 221a-d. These row addresses are compared with the input row address ~DDPi 00-07-10 and if there is an equal, that "hit" line HIT 0+, HIT 1~, HIT 2-~ or HIT 3+ goes high gating the 20 bit output of data buffer 201 through the appropriate 20 circuits of ~AND

251a-t, 252a-t, 253a-t or 254a-t to junction 216 and to CPU2.

Round robin 224 has two, one bit by 1024 address random access memories ~R~M). For each address location, there is stored 2 bit in each RAM which when decoded selects the next level of that column address to be replaced.
The directory 202 and data buffer 201 are designed using random access memory chips 93 LS 425 and round robin 224 is designed using random access memory chips 93 415, described on pages 7-119 and 7~70 respectively in the sipolar Memory Data Book, copyright 1977, by Fairchild Camera and Instrument Co.
of Mountain View, California. Compara~or 221a-d logic circui-~s are made up of Fairchild TT~/MSI 93S47 high speed 6 bit iden~ity comparator circuits. 2:1 MUX 208 and 223 are 75S157 logic circuits described on page 7-181 o the aforementioned TTL Data Book. The ro~d robin 224 operation is described in copending related applicatior No, 2 listed supra.

.

ADDRESS CONTROL UNIT 13 ~ Figure 2, sheet 2 Address control unit 13 inclucles the address register AOR 207, the replacement address file RAF 206, an adder 211, an AND gate 236, an EXCLUSIVE OR gate 237, a 2:1 MUX 209, the read address multiplexer 233, a write address counter 234t and an AOR and RAF control unit 235. CPU2 address signal lines BAOR 05--22+ connect between interface 6 and one inpu-t of 2:1 MUX 209. Logic signal MEMRE~ connects between cycle control 232 and the select terminal of 2:1 MIJX 209~ The output of 10 adder 211 signal lines AOR 05-22+ connects to the other input of 2:1 MUX 209 whose output signal lines BAOR 05-22 connects to the inputs of AOR 207 and RAF 206. Signal bus BAOR Q5-22 +10 connects between the output of AOR 207 and the inputs to adder 211 and driver 212. AOR 207 is organixed as an 18 bit register lS made up of conventional flops. RAF 206 is organized as four 18 bit registers and is designed using the aforementioned random access memory chips 74 LS 670. The logic signals ADDRR0 and ADDRRl connect between the write address counter 234 and RAF 206/ AOR and RAF control 235, AND gate 236 and EXCLUSIVE OR
20 gate 237. The outputs of AND 236 and EXCLUSIVE OR 237 connect to the +2 and +1 texminals respectively of adder 211. Logic signals ADDRWD+OB and AD~RWD+0A connect between the read addrPss multiplexer 233 and RAF 206. An AORCNT logic signal connects between AOR and RAF control 235 and write address counter 234.
Logic signals BAWRIT and BAORCK connect between AOR and RAF
control 235 and RAF 206 and AOR 207 respectively.
For the interleaved memory operation the address control unit 13 logic loads AOR 207 with PRA, the CPU memory request address to send out on bus 5 to main memory 3 in a format of Figure 8b durlng a first memory request cycleO AOR 207 is then loaded with PRA+1 which is the memory request address sent out on bus 5 to main memory 3 in the format of Figure 8b during the second memory request cycle. RAF 206 is loaded with PRA, PRA+1, PRA-t2 and PRA+3 in successive locations under control of write address counter 234, adder 211 and AOR and RAF control 235.
These addresses are supplied to the address field of LR 204 when information in the ormat of Figure 8c are sent from main memory 3 to cache 1 over bus 5. For the banked memory operation of the address control unit 13 logic loads AOR 207 with PRA, the -CPU2 memory request address which is sent out on bus 5 to main memory 3 in the format of Figure 8b during the memoxy request cycle. RAF 206 is loaded with PRA and PRA-~1 in successive locations under c~ontrol of the wrlte address counter 234. These addresses are supplied to the:address field of LR204 when information in the format of Figure 8c are sent from main memory 3 to cache 1 over bus 5. The read address multiplexer 233 selects the R~F
206 address location to be read out of LR 204 for each main memory 3 response o~er bus 5 to the read request of cache 1. The adder 211 output signal lines AORO 05-22+ provides the address stored in AOR 207 incremented by +1 or -t2 under control of AND 236 and 237.
If the write address counter 234 is set at location 03, logic signals ADDRR0~ and ADDRRlt are high, therefore AND 236 enables the +2 input of adder 211. If the write address counter is set at locations 01 o:r 02 then the output of EXCLUSIVE OR 237 enables the +l input to adder 211. The adder 211 is a 74 283 logic circuit described on page 7-415 of the aforementioned TTL Data Book.

3~

C~"HE CPU INTERFACE l.,~lTT 6 Cache CPU Interface Unit 6 includes an 18 line address siynal blls BAOP~ ~5-22/ a 20 line data signal bus C~DPOO-l9 and a control signal bus containing a num~er of signal lines. 2 of the control si-;nal lines CACHRQ the cacne request logic signal and CYCAD~I the ca~he done logic signal are described hereinu Cache CPU int~rface unit 6 is ~ully described in copending related Application l~o, 9 listed supra.

~ysTEr~l 9U5 5 CONTR3L SIGN~LS
Th~ signals listed below are the bus 5 control signals necessary ~o clescribe the invention. The aforementioned U.S.
~a~en~ references fully describe all of the control signals associated with bus 5 a L~l_ ry ReferencQ (BSMREF) 1~ BSM~EF high indicates that the address loads BSAD 05-22 contain a memory 3 word address.
BSMREF lo~ indicates tha~ the address leads BSAD 08-23 contain a channel address and a ~unction code.
Bus Write (BSWPIT) ~SWRIT high indicates that a master unit is requesting a slave unit to execut a write cycle.
Second Half Bus Cycle (BSSHBC) BSSIIBC high indicates that main memory 3 is sending o cache 1 information previously re~uested by cache 1.
~5 Dol~le Pull (BSDBPL) _ _ ~SDBP~ is hi~h when sent ~rom cache 1 to main memory 3 to sicJnal mai7l me~Q~ 3 to read data in do~ble pull roc1e.
E'iDBPL is high when sent from main memory 3 to cache 1 with the first word of a two word response to a memory request.

BSDBPL is low when sent rom main memory 3 to cache 1 ~7ith the second word of a two word response to the memory request.
This enables main memory 3 to send one or two words to cache. If, for example, PRA is the hlgh order address of a memory bank then BSDBPL will be low indicatlng that only one word will be transferred in response to the memory request.
My Acknow~edge (MYACKR) MYACKR when high is sent by cache 1 to system bus 5 to indicate that cache 1 is accepting a system bus 5 data word transfer from main memory 3.
~y Bus P~equest (MYREQT) MYREQT when high is set by cache 1 to system bus 5 to indicate that cache 1 is requesting a system bus 5 cycle.
My Data Cycle_Now_(~YDCNN) MYDC~N high indicates that cache 1 is transferring inform-I5 ation over system bus 5 to main memory 3.
Data Cycle Now (BSDCNN) _ _ _ BSDCNN high indicates that main memory 3 has placed information on the bus 5 for use by cache 1.
Acknow~ed~e ~BSACKR) BSACKR h~igh lndicates to cache 1 that main memory 3 has accepted the memory re~uest sent by cache 1.
Wait ~BSWAIT) _ BSWAIT high indicates to cache 1 that main memory 3 is busy and cannot accept the memory request at this time.
BUS Request (BSREQT) .
BSREQT high indicates to cache 1 that a system coupled to bus 5 has requested a bus cycle.
Byte Mode (BSBYTE) BSBYTE high indicates a byte transfer rather than a word transfer.

~ 7~;3~

CLOCK CONTROL 220 - Fi~ure 3, Sheet 2 . .
The cache request logic signal CACHRQ, Flgure 3, connects to a l~ESET terminal of a flop 301 and to an input terminal of a N~N~ 302. /~ clock si~nal CLOCK0+ conn~cts to thc ~LIC termina.
5 of flop 301. The Q output of flop 301 connects to the second input o NAND 302. The CPUREQ~OA~ output of a NAND 306 connects to the third input of NAND 302 whose output connects to an input of 30 ns delay line 303 and an input of NAND 304. The output of delay line 303 connects to the other input of NAND 364.
The Q output o~ flop 301, logic signal BLKREQ~ connects to a D and l~SET input of flop 305. The logic `'1" signal connects to the SET input of flop 305. A MYACKR logic signal connects to the CLK input of flop 305. The Q outpu~ signal INTERG~ connects to buffer bypass drivers 205 and th.e Q output signal INTERG-15 connects to the input of the ~ITO-3-~ NAND gates 251a-t, 252a-t, 253a-t and 25~a-t in the cache directory and data ~uff~ unlt 12.
Logic slynal F~MPr~Y-20 connects to an input of AND 324 and to the input of in~rter 307. A logic signal M~M~Q connects::to an input of MAND 306. A logic signal ADDRSo-, tne Q outpu~ o~ flop 20 ~ 3Q9 connects to another input of N~ND 306. Logic signal CYQLTO+ connects between cycle control 232 and the third input of N~D 306. Lo~ic signal ADDRSO~, the Q output o flop 309 connects to the select input of 2:1 MUX 208 in cache directory and data buffer unit 12. The output of N~D 308 connects to the SET terminal, CLOC~O~ connects to the CLK texminal and a general cl~ar CLEAR signal connects to the reset terminal OL flop 3C9.
Loyic signals CYFIFO~OA and CYWRIT~OA connect to respective inputs of NAND 308. A CPUREQ logic signal connects to the Nr~D 30 output ~o a S~T terminal of flop 313. An FEMPTY logic signal connects to a RESET terminal of flop 313 from an inverter 319 output. A Q output terminal logic signal F~TPY~20 and a Q
output logic signal ~E~IPTY-20 of flop 313 connect to t~.e re~pective ~L~t~3~

input of a NOR 310. A CYREAD logic signal connects between the Q output of a flop 330 and the third input of NOR 310 and CLOCK0+ connects to the fourth input of NOR 310. The output of NOR 310 connects to an input of NOR 311. The CLOCK0+
connects to an invertex 312 input. A CLOCK0- input signal of inverter 312 connects to an input of NAND 315.
Clock control 220 provides a timing signal CLOCX0+ to time the logic circuits of cache 1. CLOCK0+ starts cycling on either a CPU2 memory re~uest or by FIFO 203 being loaded with inform-ation from bus 5. In the case of the CPU2 memory request, logicsignal CACHRQ, the input to NAND 302 is forced high, which sets the output low. The other two inputs t:o NAND 302 ~LKREQ- and CPUREQ~OA are high at this time. Flop 301 is not set so the Q output is high and both inputs to NAND 306 are low so the output is high. ',~hen the output of NP~ID 302 goes low, one input of NAND 304 goes low and 30 nanoseconds later the other input goes low due to the delay in delay line 303. The delayed signal low sets logic signal CPUREQ high. I,ogic signaI CPURE~:
the SET input of flop 313 high sets the Q output FEMPTY-20~1Ow.
Flop 313 is a 74S74 logic circuit which h-as both the Q and Q
outputs high when both the SET and PRESET inputs are low. Flop 74S74 is described on page 5-22 of the aforementioned TTL Data Book.
The logic signal FEMPTY-20 low sets the output o~ NOR 310 high forcing the timing signal CLOCK0+ output of NOR 311 low.
Fifty nanoseconds later, the output of delay line 314 forces the other input of NOR 31I goes low forcing timing signal CLOCK0~
high. Timing signal CLOCK0-~ going high sets flop 301 setting the Q output logic signal BLKREQ low, forcing the output of NAND 302 3~2~

forcing the NAND 304 output logic signal CPUREQ, the SET input to flop 313 low setting logic signal FEMPTY-20 high keeping the timing signal CLOCK0+ output of NOR 311 high. Timing signal CLOCK0+ remains high as long as logic signal CACHRQ remains high.
Logic signal CACHRQ will remain high until CPU2 receives the reques~ed data word and the cache done logic signal CYCADN is sent to CPU2.
Flop 313 which controls the start of cycling of CLOCK0~
is also controlled by the loading FIFO 205. The write address counter flops 316 and 317 in FIFO R/W control 230 advance to the next location after receiving acknowledged information from bus 5 (~5ACKR high). This sets the output of comparator 318, logic signal FEMPTY+ low, setting the inverter 319 output logic signal FEMP~Y- high. With the RESET input logic signal EEMPTY-of flop 313 high, the Q output logic slgnal FEMPTY+20 goes low starting the timing signal CLOCK0+ cyc:Ling as before. In this case, timing signal CLOCK0+ cycles as Long as there is information in FIFO 203, and logic signal F~MPTY- keeps going low and logic signal CYREAD the input to NOR 310 is low. CPUREQ+OA output logic signal from NAND 306 stays low as long as the MEMREQ or ADDRS0-inputs to NAND 306 are high. This prevents a CPU2 memory request cycle if logic signal CACHRQ is again high until the previous responses to ~he main memory 3 requests as a result of a previous CPU2 memory request is sent to cache 1. MYACKR logic signal going high at the start of the main memory 3 response to the CPU2 memory request sets flop 305 setting logic signal INTERG+ high to gate buffer bypass drivers 205 to send the CPU2 requested data (PRA) directly out on interface 6. INTERG- when high gates NAND 251a-t, 252a-t, 253a-t and 254a-t in cache directory and data buffer 12 to allow the selected word from data buffer 201 to be ~L 3 r ~

sent to CPU2 if the data word ~as stored in data bu~fer 201 when logic signal CAC~RQ was set high. The logic signal FEMPTY+30 input to the SET terminal o~ flop 301 assures that the flop 301 does~not set when logic signal CACHRQ comes high during a ~IFO 203 cycle. Flops 301, 305 and 313 are 74S74 logic circuits described on page 5-22 of ~he aforementioned ~TL ~ata Book. Flop 309 is a 74S175 logic circuit described on page 5 46 of the TTL Data BoQk.

DETAILED DESCRIP~ION OF FIFO R/W COMTROL 230 - Figure 3, Sheets 1 & 2 In Figure 3, the output of a NAND 324 connects to the SET
input, a general clear signal CLEAR connects to the RESET input and timing signal CLOCK0+ connects to the CLX input of a flop 3230 The Q output logic signal CYFIFO connects to a NAND 315 input. Timing signal CLOCK0- connects between the inverter 312 output and the other input of NAND 315. The Q output, logic signal CYFIFO also connects to cycle control 232. The Q output connects to the input o~ AND 324. Logic signal FEMPTY-2Q
connects to the other input of AND 324. A suMPUP logic signal output of NAND 315 connects to the CLK inputs, and CLEAR connects to the RESET inputs of~flops 316 and 317. The logic "1" signals connects~to the J, X and PRESET inputs of flop 316, and the PRESET
input of flop 317O The Q output of f1QP 316 connects to the J
and K inputs of flop 317 and to a comparator 318 input. The Q~
output of 1Op 317 connects to comparator 318. The Q outputs of flop 316 and 317 connect to the read address select terminals of FIFO 203. A MYACKR+ logic signal and a BSSHBC logic signal connect to NAND 322 whose output, logic signal F plus 1 connects to the CLK inputs of flops 320 and 321. CLEAR logic signals connect to the RESET lnputs of flops 320 and 321. Logia "1" signals connec~s to the J, K and PRESET inputs of flop 320 and the PRESET input of flop 321. The Q output of flop 320 connects to comparator 318 ~ ~ ~3~

and the J and K input of flop 321. The Q output of flop 321 connects to comparator 318. The Q OUtplltS of flops 320 and 321 connect to the write address select terminals of FIFO 203.
FIFO 41+ logic signal connects to the read enable terminals of address field FIFO bit positions 00~17 of FIFO 203. A ground signal connects to the read enable terminals of the data and control field FIFO bit positions 18-43 of FIFO 203. FIFO 41+
connects to the SET input o~ LR 204 replace-update bit position 41 flop. Logic signals CYFIFO, REPLACE and NOHIT+ connect to input terminals of NOR 325 whose output connects to a NOR 327, whose output logic signal CYWRITlDA connects to the SET input of flop 330 and an input of NAND 308. Timing signal CLOCK0+
connects to the CLK terminal, and CLEAR connects to the RESET
terminal of flop 330 whose Q output logic signal C~READ connects :to round robin 224 and an input to NOR 310. Logic signal BSDCNN+
connects to~the input of an inverter 326 whose output connects to t~le inputs of delay lines 328 and 329. Delay line 328 output connects to an input of inverter 331 whose output connects to an input of NAND 332. The output of delay line 329 connects to the other input of NAND 332 whose output logic signal FWRITE connects to the write enable te~minal of FIFO 203. Logic signal ~OHIT~
connects to an input of inverter 334 whose output logic signal NOHIT- connects to an input of NOR 333 whose output connects to the ~ other input of NOR 327. Logic signals CYFIFO and UPDATE connect to the other inputs of NOR 333.
Logic signal BSDCNN~ goes high at the start of every main memory 3 to cache 1 data transfer cycle, is inverted by inverter 326, is delayed 10 nanoseconds by delay line 328, is again inverted.
by inverter 331 appearing at the first input of N~ND 332 as a delayed positive logic signal. The output of delay line 329 is a negative going logic signal appearing at the second input of NAND 332 delayed 40 nanoseconds. The 2 inputs to N~ND 332 are positive for 30 nanoseconds forcing the FWRITF write enable input to a negative going pulse 30 nanoseconds wide, delayed 10 nanoseconds from the rise of BSDC~N+. This strobes the bus 5 information at the output of receivers 213, 215 and 217 into a location of FIFO 203 defined by the Q outputs of the write address flops 320 and 321 logic signals FWADDR- and FWBDDR-.
MYACKR goes high, if a cache identification AND 546 output, figure 5, goes high indicating that cache ID 00028 was re~eived from 10 bus 5 through receiver 213 and that this i5 not a main memory 3 write operation. When BSDCNN+ delayed 60 nanoseconds goes high, flop 516 sets and logic signal MYACKR, the input to NAND 322 goes high. Since this is a response to a memory request, BSSHBC
is high forcing the output of NAND 322 logic signal F PLUS 1 low.
15 Forcing the CLK inputs of flops 320 and 321 low incrernents the write address counter flops 320 and 32 Lo Since the output logic signals FWADDR~ and FWBDD~+, of the write address counter flops 320 and 321 and logic signals FR~DDR+ and FRBDDR+I outputs of the read address counter 1Ops 316 and 317 are no longer equal, logic signal FEMPTY~, the output of comparator 318 goes low, starting CLOCK0+ cycles as previously described in Clock Control Write address counter flops 320 and 321 and xead address counter flops 316 and 317 are conventional JK flops 74S112 described on page 5-24 of the aforementioned TTL Data Book and they operate in the following manner. Assume flops 320 and 321 are both reset, that is the Q outputs FWADDR- and FWBDDR-axe high. When FPLUS 1 goes low, flop 320 sets on the fall of logic signal FPLUS 1. The Q output of flop 320 being low and ~J~ 3 ~

connect to the J and K terminals of flops 321 keeps flop 321 reset. With flop 320 set and its Q output high, flop 320 resets and flop 321 sets on the next fall of logic signal FPLUS 1.
On the next fall of logic signal FPLUS 1, both flops 320 and 321 are set and on the fourth fall of logic signal FPLUS 1, both flops are reset. The rise of CLOCK0+ sets flop 323 and its Q output, logic signal CYFIFO goes high. When CLOCK0+ next goes low, both logic signals CYFIFO and CLOCK0 inputs to NAND
315, go high forcing the output logic signal BUMPUP low, advancing the read address counter flops 316 and 317. The inputs to comparator 318 FWADDR~ and FWBDDR+ equals FWADDR+ and FWBDDR+
setting FEMPTY+ high stopping of timing signal CLOCK0+ if no bus 5 cycle logic signal BSDCNN+ is present. Logic signal FEMPTY+ is inverted by invertex 319 ancl the output logic signal FEMPTY- going low sets the FEMPTY+20 output of flop 313 high, forcing the output of NOR 310 low, forcing the CLOCK0+ output of NOR 311 high. Logic~signal CYFIFOI Figure 2, golng high sets the ~;~ FIFO 203 output of the location indicated by the read address~
counter flops 316 and 317 (FRADDR- and FRBDDR-) into LR 204.
If the information in FIFO 203 was a response to a memory request, FIFO 41+ is high. This sets LR 204, F/F 41, Figure 3, so that its Q output, logic signal REPLACE is high. If logic signals REPLACE, CYFIFO and NOHIT+, the inputs to NOR 325 are high, its output is low setting the output of lnverter 327 high, so that at the next rise of CLOCK0+, flop 330 sets and the Q output logic signal CYREAD goas low indicating that this is a cache write cycle.
Flop 309 of clock control 220 was previously set since CYWRITE+OA

and CYFIFO+OA were low in previous cycles setting the Q output ADDRSO+ high, switching 2:1 MUX 208 Figure 2, to receive memory 3~'f~ ~

address BAOR 05-22+. At the rise of CLOCK0~, logic signal CYFIFO~0A is high, since flop 323 is not set and the Q output which is high lnputs AND 324. The E'EMPTY-20 input to AND 324 is also high, forcing the CYFIFO+OA input to NAND 308 high, setting the output low. Since the SET input to flop 309 is lOwr the Q output ADDRS0+ goes low, switching 2:1 MUX 208, Figure 2, to receive the FIFO 00-17+ address output from LR 204 Flop 323 when set is reset on the next rise of CLOCK0+ since the Q output which inputs AND 324 is lowy forcing the SET~input of flop 323 low, resetting flop 323 and the Q output logic signa} CYFIFO goes low. Inverter 334 and NOR 333 are not necessary to describe this invention. ~heir contribution to the logic will be described in copending applicationS 1 and 3 listed supra.
lS Flops 323 and 330 are 74S175 logic circuits described on ;:~; page 5-46 of the aforementioned TTL Data Book.

::

:

.

3~

FIGURE 4, SHEET 1 FIGURE 4, S~IEET 2 The outputs of a N~ND 417 and 418 cor~ects to NOR 419 inputs.
Logic signal BLOCKF connects between a NAND 417 and cycle control 232. Logic signal FEMPTY-20 connects between clock control 220 and the 3rd input of NOR 419 whose output logic signal AORCNT
connects to the inputs of delay lines 420 and 421, an input of a NAND 424 and an input to a NAND 416. The output of N~D 424 logic signal BAORCK connects to AOR 2070 The delay line 421 output connects to an inverter 423 input whose output logic signal AORCNT-30 connect to the CLK inputs of flops 426 and 427. The delay line 420 output connects to an inverter 422 input whose output connects to inputs of NAND 416 and NANr) 424. Logic signal BAWRIT
connects between the output of NAND 416, the input of NAND 425, and the WRITE strobe terminal o-f RAF 206. Logic signal ~EMREQ
connects~to a NAND 425 input, the RESET input flops 412 and 413 and cycle control 232. The output of NAND 425 connects to the reset terminals of flops 426 and 427. Logic "1" signals connect to the PRESET inputs of flops 426 and 427 an~ the J and K inputs of flop 427. The Q output of ~lop 426, logic signal ADDRRO+ connects to the Write Address terminal 2 of RAF 206 and connects ~o the input of NAND 418 Logic signal MYACRR connects between another input of NAND 418 and cycle control 232. The ~ output of flop 426 logic signal ADDRRO- connects to inputs of NAND 417 and NAND 424. The Q output of flop 427, logic signal ADDRRI+ connects to the Write Address terminal 1 of RAF 206 and the input of NAND 417 ~33-Logic signal BSDCND~ connects between cycle control 232 and the CLK terminal of a flop 409. Logic signal BSAD 23+ connects to the SET input of flop 409 and the output of Receiver 217.
Logic signal MYACKD connects between cycle control 232 and input 5 of NAND 410 and 411. The Q output of flop 409, logic signal BSAD 23+10, connects to the other input of NAND 410. The Q
output of flop 409, logic signal BSAD 23-10, connects to the other input of NAND 411. The output of NAND 410 connects to the CLK terminal of flop 412 and the output of NAND 411 connects to the CLK terminal of flop 413. Logic "1" signal connects to the PRESET, J and K terminals of 1Ops 412 and 413. The Q
output of flop 412, logic signal FCHONE+ connects to the input of FIFO bit position 43 of FIFO 203, figure 4. The Q output of flop 413, logic signal FCHZRO+, connects to the input of the 15 FIFO bit position 42 of FIFO 203. Logic signal BSAD23+ connects to the input of the FIFO bit position 18 of FIFO 203. The output of the PIFO bit position 18 connects to a select terminal 1 of MUX 414 and 415. The MUX's are 74 S153 dual 4 lines to 1 line Data Selectors/Multiplexers desaribed on page 5-42 of the afore-mentloned TTL Data Book. Terminal 1 of a Banked-interleaved select switch 4~07 is connected to ground. Terminal 2 is connected to logic "1". Logic signal BANKED+00 connects between terminal 3 and an input to inverter 408 whose output logic signal ADDRWD+
connects to select terminal 2 of 4:1 MUX 414 and 415. Logic signal BANKED~OO also connects to cycle control 232. The enable input and the terminal 2 input of 4:1 MUX 414 are connected to ground as is the enable input and the terminal 0 input of 4:1 MUX
41S. Input 3 of 4:1 MUX 414 and input 1 of 4:1 MUX 415 are connected to logic "1". Input 0 of 4:1 MUX 414 and input 2 of ~ ~35~
4:1 MUX 415 connect to the FIFO bit position 42 output of FIFO
203 and input 1 of 4:1 MUX 414 and input 3 of 4Ol MUX 415 connect to the FIFO bit position 42 output of FIFO 203. The outputs of MUX 414 and 415, logic signals ADDRWD~OB and ADDRWD+OA
connect to the Read Address terminals 1 and 2 respectively of RAF 206 and also connect to cycle control 232. Logic signal FIFO 41~ connects to the read enable input of RAF 206. Logic signal BSDCNB+ connects between the RESET input of flop 403 and cycle control 232.
When CACHRQ, Figure 3, goes high indicating that CPU2 is requesting a data word and CPU2 also sends the main memory 3 address location BAOR 0S-22~, Figure 2, of the requested data word, the address BAOR 05-22 (PRA) appears at the inputs of AOR 207 and location 00 of RAF 206. In addition, the address is 15 sent to directory 202 and data buffer 201 as row address ADDR00-07-10 and column address ADDR 08-17-10. 2:1 MUX 208 is switched by ADDRSO+ high to input BAOR 05-22+ and a directory 202 search is s~arted. When FEMPTY-20, the output of flop 313, Figure 3, goes low the AORC~ output of NOR 419, Figure 4, goes high, setting 20 one input to NAND 416 and 424 high. Since the other inputs to NAND 416 and 424 are high logic signals BAWRIT and BAORCK go low.
50 nanoseconds later the output of delay line 420 goes high setting the output of inverter 422 low, setting the outputs of NAND 416 and 424 logic signals BAWRIT and BAORCR high. PRA is 25 strobed into AOR 207 and into location 00 of RAF 206 when BAWRIT
and BAORCK are lowO Logic signal AORCNT going high is delayed 70 nanoseconds by delay line 421 and is inverted by inverter 423.
Inverter 423 output logic signal AORCNT-30 going low advances Write Address Counter 234 to location 01. The Write Address Counter is made up of JK flops 426 and 427 whose operation has been described supra. Logic signals ADDRRI~ is now high and ADDRR0+ is low setting the Write Address in R~F 206 to location 01.
Assuming the data requested by CPU2 of Cache 1 is not stored in Cache 1 then MEMREQ+, figure 5, is forced high. In figure 2 MEMREQ high transfer 2:1 MUX 209 to receive the AORO05-22+ output of ADDER 211. Since logic signal ADDRRl~ is high and logic signal ADDRRO~ is low, the +1 output of EXCLUSIVE OR 237 is high forcing PRA+l on the address signal lines AORO 05-22+ and on the 2:1 MUX 209 output signal lines BAOR 05-22.
For bokh banked and interleaved memories the first memory request is sent to main memory 3 over bus 5 and an acknowledge signal BSACKR returned by main memory 3 to cache 1 over bus 5 set loglc signal BLOCKF+ high, figure 5. Whe~ BLOCKF+ goes high the 3 inputs to NA~D 417, figure 4, are high setting the output low. This sets the output of NOR 419 logic signal AORCNT high which sets logic signal BAWRIT the RAF 206 write strobe and logic signal BAORCK the AOR 207 strobe low as 20 described supra, setting PR~+l into AOR 207 and Location 01 of R~F 206. Logic signal AORCNT-30 going low as before advances the write address counter 234 to Location 02. For Location 01 logic signal ADDRRI~ is set high and logic signal ADDRO-~ is set low. The fall of logic signal AORCNT-30 sets logic signal ADDRRO+ high and sets ADDRRI~ low and the ~rite Address Counter 234 addresses Location 02. The banked memory system now awaits the main memory 3 response to the first memory request whereas the interleaved memory system sends a second memory request.
At the end of the second memory request cycle logic signal '''7~ v~

MYACKR+, figure 5, goes high to start the first main memory 3 to cache 1 data response cycle. Since logic signal ADDRRO+ is also high the output of NAND 418 goes low setting logic signal AORCNT, the output of NOR 419 high. As previously described, logic signal BAWRIT goes low setting PRA+2 into location 02 of RAF. In figure 2, PRA~l remains stored in AOR 207. When the Write Address Counter 234 is set at location 02 the output logic signals ADDRRO+ high and ADDRRl~ low results in the +l output from EXCLUSIVE OR 236 going high and the output of ADDER
211 puts PRA+2 on the address signal line, AORO 05-22+ and BAOR
05-22, the output of 2:1 MUX 209. Note that logic signal BAORCK
the write strobe for AOR 207 is not set low since the logic signal ADDRRO- input to N~D 424 is low. The Write Address Counter 234 is advanced to location 03 when AORCNT-30 goes low as described supra and logic signal ADDRRO+ and ADDRRl+ are both set high. This results in the +2 output of AND 236, figure 2, going high which sets the output of ADDER 211 to PRA+3~ Logic signal MYACKR again comes high at the start of ~he second main memory 3 to cache 1 data word cycle in response to the first memory request again forces logic signal AORCNT high, forces logic signal BAWRIT low and forcing PRA+3 into location 03 of RAF 206 and advancing the Write Address Counter 234 to location 00.
For an interleaved memory 4 data words are transferred from main memory 3 to cache 1 over bus 5 on 4 separate bus~5 cycles.
Figure ~c shows the format of the responses. The low order bit BSAD23 of the Function Code identifies whether the data word is in response to the fixst memory request or the second memory request for data words. Logic signal BSAD 23+ and the Function Code histoxy flops 412 and 413 identiies the location of RAF 206 ~?~r~

that stores the main memory 3 address for the data word being transferred. The first data word is at the PRA main memory 3 location and transfers from main memory 3 cache 1 with the Function Code set to 8 BSAD 23+ the low order bit of Function
5 Code 8 is low and sets into FIFO bit position 18 of FIFO 203 figure 2, when the FIFO strobe FWRITE- goes low. Also, at this time the function history flops 412 and 413 are not set and the outputs logic signals FCHZRO+ and FCHONE+ are low setting the FIFO 42 and FIFO 43 bit positions low. With Switch 407 set to interleaved, the input to inverter 408 logic signal BANKED
is low setting the output logic signal ADDRWD~ high, setting the SELECT terminal 2 high. This sets the 2 and 3 input terminals of 4:1 MUX 414 and 415 active. FIFO 18 sets SELECT terminal 1 of 4:1 MUX 414 and 415 low setting input 2 activeO Since 15 FIFO 42 i5 low the outputs of 4:1 MUX 414 and 415 logic signals ADDRWD+OB and ADDR~D+OA are low which sets the read address of RAF 2.06 to location 00 and PRA appears on address signal lines AORO 05-22, figure 2, and is strobed into LR 204 when logic signal CYFIFO goes high. BSAD 23+ is low the Q output which inputs NAND 411 goes high. When logic signal MYACKD, the input of NP~TD 411 goes high the output of NA~TD 411 goes low setting flop 413 with the Q output logic signal FCHZRO+ high.
On the next bus 5 cycle the data word PRA~2 location in main memory 3 is transferred to cache 1 and the Function Code on bus 5 25 signal lines BSAD 18-23 i9 still 00 and BSAD 23+ the low order bit is low. In this case, in figure 4/ FIFO bit position 18 of FIFO
203 is set low and FIE'O bit position 42 is high. Since flop 413 is set with the Q output logic signal FCHRZO+ high. The outputs of 4:1 MUX 414 and 415, logic signal ADDRWD+OB is low and logic sig~al ADDRWD+OA is high since the 2 input terminal of 4:1 MUX 414 is "0" and the 2 input terminal of 4:1 MUX 415 is a "1", reading out location 02 of RAF 206 which has the PRA-~2 address stored.
The third data word transfer cycle over bus 5 brings the data word from the PRA+l main memory 3 location with a Function Code of 018. In this case, BSAD 23~ is high and FIFO bit position 18 of FIFO 203, figure 4, is high setting the 3 input terminal of 4:1 MUX 414 and 415 active. FIFO bit position 43 is low and FIFO bit position 42 is a "don't care". In this case with FIFO 18 high the ADDRWD+OB output of fl.op 414 is high and the ADDRWD+OA output of flop 415 is low reading out from P~F 206 location 01 which contains PRA+l. BSAD 23 high causes flop 409 to set when logic signal BSpCND+ goes high, setting the Q output logic signal BSAD23+1d high forcing the output o~ ~AND 410 low when logic signal MYACKD+ goes high. This sets flop 412 and its Q output logic signal FCHONE+ goes high. The 4th bus 5 cycle bringing the data word from the PRA+3 location in main memory 3 has a Function Code of 01. BSAD 23 high as before sets FIFO bit position 18 high and FIFO bit position 43 is set high since logic signal FCHONE+ is high.

The output of 4:1 MUX 414 and 415 logic signals ADDRWD+OB
is high and ADDRWD+OA are high reading out RAF 206 location 03 which stores PRA+3. Flops 412 and 413 are reset when logic signal MEM~EQ+ goes low.
For a banked memory, two data words are transferred from main memory 3 to cache 1 over bus 5 Oll two separate bus 5 cycles.

3~

In this case, switch 407 is set to terminal 2 ~banked), setting the input of inverter 408 high, forcing the output logic signal ADDRWD+ low. Also, for the banked memory, the function code is 8 as the response to the memory request. Therefore, BSAD23 is low for both data words sent to cache 1 from main memory 3 over bus 5. FIFO bit position 18 of FIFO 203 is therefore low for both data words. The select inputs of 4:1 MUX :414 and 415 of terminals 1 and 2 are both low thereby activating input terminal 0. When the first data word is read into FIFO 203 from bus 5, logic signals ADDRWD~OB and ADDRWD+OA are both low and PRA stored in location 00 is read out of RAF 206. Then, when loglc signal MYACKD is forced high, the output of NAND 411 goes low, setting flop 413. BSAD23-10 Q the output of flop 409 is high at this time. The Q output FCHZRO+ flop 413 high is stored in FIFO bit position 42 on the next FWRITE enable pulse of FIFO 203. This forces the output of 4:1 MUX 414 ADDRWD+OB high, so that the address in RAF 206 location 01 tPRA+l) is transferred to LR 204 with the second data word in response to the memory request.
Flops 412, 413~ 426 and 427 are 74S112 logic circuits described on page 5-34 and flop 409 is a 74S175 logic circuit described on page 5-46 of the aforementioned TTL Data sook~

-gO

~.2~

DETAILED DESCRIPTION OF CYCLE CONTROL 232 - Figure 5, Sheets 1 & 2 Logic signals MYACKD BSD~PL, BSWAIT, MYDCNN+, MEMREQ+, BSDCND-, BSACKR and CLRREQ connect to system bus cont~ol 219.
~EMREQ~ also connects to AOR and RAF control 235 and 2:1 MUX 209.
Logic signals CYFIEO, CYREAD+ and FEMPTY+30 connect to FIFO R/W
control 230. Logic signal NO HIT+ connects to directory 202.
Logic slgnal MYACKD connects to an input of NAND 516 and BSDBPL
connects to the other input of NAND 516 whose output connects to an input of OR 507 whose output, logic signal DATACK- connects to the CLOCK inputs of flops 508 and 509. Logic signal BSWAIT
: connects to an input of NAND 505 and MYDCNN~ connects to the other input of NANr 505 and a SET input to fl~7p 504. Logic signal BLOCKF~ connects between the Q output of flop 504 and the other input to N~ND 505 whose output connectcs to the other input of OR 507. Logic signal BSACKR connects l:o the CLOCK input of flop 504 whose Q output logic signal BLOCKF-- connects to an input to NOR 536 and an input of AND 512. I,ogic signals NOHIT~, CYREAD
and FEMPTY+30 cc,nnect to the inputs of NOR 501 whose output connects to an input of NOR 502 whose output connects to the SET
20 input of flop 503. The Q output of flop 503, logic signal MEMREQ-connects to the othar input of NOR 5020 The CLOCKO~ signal connects to the CLK input of flop 503 whose Q output logic signal MEMREQ+ connects to the RESET inputs of flops 508, 509 and 504 and the CLK input of flop 51].. Logic "l" connects to the SET input of flop 508 whose output, logic signal DATCTO, connects to the SET input of flop 508 whose output, logic signal DATCTI, connects to an input of NAND 510 whose output logic signal MEMREQ RESET, connects to th7~ RESET input of flop 503.
Logic signals ADDRWD+OA and ADDRW~OB connect to the inputs 3~

of their respective inverters 523 and 524 whose outputs, logic signals ADDRWD-OA and ADDRWD-OB connect to the inputs of AND
533 whose output connects ~o an input of NOR 527. FIF041~
conn~cts to another input of NOR 527. Logic signal FEMPTY~30 connects to inputs of NOR 526 and Inverter 534 whose output logic signal FEMPTY~30 connects to another input of NOR 527.
Logic signal CYRÆAD connects to inputs of NOR 526 and 527. Logic signal NOHIT+ connects to an inverter 525 input whose output logic signal CAHIT connect~ to an input of NOR 526. The outputs of NOR 526 and 527 connect to their respective inputs of NOR
528 whose output connects to the D input of flop 529. The Q
output o flop 529 logic signal CYCADN+, connects to inputs of inverters 520 and 532. The output of Inverter 530 connects to the input of Delay line 531 whose output connects to ~he RESET
terminal of flop 529. The output of In~erter 532 is logic signal CYCADN- connects to cache CPU interface unit 6. CLOCKO
connects to the CLK input of flop 509. Logic signal BANKED~OO
connects between AOR and RAF control 235 and an input of ..nverter 537 whose output connects to the input of NOR 536 and the PRESET
input of flop 508. CYFIFO connects to the other input of ~AND
510.
During the firs~ memory reques~ cy.cle 10p 503 sets on the rise o CLOCKO~ lf the CPU2 requested address PRA is not stored in the directory 202. The output of NA~D 231, figure 2, logic signal NO HIT+ is high forcing the output of NOR 501, figure 5, lowt o~cing the output of `~OR 502 high ~setting flop 503.
The Q output logic signal MEMREQ+ going high sets the cycle reque~st flop 511 o~ system bus control 219 to request a bus 5 cycle. The acknowledge response from main memory 3, logic signal BSACKR going high sets flop 504 whose Q output BLOCKF+ inputs the AOR and RAF control 235 which is described supra.
If there is a "hit" during the first memory request cycle, the logic signal NO HIT+ input to inverter 525 is low, setting the logic signal CAHIT input to NOR 526 high setting the input to NOR 528 low, setting the D input to flop 529 high. FEMPTY~30 is high since FIFO 203 is empty. On the rise of timing signal CLOCKO+ flop 529 sets and the Q output logic signal CYCADN~ goes high forcing the output of inverter logic signal CYCAD~- low which signals CPU2 that the requested data is available. Logic signal CYCADN+ is inverted by inverter 530, delayed 25 ns. by delay line 531 and resets flop 529. If there was not a 'lhit" in ~the first memory request cycle then during the cycle that sends the PRA data word from main memory 3 to cache l over bus 5j CYCADN~ is again set high as follows. The Read Address Mult;plexer 233, flgure 2, output logic signals ADDRWD+OB and ADDRWD+OA
are low and are forced high by inverters 523 and 524 which sets the output of AND 533 high, setting the output of NOR 527 lowt setting the output ~of NOR 528 high, setting flop 529 as before.
At this time FIFo 203 is not empty, and CYREAD is high at tnis time, Flops S08 and 509 are configured as a counter. For an interleaved memory, logic signal MYACXD goes high during each bus 5 cycle where the data word is sent from main memory 3 to cache 1 over bus 5 in response to a CPU2 request. Logic signal BSDBPL goes low for the 2nd word of the 2 word response or if only one word is sent from main memory 3 to cache l over bus 5. This happens when the word is in the high order address of a memory bank of main memory 3 to a memory request. This sets the output of NAND 506 low, forcing the output of OR 507 logic signal DATACK- low setting flop 508 in response to the 2nd word received from main memory 3. DATACK- goes low for the 4th word since MYACKD and BSDBPL- are again high setting flop 509 since the SE~ input logic signal DATCTO is high. The Q output of flop 509~ logic signal DATCTX, going high sets the output of NAND 510, logic signal MEMREQ RESET low, resetting 1Op 503.
Flop 503 was held set through the logic signal MEMREQ- input to NOR 502 set 1GW. This kept the SET input of flop 503 high at every rise of CLOCR0~. If the main memory 3 response to the 2nd memory request was logic signal BSWAIT high then the output of NAND 505 goes low forcing D~TACK-, the output of OR
507 low thereby setting flop 508. Since the 2nd memoxy request is ~borted if the main memory 3 response is BSWAIT, the Data Counter flop 508 must be set since only 2 data words will be received from main memory 3. For the banked memory, the input to inverter 537, logic signal ~ANKED~00, is high setting the output low which sets the PRESET input of ~lop $08 low setting the Q output, logic signal DATCTO, high. Since the banked memory system only makes one memory request and cache 1 received 2 data words in response, the 2nd data word in response will set flop 509 as above and reset flop 503. .Logic signal MEMREQ+ going low resets flops 504, 508 and 509.

-~4-,?, 35~L

DETAILED DESCRIPTION OF S~STEM BUS CONTROL 219 - Figure 5, Sheets 3 ~ 4 Logic signals BSAD 08 15-, 16~ and 17- connect betw~en the receiver 213 output and an ~ND 546 whose output logic signal MYC~N, connects to the SE~ input of flop 516. BSMREF+ connects 5 between receiver 217 and inverter 547 whose output BSMREF-connects to the ~ND 546 input. Logic signal BSDCNN~ connects between the receiver 217 cycle control 232, a delay line 522 input, and one input of an OR 521. The output of delay line 522 connects to the other input of OR 521 whose output logic signal BSDCNB+ connects to AOR and RAF control 235 and to the RESET
terminal of flops 51~, 516, 536, 574 and AOR and RAF control 235.
The output of delay line 522, logic signal BSDCND~, also connects to the CLK terminals of flops 516 and .536 and 5740 Logic signal MYACKR
connects between the Q output of flop 516 and the input terminals 15 of delay lines 517, 518, AOR and RAF control 235, FIFO R/W
control 230 and driver 218. The output of ~elay line 517 connects to an input of AND 520 whose output logic signal MYACKD connects to AOR and R~E 235 and to an input of NAND 506 in cycle control 2320 The output of delay line 518 connects to an inverter 519 input whose output connects to the other input of AND 520.
Logic "1" signal connects to the SET input o~ flop 536 whose Q
output, logic signal BSDCND-, connects,to an input of NAND 535 in cycle control 232. Logic "1" signal connects to the PRESET
and D inputs of flop 511. The Q output of 10p 511 loglc signal CYREQ-~ connects to an input of NAND 513. Logic signal BSBUSY-connects between an output of NOR 540 and the other input of N~D
513 whose output logic signal SETREQ- ccnnects to a PRESET
input of flop 515. Logic "1" signal connects to a PRESET input of flop 514. Logic signal BSDCND+ connects to the D input 3~

and the RESET input. MYDCNN- connect~ between a Q output of flop 541, the CLK input of ~lop 514 and the enabling inputs of drivers 212, 214 and 2L8. The Q output of flop 514 logic signal MYREQR~
connects to the CLR input of flop 515. The CLEAR- logic signal connects to the RESET input of flop 515. Logic signals BSWAIT
and BLOCKF- connec~ ~o inputs of AND 512 whose o1~tput logic signal MYREQ+ connects to the D input of flop 515 whose Q output logic signal MYREQT connects to Driver 21a and an input ~o ~D
5~2. BSDCNB~ connects to an inverter 544 input whose ou~put connects to the input of AND 542 whose output, logic signal SETDCN- connects to the PRESET input of flop 541. ~ogic signals BSACKR and BSWAIT connect between inputs of NOR 543 and Receiver 217. The NOR 543 output connects to the RESET input of flop 541. CLE~R connects between an inverter 573 output ana to the input of NOR 543. C~EAR- connects between an input of inverter 573 and receiver 217~ BSDGN~ connect~ between the output of inverter 544 and an input of AND 538. BSREQT~ connects between the input of AND 538 and Receiver 217 and CLEAR~connects to the input of AND 538 whose ou~put connects to the input of delay line S39 and an input of NOR 540. ~he output of delay line 539 connects to the other input of NOR 540. The Q output of flop 541, logic signal MYDCNN+ connects to driver 218 and the input of ~AND 535 in cycle control 232. The output of NOR 536, logic signal BSDCNB- connects to the input of N~ND 535. Priority logic signals BSAUOK- -BSIUO~ connects between ~ND 542 inputs and receiver 217.
Logic signals MEMREQ+ and CLRREQ-OA connect between cycle control 232 and the CLK and RESET inputs respectively of flop 511.
Logic siynal BSDBPL~ connects between the 5ET input of flop 574 and receiver 217. The Q output of flop 574 connects to cycle control 232.
Duriny the flrst memory request cycle, if the CPU2 requested 3~

data is not in cache 1 then the MEMREQ+ CLK input to flop 511 goes high setting the Q output, logic signal CYREQ+, the input to NAND 513 high. The logic signal BSBUSY- is high if the bus 5 is not busy and the output of NAND 513, logic signal SETREQ- goes low setting flop 515 whose Q output MYREQT goes high and inputs AWD 542 requesting a bus 5 cycle. If bus 5 does not have a high priority request the logic signals BSAUOK
through BSIUOK are high, and if bus 5 is not transferring information then logic signal BCDCNB- is high and the logic signal SETDCN- output of AWD 542 goes low setting flop 541 and the Q output MYDCNN+ goes high gating drivers 212, 214 and 218 putting out on bus 5 information in the format of figure 8b. When main memory 3 receives the bus 5 information, the acknowledge logic signal BSACKR is sent back to cache 1 over bus 5 and reset flop 541 by setting the NOR 543 output low. The Q output, logic signal MYDCNN-, going high sets flop 514 whose Q output logic signal MYREQR-~ high, resets flop 515 since the D input logic signal MYREQ is low. This sets the Q output logic signal MYREQT low. A B5WAIT signal returned by main memory 3 indicating that main memory 3 is busy, resets flops 541 since the output of NA~D 543 goes low~ However, since the output of ~WD 512 is high when flop 514 sets and its Q output logic signal MYREQR+
goes high, the Q output of flop 515, logic signal MYREQT remains high and the first memory request is repeated.
In the interleaved mode when main memory 3 acknowledges the first memory request by sending the BSACKR loglc signal, flop 511 remains set with the Q output logic signal CYREQ-~ high to start the second memory reauest cycle. Flop 511 remains set during the interleaved mode since the output of WAND 535 remains high as does the CLK input MEMREQ+. The CLRREQ+0B input to NAND 535 is low as long as BLOCKF- input to NOR 536 is high. Logic signal BLOCKF- goes low afte~ the first BSACKR ackncwledge.

When MYDCNN~ goes high during the second memo~y request cycle flop 511 is reset since BLOCKF- is low.
However, if the system is in the banked mode flop 511 is reset since the output of N~ND 535 in cycle control 232 goes S low at the end of the first memory request cycle. Logic signal CLRREQ+OB, the input to NAND 535 is high forcing the output of N~lD 535, logic signal ~LRREQ-OA low when MYDCNN+ goes high. A
secand memory request cycle starts when logic signal BSREQT the input to AND 538 goes low when there is no request being made of bus 5 and the ou~put of AND 538 goes low forcing the NOR 540 nput low. 20 ns. later the other inpllt to NOR 540 goes low ~orcing the output logic signal BSBUSY- high. Note that CLEAR
is normally high and goes low during system initialiæation to reset functions. With both inputs to NAND 513 high, the output, logic signal SETREQ- going low again sets the Q output of flop 515 logic signal MYREQT high which requests a bus 5 cycle. Again the output of NAND 542 logic signal SETDCN- goes low setting flop 541 whose Q output logic signal MYDCNN+ goes high gating drivers 212, 214 and 21a to send out the second memory request in the format of figure 8b over bus 5 to main memory 3. If main memory ..
3 sends back the acknowledge logic signal BSACXR flop 541 is reset as b~fore which sets flop 514 which resets flop 515 setting the Q output logic signal MYREQT low. Logic signal MYDCNN~ the input to NAND 535 going high sets the RESET input to flop 511 low setting the Q output logic signal CYREQ~ low there-by preventing subsequent memory request bus 5 cycles- Logic signal CLEAR the input to NOR 543 also resets flop 541.

If main memory 3 were busy and sent back a BSWAIT logic signal in response to the second memory response, flop 541 resets since logic signal BSWAIT going high forces the NOR 543 output -4a-low, and the Q output of flop 541, logic signal MYDCNN- goes high setting flop 514 whose Q output logic signal MYREQR goes high. The D input to flop 515 is low since logic signal BLOCKF-is low at this time~ forcing the output of ~D 512 low. When logic signal MYREQR~ goes high flop 515 resets ~etting the Q
output logic signal MYREQT low. Since flop 511 was reset during the second memory request cycle as before the second memory request is aborted.
The flops 503, 504, 511, 514, 515, 529 and 541 are 74S74 circuits described on page 5-22 of the a~orementioned TTL Data Book.
Flops 508 and 509 are 74S112 logic circuits described on page 5-34 and flops 516, 536 and 574 are 74S175 logic circuits described on page 5-46 of the aforementioned TTL Data Book~
Main memory 3 sends the logic signals BSDCNN+ and the lnformation in the ormat of figure 8c out on bus 5 to receivers ?13, 215 ana 217 and the information is strobed into FI~O 203.
BSAD 08-17 input AND 546 along with logic signàl 9SMREF- wh.ich as inverted by inverter 547~ If the cache 1 identification is 00028, that is BSAD16* is high and BSAD 00-15 and 17~ are high and that is not a main memory 3 write, i~eO, BSMREF- is ..
high, then the output of ~ND 546 logic signal MYCHAN goes high.
Logic signal BSDCNN~ high sets the output of OR 521, logic signal BSDCNB+, high which sets the RESET input of flop 516 high.
Logic signal BSDCNN+ is delayad 60 ns. by delay lines 522 and sets flop 516 whose output logic signal MYACKR going high advances the FIFO Write Address Counter flops 320 and 321, figure 3. This operation was described supra. Logic signal MYACKR high sets flops 305, figure 3, and the Q output logic signal INTERG+ going high gates the data through buffer bypass drivers 205, figure 2, to junction 216 since this first data wor~ from main memory 3 is in response to the CPU2 request. Logic signal MYACKR also 3~

goes out on bus 5 to acknowledge to main memory 3 that cache lreceived the informatlon sent out by main memory 3 addressed to cache 1. In figure 5, logic signal MYACKR is delayed 20 ns. by delay line 517 and inputs AND 520 whose output,logic signal MYACKD goes high 20 ns. after the rise of MYACKR. Logic signal MYACKR is delayed 40 ns. by delay line 518, is inverted by inverter 519 and sets the other input of AND 520 low. Logic signal MYACKD is a positive going 20 ns. pulse delays 20 ns.
from the rise of MYACKR. Logic signal MYACKD delays the setting lO of the Function Code History flops 412 and 413, figure 4, until after the data received from bus 5 is set into FIFO 203.
The above sequence is repeated in the interleaved mode for the 4 cycles in which the data words are transferred from main memory 3 to cache 1 in response to the first and second memory requests. In the banked mode the sequence is repeated for 2 ~ cycles in response to the one memory request.

:; :

SYSTEM BUS_5 FO~`~TS
Figure 8 shows the system bus 5 formats processed by cache 1 and/or main memory 3. Figure 8a shows the memory address field with an 18 bit main memory 3 word address BSAD
05-22 of a 20 bit data word BSDT 00-15, A, B, DSDP 00, 08.
This format is used by CPU2 to upda~e main memory 3 over system bus 5. Cache 1 reads the address and data in FIFO 203 from bus 5 through receiver 213, 215 and 217. Cache 1 senses that logic signal ESMREF is high, indicatin~ that the address field contains a main memory 3 address, senses that BSWRIT is high indicating this is a write operation, and checks if the address loca-tion is written into cache 1. If the address is found in directory 202, figure 2, then the data word stored in data store 201 is updatedO If the address is not in the directory 202, then the data is discarded. A peripheral controller may send a 13 bit byte main memory 3 address BSAD
05-23. In that case, cache 1 would update byte 0 or byte 1 if either byte is stored in the data buffer 201.
Fiaure 8b shows the main memory 3 request sent from cacne 1 to main memory 3. The address field contains the main memory 3 word address BSAD 05-22. The data field contains the 12 bit cache 1 identification code 00028, ssDT A, s, 00-09 and the 6 bit function code 8 or 018. A function code of 8 designates the bus cycle as the first memory request cycle. The function code of 18 designates the bus 5 cycle as the second memory request cycle. BSMREF is high since this is a request of main memory 3.
Figure 8c shows the main memory 3 response format to the memory read request of Figure 8b. The address field contains the destination number of cache 1, 00028 and the function code 8' indicating a response to a first memory request or the function code 01~ indicating a response to a second memory request, BS17AIT+ indicates that main memory 3 is requesting cache 1 -to write the data word in cache 1 at the address indicated by the fi~ure 8b main me~ory 3 read requestO ~SSHBC
high indicates that this is in response to a memory request. An interleaved memory main memo~y 3 request in the format o~
figure 8b contains P~ for the first request address and PRA+l for the 2nd request address. Main memory 3 responds with the PR~ and PP~2 data words in response to the first request and the P~A~l and PRA~3 data words in response to the 2nd request.
A hanked memory main memory 3 request in the format of figure 8b contains PR~. Main memory 3 responds with the PRA
and PRA~l data words.

:`

3~

D:ESCR:IPTIO~ OF OPERATION
Figure 9 is a flow chart illustrating the sequence of operations that start when CPU2 makes a request of cache 1 for a data word.
The sequence starts in Block 901. CPU2 forces signal CACHRQ high which sets flop 313 figure 3 forcing the Q output signal FEMPTY-20 lowO Signal FEMPTY-20 low starts CLOCK0~ to cycle and sets the RAF 206 read address counter flops 426 and 427 Figure 4, to location 00. CPU2 sends the request address ~PRA) signals BAOR ns 22+ through the 2:1 MUX 208, which is lC enabled by signal ADDRSO~, to directory 202 Figure 2 to perform the search.
The directory search is made in block 902 and PRA is loaded into AOR 207 ancl R~F 206 location 00 through 2:1 MUX 209.
Signal FEMPTY-20 forces signal AoRcN~r~ the output of NOR 419 figure 4 high which enable signal BAWRIT, the RAF 206 write strobe, enables signal BAORCK, the AOR 207 write strobe, and advances the RAF 206 Write Address Counter flops 426 and 427 to location 01.
~ n block 903 the rise of CLOCR0+ set flop 301 figure 3 whose Q output signal BLK~EQ- resets flop 313. The Q output signal FEMPTY~20 is fcrced high kPeping CLOCK0~ high.
If in block 904 PRA was found i~ directory 202 fiyure 2, khen in block 905 the data word in the corresponding data buffer 201 address loca~ion, signals CADP 00-19 are sent to CPU2. Also a directory "hit" results in the setting of flop 529 figure 5 ~5 whose Q output is inverted and sent to CPU2 as signal CYCADN-where it strobes the data word into a register (not shown) and forces signal CACHRQ low.
If in block 904 PRA is not stored in directory 202 figure 2 then in block 906 flop 503 figure 5 sets and the Q output signal MEMRE~ sets flops 511 whose n output signal CYREQ~ goes high.

~ ~3~

Also, PRA+l appears at the output of ADDER 211 when RAF 206 write address counter is set to location 01.
Cache 1 now requests bus 5 to send the memory request to main memory 3 for 2 data words if main memory 3 is banked. Or 5 if main memory 3 is interleaved 2 memory requests are sent by cache 1 for 4 data words from main memory 3.
Cache 1 requests access to bus 5 by forcing signal CYREQ~
the Q output of flop 511 high, figure 5. In block 907 when bus 5 is not busy the 2 signal inputs to NAND 513, figure 5, BSBUSY-and CYREQ~ which in block 908 sets flop 515. The Q output signal MYRE~T remains high in block 909 until cache 1 has the highest priority of the system units requestinq access to bus 5 then in block 910 the output of AND 542 goes low and sets flop 541. The Q output signal MYDCNN+ going high gates drivers 212, 214 and 218 to send out on bus 5 information ir) the format of figure 8b.

PRA, cache identiflcation 00028, Function Code 8 indicating that this is the first request of main memory 3, ssMRE~ high indicating that the address levels BSAD 05-22 contain a main memory 3 address and BSD3PL high indicating that 2 data words are re-quested from main memory 3. Main memory 3 responds in block 912.
I~ main memory 3 is busy and cannot accept the bus 5 cycle in block 913a flop 541 the MYDCNN flop is reset, however, flop 515 remains set and signal MYREQT high requests another bus 5 cycle.

When ~he response is an acknowledge and signal BSACKR goes high flops 515 and 541 are reset in block 913. Also flop 511 resets in the banked memory opera~ion. Flop 504 sets in block 914 and the Q output logic signal BLOCKF+ goes high.
Figure 6 is a timing chart illustrating the relative se-quencing of the interleaved memory operation. In the first memory request cycle timing signal CACHRQ 601 going high starts the cycle, causing FEMPTY-20 602 to go low. F~MPTY-20 going low forces BAWRIT 604 and BAORCK 605 low to strobe PRA into RAF 206 and AOR 207 respectively; and also advance the RAF 206 write address counter 234 by orcing AORCNT-30 609 low. If there is a directory "hit" HIT 0-3 606 goes high in the middle of the cycle (dotted line) and the data word CADP 00-19 607 (dotted line) is sent to CPU2. CYCADN- 608 is senk to CPU2 and forces CACHRQ 601 low (dotted line). If there is no "hit" MEMREQ 610 is set high by the rise of CLOCK0~ 603 which sets MYREQT 612 high.
MYREQT 612 is turn sets MYDCNN+ 613 high. The BSACKR 614 response resets ~YDCNN 613 which resets MYREQT 612. BSACKR 614 sets BLOCKF 611 high to start the second memory request.
Figure 7 is a timing chart illustrating the relative sequencing of the banked memory operation. The timing signals of the memory request cycle of ~igure 7 are the same as the corres-ponding tlming signals of figure 6.
With BLOCKF high in block 915, signal BAWRIT strobes PRA+l into RAF 206 location 01. Signal BAORCK strobes PRA*l into : AOR 207 and the write addxess counter 234 is advànced to location 02. PRA+l is switched from the ADDER 211 output through 2:1 MUX
209 which is enabled by signal MEMREQ, figure 2.
For the interleaved memory block 916 advances to block 917 whereas for the banked memory block 925 is processed next.
For the interleaved memory blocks 917 through 920 is a repeat of blocks 907 through 910. In block 921 signal MYDCNN+ is set and strobes drivers 212, 214 and 215, figure 2, sending out on 25 bus 5, PRA+l, Cache Identification 00028, Function 18 designating this as the second memory cycle, BSMREF and BSDBPL as before.
This time the main memory 3 is busy and responds in block 922 with signal BSWAIT increments in block 923 the data counter by setting flop 508, figure 5. Now in block 924, signals BSACK~ and BSWAIT reset MYREQT, ~DCNN+ and CYREQ.

h ~ Z35~'a BI,OCKF 611, figure 6, starts the second memory request cycle by going high thereby forcing BAWRIT 604 low to strobe PRA+l into location 01 of RAF 206 and forcing BAORCK 605 low to strobe PRA+l into AOR 207. Signal AORCNT-30 609 advances RAF 206 wrike address counter 234 to location 02.
MYREQT 612, MYDCNN 613 and BSACKR 614 cycle as before.
BSWAIT 615 resets MYREQT 612 and MYD~IN 613 and forces DATACK
616 low (dotted).
Both the Banked and interleaved operations now await -the bus 5 cycle which sends the PRA data word from main memory 3 to cache 1 in response to the first memory request.
~ hen information is being transferred on bus 5, signal BSDCNN+ goes high in Block 925 forcing the output of ~IAND 332, figure 3, the write enable signal FWRITF low. This signal transfers the information on bus 5 through receivers 213, 215 and 217, figure 2, into FIFO 203.
For both interleaved and banked memories the flow diagram of figure 9 makes a number of passes from block 926 through 950; that is one pass for each data word transfer from main memory 3 to cache 1 over bus 5 in response to the memory request.
The information received in block 926 by FIFO 203 must be in the format of figure 8c if it is a response to the memory request. If it is not in that format then cache 1 performs a different sequence of operations described in copending related application 1 described supraO Assuming the information received is in response to the memory request, then the PP~ data word is received by cache 1 on the first bus 5 data cycle as is the cache identification 00028, function code 8 indicating that ~his is in response to the first memory request, BSDBPL high indicating that this is the first of the 2 data words in response to the first memory request, BSMREF low indicating that the address field contains the cache identification and function code and BSS~BC high indicating that this bus cycle is in response to the memory request.
~For the banked memory the PRA and PRA~l data words are received in response to the memory request. BSDBPL will be low for the PRA+l data word. ~he functi`on code will be 8 for both the PRA and PRA+l data words.
For the interleaved memory the PRA and PRA~2 da~a words will be sent from main memory 3 to cache 1 over bus 5 with a function code of 8 indicating this is the response to the first memory re~uest~ PRA+l and PRA~3 will be sent with a function code of 18 indicating this as a response to the second memory cycle, BSDBPL will high for P~ and PRA+l and low for P~A~2 and PR~+3.
If the cache identification is 00028 then in block 927 signal M~CHA~ is forced hiyh as the output of AND 546, figure 5~ and sets flop 516 whose Q outpu~ MYACKR going high sends a signal back to main memoxy 3 acknowledging that the information was received in response to the memory request. The signal is received by main memory ~ as BSACKR.
If i~ block g26 the data word~received by FIFO 203 is not in response to the memory request,.then in block 927, signal MYCH~J does not go high and the decision block 927a exits to a series of decision blocks 927b, 927c and 927d which tests if the information in FIFO 203 is an acknowledged main memory 3 write operation. If it is a write BSWRIT is high, and if it is addressed to main memory 3, BSMREF is high and if main memory 3 acknowledged the receiving of the information BSACKR is high then in block 932a, the FIFO 203 Write Address Counter is incremented by ~1.
For the interleaved memory, decision block 92g tests the RAF 206 write address counter 234. If set at location 02 then in block 930 3~

the ADDER 211 input control signal +1, the output of EXCLUSIVE
OR 237 Figure 2 is high and PRA~2 appears at the output of ADDER
211 and is strobed into RAF 206 location 02. The write address co~nter 234 is then ad~anced to location 03. I the write address counter 234 had been set to location 03 then the ~2 control signal, the output of AND ~36 is high and PRA+3 appears at the output of ADDER 211 and is strobed into R~F 206 location 0.3 after ~hich the write address count2r 234 advances to location 00.
Both banked and interleaved memory systems in block 932 advance the FIFO 2~3 write address counter flops 320 and 321 figure 3 by forcing signal FPLUS1 low. Advancing the write address counter flops forces the output signal FEMPTY+ of comparator 318 low. This signal is inverted and sets flops 313 ; 15 so that the Q output signal FEMPTY +'20 goes low and starts CLOCK0+ cycling in block 933~
: Decision block 934 now tests the function code low order b~t BSAD23. If 13SAD23 is low indicatin~ this is the response to the ~irst memory request then:in block 935 the FC~RO flop 413 fiyure 4 sets and:if BSAD23 is high the FC~ONE flop 412 o~ hlock ~3~ sets. Flops 412 and 413 condition the read add~ess multiplexex 233 outputs to selec~ tho address stored in RA~ 206 with th~ proper PRA data word received from main memory 3 in response to the memory request.
Decision block 937 tests signal BSDBPL which when 10W
indicates the second word of a memory response and advances the block 933 data counter flops 508 and 509 Figure 5.
Decision block 939 tests for the end of the bus 5 cycle and when signal BSDCNN~ goes low, flop 516 figure 5 sets in block 340 and the Q output signal MYACKR goes low.

The first bus 5 information stored in FIFO 203 is read in block 941 and `f the FIFO bit position 41~ is low in decision block 942 it indicates that this is upda-te information. The update operation is disclosed in related copending application 3 described supra. I~ the FIFO bit position 41~ is high indicating that this is a replacement operation then the read address multiplexer 233~ figure 2, selects the proper operation in R~F 206 to read out the address corresponding to the data word in FIFO 203 into LR 204. On the CLOCK0~ rise flop 323, figure 3, sets the Q output CYFIFO high which enables LR 204.
This sets the output of the selected location of RAF 206 indicated by read address multiplexer 233 into the address flops of LR 204 and also sets the data cutput and control output of FIFO 203 into the respective flops of I,R 20~.
Decision block 945 tests the output of the read address multiplexers 414 and 415, figure 4, and if set to location 00, sets flops 529, figure 5, in block 946 which results in signal CYCADN- being sent to CPU2 as before. Also flop 305, figure 3 is set and the Q output signal INTERG~ gates the data word from signal lines FIFG 19-38 through the buffer bypass drivers 205, figure 2, to CPU2 as CADP00-19. CPU2 then resets signals CACHRQ which resets flop 301, figure 3, which resets flop 305. If this is not the first data word cycle then the read address multiplexers 233 are not set to location 00 and in block 947 a directory 202 search is made. If the data word is already in the data buffer 201 then no further action is taken on the data word. If the data word is not ln data buffer 201 then in block 948, the round robin logic unit 224 selects the WRITE signal of the next level of that column address into which the data word is to be written. In block ~49 the data word is written into the data huffer 201, the row address is written in~o the directory 202 and the old level of round robin 224 is incremented by ~1 the a~dress location selected by the column address.
~n decision block 950 the data counter flop 509 figure 5 if set resets the flops indicated in block 951 and the operation is concluded. If flop 509 i5 not set then ~he operation returns to block 925 to await the next data word from main memory 3 in response to the memory request~
Again returning to igure 6 ~or the PRA cycle, that is the cycle in which the fir~t data word is ~nt from main memory 3 to cache 1 over bus 5 signal r BSDC'NN+ 618 goes high indicating that there is a ~us 5 cycle starting and forces the FIFO 203 write enable signal FWRITE 619 low. This loa,ds FIFO 203 from receivers 213, 215 and 217 with the information from bus S.
If the inormation is in response to the memory request then signal MYACXR 620 goes high acknowledging the bus 5 transfer and advancing the FIFO 203 write address counter by forcing FPLUSl 621 low. Advancing the counter indicates that F~IFO 203 has information stored 1n it. This forces FEMPTY+ 20 621 low which starts CLOCK0+ 603 cycIing. The data word output of FIFO 203 is sent through the buf~er bypass drivers 205 during the time indicates by INTERG 525 as CADP00-19 607. Signal CYCADN~
608 strobes the data word CADP00~19 607 into C~U2 and resets CACHRQ 601.
Signal ADDRSO~ switches 2:1 MUX 208 so that when signal CYFIFO 627 comes high and strobes the outputs of RAF 206 and FIFO 203 into LR 204, the output of LR 204 can start the dir~ctory search by txansferring the address signals ADDR00-17+
through the switch. Signal R~PLACE comes high to switch ~60-2~1 MUX 223 to receive the selected WRITE 629 sig~al for the directory 202 and data buffer 201 replacement write operation.
Signal CYREAD 628 low gates the selected signal WRITE 0~3 629.
~ Local Register 632 shows information transferring into LR 204 when signal CYFIFO goes high.
Signal BVMPUP 630 ad~ances the read address counter of FIFO 203 by going low. LR 632 is already loaded with the FIFO
203 at this time. The RAF read address multiple~er 631 when high, gates the output of the location~indicated by the ADDRWD+OB and ADDRWD+OA signals to LR 204. BA~RIT 604 loads PRA~2 into location 02 and PRA~3 into location 03 on successive MYACKR 620 pulsesO AORCNT -30 609 advances the write address counter after each loading of PRA+2 and PRA+3 into RAF 206.
In the PR~+2, PRA~l and PRA+3 cycles if the data word is stored in data bu~fer 201 then ~IT 0-3 606 will go high (dotted) for that data word, suppressing the fall of CYREAD 628 which ln term suppresses the WRITE 0-3 629 pulse. The data word will therefore not be written into the data buf~ex 201.
As previously state~ if the response to the second memory request was the BSW~IT signal then the request is not repeated.
Since 2 data ~ords instead of 4 data words will be sent from main memory`3 to cache 1 over bus 5 the d~ta counter is incremented when signal DATACK 616 pulses ~dotted~ in the second memory request cycle~ Then in the PRA~2 cycle when the second data word is sent o~er bus 5 to cache 1, the signal DATACK 616 again pulses which sets DATCTI high (dotted). This resets MEMREQ 610 ~dotted) which resets BLOCKF 611 (dotted) and DATCTI 617 and the prefetch operation is completedO
Normally signal DATACK is pulsed by the second data word 3Q and the fourth data word (BSDBPL high) and the operation completed after the fourth data word cycle when signal DATCTl 617 comes
-6~-high and resets signal MEMREQ 610 whlch resets BLOCK F 611 and DATCTI 617.
Now returning to Figure 7 illustrating the timing of the banked main memory 3 and cache 1 operation, in many respects the timing signals of Figure 6 illustrating the interleaved operation is similar to their respective timing signals in Figure 7. The basic difference is that figure 7 illustrates the banked timing which requires 2 data cycles, the PRA and PRA~l data cycles compared to figure 6 which illustrates the interleaved timing 1~ which requires 4 data cycles, PRA, PRA+l, PRA+2 and PRA~3.
Therefore many of the figure 6 timings show 4 cycles as compared to the figure 7 timings which show 2 cycles of operation. Also, since the data counter is forced to ~l in the banked operation only l DATACR 716 pulse i5 needed to set DATCTI 717 which resets MEMREQ 710 whlch ln turn, resets BLOCKF 711 and DATCTI 717 as before.
Having shown and described 2 embodiments of the invention, ; those skilled in the art will realize many variatlons and modifications may be made to produce the described inven~ion-and ~tiIl be within the spirit and scope of the claimed invention.
What is claimed is:

Claims (22)

1. A data processing system comprising:
a system bus;
an addressable main memory coupled to said bus, said main memory including a plurality of sets of word locations, each set of word locations being defined by a column address, and each word location within a set being identified by a row address;
a cache unit coupled to said system bus, said cache unit comprises:
a data buffer including a plurality of word locations arranged in a plurality of sets of word locations defined by said column addresses;
a directory including a plurality of word locations corresponding in number to the number of sets in said data buffer and being addressable by said column address, each word location of said directory storing a row address of a corresponding one of said words of said set stored in said data buffer;
a central processor unit (CPU) coupled to said system bus;
an address register coupled to said system bus and to said CPU for receiving a fetch request address from said CPU;
address generating means coupled to said address register for generating successive addresses from said fetch request address;
a replacement address file (RAF) coupled to said CPU
and said address generating means for receiving signals corresponding to said fetch request address and said successive addresses respectively;
comparing means operatively connected to said directory and to said CPU for comparing at least a portion of said fetch request address with the row address read from said directory and generating a hit - no hit signal indicative of whether or not the word being requested is in said data store;
timing means for generating control signals in response to said fetch request address for conditioning said address register and said RAF to store said fetch request address and required successive addresses during a memory request cycle of operations; and, memory request means responsive to said no hit signal for transferring as part of a memory request said fetch request address and required successive addresses to said system bus for fetching the requested words from said main memory when said main memory is not busy.
2. The system of claim 1 wherein said RAF includes a read address multiplexer means for addressing said RAF in response to signals applied to said system bus from said main memory indicative of the transfer of one of said requested words for readout of the stored address associated therewith, and means for writing a first portion of said stored address into said directory at a location specified by a second portion of said stored address.
3. The system of claim 1 wherein said system further includes mode control means coupled to said timing means, said mode control means when in a first state conditioning said timing means to generate a first sequence of control signals for conditioning said address register, said RAF and said address generating means during a first mode of operation; and said mode control means when in a second state conditioning said timing means to generate a second sequence of control signals for conditioning said address register, said RAF and said address generating means during a second mode of operation.
4. The system of claim 3 wherein said first mode corresponds to a banked mode of operation, and said first sequence of signals conditions said address register and said RAF to store said fetch request address into said address register and said RAF, and said first sequence of signals conditions said address generating means to increment by one, said fetch request address and store said incremented fetch request address into said RAF and, to apply said fetch request address to said system bus for transfer to said main memory.
5. The system of claim 3 wherein said second mode corresponds to an interleaved mode of operation and said second sequence of signals conditions said address register and said RAF to store said fetch request address into said address register and said RAF, and to apply said fetch request address to said system bus for transfer to said main memory; and said second sequence of signal including a first group of signals conditioning for said address generating means to increment by one said fetch request address, store said first incremented fetch request address into said address register and said RAF, and to apply said incremented fetch request address to said system bus for transfer to said main memory; and said second sequence of signals including a second group of signals for conditioning said address generating means to increment by one said first incremented fetch request address, store said second incremented fetch request address into said RAF; and said second sequence of signals including a third group of signals for conditioning said address generating means to increment by two said first incremented fetch request address and store said third incremented fetch request address into said RAF.
6. The system of claim 4 wherein said timing means includes means coupled to said system bus for sensing signals indicating when said main memory is busy, said timing means being conditioned by said signals to repetitively apply said fetch request address to said system bus for transfer to said main memory.
7. The system of claim 5 wherein said timing means include means coupled to said system bus for sensing signals indicating when said main memory is busy, said timing means being conditioned by said signals to repetitively apply said fetch request address to said system bus;
and said timing means being conditioned by said signals in response to applying said first incremented fetch request address to said system bus to inhibit further application of said first incremented fetch request address to said system bus.
8. The system of claim 2 wherein said signals applied to said system bus from said main memory include control signals coded to identify which word of the possible number of requested words is being applied to said system bus by said main memory;
and said read address multiplexer means responsive to said coded signals to read out from said RAF the address designated by said coded signals enabling said requested word to be written into said data store.
9. The system of claim 8 wherein said control signals include:
a first signal when in a first state indicative of a first word transfer from said main memory generated in response to a request from said memory request means of said main memory;
said first signal in a second state indicative of a second word transfer from said main memory in response to said request from said main memory;
a second signal in a first state indicative of said first and second word transfer from said main memory in response to â first request of said main memory;
said second signal in a second state indicative of a first and second word transfer in response to a second request from main memory.
10. The system of claim 9 wherein the system further includes: a system bus control unit, a data counter coupled to said system bus control unit, and to said mode means, said mode control means when in said banked mode setting said data counter to a count of one, and said mode control means when in said interleaved mode setting said data counter to a count of zero;
said system bus control unit being condition by said second state of said first signal to increment said data counter by one; and said system bus control unit being conditioned by said bus busy signal generated by said main memory in response to said second request to increment by one said data counter.
11. The system of claim 10 wherein said data counter is coupled to said memory request means responsive to said no hit signal, said memory request means being reset when said data counter stores a value of two.
12. A data processing system comprising:
a system bus;
an addressable main memory coupled to said bus, said main memory including a plurality of locations;
a data buffer including a plurality of locations;
a directory including a plurality of locations corresponding in number to the number of locations in said data buffer for storing an address identifying a corresponding one of said locations of said data buffer;
a central processor unit (CPU) coupled to said system bus;
an address register coupled to said system bus and to said CPU for receiving a fetch request address from said CPU;
address generating means coupled to said address register for generating successive addresses from said fetch request;
a replacement address file (RAF) coupled to said CPU
and said address generating means for receiving signals corresponding to said fetch request address and said successive addresses respectively;
comparing means operatively connected to said directory and to said CPU for comparing at least a portion of said fetch request address with the address read from said directory and generating a hit - no hit signal indicative of whether or not the word being requested is in said data store;
timing means for generating control signals in response to said fetch request address for conditioning said address register and said RAF to store said fetch request address and required successive addresses during a memory request cycle of operations; and memory request means responsive to said no hit signal for transferring as part of a memory request said fetch request address and required successive addresses to said system bus for fetching the requested words from said main memory when said main memory is not busy.
13. The system of claim 12 wherein said RAF includes a read address multiplexer means for addressing said RAF in response to signals applied to said system bus from said main memory indicative of the transfer of one of said requested words for readout of the stored address associated therewith, and means for writing a first portion of said stored address into said directory at a location specified by a second portion of said stored address.
14. The system of claim 12 wherein said system further includes mode control means coupled to said timing means, said mode control means when in a first state conditioning said timing means to generate a first sequence of control signals for conditioning said address register, said RAF
and said address generating means during a first mode of operation; and said mode control means when in a second state conditioning said timing means to generate a second sequence of control signals for conditioning said address register, said RAF and said address generating means during a second mode of operation.
15. The system of claim 14 wherein said first mode corresponds to a banked mode of operation, and said first sequence of signals conditions said address register and said RAF to store said fetch request address into said address register and said RAF, and said first sequence of signals conditions said address generating means to increment by one, said fetch request address and store said incremented fetch request address into said RAF and, to apply said fetch request address to said system bus for transfer to said main memory.
16. The system of claim 14 wherein said second mode corresponds to an interleaved mode of operation and said second sequence of signals conditions said address register and said RAF to store said fetch request address into said address register and said RAF, and to apply said fetch request address to said system bus for transfer to said main memory; and said second sequence of signals including a first group of signals conditioning for said address generating means to increment by one said fetch request address, store said first incremented fetch request address into said address register and said RAF, and to apply said incremented fetch request address to said system bus for transfer to said main memory; and said second sequence of signals including a second group of signals for conditioning said address generating means to increment by one said first incremented fetch request address, store said second incremented fetch request address into said RAF; and said second sequence of signals including a third group of signals for conditioning said address generating means to increment by two said first incremented fetch request address and store said third incremented fetch request address into said RAF.
17. The system of claim 15 wherein said timing means includes means coupled to said system bus for sensing signals indicating when said main memory is busy, said timing means being conditioned by said signals to repetitively apply said fetch request address to said system bus for transfer to said main memory.
18. The system of claim 16 wherein said timing means include means coupled to said system bus for sensing signals indicating when said main memory is busy, said timing means being conditioned by said signals to repetitively apply said fetch request address to said system bus; and said timing means being conditioned by said signals in response to applying said first incremented fetch request address to said system bus to inhibit further application of said first incremented fetch request address to said system bus.
19. The system of claim 13 wherein said signals applied to said system bus from said main memory include control signals coded to identify which word of the possible number of requested words is being applied to said system bus by said main memory; and said read address multiplexer means responsive to said coded signals to read out from said RAF the address designated by said coded signals enabling said requested word to be written into said data store.
20. The system of claim 19 wherein said control signals include:
a first signal when in a first state indicative of a first word transfer from said main memory gen-erated in response to a request from said memory request means of said main memory;
said first signal in a second state indicative of a second word transfer from said main memory in-response to said request from said main memory;
a second signal in a first state indicative of said first and second word transfer from said main memory in response to a first request of said main memory;
said second signal in a second state indicative of a first and second word transfer in response to a second request from main memory.
21. The system of claim 20 wherein the system further includes: a system bus control unit, a data counter coupled to said system bus control unit, and to said mode means, said mode control means when in said banked mode setting said data counter to a count of one, and said mode control means when in said interleaved mode setting said data counter to a count of zero;
said system bus control unit being conditioned by said second state of said first signal to increment said data counter by one; and said system bus control unit being conditioned by said bus busy signal generated by said main memory in response to said second request to increment by one said data counter.
22. The system of claim 21 wherein said data counter is coupled to said memory request means responsive to said no hit signal, said memory request means being reset when said data counter stores a value of two.
CA318,476A 1977-12-22 1978-12-22 High speed buffer memory system with word prefetch Expired CA1123521A (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US05/863,095 US4157587A (en) 1977-12-22 1977-12-22 High speed buffer memory system with word prefetch
US863,095 1977-12-22

Publications (1)

Publication Number Publication Date
CA1123521A true CA1123521A (en) 1982-05-11

Family

ID=25340238

Family Applications (1)

Application Number Title Priority Date Filing Date
CA318,476A Expired CA1123521A (en) 1977-12-22 1978-12-22 High speed buffer memory system with word prefetch

Country Status (4)

Country Link
US (1) US4157587A (en)
JP (1) JPS5494241A (en)
AU (1) AU522478B2 (en)
CA (1) CA1123521A (en)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4228503A (en) * 1978-10-02 1980-10-14 Sperry Corporation Multiplexed directory for dedicated cache memory system
US4462073A (en) * 1978-11-08 1984-07-24 Data General Corporation Apparatus for fetching and decoding instructions
US4268907A (en) * 1979-01-22 1981-05-19 Honeywell Information Systems Inc. Cache unit bypass apparatus
US4290105A (en) * 1979-04-02 1981-09-15 American Newspaper Publishers Association Method and apparatus for testing membership in a set through hash coding with allowable errors
US4462029A (en) * 1979-12-06 1984-07-24 Analogic Corporation Command bus
JPS5927935B2 (en) * 1980-02-29 1984-07-09 株式会社日立製作所 information processing equipment
US4533995A (en) * 1981-08-03 1985-08-06 International Business Machines Corporation Method and system for handling sequential data in a hierarchical store
US4455606A (en) * 1981-09-14 1984-06-19 Honeywell Information Systems Inc. Logic control system for efficient memory to CPU transfers
US4458310A (en) * 1981-10-02 1984-07-03 At&T Bell Laboratories Cache memory using a lowest priority replacement circuit
US4536836A (en) * 1981-11-27 1985-08-20 Storage Technology Corporation Detection of sequential data stream
US4597041A (en) * 1982-11-15 1986-06-24 Data General Corp. Method and apparatus for enhancing the operation of a data processing system
FR2552916B1 (en) * 1983-09-29 1988-06-10 Thomas Alain ASYNCHRONOUS QUEUE WITH STACK OF REGISTERS
US4621320A (en) * 1983-10-24 1986-11-04 Sperry Corporation Multi-user read-ahead memory
US4747070A (en) * 1984-01-09 1988-05-24 Wang Laboratories, Inc. Reconfigurable memory system
JPS60205760A (en) * 1984-03-30 1985-10-17 Fuji Xerox Co Ltd Memory controller
US4807110A (en) * 1984-04-06 1989-02-21 International Business Machines Corporation Prefetching system for a cache having a second directory for sequentially accessed blocks
US4695943A (en) * 1984-09-27 1987-09-22 Honeywell Information Systems Inc. Multiprocessor shared pipeline cache memory with split cycle and concurrent utilization
JPS6356754A (en) * 1986-08-28 1988-03-11 Toshiba Corp Input/output channel
US5111389A (en) * 1987-10-29 1992-05-05 International Business Machines Corporation Aperiodic mapping system using power-of-two stride access to interleaved devices
US4953079A (en) * 1988-03-24 1990-08-28 Gould Inc. Cache memory address modifier for dynamic alteration of cache block fetch sequence
US5146578A (en) * 1989-05-01 1992-09-08 Zenith Data Systems Corporation Method of varying the amount of data prefetched to a cache memory in dependence on the history of data requests
US5133058A (en) * 1989-09-18 1992-07-21 Sun Microsystems, Inc. Page-tagging translation look-aside buffer for a computer memory system
EP0440243A3 (en) * 1990-01-31 1993-12-15 Nec Corp Memory controller for sub-memory unit such as disk drives
EP0449369B1 (en) * 1990-03-27 1998-07-29 Koninklijke Philips Electronics N.V. A data processing system provided with a performance enhancing instruction cache
US5666515A (en) * 1993-02-18 1997-09-09 Unisys Corporation Information processing system having multiple modules and a memory on a bus, where any module can lock an addressable portion of the memory by sending retry signals to other modules that try to read at the locked address
JPH07129456A (en) * 1993-10-28 1995-05-19 Toshiba Corp Computer system
JP3519205B2 (en) * 1996-03-21 2004-04-12 シャープ株式会社 DMA controller
US5854911A (en) * 1996-07-01 1998-12-29 Sun Microsystems, Inc. Data buffer prefetch apparatus and method
US6535962B1 (en) * 1999-11-08 2003-03-18 International Business Machines Corporation System and method for prefetching data using a hardware prefetch mechanism
TW431069B (en) * 2000-04-07 2001-04-21 Via Tech Inc High-speed data buffer
CN101667159B (en) * 2009-09-15 2012-06-27 威盛电子股份有限公司 High speed cache system and method of trb
US11567878B2 (en) * 2020-12-23 2023-01-31 Intel Corporation Security aware prefetch mechanism

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3588829A (en) * 1968-11-14 1971-06-28 Ibm Integrated memory system with block transfer to a buffer store
US3675217A (en) * 1969-12-23 1972-07-04 Ibm Sequence interlocking and priority apparatus
US3670307A (en) * 1969-12-23 1972-06-13 Ibm Interstorage transfer mechanism
US3701107A (en) * 1970-10-01 1972-10-24 Rca Corp Computer with probability means to transfer pages from large memory to fast memory
US3820078A (en) * 1972-10-05 1974-06-25 Honeywell Inf Systems Multi-level storage system having a buffer store with variable mapping modes
US3898624A (en) * 1973-06-14 1975-08-05 Amdahl Corp Data processing system with variable prefetch and replacement algorithms
GB1443777A (en) * 1973-07-19 1976-07-28 Int Computers Ltd Data processing apparatus
US3928857A (en) * 1973-08-30 1975-12-23 Ibm Instruction fetch apparatus with combined look-ahead and look-behind capability

Also Published As

Publication number Publication date
AU4283878A (en) 1979-06-28
AU522478B2 (en) 1982-06-10
US4157587A (en) 1979-06-05
JPS5494241A (en) 1979-07-25

Similar Documents

Publication Publication Date Title
CA1123521A (en) High speed buffer memory system with word prefetch
US4167782A (en) Continuous updating of cache store
US4195340A (en) First in first out activity queue for a cache store
CA1129114A (en) Round robin replacement for a cache store
CA1126873A (en) Multi-configurable cache store system
US4161024A (en) Private cache-to-CPU interface in a bus oriented data processing system
US4866603A (en) Memory control system using a single access request for doubleword data transfers from both odd and even memory banks
US4493026A (en) Set associative sector cache
US4045781A (en) Memory module with selectable byte addressing for digital data processing system
US5640534A (en) Method and system for concurrent access in a data cache array utilizing multiple match line selection paths
US6049855A (en) Segmented memory system employing different interleaving scheme for each different memory segment
CA1129113A (en) Initialization of cache store
US5210843A (en) Pseudo set-associative memory caching arrangement
EP0029517A2 (en) Store-in-cache mode data processing apparatus
CA1040743A (en) Data processing system
US5329629A (en) Apparatus and method for reading, writing, and refreshing memory with direct virtual or physical access
US4190885A (en) Out of store indicator for a cache store in test mode
KR100295187B1 (en) Memory controller for executing read/write command without order
GB2193017A (en) Improved memory access system
US5668972A (en) Method and system for efficient miss sequence cache line allocation utilizing an allocation control cell state to enable a selected match line
US4214303A (en) Word oriented high speed buffer memory system connected to a system bus
EP0708404A2 (en) Interleaved data cache array having multiple content addressable fields per cache line
US6745291B1 (en) High speed LRU line replacement system for cache memories
US6202133B1 (en) Method of processing memory transactions in a computer system having dual system memories and memory controllers
GB2034944A (en) High-speed digital computer system

Legal Events

Date Code Title Description
MKEX Expiry