IP Library Granted Patent US 9,189,166
Granted Patent B2
US 9,189,166 · App. 14/111,379 · Granted Nov 17, 2015

Multi-host SATA controller

Inventors: Balaji Kanigicherla (Hyderabad, IN); Krishna Mohan Tandaboina (Hyderabad, IN); Siva Raghuram Voleti (Hyderabad, IN); Karamveer Yadav (Hyderabad, IN)
Assignee: INEDA SYSTEMS PVT. LTD.
G06F3/0632G06F3/067G06F3/0625G06F13/126
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,189,166
App. No.
14/111,379
Granted
Nov 17, 2015
Kind
B2
Abstract

Described herein is a system having a multi-host SATA controller ( 102 ) configured to provide communication and control between two or more independent host processors ( 104 ) and a single SATA device ( 108 ). In one implementation, the multi-host SATA controller ( 102 ) includes the device switching layer ( 206 ), the device control layer ( 208 ), the link layer ( 210 ), and the physical layer ( 212 ). The device switching layer ( 206 ) allows the host processors ( 104 ) to issue commands concurrently rather than in sequential order. For this, the device switching layer ( 206 ) has independent set of host device registers ( 214 ) corresponding to each of the host processors ( 104 ). The device switching layer ( 206 ) also has independent DMA engines ( 216 ) to perform a command pre-fetching from respective host system memories ( 105 ). Further, a command switch engine ( 220 ) may arbitrate commands in case both the host processors ( 104 ) wish to access the SATA device ( 108 ) simultaneously.

Claims (46)

1. A method of simultaneous sharing of a SATA device in a multi-host computing system comprising:

initializing the SATA device for a host processor from amongst a plurality of host processors of the multi-host computing system, wherein the SATA device is shared among the plurality of host processors;

receiving a signature frame information structure (FIS) from the SATA device for the host processor, wherein the signature FIS is indicative of a status of the SATA device;

providing the signature FIS to the host processor, wherein the signature FIS is stored in a memory of the host processor and a memory of a device switching layer of a multi-host SATA controller for sharing of the SATA device among the plurality of host processors;

retrieving the signature FIS for the host processor stored in the memory of the device switching layer; and

providing the signature FIS to at least one other host processor from amongst the plurality of host processors, wherein the signature FIS is stored in a host system memory of the at least one other host processor to initialize the SATA device with the at least one other host processor for sharing of the SATA device among the plurality of the host processors.

2. The method as claimed in claim 1 , wherein the providing is based on a device type identified through the signature FIS.

3. The method as claimed in claim 1 , wherein the plurality of host processors run on heterogeneous operating systems.

4. The method as claimed in claim 1 , wherein the initializing comprises one or more of SATA device detection, staggered spin-up, link speed configuration, and waiting for SATA device ready signal.

5. The method as claimed in claim 1 , wherein the method further comprises:

parsing simultaneous requests from one or more host processors from amongst the plurality of host processors for the SATA device to identify command boundaries; and

arbitrating between the requests from the one or more host processors based at least on the identified command boundaries.

6. The method as claimed in claim 5 , wherein the arbitration is based on one or more of a pre-determined arbitration scheme, random selection, and load balancing.

7. The method as claimed in claim 5 , wherein the parsing of requests is done in parallel to command execution by the SATA device for a host processor from amongst the plurality of host processors.

8. The method as claimed in claim 1 , wherein the method further comprises:

receiving a low power mode request from the host processor, amongst the plurality of host processors;

identifying a power state of the SATA device corresponding to other host processors among the plurality of host processors, wherein the SATA device is shared simultaneously among the plurality of host processors;

restricting a propagation of the low power mode request to the SATA device upon determining an active state of the SATA device corresponding to at least one host processor from amongst the other host processors; and

sending a dummy completion signal to the host processor in response to the low power mode request, wherein the dummy completion status is indicative of a successful completion of the low power mode request.

9. The method as claimed in claim 8 , wherein the method further comprises:

sending the low power mode request to the SATA device upon determining low power state of the SATA device corresponding to all the other host processors; and

forwarding a completion signal from the SATA device to the host processor in response to the low power mode request.

10. The method as claimed in claim 1 , wherein the method further comprises:

receiving an error recovery request from the SATA device for the host processor from amongst the plurality of host processors;

identifying power state of the SATA device corresponding to other host processors among the plurality of host processors; wherein the SATA device is shared simultaneously among the plurality of host processors; and

restricting the error recovery request to the host processors coupled to the SATA device in active mode upon determining the power state of the SATA device corresponding to the other host processors.

11. The method as claimed in claim 10 , wherein error recovery comprises one or more of disabling connection link between the host processor and the SATA device, flushing current pending commands by the host processor and the SATA device, and sending a COMRESET to the SATA device to restart an associated OOB sequence.

12. A multi-host SATA controller ( 102 ) for sharing of a SATA device ( 108 ) among multiple host processors ( 104 ) in a multi-host computing system, wherein the multi-host SATA controller ( 102 ) comprises:

a device switching layer ( 206 ) configured to:

initialize the SATA device ( 108 ) for a host processor ( 104 ) from amongst a plurality of host processors ( 104 ) of the multi host computing system, wherein the SATA device ( 108 ) is shared among the plurality of the host processors ( 104 );

receive a signature frame information structure (FIS) from the SATA device ( 108 ) for the host processor ( 104 ), wherein the signature FIS is indicative of the status of the SATA device ( 108 );

provide the signature FIS to the host processor ( 104 ), wherein the signature FIS is stored in a memory of the host processor ( 104 ) and a memory of device switching layer ( 206 ) enabling sharing of the SATA device ( 108 ) among the plurality of the host processors ( 104 );

retrieving the signature FIS for the host processor ( 104 ) stored in the memory of the device switching layer ( 206 ); and

providing the signature FIS to at least one other host processor ( 104 ) from amongst the plurality of host processors ( 104 ), wherein the signature FIS is stored in a memory of the at least one other host processor ( 104 ) to initialize the SATA device ( 108 ) with the at least one other host processor ( 104 ) for enabling sharing of the SATA device ( 108 ) among the plurality of the host processors ( 104 ).

13. The multi-host SATA controller ( 102 ) as claimed in claim 12 , the device switching layer ( 206 ) comprising a plurality of host device registers ( 214 ), each corresponding to a host processor ( 104 ) from amongst the plurality of host processors ( 104 ), wherein each of the host device register ( 214 ) is coupled to an I/O controller ( 106 ) of the respective host processor ( 104 ).

14. The multi-host SATA controller ( 102 ) as claimed in claim 12 , the device switching layer ( 206 ) comprising a plurality Direct Memory Access (DMA) Engines ( 216 ), each corresponding to a host processor ( 104 ) from amongst the plurality of host processors ( 104 ) and a host device register ( 214 ), wherein the each of the DMA engine ( 216 ) is coupled to an I/O controller ( 106 ), and wherein the DMA engine ( 216 ) accesses a host memory system ( 105 ) of the associated host processor ( 104 ).

15. The multi-host SATA controller ( 102 ) as claimed in claim 12 , the device switching layer ( 206 ) comprising a command switch engine ( 220 ) configured to:

parse simultaneous requests from one or more host processors ( 104 ) from amongst the plurality of host processors ( 104 ) for the SATA device ( 108 ) to identify command boundaries; and

arbitrate between the requests from the one or more host processors ( 104 ) based at least on the identified command boundaries.

16. The multi-host SATA controller ( 102 ) as claimed in claim 15 , the device switching layer ( 206 ) further comprising a host DMA switch ( 221 ) configured to receive the arbitrated requests and pre-fetching logic.

17. The multi-host SATA controller ( 102 ) as claimed in claim 15 , further comprising a device control layer ( 208 ) comprising:

device shadow registers ( 222 ) configured to receive configuration parameters for the arbitrated request for the SATA device ( 108 ) through a command switch engine ( 220 ) of the device switching layer ( 206 ), wherein the request is arbitrated from a plurality of requests originating from the plurality of host processors ( 104 ); and

a DMA engine ( 224 ) configured to receive the arbitrated request, through the host DMA switch ( 221 ), wherein the DMA engine ( 224 ) provides the received arbitrated request to the SATA device ( 108 ).

18. The multi-host SATA controller ( 102 ) as claimed in claim 12 , wherein the plurality of host processors ( 104 ) are running on heterogeneous operating systems.

19. The multi-host SATA controller ( 102 ) as claimed in claim 13 , wherein the host device registers ( 214 ) comprise one or more of Advance Host Controller Interface (AHCI) control registers, AHCI status registers, and configuration registers.

20. The multi-host SATA controller ( 102 ) as claimed in claim 12 , wherein the device switching layer ( 206 ) is further configured to route asynchronous notifications occurring at the SATA device ( 108 ) to each of the plurality of host processors.

Assignments (5)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 26, 2020
From: INEDA SYSTEMS, INC
To: SOCTRONICS
Reel/Frame 051937/0900 →
RELEASE OF SECURITY INTEREST Recorded Jan 17, 2020
From: SILICON VALLEY BANK
To: INEDA SYSTEMS, INC.
Reel/Frame 051546/0586 →
SECURITY INTEREST Recorded Feb 2, 2017
From: INEDA SYSTEMS, INC.
To: SILICON VALLEY BANK
Reel/Frame 041158/0665 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 19, 2016
From: INEDA SYSTEMS PVT. LTD.
To: INEDA SYSTEMS INC.
Reel/Frame 040663/0014 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 11, 2013
From: KANIGICHERLA, BALAJI; TANDABOINA, KRISHNA MOHAN; VOLETI, SIVA RAGHURAM; YADAV, KARAMVEER
To: INEDA SYSTEMS PVT. LTD.
Reel/Frame 031390/0485 →
Priority Claims (1)
IN 1261/CHE/2011 · Apr 11, 2011 · national
Continuity (1)
Related Publication 20140032948A1 · Jan 30, 2014