throbber
(19) 0
`
`)
`
`European Patent Office
`Office européen des brevets
`
`lllllllllllllllllllllllllllllllllllllllllllllllllllll
`
`(11)
`
`EP 0 532 509 B1
`
`(12)
`
`EUROPEAN PATENT SPECIFICATION
`
`(45) Date of publication and mention
`of the grant of the patent:
`07.01.1999 Bulletin 1999/01
`
`(51) Int 01.6: G06F 13/00, GOGF 13/38,
`GOGF 3/06, GOGF 13/40
`
`'919072967
`b
`t'
`21 A |'
`)
`pp'ca'on “um er:
`'
`
`(
`
`(86) International application number:
`PCT/US91/01716
`
`(22) Date Of filing: 14'03'1991
`
`(87) International publication number:
`WO 91/14228 (19.09.1991 Gazette 1991/22)
`
`(54) BUFFERING SYSTEM FOR DYNAMICALLY PROVIDING DATA TO MULTIPLE STORAGE
`ELEMENTS
`
`PUFFERSYSTEM, UM DATEN DYNAMISCH AN MEHRERE SPEICHERELEMENTE
`WEITERZULEITEN
`
`SYSTEME DE TAMPONNAGE POUR UN TRANSFERT DE DONNEES DYNAMIQUE A DES
`ELEMENTS DE STOCKAGE MULTIPLES
`
`(84) Designated Contracting States:
`DE FR GB IT
`
`0 GAJJAR, Kumar
`San Jose, CA 95131 (US)
`
`(30) Priority: 14.03.1990 US 494039
`
`(43) Date of publication of application:
`24.03.1993 Bulletin 1993/12
`
`(73) Proprietor: EMC CORPORATION
`Hopkinton, MA 01748-9103 (US)
`
`(72) Inventors:
`0 Nguyen, Anh
`San Jose, CA 95136 (US)
`
`(74) Representative: Griinecker, Kinkeldey,
`Stockmair & Schwanhéusser Anwaltssozietét
`Maximilianstrasse 58
`
`80538 Mfinchen (DE)
`
`(56) References cited:
`DE-A- 3 801 547
`US-A— 4 607 348
`
`US-A— 4 672 613
`US-A- 4 860 244
`
`US-A- 4 371 928
`US-A- 4 644 463
`
`US-A- 4 843 544
`
`
`
`Note: Within nine months from the publication of the mention of the grant of the European patent, any person may give
`notice to the European Patent Office of opposition to the European patent granted. Notice of opposition shall be filed in
`a written reasoned statement. It shall not be deemed to have been filed until the opposition fee has been paid. (Art.
`99(1) European Patent Convention).
`
`Printed by Jouve, 75001 PARIS (FR)
`
`CallCopy
`1108-1
`
`EP0532509B1
`
`CallCopy
`1108-1
`
`

`

`1
`
`EP 0 532 509 B1
`
`2
`
`Description
`
`BACKGROUND OF THE INVENTION
`
`The present invention relates generally to a method
`and system for reading and writing data to an array of
`memory storage devices.
`In a data processing system the performance of the
`central processing units (CPUs) is often limited by their
`data-storage subsystems. In particular, secondary stor-
`age devices used in such subsystems often are incapa-
`ble of transferring data at a rate that matches the speed
`with which the CPUs and the system buses are capable
`of handling the data. To improve the data transfer rate
`of the data-storage subsystems, and to enhance the
`overall data throughput of data processing systems, a
`storage subsystem architecture can be used in which
`the data is stored in an array of multiple storage devices.
`Such a storage array architecture can be imple-
`mented by coupling a high-speed data path (e.g., an in-
`put/output bus of a CPU) to an array of slower storage
`devices (e.g., tape or disk drives) via a corresponding
`array of high-speed memory elements. To write data to
`the storage devices, the provided data segments are
`transferred at high speed one after another overthe data
`path to different ones of the memory elements of the
`memory element array, which in turn hold the data seg-
`ments until the corresponding storage devices are ready
`to receive the data. The segments of data can then be
`transferred in parallel to the storage devices, such that
`the entire data may be stored in the storage device array
`in a shortertime, and with less sacrifice of CPU and sys-
`tem bus cycles, than would be required by a single stor-
`age device. The throughput of the high-speed data path
`is thus enhanced. The stored data can likewise be read
`
`from the storage devices at a high speed by transferring
`segments of data to corresponding memory elements,
`which in turn transfer one segment after another over
`the high-speed data path at a rapid rate.
`US-A-4,672,613 proposes a system for transferring
`data between a host device and a target recording me-
`dium, a buffer interface control unit includes a host direct
`memory access (DMA) unit for transferring data from the
`host unit to a buffer memory. The host DMA unit access-
`es a first set of prescribed noncontinuous buffer memory
`storage locations to store the data transferred from the
`host unit in a predetermined buffer format that includes
`additional sets of prescribed storage locations inter-
`spersed with the first set of data storage locations for
`the storage of error code characters pertaining to the
`data. The host DMA unit also transfers error correction
`
`code characters pertaining to the data to one of the ad-
`ditional sets of prescribed storage locations. The buffer
`interface control unit further includes a target DMA unit
`for transferring data from the buffer memory to a write
`interface unit. The target DMA unit accesses the buffer
`memory storage locations in a predetermined noncon-
`tinuous sequence in order to retrieve the data from the
`
`buffer memory in a format that includes open time slots
`interspersed with time slots occupied by the retrieved
`data for the insertion of error detection code characters
`
`pertaining to the data retrieved from the buffer memory.
`Generally, the known method for directing data into
`and out of a series of memory elements is to use a state
`machine sequencer implemented in hardware logic to
`control a memory element access sequence. This meth-
`od has several drawbacks. For example, the configura-
`tion in which data segments are stored in an array may
`vary from data transfer to data transfer, thus making it
`necessary that the sequence in which the data seg-
`ments are transferred between the data path interface
`and the storage device array be variable. A state ma-
`chine sequencer typically lacks sufficient flexibility to ac-
`commodate many different data storage configurations,
`and may require expensive modification to accommo-
`date even a slight change in configuration. This may limit
`the usefulness of the entire secondary storage subsys-
`tem. Known state machine sequencers also are typically
`complex and expensive.
`It is the object of the present invention to propose
`a data storage system and a respective method by
`which the selecting of memory elements can be varied
`to accommodate a wide variety of data storage config-
`urations and that can be implemented in a simple and
`inexpensive manner.
`This object is solved by the subject matter of claims
`1 and 10.
`
`Preferred embodiments of the present invention are
`the subject matter of the dependent claims.
`Preferably, each memory buffer has a temporary
`memory (typically, a static ram) for temporarily storing
`data transferred to or from the memory storage element
`(typically, a disk drive). Data paths couple the data l/O
`of the static RAM (SRAM) to the first and second inter-
`face circuits and to the disk drive through a word assem-
`bler. The word assembler converts between the 36-bit
`
`SRAM l/O path and the 9-bit disk drive l/O path. The
`particular data path to be used is controlled by trans-
`ceivers which are enabled by read/write and l/O circuitry
`under control of the local processor. Two separate
`counters are used to sequence through the addresses
`provided to the SRAM to transfer data between (1) the
`SRAM and the interface circuits, and (2) the SRAM and
`the disk drive interface, respectively. These counters
`can be preprogrammed by the local processor, which
`then selects the appropriate one to sequence through
`addresses, depending on the type of data transfer.
`A multi-function capability of each memory buffer
`allows it to transfer the same data to different memory
`buffers. This means the data can be duplicated in mul-
`tiple copies that can later be sent to different destina-
`tions.
`
`The invention will be better understood by reference
`to the following detailed description in connection with
`the accompanying drawings.
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`CaIICopy
`1 108-2
`
`CallCopy
`1108-2
`
`

`

`3
`
`EP 0 532 509 B1
`
`4
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`is a an overall block diagram of the data stor-
`1
`Fig.
`age system of the present invention;
`Fig. 2 is a block diagram of the interface circuits of
`Fig. 1;
`Fig. 3 is a block diagram of one embodiment of the
`control logic of Fig. 1;
`Fig. 4 is a block diagram of one implementation of
`the memory buffer selection FIFO circuitry of Fig. 3;
`Figs. 5(a)-5(f) illustrate the memory buffer selection
`process of the present invention using a 4-bit wide,
`16-element FIFO storage circuit having decoded
`outputs for serially sequencing 5 of 16 elements;
`Fig. 6 is a block diagram of a second embodiment
`of the data path control logic according to Fig. 1 us-
`ing two FIFO circuits; and
`Fig. 7 is a block diagram of the memory buffer of
`Fig. 1.
`
`DETAILED DESCRIPTION OF THE PREFERRED
`EMBODIMENTS OF THE INVENTION
`
`Fig. 1 shows an overall block diagram of a data stor-
`age system 10. System 10 includes high-speed SCSI-
`2 buses 12 and 14 which are connected to an external
`
`computer system (not shown). SCSI-2 buses 12 and 14
`provide data to first and second interface circuits 16 and
`18, respectively. Interface circuit 16 provides data to a
`plurality of memory buffers 24 across a data bus 20.
`Likewise, interface circuit 18 provides data to memory
`buffers 24 across a data bus 22. Each memory buffer
`24 further provides data to a separate memory storage
`unit 26 across a 9-bit data bus 25. A local processor 28
`coupled to interface circuits 16 and 18 through a local
`bus extension 32 provides address and control signals
`to memory buffers 24 and a control logic circuit 30. Con-
`trol logic 30 is connected to each memory buffer 24 by
`a plurality of select lines 34A and 34B. Preferably, each
`SCSI-2 bus 12 and 14, data bus 20 and 22 and local
`bus extension 32 are 36 bits wide.
`
`In an overview, data can be written into and read
`from storage elements 26 by the external computer sys-
`tem. For writing operations, data enters on SCSI-2 bus
`12 (or 14) from the external computer system and is for-
`warded by interface circuit 16 (or 18) along data bus 20
`(or 22) to a selected memory buffer 24. From the select-
`ed memory buffer 24, the data is written into storage unit
`26 through data bus 25. For reading operations, data is
`retrieved from storage unit 26 through memory buffer 24
`along data bus 20 (or 22) to the appropriate interface
`circuit 16 or 18.
`
`Interface circuits 16 and 18 can operate simultane-
`ously; or, one could operate while the other is inactive.
`Data can be written into selected storage elements 26
`on data bus 20 while data is read from other selected
`
`ously, or read simultaneously, to greatly increase the da-
`ta transfer rate. Control logic 30 selects one or more of
`memory buffers 24 and enables their I/O to one of data
`buses 20 and 22 through two select lines 34A and 34B.
`Select line 34A corresponds to data bus 20 and select
`line 34B corresponds to data bus 22.
`When data is written into a memory buffer 24 for
`later transfer to a storage unit 26, an address for the
`memory buffer is provided from local processor 28. Con-
`trol logic 30 is programmed by processor 28 to select a
`particular select line 34A (or 34B) to address a desired
`memory buffer 24 for storing the data. The data is sub-
`sequently transferred to a storage unit 26.
`A read operation is similar to a write operation. An
`address is provided from local processor 28 along bus
`extension 32 to a selected memory buffer 24, for ac-
`cessing the memory in the selected memory buffer. The
`data will have previously been transferred from storage
`unit 26 to memory buffer 24. Once the desired address
`location is selected, the data is retrieved along data bus
`line 20 or 22, through the respective initiator interface
`circuit 16 or 18, then continuing along SCSI-2 bus 12 or
`14 to the external computer system. Local processor 28
`selects which interface circuit 16 or 18 (or both) is to be
`used for data transfer to a memory buffer.
`Fig. 2 shows in block diagram form interface circuits
`17 and 19 as connected to computer interface SCSI-2
`buses 12 and 14. Preferably, interface ports 12 and 14
`are small computer system interfaces (SCSI). As shown
`and described earlier, SCSI-2 buses 12 and 14 are
`36-bit data buses. Data to be stored in storage units 26
`is provided along SCSI-2 bus 12 and stored in a data-
`in register 36. A driver 38 is connected between the out-
`put of data-in register 36 and data bus 20. Data-out reg-
`ister 40 receives data retrieved from storage units 26
`along data bus 20 and is coupled to SCSI-2 bus 12
`through driver 42. The parity of each data word is
`checked by parity circuit 44, which is coupled to SCSI-
`2 bus 12. Both driver 38 and driver 42 are connected to
`
`control lines 48 and 46, respectively.
`In a write operation, driver 38 is enabled by a signal
`on control line 48 while driver 42 is disabled by a signal
`on control line 46 when data is being written into any of
`the storage units 26. Driver 42 is disabled to block any
`data coming from data-out register 40 so the data does
`not interfere with the data coming in on data bus 12
`through data-in register 36. In a read operation, the op-
`posite operation occurs. Driver 42 is enabled by a signal
`on control line 46 while driver 38 is disabled by a signal
`on line 48 when data is being read from any of storage
`units 26. Driver 38 is disabled to allow data in data-out
`
`registers 40 received from bus 20 to be outputted to SC-
`Sl-2 bus 12. This disablement of driver 38 blocks data-
`
`in register 36 so that it does not interfere with the data-
`out operation of data-out register 40. Local processor
`28 selects one of driver 42 and driver 38 with control
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`storage units 26 along data bus 22 and vice versa. Also,
`interface circuits 16 and 18 can both write simultane-
`
`signals on lines 46 and 48. The control signals are pro-
`vided to interface circuit 17 from local processor 28
`
`CallCopy
`1 108-3
`
`CallCopy
`1108-3
`
`

`

`5
`
`EP 0 532 509 B1
`
`6
`
`along bus extension 32.
`Interface circuit 19 is identical to circuit 16 in structure
`
`and performs the same function and operation for SCSI-
`2 bus 14 and data bus 22.
`
`Fig. 3 shows one implementation of the control logic
`30 of Fig.
`1 with only data bus 20. The portion of the
`data storage system shown in Fig. 3 illustrates various
`paths along which data can be transferred in the storage
`subsystem to and from a plurality of disk drive devices
`(O-N). Data is transferred between interface circuit 16
`and memory buffers 24 over data bus 20, although data
`can also be transferred between local processor 28 and
`memory buffer 24 over bus extension 32, or from one
`memory buffer 24 to another over bus 20 or bus exten-
`sion 32 or another bus not shown.
`
`Interface circuit 16 is coupled to SCSI-2 bus 12 by
`which data is transferred between interface circuit 16
`
`and other modules of the data storage system or the
`external CPU or other components of the data process-
`ing system. SCSI-2 bus 12 may, for example, couple in-
`terface circuit 16 to a front-end interface module of the
`
`data storage system. Interface circuit 16 controls the
`flow of data on data bus 20 which couples interface cir-
`cuit 16 to a data port of each of memory buffers 24. Each
`memory buffer 24 in turn is coupled to a corresponding
`memory storage unit 26, such as a disk drive, via a data
`bus 25. The transfer of data between the memory buff-
`ers and the storage circuits over data buses 25 is con-
`trolled by local processor 28 and other control circuitry
`not forming a part of control logic 30 of the present in-
`vention.
`
`Local processor 28 also controls the overall process
`by which data is transferred between interface circuit 16
`and memory buffers O-N. The data is transferred as a
`series of data segments, typically of equal length. The
`size of the segments is defined by local processor 28
`and may, for example, equal the size of a sector on each
`of the memory storage units O-N. Each segment is trans-
`ferred between interface circuit 16 and a memory buffer
`24 as a unit.
`
`Bus extension 32 couples local processor 28 to con-
`trol registers in memory buffer 24, including a read/write
`register. Bus extension 32 also couples the local proc-
`essor to address registers in memory buffers ON and a
`holding register circuit 63 in control logic 30. Holding
`register circuit 63 is used to store a value equal to the
`number of data words or bytes in each segment of data
`to be transferred between interface circuit 16 and a
`
`memory buffer.
`A transfer (or word) counter circuit 65 is coupled to
`the output of holding register circuit 63. Transfer counter
`65 is a down counter and is loaded with the word count
`
`stored in holding register circuit 63 each time a new data
`segment is to be transferred to orfrom a memory buffer.
`Transfer counter 65 is decremented once for each data
`
`word or byte transferred. When transfer counter 65
`reaches 0, a signal is sent to zero detector circuit 68
`indicating completion of a segment transfer, and transfer
`
`counter 65 is reloaded by holding register 63 in re-
`sponse to a signal from zero detector circuit 68 on line
`69. The segment transfer completion signal also causes
`zero detector circuit 68 to provide read and load signals
`on lines 71 and 73, respectively, to sequence storage
`circuit 56.
`
`Sequence storage circuit 56 is a programmable cir-
`cuit for storing a sequence of memory buffer identifiers
`used to select the memory buffers to or from which data
`is to be transferred. The output of sequence storage cir-
`cuit 56 is coupled to selection bus 33, lines of which are
`coupled individually to select lines 34A of memory buff-
`ers O-N. Preferably, sequence storage circuit 56 is im-
`plemented using conventional first-in/first-out
`(FIFO)
`circuits to form a storage matrix in which memory buffer
`identifiers stored in the circuit are accessed in the same
`
`sequence that they are loaded, although the access se-
`quence may also be in any other repetitive order de-
`pending on the implementation and the application (e.
`g., the identifiers can be accessed in a reverse order).
`Sequence storage circuit 56 can also be implemented
`using RAM or register arrays, or a microprocessor, but
`a FIFO implementation requires the least amount of
`hardware.
`The exact manner in which identifiers are accessed
`
`from sequence storage circuit 56 depends on the par-
`ticular implementation of the circuit. Accessing an iden-
`tifier from sequence storage circuit 56 can be accom-
`plished in numerous ways. For example, it may be the
`case that a FIFO circuit is used that automatically trans-
`fers the first identifier with which it is loaded to its output
`and latches the output, such that the first identifier is im-
`mediately available on selection bus 33, and subse-
`quently loaded identifiers are accessed by providing a
`read signal to the FIFO circuit. This implementation is
`exemplified in Fig. 3. The FIFO circuit may also require
`an additional output enable signal, as shown in Fig. 4.
`"Accessing" sequence storage circuit implementations
`other than FIFO circuitry may include operations such
`as "fetch", "unload" and "nondestructive read".
`The output of sequence storage circuit 56 is also
`coupled by bus 33 to one input of a 2:1 multiplexercircuit
`52, the other input of which is coupled to bus extension
`32. At the beginning of a data transfer, local processor
`28 provides a signal on load data line 75 which causes
`multiplexer circuit 52 to couple bus extension 32 to the
`data input of sequence storage circuit 56 in order to load
`memory buffer identifiers into sequence storage circuit
`56. After the identifiers are loaded local processor 28
`releases control of multiplexer 52, and multiplexer 52
`couples the output of sequence storage circuit 56 to its
`input. Multiplexer 52 allows the output of sequence stor-
`age circuit 56 to be written back to its input each time
`an identifier stored in sequence storage circuit 56 is ac-
`cessed.
`In this manner the sequence of
`identifiers
`stored in sequence storage circuit 56 can be repeated
`as necessary to complete the transfer of data. When the
`transfer is completed, or at the initiation of a subsequent
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`CallCopy
`1 108-4
`
`CallCopy
`1108-4
`
`

`

`7
`
`EP 0 532 509 B1
`
`8
`
`transfer, the local processor 28 causes a reset control
`logic circuit 77 to clear sequence storage circuit 56.
`A parity circuit (or other validation circuitry) 79 cou-
`pled to bus 33 validates the identifiers written back into
`sequence storage circuit 56. Each identifier stored by
`local processor 28 in sequence storage circuit 56 in-
`cludes one or more parity bits. When an identifier is ac-
`cessed from sequence storage circuit 56, parity circuit
`79 generates a corresponding parity value and com-
`pares it to the parity bit or bits appended to the identifier.
`Parity circuit 79 generates an error signal if the com-
`pared parity data do not match.
`In addition, bus 33 is
`coupled between the output of sequence storage circuit
`56 and bus extension 32 to allow local processor 28 to
`read back identifiers stored in sequence storage circuit
`56 for validation and diagnostic purposes. Bus 35 cou-
`ples the output of holding register circuit 63 to bus ex-
`tension 32 to allow local processor 28 to read the con-
`tents of holding register circuit 63 for similar purposes.
`An exemplary implementation of sequence storage
`circuit 56 using an n x m FIFO circuit 300 is shown in
`Fig. 4, where n represents the bit length of the storage
`matrix (i.e., the number of bits in each memory buffer
`identifier storage location), and m represents the depth
`of the storage matrix (i.e., the number of identifier stor-
`age locations). FIFO circuit 300 can be constructed from
`any number of conventional FIFO circuit chips to create
`a matrix of the desired size. If
`it is desired that a group
`of memory buffers from an array of memory buffers be
`selectable at one time during a sequenced data transfer,
`the FIFO circuit can be implemented in a bit-significant
`format where each bit of an identifier storage location in
`the FIFO circuit corresponds to a different memory buff-
`er. In this format the identifiers stored in the FIFO circuit
`
`directly represent, as a pattern of ones and zeros, the
`selecting signals for each memory buffer of the array,
`and the bit-length of the FIFO circuit at least equals the
`number of memory buffers in the memory buffer array.
`The bit-length may be greater than the array size if parity
`bits are appended to the stored identifiers.
`If on the other hand only a single memory buffer is
`to be selected during each step of the sequenced data
`transfer, the bit-length of the FIFO circuit can be made
`less than the size of the memory buffer array by encod-
`ing the memory buffer identifiers stored in the FIFO, and
`decoding the identifiers into bit-significant patterns as
`the identifiers are read from the FIFO circuit. This stor-
`
`age format is shown in Fig. 5.
`Returning to Fig. 4, FIFO circuit 300 receives a se-
`quence of memory buffer identifiers from bus extension
`32 through multiplexer 52. The output of FIFO circuit 300
`is coupled through an enabled output circuit 302 to se-
`lection bus 33 and is written back to the input 304 of
`FIFO circuit 300 by bus 306 to permit the accessed iden-
`tifier of the sequence to be repeated. Parity checker cir-
`cuit 79 generates a parity error signal if the parity does
`not match the parity of the stored identifier.
`Data transfers over data bus 20 between interface
`
`circuit 16 and memory buffers 0-N generally take place
`as follows. Data is transferred over data bus 20 one
`
`word at a time. To write data to a selected memory buff-
`er, an external CPU or other source places a data word
`on data bus 20 and asserts a data request signal on data
`request line 41, which provides the data request signal
`to direct memory access (DMA) control circuit 61. DMA
`control circuit 61 generates a write pulse on line 39,
`which in combination with the memory buffer select sig-
`nal allows a data word to be written to the memory buffer
`or buffers selected by control logic 30. DMA control cir-
`cuit 61 asserts a data acknowledge signal on line 49.
`This data acknowledge signal informs the external CPU
`to assert another data request signal for the next word
`to be transferred. The data acknowledge signal also is
`coupled to word counter circuit 65, which decrements
`its value once for every data acknowledge signal it re-
`ceives.
`
`To conduct a data read (Le, a transfer of data from
`memory buffers 0-N to interface adaptor 16), the exter-
`nal CPU again asserts a data request signal on line 41.
`In response to the data request signal DMA control cir-
`cuit 61 generates a read pulse on line 39.
`In response
`to the read pulse a selected memory buffer places a data
`word on data bus 20. DMA control circuit 61 sends a
`
`data acknowledge signal on line 49. Word counter 65 is
`decremented once for each asserted data acknowledge
`signal. These write and read operations are repeated as
`often as necessary to complete the data transfer.
`Memory buffers are selected by sequence control
`logic 30 as follows. For purposes of illustration, it is as-
`sumed that the following memory buffer sequence is
`loaded in first in, first out order in sequence storage cir-
`cuit 56: memory buffer 0, memory buffer 5, memory buff-
`er 10 and memory buffer 12. The first identifier in se-
`quence storage circuit 56, when accessed, causes
`memory buffer 0 to be selected. The first identifier is also
`written back to the input of sequence storage circuit 56
`before a second identifier is accessed. When interface
`
`circuit 16 asserts a data request on line 41 to transfer a
`data word to memory buffer 0, the first data word placed
`on data bus 20 is read by memory buffer 0, and word
`counter 65 is decremented by 1. In response to a second
`data request signal, a second data word is read by mem-
`ory buffer 0, and word counter 65 is again decremented
`by 1. This continues until word counter 65 reaches 0.
`When word counter 65 reaches 0, zero detector cir-
`cuit 68 is activated to provide various control signals as
`follows: control signals are provided on lines 71 and 73
`to sequence storage circuit 56 to cause the second iden-
`tifier to be accessed for selecting memory buffer 5, and
`to cause the second identifier to be written back to the
`
`input of sequence storage circuit 56; and a control signal
`is provided to load word counter circuit 65 from holding
`register circuit 63.
`After the data segment is transferred to memory
`buffer 5, the process is repeated to transfer data to
`memory buffers 10 and 12. When the transferto memory
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`CaIICopy
`1 108-5
`
`CallCopy
`1108-5
`
`

`

`9
`
`EP 0 532 509 B1
`
`10
`
`buffer 12 is complete, memory buffer 0 will again be se-
`lected and the sequence repeated to transfer additional
`data to each of the selected memory buffers. This proc-
`ess will continue until the data transfer from the interface
`
`circuit 16 is completed. After a desired amount of data
`has been transferred to memory buffers 0,5, 10 and 12,
`a data transfer will begin from memory buffers O, 5, 10
`and 12 to their corresponding data bus 25 to complete
`the data transfer to storage units 26.
`Figs. 5(a)-(f) show an example of the steps by which
`a typical FIFO circuit 400 selects a repeating sequence
`of memory buffers. The FIFO is configured to select a
`sequence of 5 memory buffers in single order from an
`array of 16 buffers. The sequence in the order is 0,5, 8,
`14 and 2. The FIFO is implemented as 16 addresses
`deep (although only 5 are necessary for this example)
`by 4 bits wide. The addresses are encoded and a 4-to-
`16 decoder circuit 402 is used to select one buffer at a
`
`In Figs. 5(a)-(f) a solid line signal path indicates
`time.
`that the signal path is active; a dotted line signal path
`indicates that the path is inactive.
`In Fig. 5(a), bus extension 32 is shown activated
`(solid line) to load FIFO circuit 400 with addresses of the
`selected buffers in sequence. In this figure buffers O, 5,
`8, 14 and 2 are loaded in first-in/first-out order. Buffer O
`is loaded first. The decoder 402 output is either not en-
`abled or is ignored at this time.
`Fig. 5(b) shows the FIFO circuit 400 during data
`transfer with buffer 0 selected. Bus extension 32 is in-
`
`active (dotted line) during this time, as is feedback 404.
`Fig. 5(c) shows the end of data transfer to buffer 0.
`The address of buffer 0 is written back into the FIFO
`circuit 400 after the FIFO circuit is accessed via write-
`
`back path 404, and there is a shift of the FIFO contents
`to put 5 at the output.
`Fig. 5(d) shows FIFO circuit 400 during data trans-
`fer with buffer 5 selected. The write-back path 404 is
`inactive.
`
`Fig. 5(e) shows the end of data transfer to buffer 5.
`The address of buffer 5 is written back into FIFO circuit
`400 after the FIFO circuit is accessed via write-back
`
`path 404, and another FIFO shift is done.
`Fig. 5(f) shows FIFO circuit 400 during data transfer
`with buffer 8 selected. Write-back 404 is again inactive.
`Buffers 14 and 2 are accessed in the same way as
`the previous buffers. These accesses are not shown in
`Fig. 5. This sequence will be repeated until the data
`transfer for all buffers is completed as discussed previ-
`ously.
`Fig. 6 shows in block diagram a further implemen-
`tation of the control logic 30 found in Fig.
`1 and Fig. 3.
`This implementation includes a second set of sequence
`storage circuits, holding register circuits, and transfer
`counters and controls, as well as a buffer compare logic
`60, whose function is described below. Addresses are
`provided to control logic 30 through bus extension 32.
`A receiver 50 is connected to bus extension 32. Receiv-
`
`er 50 has its output coupled to a first 2:1 multiplexer 52
`
`and a second 2:1 multiplexer 54. Each multiplexer 52
`and 54 is further coupled to a sequence storage circuit
`56 and 58, respectively. Preferably, each sequence stor-
`age circuit is a first-in/first-out (FIFO) device that pro-
`vides a 64x15-bit word array. Thirteen bits of each word
`are used for selecting one or more of select lines BLO -
`BL12, with the remaining two bits being parity bits. The
`output of sequence storage circuit 56 corresponds to se-
`lect lines 34A for selecting any one of memory buffers
`24 while data is provided on data bus 20. Similarly, the
`output of sequence storage circuit 58 corresponds to se-
`lect lines 34B for selecting any one of memory buffers
`24 while data is provided on data bus 22. Buffer com-
`pare logic 60 has inputs connected one each to select
`lines 34A and 34B and an output coupled to local proc-
`essor 28 by output line 62. When buffer compare logic
`60 receives signals from both select lines 34A and 34B
`for the same buffer 24, this indicates that both data bus-
`es 20 and 22 are trying to access the same memory buff-
`er 24 simultaneously. When such occurs, buffer com-
`pare logic 60 generates an error signal to local proces-
`sor 28 on output line 62.
`In a general overview of operation, an address pat-
`tern is Ioaded into the 64x15-bit word array of FIFO 56
`from bus extension 32. Each word in the address pattern
`has one or more active bits that, when selected, enables
`a particular select line 34A coupled to a specific memory
`buffer 24. The word output from FIFO 56 selects a spe-
`cific line 34A to access a specific memory buffer 24 with
`data either written to or read from that memory buffer 24
`along data bus 20. In addition, a word output from FIFO
`58 selects a specific select line 34B to access a specific
`memory buffer 24 to read or write data along data bus
`line 22. The outputs of FIFOs 56 and 58 are coupled
`back to their inputs through multiplexers 52 and 54, re-
`spectively.
`Status register 70 is used to provide the local proc-
`essor with the status of the memory buffer (i.e., interrupt
`status, mask status and other status, such as FIFO full,
`etc.). Interrupt mask register 83 is used to mask an in-
`terrupt from one or more of the memory buffers. An in-
`terrupt is generated upon the completion of a datatrans-
`fer. The control Iogic 30 in Fig. 6 is essentially identical
`in operation to that found in Fig. 3 and includes the sec-
`ond sequence storage circuit with accompanying regis-
`ter, counters and controls.
`Register 49 and counter and control circuit 53 corre-
`spond to the holding register and counter and control
`circuitry of Fig. 3 for FIFO 56. Register 51 and counter
`and control circuitry 55 perform the same function for
`FIFO 58. The buffer compare logic is added to this em-
`bodiment in order to detect an error of selecting the
`same memory buffer for the simultaneous write and
`read operations as described earlier.
`Fig. 7 is a block diagram showing one of the mem-
`ory buffers 24 shown in Fig. 1. Data transferred on 32-bit
`data bus 20 comes into memory buffer 24 much faster
`than the data transferred can be provided to storage el-
`
`10
`
`15
`
`20
`
`25
`
`3

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket