Buffer memory arrangement

Abstract: A buffer memory arrangement (15) is provided for use in a bi-directional interface interposed, for example, between a data storage device (such as a tape drive) and a data handling system (such as a host computer). The arrangement includes a buffer memory (20). Typically, the data rates of the data storage device and data handling system will differ significantly. In order to enable both the storage device and data handling system to be serviced continually without requiring either to suspend data transfer, the buffer memory arrangement (15) is operative to service both cyclically in a prede­ termined sequence and each for a respective predeter­ mined portion of the service cycle; in addition, first-­ in, first out data stores (25,26) are interposed between the buffer memory (20) and the storage device and data-­ handling system.

Description: The present invention relates to a buffer memory arrangement for use in a bi-directional interface interposed, for example, between a data storage device (such as a tape drive) and a data handling system (such as a host computer). Buffer memory arrangements for bi-directional interfaces are known of the type comprising: a buffer memory having a plurality of storage locations, a data port, and an address port, a plurality of data channels each for the input and output of data from said buffer memory, and memory access control means connected to said memory address port and operative to connect the memory data port to any selected one of said data channels and to control the transfer of data between the selected data channel and selected storage locations in said memory. The memory access control means is typically what is referred to as a DMA (direct memory access) controller. Such controllers have internal registers which can be programmed by a processor to specify the parameters of a block transfer between the buffer memory and a particular data channel; once the controller has been activated to effect a transfer, the transfer process is controlled by the controller independently of the processor. Such DMA controllers are highly versatile but depend on the controlling processor to determine the order in which transfers are undertaken. The processor may effect this determination according to some channel priority scheme; however, such schemes are often unsatisfactory in serving the requirements of the lower-priority channels. Recently, there has been much activity in the area of video memory systems. These systems have highly specific requirements and generally comprise a video memory having one input channel, one output channel and refresh circuitry. An example of such a video memory system is described in European Patent Application No. 0280,882 (RCA) published 7 September 1988. Such memory systems cannot however, be used to interface with data storage devices as these systems are essentially uni-directional in nature. It is an object of the present invention to provide a buffer memory arrangement that is suitable for servicing a plurality of bi-directional data channels requiring regular access. According to the present invention as defined in claim 1, there is provided a buffer memory arrangement of the aforesaid type, wherein the memory access control means is arranged to cyclically service said data channels in a predetermined sequence and each for a respective predetermined portion of the service cycle, the buffer memory arrangement being provided with a first-in, first-out data store for each said data channel, and the capacity of each such data store being sufficient to hold the maximum possible accumulation of data arriving via the corresponding said channel during the portions of the service cycle when that channel is not being serviced. Preferably the division of the service cycle between the channels reflects the data transfer rates required for the channels. Advantageously, where the buffer memory comprises dynamic RAM chips operable both in a normal access mode applicable to random accesses and in a fast access mode applicable when successive accesses are made to adjacent storage locations of the memory, the memory access control means is operative to cause at least the data channel requiring the highest data transfer rate to be serviced utilising said fast access mode, the duration of corresponding portion of the service cycle being such as to permit multiple memory accesses. The buffer memory arrangement can, with advantage, be used in an interface between a host computer and a storage device. In this case one data channel serves for the transfer of data between the host computer and buffer memory while another channel serves for the transfer of data between the storage device and buffer memory. An interface arrangement incorporating a buffer-memory subsystem embodying the invention will now be particularly described, by way of non-limiting example, with reference to the accompanying drawings in which; Figure 1 is a block diagram of the interface arrangements showing the buffer-memory subsystem; Figure 2 is a block diagram showing the main components of a DMA controller of the buffer memory sub-system; and Figure 3 is a diagram illustrating the service cycle operated by the DMA controller of Figure 2. The interface arrangement shown in Figure 1 is intended to interface a data handling system (in the present case, a host computer) with a data storage device (in the present case, a tape drive). The host computer (not shown) is connected to an input/output circuit 10 of the interface arrangement by a bus system 11. The tape drive (not shown) is connected to an input/output circuit 12 of the interface arrangement by a bus system 13. Typically, the interface arrangement will be integrated with the tape drive itself so that the bus system 13 is an internal one; in contrast, the bus system 11 is external and communications over this system will generally take place in accordance with a standard protocol such as the SCSI protocol with the protocol interactions over the bus system 11 being handled by the input/output circuit 10. In addition to the input/output circuits 10 and 12, the interface arrangement comprises a microprocessor subsystem 14 and a buffer memory subsystem 15. The microprocessor subsystem 14 comprises a microprocessor, ROM memory storing a control program, and a RAM memory. The function of the microprocessor subsystem 14 is to control the overall operation of the interface arrangement, this control being exerted via the microprocessor bus system 16 that extends between the microprocessor subsystem and the input/output circuits 10, 12 and the buffer memory subsystem 15. The input/output circuits 10 and 12 are connected to the buffer memory subsystem 15 by bus systems 17 and 18 respectively. During data storage, the microprocessor subsystem 14 controls the input of data into the buffer memory subsystem 15 from the host via the bus system 11, the input/output circuit 10 and the bus system 17, and the subsequent transfer of data from the buffer memory to the tape drive via the bus system 18, the input/output circuit 12 and the bus system 13. The buffer memory subsystem 15 permits the differing data rates and formats of the host system and tape drive to be matched to one another. The microprocessor subsystem 14 may also perform a reformatting function between the reading in of data into the buffer memory subsystem 15 and the reading out of data to the tape drive. In implementing this function, the microprocessor subsystem 14 is arranged to read data from the subsystem 15, and write it back to the buffer memory subsystem in a different arrangement possibly with the addition of format control codes. During data read back, the microprocessor subsystem 14 oversees the reading in of data from the tape drive into the buffer memory subsystem 15 via the bus system 13, the input/output circuit 12 and the bus system 18, and the subsequent reading out of that data from the buffer memory subsystem 15 to the host computer via the bus system 17, the input/output circuit 10 and the bus system 11. In addition, the microprocessor subsystem 14 may effect a reverse formatting of the data held in buffer memory subsystem 15 to that which was implemented during data storage. In addition to the passage of data through the interface arrangement as described above, the microprocessor subsystem 14 will exchange control signals with the host computer and the tape drive via the corresponding input/output circuit and bus systems. Interface arrangements operating in the above described manner are well known in the art and a more detailed description of the operation of the illustrated arrangement will not therefore be given herein. The buffer memory subsystem 15 shown in Figure 1 includes a block of buffer memory 20 constituted, for example, by a plurality of dynamic RAM chips (not shown individually). The buffer memory has an address port 21 and a data port 22, the latter being connected to a buffer-memory data bus 23. The data buses of the bus systems 16, 17 and 18 are connected to the buffer-memory data bus 23 via respective FIFOs(first-in, first-out stores) 24, 25 and 26. The address port 21 of the buffer memory 20 is connected to a DMA (Direct Memory Access) controller 27 of the buffer-memory subsystem 15. The microprocessor bus 16 is connected to the DMA controller 17 to enable the microprocessor subsystem 14 to set up DMA transfers between the buffer memory 20 and the three data channels constituted by the bus systems 16, 17 and 18. The DMA controller 27 is arranged to select a particular data channel by means of control signals output via lines 28 to the FIFOS 24, 25 and 26, the latter being selectively connected to the buffer-memory data bus 23 under the control of these control signals. The DMA controller 27 is shown in more detail in Figure 2. In standard manner, the DMA controller includes a plurality of register pairs 30A, 30B; 31A, 31B; and 32A, 32B into which the microprocessor subsystem can write the parameters of required DMA transfers. The registers 30A and 30B contain the start address and block length of a required DMA transfer between the buffer-memory and the SCSI input/output circuit 10; the register 30B also contains a flag to indicate whether the transfer is a read from or a write to the buffer-memory. The registers 31A and 31B contain similar information in respect of transfers between the buffer-memory and the drive input/output circuit 12 while the registers 32A and 32B contain like information for transfers between the buffer memory and the microprocessor subsystem 14. A further register 33 contains the address of the storage locations next to be refreshed (the buffer- memory being constituted in the present example by dynamic RAMS). The DMA controller 27 is provided with a memory access control unit 34. This control unit 34 operates on a cyclic basis to service the three data channels constituted by the bus systems 16, 17 and 18 and to permit refresh of the DRAMS making up the buffer memory. Figure 3 shows the makeup of a typical buffer-service cycle from which it can be seen that the data channel servicing the SCSI input/output circuit 10 is allocated "a" memory accesses, the data channel servicing the drive input/output circuit 12 is allocated "b" memory accesses, the data channel servicing the microprocessor subsystem 14 allocated "c" memory accesses, and "d" memory accesses are allocated to memory refresh. The division of the buffer service cycle between the data channels and refresh requirement is proportional (although not necessarily directly so) to the required data rates concerned. The values of "a", "b", "c" and "d" are settable by the microprocessor subsystem 14. During the SCSI data channel phase of this service cycle, the control unit 34 connects the FIFO 25 to the buffer-memory data bus 23 and utilises the information contained in the registers 30A, 30B to produce appropriate addresses on the address port 21 of the buffer memory 20. This latter function is achieved by means of an address multiplexer 39 used to select the register 30A and by the control unit 34 advancing the access address after each memory access is effected. If during the phase 35 of the service cycle either no data transfer is required to/from the SCSI data channel or any required transfer is completed, the memory control unit 34 does not advance to the next service cycle phase but counts out the phase 35. Upon completion of phase 35 of the service cycle, the control unit 34 disconnects the FIFO 25 from the data bus 23. Thereafter, phase 36 of the service cycle is entered in which the data channel constituted by the bus system 18 is serviced. This phase 36 progresses in a manner similar to that described above with reference to phase 35 except that now the FIFO 26 is connected to the data bus 23 and the information contained in the registers 31A, 31B is used to control the addresses supplied from the address multiplexer 39 to the address port 21 of the buffer-memory 20. Similarly, during a phase 37 of the service cycle, the FIFO 24 is selectively connected to the data bus 23 and data is transferred between the buffer memory and microprocessor subsystem 14 in dependence on the information contained in the registers 32A, 32B. During the fourth and final phase 38 of the service cycle, memory refresh circuitry (not shown but incorporated in the buffer memory 20) is enabled to refresh the storage locations (one column per access) of the DRAMS making up the buffer-memory. The storage locations refreshed are determined by the refresh column address contained in the register 33, this address being advanced as each column is refreshed. The purpose of the FIFOs 24, 25 and 26 is to provide a temporary store for data transferred down the data channels to the buffer-memory during the phases of the service cycle when the corresponding channels are not being serviced. The capacity of each FIFO must therefore be sufficient to hold the maximum possible amount of data that could be received down the corresponding data channel during the phases of the service cycle that that channel is not being serviced. The sizes of the FIFOS will thus be dependent on the channel data rates and the ratios of the values a, b, c and d. Additionally, the FIFOs 24, 25 and 26 serve to match the data output rate from the buffer memory to the data rate of the channel currently being serviced; generally the channel rate will be lower and the corresponding FIFO serves to smooth out the data bursts received from the memory. As already noted above, the values of the quantities "a", "b", "c", and "d" are determined by the data rates of the data channels provided by the bus system 17, 18 and 16. Thus, if the data rate of the SCSI channel to the host is of the order of 10M Bytes/sec while that of the channel to the tape drive is only 1 MBytes/sec, then the ratio of "a" to "b" will be roughly 10:1. However, the relative channel data rates is not necessarily the sole determinant of the optimum ratio of the quantities "a", "b", "c" and "d". Thus where as in the present case, the buffer memory is made up of DRAM chips, another factor that needs to be considered is the possibility of maximising the use of the fast page access mode generally provided by such chips while minimising use of the normal, but slower, random read/write mode. In the random read/write access mode, both a row address and column address need to be strobed into the memory. This limits the access time to 160ns for the fastest current DRAMs with no concerns for margin. In fast page mode, the row address is strobed first followed by typically 512 column addresses. The first access in fast page mode is effectively a random read/write and takes 160ns, but the successive column accesses are only 80ns long. Because DMA transfers use sequential addresses, this fast page mode is generally applicable. By maximising the use of the fast page access mode, the total bandwidth of the buffer can also be maximised. Considering the present example in more detail, for a DRAM, let the fast page mode access time be "t"; in general terms, the random read/write access time is twice this value, ie 2t. For the SCSI phase 35, there will be one long access at the beginning and all the rest will be fast accesses. However, in the worst case, a transfer might cross a page boundary. In this case, an extra long cycle is needed to strobe in the new row address. Thus, in the worst case, there will be two long cycles and (a-2) short cycles. Hence, the duration P of the SCSI phase 35 will also be: P SCSI=(a-2)t+2x2t Similarly the duration of the drive phase 36 and uP phase 37 will be: P D=(b-2)t+2x2t P up=(c-2)t+2x2t For the refresh phase 38, only a row address is strobed and this is always a long cycle. Thus, for refresh phase: P ref=2dt Thus, the worst case buffer cycle time Tworst is given by T worst= P SCSI+ P D+ P up+ P ref =(a+b+c+2d+6)t From this, the worst case bandwidth of the buffer can be determined. The number of memory accesses per buffer cycle is (a+b+c+d) so the worst case buffer bandwidth BWbuf is given by Rearranging gives: Which implies that the maximum buffer bandwidth is obtained when (a+b+c+d) tends to oo and is the reciprocal of the fast access time as expected. Unfortunately, this is not practical not least due to the fact that the refresh phase must ensure memory refresh at least every 8 ms with typical DRAMS. The bandwidths of the other channels can be determined as well: All of these will generally have restrictions that will allow the ratio a : b : c : d to be chosen. By way of example, consider the following possible restrictions: The SCSI channel bandwidth must have a bandwidth of 5MBytes/sec. The drive channel bandwidth must have a bandwidth of 712 k Bytes/sec. The microprocessor subsystem must have a bandwidth of 200KBytes/sec. The refresh bandwidth must satisfy a typical 8 ms for 512 page refreshes ie 1 page/15.7us or 64KBytes/sec. For t = 100nS (that is allowing about 20nS margin), a suitable ratio of a: b: c: d would be 18:3:2:1 giving the following results: Channel BW MB/s Required BW MB/s Maximum BW MB/s Actual BW MB/s SCSI 5.00 7.50 5.30 Drive 0.80 1.25 0.88 uP 0.20 0.83 0.59 Refresh 0.07 0.42 0.29 The worst case cycle time came out as 3400 ns which gives a buffer bandwidth of 7.1 MBytes.sec (24 transfers in 3400ns). A refresh cycle time of 1.7ms per 512 row addresses can be expected. A further design consideration is the capacity of the FIFOs 24, 25,26 needed in view of the chosen values of a,b,d and d. For the SCSI channel, the depth of its FIFO 25 must be greater than 6 to account for the six SCSI transfers that could happen during the 1200 ns of a buffer cycle that the drive, uP and refresh channels have access to the buffer. Similarly, the microprocessor channel FIFO 24 should have a depth of two so that no wait states are incurred, and the drive channel FIFO 26 should have a depth of three for the three drive transfers that could occur in the 2800ns not used by the drive in a buffer cycle. It will be appreciated that although in the above- described embodiment, there are four phases in the buffer service cycle, a different number of phases could be provided as required by the number of data channels accessing the buffer memory.

Claims: A buffer memory arrangement for use in a bi-directional interface, the buffer memory arrangement comprising: a buffer memory (20) having a plurality of storage locations, a data port (22) and an address port (21), a plurality of data channels (16,17,18) each for the input and output of data from said buffer memory (20) and memory access control means (27) connected to said memory address port (21) and operative to connect the memory data port (22) to any selected one of said data channels (16,17,18) and to control the transfer of data between the selected data channel and selected storage locations in said memory (20), characterised in that the memory access control means (27) is arranged to cyclically service said data channels (16,17,18) in a predetermined sequence and each for a respective predetermined portion (35,36,37) of the service cycle, the buffer memory arrangement being provided with a first-in, first-out data store (24,25,26) for each said data channel, and the capacity of each such data store being sufficient to hold the maximum possible accumulation of data arriving via the corresponding said channel during the portions of the service cycle when that channel is not being serviced. A buffer memory arrangement according to claim 1, wherein the division of the service cycle between the channels reflects the data transfer rates required for the channels. A buffer memory arrangement according to claim 1, wherein the buffer memory (20) comprises dynamic RAM chips operable both in a normal access mode applicable to random accesses and in a fast access mode applicable when successive accesses are made to adjacent storage locations of the memory 20), the memory access control means (27) being operative to cause at least the data channel requiring the highest data transfer rate to be serviced utilising said fast access mode, the duration of corresponding portion of the service cycle being such as to permit multiple memory accesses. A buffer memory arrangement according to claim 1, wherein the buffer memory (20) comprises dynamic RAM chips requiring periodic refreshing, said service cycle including a portion for memory refresh (38) and the overall duration of the service cycle being such as to achieve at least the minimum refresh requirement for the buffer memory (20). An interface for interfacing a data storage device with a host computer, the interface including a buffer memory arrangement according to any one of the preceding claims with one said data channel (17) serving for the transfer of data between the host computer and buffer memory (20), and another of said data channels (18) serving for the transfer of data between the data storage device and buffer memory (20). An interface according to claim 5, further including a microprocessor control sub-system (14), the buffer-memory arrangement having a said data channel (16) serving for the transfer of data between the buffer memory (20) and the microprocessor control sub-system (14).

Inventors: MCCARTHY DOMINIC PAUL, MCCARTHY, DOMINIC PAUL
Applicants: HEWLETT PACKARD LTD, HEWLETT-PACKARD LIMITED
Application year: 1989
Main classification: G06F13
IPC codes: G06F5, G06F13, G06F3