Back to results
US 8,266,353 B2Granted
Serial advanced technology attachment (SATA ) switch
AssigneeNettapp, Inc.
InventorsSiamack Nemazie, Andrew Hyonil Chong
Life of this patent
Estimating the term…
Abstract
An embodiment of the present invention is disclosed to include a SATA Switch allowing for access by two hosts to a single port SATA device Further disclosed are embodiments for reducing the delay and complexity of the SATA Switch.
Claims37
A switch coupled between a plurality of host units and a device for communicating there between and comprising:
- a) a first serial advanced technology attachment (SATA) port including a first host task file, coupled to a first host unit, the first host task file responsive to commands sent by the first host unit, to the device;
- b) a second SATA port including a second host task file, coupled to a second host unit, the second host task file responsive to commands sent by the second host unit, to the device;
- c) a third SATA port including a device task file, coupled to the device, for accessing by the first or second host units, to the device, the device supports queuing of commands sent by the first and second host units and generates an original queue depth value indicative of the number of commands that the device can queue from either of the first or second host units;
- and
- d) an arbitration and control circuit coupled to the first, second and third ports, for selecting one of the first host or second host units to concurrently access the device, through the switch, by accepting the commands, from either of the first or second host units, at any given time, including when the device is not in an idle state, the arbitration and control circuit being responsive to the original queue depth value and alters the original queue depth value to an altered original queue depth value so that when the original queue value is odd, the altered original queue depth value is one half of the original queue depth value after subtracting one so that each of the first and second host units is assigned less than the number of commands indicated by the original queue depth value but that a total number of commands queued by the first and second host units remains the same as the original queue depth value thereby misrepresenting the original queue depth value to the first and second host units to be less than the original queue depth value thereby preventing the commands sent by the first and second host units from being lost by an overrun of the original queue depth value by either of the first or second host units.
2 more elements
A switch comprising:
- a) a first serial advanced technology attachment (SATA) port including a first host task file for connection to a first host unit, the first host task file responsive to commands sent by the first host unit;
- b) a second SATA port including a second host task file for connection to a second host unit, the second host task file responsive to commands sent by the second host unit;
- c) a third SATA port including a device task file, for connection to a device, the device supports queuing of the commands sent by the first and second host units and generates an original queue depth value indicative of a number of commands that the device can queue from either of the first or second host units;
- and
- d) an arbitration and control circuit, coupled to the first, second and third SATA ports, for selecting either the first host unit or the second host unit to concurrently access the device, through the switch, by accepting commands from either of the first or second host units, at any given time, including when the device is not in an idle state, the arbitration and control circuit being responsive to the original queue depth value and alters the original queue depth value to be an altered original queue depth value so that when the original queue value is odd, the altered original queue depth value is one half of the original queue depth value after subtracting one so that each of the first and second host units is assigned less than the number of commands indicated by the original queue depth value but that a total number of commands queued by the first and second host units remains the same as the original queue depth value thereby misrepresenting the original queue depth value to the first and second host units to be less than the original queue depth value thereby preventing the commands sent by the first and the second host units from being lost by an overrun of the original queue depth value by either of the first or second host units.
2 more elements
A method of employing a switch coupled between a plurality of host units and a device for communicating therebetween, the method comprising:
- a) coupling a first serial advanced technology attachment (SATA) port including a first host task file to a first host unit;
- b) coupling a second SATA port including a second host task file to a second host unit;
- c) coupling a third SATA port including a disk task file to a device for accessing the device by the first or second host units;
- d) receiving commands sent by the first host unit through the first host task file;
- e) receiving commands sent by the first host unit through the second host task file;
- f) receiving commands sent by the first and second host units through the device task file;
- g) selecting one of the first or second host units by an arbitration and control circuit to concurrently access the device, through the switch, by accepting commands, through the first and second host task files, from either of the first or second host units, at any given time, including when the device is not in an idle state;
- h) intercepting by an arbitration and control circuit an original queue depth value generated by the device, the queue depth value being indicative of the number of commands that the device can queue from either of the first or second host units;
- and
- i) altering the original queue depth value by an arbitration and control circuit to be an altered original queue depth value so that when the original queue value is odd, the altered original queue depth value is one half of the original queue depth value after subtracting one so that each of the first and second host units is assigned less than the number of commands indicated by the original queue depth value but that a total number of commands that can be queued by the first and second host units remains the same as the original queue depth value thereby thereby misrepresenting the original queue depth value to the first and second host units to be less than the original queue depth value thereby avoiding commands sent by the first and the second host units from being lost by overrun of the original queue depth value by either of the first or second host units.
7 more elements
Dependencies are inferred from the claim text.