Method and apparatus for controlling data transfers through multiple buffers
First Claim
Patent Images
1. A method for controlling the transfer of data between a SCSI bus and a disk memory using a finite state machine and a plurality of data buffers comprising the steps of:
- a. initializing the finite state machine to a pause state indicating there is no data to be transferred;
b. determining if an input command to send data to the SCSI bus has occurred and if it has not then returning to step a;
c. resetting the finite state machine from the pause state indicating that the data transfer is occurring and starting the data transfer;
d. determining if a disk-data-in-buffer input command has occurred and if it has not, then advancing to step n;
e. transferring from the SCSI bus to a first counter the number of blocks of data to be transferred and transferring to a second counter the number of bytes in each block to be transferred to a first of the plurality of data buffers;
f. decrementing the byte count in the second counter by one;
g. determining if a subsystem error has occurred on the SCSI bus, and if the subsystem error has occurred, returning to step a;
h. determining if a SCSI bus request has occurred, and if the SCSI bus request has not occurred returning to step g;
i. writing a byte of data from the SCSI bus to the first data buffer;
j. determining if the number of bytes remaining to be transferred in the block of data is equal to zero, and if the number of bytes in the block remaining to be transferred is not equal to zero returning to step f;
k. decrementing the block count in the first counter;
11 Assignments
0 Petitions
Accused Products
Abstract
A method of operating a finite state machine to control the sequence of operations for transferring data through two or more rotating data buffers. The data transfer is either from a SCSI bus to a disk memory system, or from a disk memory system to a SCSI bus. The finite state machine is self-sequencing after initiation from an external source. An apparatus for implementing the method is also presented.
-
Citations
9 Claims
-
1. A method for controlling the transfer of data between a SCSI bus and a disk memory using a finite state machine and a plurality of data buffers comprising the steps of:
-
a. initializing the finite state machine to a pause state indicating there is no data to be transferred; b. determining if an input command to send data to the SCSI bus has occurred and if it has not then returning to step a; c. resetting the finite state machine from the pause state indicating that the data transfer is occurring and starting the data transfer; d. determining if a disk-data-in-buffer input command has occurred and if it has not, then advancing to step n; e. transferring from the SCSI bus to a first counter the number of blocks of data to be transferred and transferring to a second counter the number of bytes in each block to be transferred to a first of the plurality of data buffers; f. decrementing the byte count in the second counter by one; g. determining if a subsystem error has occurred on the SCSI bus, and if the subsystem error has occurred, returning to step a; h. determining if a SCSI bus request has occurred, and if the SCSI bus request has not occurred returning to step g; i. writing a byte of data from the SCSI bus to the first data buffer; j. determining if the number of bytes remaining to be transferred in the block of data is equal to zero, and if the number of bytes in the block remaining to be transferred is not equal to zero returning to step f; k. decrementing the block count in the first counter; - View Dependent Claims (4, 7, 9)
-
-
2. determining if disk data available for transfer awaits in the first data buffer and if not so advancing to step o;
-
m. rotating to a second data buffer of the plurality of data buffers, indicating that the second data buffer does not have disk data available for transfer and that the first data buffer is available to receive disk data; n. determining if the end of the data transfer procedure has occurred and if so returning to step a, and if not so returning to step e; and o. determining if a terminate data transfer with disk memory input indication has occurred, and if not so returning to step a. - View Dependent Claims (5, 6)
-
-
3. A method for controlling the transfer of data between a SCSI bus and a disk memory using a finite state machine and a plurality of data buffers comprising the steps of:
-
a. initializing the finite state machine to a pause state indicating there is no data to be transferred; b. determining if an input command to send data to the SCSI bus has occurred and if it has not then advancing to step a; c. resetting the finite state machine from the pause state indicating that the data transfer is occurring and starting the data transfer; d. determining if a disk-data-in-buffer input command has occurred and if it has not, then advancing to step n; e. transferring from the SCSI bus to a first counter the number of blocks of data to be transferred and transferring to a second counter the number of bytes in each block to be transferred to a first of the plurality of data buffers; f. decrementing the byte count in the second counter by one; g. determining if a subsystem error has occurred on the SCSI bus, and if the subsystem error has occurred, returning to step a; h. determining if a SCSI bus request has occurred, and if the SCSI bus request has not occurred returning to step g; i. writing a byte of data from the SCSI bus to the first data buffer; j. determining if the number of bytes remaining to be transferred in the block of data is equal to zero, and if the number of bytes in the block remaining to be transferred is not equal to zero returning to step f; k. decrementing the block count in the first counter; l. determining if disk data available for transfer awaits in the first data buffer and if not so advancing to step o; m. rotating to a second data buffer of the plurality of data buffers, indicating that the second data buffer does not have disk data available for transfer and that the first data buffer is available to receive disk data; n. determining if the end of the data transfer procedure has occurred and if so returning to step a, and if not so returning to step e; o. determining if a terminate data transfer with disk memory input indication has occurred, and if not so returning to step a; p. determining if an input command to receive data has occurred, and if it has not then returning to step a; q. resetting the finite state machine from the pause state indicating the start of and starting the data transfer; r. transferring to the first counter the number of blocks to be transferred and to the second counter the number of bytes in each block of data to be transferred from one of the plurality of data buffers; s. determining if the data buffer referred to in step q has data available for transfer from the disk memory and if not so advancing to step bb; t. rotating to another of the plurality of data buffers, resetting the data available indicator on the data buffer the SCSI bus just rotated from and setting the buffer-available-for-data indicator on the data buffer the SCSI bus just rotated to; u. decrementing the byte count in the second counter by one; v. determining if a subsystem error has occurred in the data transfer and if so, returning to step a; w. determining if a request for the data available in the data buffer the SCSI bus rotated to in step t has been made by the disk memory and if not so, returning to step v; x. reading to the SCSI bus a byte of data available in the data buffer the SCSI bus rotated to in step t; y. determining if the SCSI byte count in the second counter is equal to zero; z. decrementing the block count in the first counter; aa. determining if the end of the data transfer procedure has occurred and if not so returning to step s, and if so returning to step a; and bb. determining if a terminate data transfer with disk memory has occurred and if not so returning to step u, and if so, returning to step a.
-
-
8. An apparatus for controlling the transfer of data between a SCSI bus and a disk memory using a plurality of data buffers comprising:
-
means for initializing the apparatus to a pause state indicating there is no data to be transferred; means for determining if an input command to receive data from the SCSI bus has occurred; means responsive to a determination that an input command to receive data from the SCSI bus has not occurred for determining if an input command to send data to the SCSI bus occurred; means responsive to a determination that an input command to send data to the SCSI bus has occurred for resetting the apparatus from the pause state indicating that a send data transfer is in process; means for starting the send data transfer; means for determining if a disk-data-in-buffer input command has occurred; means responsive to the disk-data-in-buffer input command determining means for transferring from the SCSI bus to a first counter the number of blocks of data to be transferred in the send data transfer; means responsive to the disk-data-in-buffer input command determining means for transferring to a second counter the number of bytes in each block to be transferred in the send data transfer to a first of the plurality of data buffers; means for decrementing the byte count in the second counter by one; means responsive to the SCSI bus for determining if a SCSI bus request has occurred; means responsive to the SCSI bus request determining means for writing a byte of data from the SCSI bus to the first data buffer; means responsive to the means for writing a byte of data from the SCSI bus to the first data buffer, and the second counter for determining if the number of bytes remaining to be transferred in the block of data of the send transfer is equal to zero; means responsive to the determination that the number of bytes remaining to be transferred in the block of data of the send data transfer is equal to zero for decrementing the block count in the first counter; means for determining if disk data available for transfer awaits in the first buffer; means responsive to a determination that there is no disk data available in the first buffer means for rotating to second data buffer of the plurality of data buffers, indicating that the second data buffer does not have disk data available for transfer and that the first data buffer is available to receive disk data; means responsive to the first counter for determining if the end of the send data transfer procedure has occurred; and means for determining if a terminate send data transfer with disk memory input indication has occurred.
-
Specification