Dismiss
InnovationQ will be updated on Sunday, Oct. 22, from 10am ET - noon. You may experience brief service interruptions during that time.
Browse Prior Art Database

Swinging Buffer With Programmable Size

IP.com Disclosure Number: IPCOM000039964D
Original Publication Date: 1987-Sep-01
Included in the Prior Art Database: 2005-Feb-01
Document File: 3 page(s) / 50K

Publishing Venue

IBM

Related People

Wilson, JW: AUTHOR

Abstract

A design for a swinging buffer makes the size of the buffer variable so that the same hardware can interface between main storage and other devices having different block sizes. Also, for a given device block size, the buffer size may be adjusted so as to achieve different burst lengths to or from memory. A swinging buffer is used to transfer data between two interfaces that have different data rates. One of the buffers is filled with data from the source while the other is emptying data that has previously been loaded into it, to its destination. When the input buffer becomes full, control logic checks to see if the output buffer has finished unloading its data. If it is not yet empty, control logic stops the source from sending more data and then waits until the output has completed the emptying process.

This text was extracted from a PDF file.
At least one non-text object (such as an image or picture) has been suppressed.
This is the abbreviated version, containing approximately 52% of the total text.

Page 1 of 3

Swinging Buffer With Programmable Size

A design for a swinging buffer makes the size of the buffer variable so that the same hardware can interface between main storage and other devices having different block sizes. Also, for a given device block size, the buffer size may be adjusted so as to achieve different burst lengths to or from memory. A swinging buffer is used to transfer data between two interfaces that have different data rates. One of the buffers is filled with data from the source while the other is emptying data that has previously been loaded into it, to its destination. When the input buffer becomes full, control logic checks to see if the output buffer has finished unloading its data. If it is not yet empty, control logic stops the source from sending more data and then waits until the output has completed the emptying process. When the output buffer is done unloading, the two buffers switch roles. The full input buffer becomes an output buffer and starts unloading its newly acquired data while the old output buffer now starts to receive data from the source in its role as an input buffer. Depending on whether the source or destination interface has the faster data rate, a different action may occur. It is possible the output buffer will empty before the input buffer is full. In this case, the output buffer has to hold off the destination until the input buffer is full. The following is a description of the action of the design incorporating the Size Register, and will indicate how the circuit works during a transfer from main storage through the channel to the input/ output (I/O) device, in this case a diskette. Refer to the diagram. The I/O controller programs the Size Register with the sector size of the diskette, which could be 256 bytes. Next, the transfer is started. The ping-pong control logic loads the value stored in the Size Register into Down Counter A. The output of this counter is used to address Memory A. The driver connected between the channel and Memory A is enabled by Transfer Direction III which is a control signal originating from the direction and write control logic. When the channel has the byte ready...