Claims
- 1. A method for processing a command to a sequential access target device (“SATD”) through a first router, capable of communicating using a first protocol, in a network having a first host, capable of communicating using a second protocol different from the first protocol, the method comprising, in the first router:
receiving the command from the first host; if the command requires a transfer of data larger than a threshold size, streaming the data to the SATD; and if the command requires a data transfer smaller than the threshold size, storing the data in one or more memory buffers as they become available and forwarding the data to the SATD.
- 2. The method of claim 1, wherein streaming the data to the SATD comprises:
(a) determining if a preset size memory block is free; (b) if the preset size memory block is free, requesting a data block from the first host, otherwise holding-off the first host; (c) receiving the data block from the first host and storing the data block in a FIFO queue; (d) repeating (a)-(c) until an initial number of data blocks are received and stored in the FIFO queue; (e) forwarding the command and a first data block in the FIFO queue to the SATD; (f) receiving a request from the SATD for a next data block; (g) forwarding the next data block in the FIFO queue to the SATD; (h) repeating (f)-(g) until a trigger number of data blocks remain in the FIFO queue; (i) requesting an additional data block from the first host; (j) receiving the additional data block and storing it in the FIFO queue; (k) receiving a request from the SATD for the next data block and forwarding the next data block in the FIFO queue; and (1) repeating (i)-(k) until all the data has been transferred.
- 3. The method of claim 2, wherein holding-off the first host comprises:
placing the command in a command queue; and reissuing the command internally in the first router and responding to the command once the preset size memory block is free.
- 4. The method of claim 2, wherein said requesting the data block from the first host comprises issuing a transfer ready signal.
- 5. The method of claim 2, wherein the one or more memory buffers are 4 kilobyte buffers, the threshold size is 192 kilobytes, the preset size memory block is 64 kilobytes, the initial number of data blocks stored in the FIFO queue is three, and the trigger number of data blocks is one.
- 6. The method of claim 2, wherein the data block size is equal to the preset size memory block.
- 7. The method of claim 2, wherein the one or more memory buffers comprise at least two different sizes.
- 8. The method of claim 2, further comprising initializing one or more memory modules as the one or more memory buffers and wherein the preset size memory block comprises at least one of the one or more memory buffers.
- 9. The method of claim 8, further comprising creating a buffer queue having pointers to empty ones of the one or more memory buffers.
- 10. The method of claim 1, wherein the command is a write command.
- 11. The method of claim 1, wherein the network comprises a single host, which is the first host.
- 12. The method of claim 1, wherein the network comprises a plurality of routers including the first router.
- 13. The method of claim 12, wherein at least one sequential access target device is communicatively connected to each of the plurality of routers.
- 14. The method of claim 1, wherein said first protocol is a SCSI protocol.
- 15. The method of claim 17 wherein said second protocol is a Fibre Channel protocol.
- 16. The method of claim 1, wherein said first router is a Fibre Channel-to-SCSI router, said network is a Fibre Channel network, said host is a Fibre Channel host and said SATD is a SCSI device.
- 17. A method for processing a command to a sequential access target device (“SATD”) through a first router, capable of communicating using a first protocol, in a network having a first host capable of communicating using a second protocol different from the first protocol, the method comprising, in the first router:
receiving a command from the first host; if the command requires a data transfer larger than a threshold size, streaming the data from the SATD; and if the command requires a data transfer smaller than the threshold size, storing the data in one or more memory buffers as they become available and forwarding the data to the first host.
- 18. The method of claim 17, wherein streaming the data comprises:
(a) determining if a threshold number of memory blocks are free; (b) if the threshold number of memory blocks are free, placing the threshold number of memory blocks in a buffer FIFO queue, otherwise holding-off the first host; (c) forwarding the command and a first memory block in the buffer FIFO queue to the SATD; (d) receiving a data block and a request for more free memory blocks from the SATD; (e) placing the data block in a data FIFO queue; (f) forwarding a next memory block in the buffer FIFO queue to the SATD; (g) repeating (d)-(f) until a trigger number of memory blocks remain in the buffer FIFO queue; (h) forwarding a first data block in the data FIFO queue to the first host; (i) placing an additional memory block in the buffer FIFO queue and forwarding the next memory block in the buffer FIFO queue to the SATD; (j) receiving a data block and a request for more free memory blocks from the SATD; and (k) repeating (h)-(j) until all the data has been transferred.
- 19. The method of claim 18, wherein holding-off the first host comprises:
placing the command in a command queue; and reissuing the command internally in the first router and responding to the command once the threshold number of memory blocks are free.
- 20. The method of claim 18, wherein the one or more memory buffers are 4 kilobyte buffers, the threshold number of memory blocks is three, each memory block is a 64 kilobyte memory block, and the trigger number of memory blocks is one.
- 21. The method of claim 18, wherein the data block size is equal to the memory block size.
- 22. The method of claim 18, further comprising the step of initializing one or more memory modules as the one or more memory buffers and wherein each memory block comprises at least one of the one or more memory buffers.
- 23. The method of claim 22, further comprising creating a buffer queue having pointers to empty ones of the one or more memory buffers.
- 24. The method of claim 17, wherein the command is a read command.
- 25. The method of claim 17, wherein the network further comprises a single host, which is the first host.
- 26. The method of claim 17, wherein the network further comprises a plurality of routers including the first router.
- 27. The method of claim 26, wherein at least one streaming target device is communicatively connected to each of the plurality of routers.
- 28. The method of claim 17, wherein said first protocol is a SCSI protocol.
- 29. The method of claim 17, wherein said second protocol is a Fibre Channel protocol.
- 30. The method of claim 17, wherein said first router is a Fibre Channel-to-SCSI router, said network is a Fibre Channel network, said host is a Fibre Channel host and said SATD is a SCSI device.
- 31. A method for processing a command to a random access target device (“RATD”) through a first router, capable of communicating using a first protocol, in a network having a first host, capable of communicating using a second protocol different from the first protocol, the method comprising, in the first router:
receiving a command from the first host; if the command requires a transfer of data larger than a threshold size, streaming the data to the RATD; and if the command requires a data transfer smaller than the threshold size, storing the data in one or more memory buffers as they become available and forwarding the data to the RATD.
- 32. The method of claim 31, wherein streaming the data to the RATD comprises:
(a) determining if a preset size memory block is free; (b) if the preset size memory block is free, requesting a data block from the first host, otherwise holding-off the first host; (c) receiving the data block, setting the transfer length and starting address, and storing the data block in a FIFO queue; (d) repeating (a)-(c) until an initial number of data blocks are received and stored in the FIFO queue; (e) forwarding to the RATD a first data block in the FIFO queue and a new command for a data transfer equal to the transfer length; (f) receiving a command complete message from the RATD; (g) forwarding to the RATD a next data block in the FIFO queue and a next new command for a data transfer equal to the transfer length; (h) repeating (f)-(g) until a trigger number of data blocks remain in the FIFO queue; (i) requesting an additional data block from the first host; (j) receiving the additional data block, setting the transfer length and starting address, and storing the data block in the FIFO queue; (k) forwarding to the RATD the next data block in the FIFO queue and a new command for a data transfer equal to the transfer length; (l) receiving a command complete message from the RATD; and (m) repeating (i)-(l) until all the data has been transferred.
- 33. The method of claim 32, wherein holding-off the first host comprises:
placing the command in a command queue; and reissuing the command internally in the first router and responding to the command once the preset size memory block is free.
- 34. The method of claim 32, wherein the one or more memory buffers are 4 kilobyte buffers, the threshold size is 192 kilobytes, the preset size memory block is 64 kilobytes, the initial number of data blocks stored in the FIFO queue is one, the trigger number of data blocks is zero, and the transfer length is equal to the data block size.
- 35. The method of claim 32, wherein the data block size is equal to the preset size memory block.
- 36. The method of claim 32, further comprising initializing one or more memory modules as the one or more memory buffers and wherein the preset size memory block comprises at least one of the one or more memory buffers.
- 37. The method of claim 36, further comprising creating a buffer queue having pointers to empty ones of the one or more memory buffers.
- 38. The method of claim 31, wherein the command is a write command.
- 39. The method of claim 31, wherein the network further comprises a single host, which is the first host.
- 40. The method of claim 31, wherein the network further comprises a plurality of routers, including the first router.
- 41. The method of claim 40, wherein at least one random access target device is communicatively connected to each of the plurality of routers.
- 42. The method of claim 31, wherein said first protocol is a SCSI protocol.
- 43. The method of claim 31, wherein said second protocol is a Fibre Channel protocol.
- 44. The method of claim 31, wherein said first router is a Fibre Channel-to-SCSI router, said network is a Fibre Channel network, said host is a Fibre Channel host and said RATD is a SCSI device.
- 45. A method for processing a command to a random access target device (“RATD”) through a first router, capable of communicating using a first protocol, in a network having a first host capable of communicating using a second protocol different from the first protocol, the method comprising, in the first router:
receiving a command from the first host; if the command requires a data transfer larger than a threshold size, streaming the data from the RATD; and if the command requires a data transfer smaller than the threshold size, storing the data in one or more memory buffers as they become available and forwarding the data to the first host.
- 46. The method of claim 45, wherein streaming the data comprises:
(a) determining if a threshold number of memory blocks are free; (b) if the threshold number of memory blocks are free, placing the threshold number of memory blocks in a buffer FIFO queue, otherwise holding-off the first host; (c) setting the data transfer length and starting address, and forwarding to the RATD a first memory block in the buffer FIFO queue and a new command for a data transfer equal to the data transfer length; (d) receiving a data block and a command complete message from the RATD, and placing the data block in a data FIFO queue; (e) repeating (c)-(d) until a trigger number of memory blocks remain in the buffer FIFO queue; (f) forwarding a first data block in the data FIFO queue to the first host; (g) placing an additional memory block in the buffer FIFO queue, setting the data transfer length and starting address, and forwarding to the RATD the next memory block in the buffer FIFO queue and a next new command for a data transfer equal to the data transfer length; (h) receiving a data block and command complete message from the RATD and placing the data block in the data FIFO queue; and (i) repeating (f)-(h) until all the data has been transferred.
- 47. The method of claim 46, wherein holding-off the first host:
placing the command in a command queue; and reissuing the command internally in the first router and responding to the command once the threshold number of memory blocks are free.
- 48. The method of claim 43, wherein the one or more memory buffers are 4 kilobyte buffers, the threshold number of memory blocks is three, each memory block is a 64 kilobyte memory block, and the trigger number of memory blocks is one.
- 49. The method of claim 46, wherein the data block size is equal to the memory block size, and the transfer length is equal to the data block size.
- 50. The method of claim 46, further comprising initializing one or more memory modules as one or more memory buffers and wherein each memory block comprises at least one of the one or more memory buffers.
- 51. The method of claim 50, further comprising creating a buffer queue having pointers to empty ones of the one or more memory buffers.
- 52. The method of claim 45, wherein the command is a read command.
- 53. The method of claim 45, wherein the network further comprises a single host, which is the first host.
- 54. The method of claim 45, wherein the network further comprises a plurality of routers, including the first router.
- 55. The method of claim 54, wherein at least one RATD is communicatively connected to each of the plurality of routers.
- 56. The method of claim 45, wherein said first protocol is a SCSI protocol.
- 57. The method of claim 45, wherein said second protocol is a Fibre Channel protocol.
- 58. The method of claim 45, wherein said first router is a Fibre Channel-to-SCSI router, said network is a Fibre Channel network, said host is a Fibre Channel host and said RATD is a SCSI device.
RELATED APPLICATIONS
[0001] This application is a continuation of, and claims priority from, U.S. patent application Ser. No. 09/259,160, filed on Feb. 26, 1999, now pending, the entire contents of which are hereby incorporated by reference herein.
Continuations (1)
|
Number |
Date |
Country |
Parent |
09259160 |
Feb 1999 |
US |
Child |
10002995 |
Nov 2001 |
US |