制器104的未用協(xié)議棧靜默,并關(guān)閉存儲控制器104中的時鐘,可以減少用電。這防止M0S柵極來回切換,由于柵極的容性負載的切換,所述來回切換會成為半導體中的相當大的電力浪費的原因之一。
[0029]在另一個實施例中,即使當協(xié)議復用器309當前選擇PCIe協(xié)議時,SAS/SATA物理層307也可直接利用來自SerDes310的信號丟失指示,以便在檢測到有效的SAS/SATA帶外(OOB)信號的情況下,快速切換到SAS/SATA協(xié)議。例如,協(xié)議選擇邏輯308可指導協(xié)議復用器309選擇PCIe協(xié)議棧與附接的存儲設(shè)備通信。然而,附接的存儲設(shè)備可能是SAS/SATA存儲設(shè)備。在PCIe協(xié)議棧嘗試與附接的通信設(shè)備通信的同時,存儲控制器104可操作以更快速地硬件檢測SAS/SATA的OOB信號。在這點上,OOB信號的檢測實際上可以在SAS/SATA物理層307中進行。SerDes310把信號丟失指示提供給SAS/SATA物理層307,SAS/SATA物理層307再尋找適當?shù)腛OB模式。協(xié)議選擇邏輯308隨后選擇SAS/SATA協(xié)議棧,并停止PCIe協(xié)議棧與附接的存儲設(shè)備通信的嘗試。
[0030]可以與PCIe鏈路層304上的進展的檢測并行地提供自動00B檢測處理。在PCIe未取得進展,并且SerDes310收到有效的SAS/SATA 00B信號的情況下,協(xié)議復用器309切換到SAS/SATA控制(即,SAS/SATA協(xié)議棧),以致可答復附接的存儲設(shè)備,發(fā)送00B信號。即使不存在PCIe或SAS/SATA活動,協(xié)議復用器309也可定期切換到SAS/SATA協(xié)議棧,發(fā)送00B信號,以遵守T10SAS標準(T10是建立關(guān)于SCS1、SATA和SAS的標準的技術(shù)委員會)的熱插拔超時要求。圖6的流程圖中表示和說明了這種檢測的例子。
[0031]在任何情況下,建立成功鏈接的指示可通過協(xié)議選擇邏輯308,從PCIe鏈路層304向SAS/SATA鏈路層305傳送,反之亦然,以致協(xié)議選擇邏輯308暫停切換協(xié)議的任何進一步嘗試(例如,通過借助中斷或某些其它的手段,把成功的結(jié)果告知存儲控制器104的固件)。
[0032]可按照多種途徑,實現(xiàn)在存儲控制器104中選擇特定的協(xié)議檢測方案的方式。圖4是存儲控制器104的協(xié)議檢測選擇的一個這樣的例證處理的流程圖。更具體地,圖4中圖解說明一種可編程協(xié)議選擇方法,所述方法向存儲控制器104的固件提供根據(jù)系統(tǒng)結(jié)構(gòu)的先驗知識,選擇協(xié)議的能力。例如,在處理單元351中,存儲控制器104啟動固件協(xié)議檢測,以致固件嘗試在硬件檢測之前或者與硬件檢測并行地,發(fā)起與附接的存儲設(shè)備的通信。附接到存儲控制器104的存儲設(shè)備可能是已知的,以致在處理單元352中,存儲控制器104的固件可通過協(xié)議的預定固件選擇,自動開始協(xié)議檢測。在這點上,存儲控制器104的固件可在處理單元354中,自動選擇PCIe協(xié)議(如果設(shè)備已知是PCIe存儲設(shè)備的話),或者在處理單元355中,自動選擇SAS/SATA協(xié)議(如果設(shè)備已知是SAS/SATA存儲設(shè)備的話)。
[0033]另一方面,處理單元352的固件協(xié)議檢測可向存儲控制器104提供循環(huán)選擇存儲控制器104的可用協(xié)議,直到與附接的存儲設(shè)備產(chǎn)生連接為止的能力。例如,固件可以使尋找“PhyReady” SAS/SATA條件的協(xié)議或者尋找“LinkUp” PCIe條件的協(xié)議交替。在任一情況下,存儲控制器104的固件選擇PCIe操作或SAS/SATA操作,協(xié)議復用器309被設(shè)定成適當?shù)膮f(xié)議,直到存儲控制器104的固件改變配置為止。
[0034]如果處理單元351的固件協(xié)議檢測被禁止,那么在處理單元356,存儲控制器104一般會實現(xiàn)硬件協(xié)議檢測。如果存儲控制器104固件對預期的協(xié)議一無所知,從而決定不在協(xié)議之間循環(huán),那么可以啟動處理單元356的硬件感測的協(xié)議檢測的模式。一旦硬件感測的協(xié)議檢測關(guān)于特定協(xié)議,成功實現(xiàn)PhyReady或LinkUp狀態(tài),那么暫停任何進一步的協(xié)議切換,直到固件再次啟動協(xié)議切換為止。如果處理單元356的硬件感測的協(xié)議檢測被禁止,那么可使協(xié)議復用器309保持空閑狀態(tài),以致不選擇協(xié)議棧。例如,在這方面上,存儲控制器104的PCIe協(xié)議棧和SAS協(xié)議棧都會保持靜默。
[0035]如果處理單元356的硬件感測的協(xié)議檢測被啟動,那么存儲控制器104可被配置成循環(huán)選擇協(xié)議棧(處理單元358),自動檢測00B信號的協(xié)議(處理單元359),和/或傳送脈沖,并借助時域反射器(“TDR”),分析反射波(處理單元360)。舉例來說,在處理單元358,協(xié)議復用器309會以可編程的停留時間,使PCIe協(xié)議棧和SAS/SATA協(xié)議棧交替,直到對任意協(xié)議獲得成功為止。在借助特定協(xié)議建立成功連接之后,中斷指令存儲控制器104開始按照存儲設(shè)備的協(xié)議,處理I/O請求。通常,與x2、x4、x8或xl6PCIe結(jié)構(gòu)相關(guān)的所有通道應(yīng)同時交替,PCIe鏈路層304在訓練序列期間,自動檢測通路反轉(zhuǎn)條件,以致不需要循環(huán)選擇不同的通路反轉(zhuǎn)配置。
[0036]在處理單元359中,協(xié)議復用器309可被配置成默認為PCIe物理層306,不過信號丟失指示,比如RXL0S信號仍然會被傳送給SAS/SATA物理層307,以支持00B序列檢測。隨后,如果存儲控制器104能夠借助PCIe協(xié)議,成功地建立鏈路(例如,“LinkUp”),那么協(xié)議復用器309鎖定到存儲控制器104的PCIe協(xié)議棧。然而,如果SAS/SATA物理層檢測到SAS/SATA協(xié)議的有效COMINIT 00B序列,那么協(xié)議復用器309切換到SAS/SATA物理層307,以致SAS/SATA物理層307可向附接的存儲設(shè)備發(fā)送C0MINIT。如果在可編程的熱插拔超時期間(一般10-500ms)內(nèi),沒有任何協(xié)議成功,那么通過在“強力”連接存儲設(shè)備的嘗試中向存儲設(shè)備發(fā)送C0MINIT,存儲控制器104可自動選擇SAS/SATA物理層307。另一方面,存儲控制器104可簡單地繼續(xù)監(jiān)控或進行備選的協(xié)議檢測方案。
[0037]在處理單元360中,SerDeS310定期發(fā)送脈沖,并分析反射波,以檢測不同的AC耦接特性,所述AC耦接特性指示附接的設(shè)備的協(xié)議。例如,基于其標準化的存儲協(xié)議電氣要求,存儲設(shè)備具有特殊的模擬信令特性。傳送給存儲設(shè)備的TDR脈沖會被反射回SerDeS310,并由存儲控制器104分析,以確定耦接到存儲控制器104的存儲設(shè)備的種類。下面在圖5中,表示和說明這種硬件/TDR檢測的例子。
[0038]圖5是存儲控制器104的例證硬件檢測方案的示圖370。感測PCIe與SAS電氣特性的一個特殊挑戰(zhàn)是SAS中采用的無源通道長度的寬范圍。SAS通道長度可以從僅僅幾厘米變動到多達10米,這會引起數(shù)十納秒的反射TDR波的延遲(例如,例示為“飛行時間 X2,,)。
[0039]SerDes310可以實現(xiàn)采樣定時器(373),以確定何時對反射波采樣,和評估充電(charge)特性。這樣的定時器可被配置成當發(fā)射TDR脈沖時(即,粗線371)起動。另一方面,利用用于檢測從長度未知的SAS通道返回到達SerDes310的反射TDR脈沖的閾值
(372),可以獲得該SAS通道中的脈沖的充電特性的精確測量。另一種備選方案包括用于檢測反射TDR脈沖的到達的dV/dt接收器。一旦反射TDR脈沖到達,采樣定時器就會被起動
(373)。當采樣定時器期滿時,在SerDes310的電壓可被采樣(例如,采樣點380),并與各個閾值電壓比較(例如,372、374、375)。例如,如果SAS充電檢測閾值被超過,那么TDR脈沖會指出SAS設(shè)備附接到存儲控制器104。否則,TDR脈沖會指出PCIe存儲設(shè)備被附接,或者根本未附接任何設(shè)備(375)。這樣的閾值可被編程到存儲控制器104的固件中,以提供在不同的實現(xiàn)和工作環(huán)境方面的靈活性。
[0040]在另一個實施例中,可以利用故障保險定時器來確定附接到存儲控制器104的存儲設(shè)備的種類。例如,在發(fā)射TDR脈沖時(371),可以起動設(shè)定為最大線纜長度延遲的2倍的故障保險定時器。如果檢測到反射TDR脈沖,那么采樣定時器會被觸發(fā),從而會發(fā)生充電值的采樣(例如,采樣點380)。如果未觀察到反射TDR脈沖,那么當故障保險定時器期滿時,會發(fā)生充電值的采樣。例如,如果鏈路被適當端接,那么不存在反射,從而故障保險定時器會起動。如果鏈路未被端接,那么在2倍于傳輸線路的最大長度的延遲的時間,反射自動觸發(fā)檢測。
[0041]另一方面,基線定時器(376)可以和故障保險定時器一起使用,以根據(jù)采樣,而不是使評估完全基于絕對電壓閾值,來評估充電斜率(例如,390、391、392)。例如,基線定時器可用于在收到TDR脈沖之后立刻對反射TDR脈沖采樣?;€定時器可捕捉確定充電斜率中的第一個點。之后,采樣定時器可被用于捕捉可從其確定充電斜率的第二個點。當然可以利用多個樣本,以提高精度和改善抗擾性(即,更精確地確定哪個是信號哪個是噪聲)。
[0042]用于起動采樣定時器的這種反射TDR脈沖檢測技術(shù)為各種長度的通道,包括超過SAS的10米無源長度極限的那些通道提供靈活性。也可利用另外的閾值,以提供與各種協(xié)議相關(guān)的充電特性的更精細辨別??梢圆捎媚?數(shù)轉(zhuǎn)換器,以在借助數(shù)值比較確定充電電平的情況下進行檢測。通過在充電時間內(nèi)獲得多個樣本,并在確定充電特性之前,對作為結(jié)果的采樣點380進行數(shù)值分析和曲線擬合,可以獲得額外的精確性。
[0043]圖6是存儲控制器104的另一個例證處理400的流程圖。處理400圖解說明選擇的協(xié)議中的滯后。在鏈路掉線的情況