L0s/L1級電源狀態(tài)管理通過將鏈路置于電氣空閑(E-IDLE)下來降低能耗,因此要求鏈路雙方設備都能夠實現(xiàn)L0s,,快速的進入或退出電氣空閑狀態(tài),。L1相對于L0會進一步降低功耗。從PCIe1.0開始,,L0s級電源管理就是調試測試的一個難題,。鏈路寬度降低(Downconfigure)和提升(Upconfigure)是根據(jù)鏈路數(shù)據(jù)傳輸流量控制而定,只要滿足系統(tǒng)的吞吐率,,可以適當?shù)年P閉原本活動的鏈路,,以達到減小能耗。同樣,,當系統(tǒng)吞吐率要求增大時,,能夠開啟被關閉的鏈路。鏈路的傳輸速率也可以在2.5Gbps和5Gbps之間切換,,以最小的系統(tǒng)能耗完成數(shù)據(jù)傳輸任務,。
一.PCIe2.0技術簡介
PCIe是串行的點對點的互連總線,。最初PCIe是為取代AGP總線而設計,目前已經成為主流的I/O互連總線,。PCIe提供了一個可升級的構架,,傳輸帶寬隨著鏈路的寬度增加而增加。PCIe2.0較PCIe的主要變化是:速度增加,,從2.5Gbps增加到5Gbps,并且速度可以協(xié)商,;電氣空閑(Electrical Idle)的進入和退出,,減少能耗并簡化了設計,增強系統(tǒng)可靠性,;鏈路寬度降級,,減少能耗。鏈路寬度提升,,增加系統(tǒng)額外帶寬,。
PCIe2.0為系統(tǒng)帶來優(yōu)化的同時,也為設計和測試工程師帶來了挑戰(zhàn),。依據(jù)PCIe2.0的主要變化,,要求測試設備有能力捕獲鏈路上所有層面的協(xié)議。Tektronix TLA7000系列分析儀">邏輯分析儀和TLA7S16 /TLA7S08模塊是極好的針對PCIe2.0調試和驗證的工具,。
二.PCIe系統(tǒng)構架
PCIe是一個三層結構的系統(tǒng),,包括物理層(邏輯子層和電氣子層),數(shù)據(jù)鏈路層以及事務層,。事務層主要負責事務的請求/完成,、TLP流控制和消息通知。數(shù)據(jù)鏈路層主要負責確保數(shù)據(jù)在鏈路上正確,、可靠的發(fā)送和接收,。物理層分為兩個部分:邏輯子層和電氣子層。電氣子層主要負責發(fā)送和接收信號,;邏輯子層主要負責數(shù)據(jù)加擾/解擾,、8b/10b編碼、封包等,。另外,,鏈路的協(xié)商是在邏輯子層完成的。TLA7S16串行邏輯分析模塊定位于捕獲邏輯子層,、數(shù)據(jù)鏈路層和事務層的數(shù)據(jù)進行協(xié)議分析,,并且探測方式不會影響鏈路的信號完整性。
三.數(shù)據(jù)率訓練(Training)過程的捕獲與分析
所有的PCIe2.0鏈路在初始階段必須工作在2.5bps速度下,,這主要是考慮到向下兼容的能力,。此外,當系統(tǒng)吞吐率要求不高的時候,也可以從5Gbps的速據(jù)降到2.5Gbps以減少能耗,。因此,,測試設備首先必須能夠探測到速度的變化,然后通過捕獲的數(shù)據(jù)分析速度切換是否按照規(guī)范要求進行,。
能否在速度切換開始時觸發(fā)并捕獲數(shù)據(jù)是揭示鏈路上所發(fā)起序列的異常問題的關鍵所在,。通常,當發(fā)起速度切換后,,需要對第一個訓練序列(TS)進行捕獲,。TLA7S16/08模塊的序列觸發(fā)功能可以對任意一條通道進行多達連續(xù)16個符號的觸發(fā)設定。序列觸發(fā)提供了對任意一個PCIe2.0的有序集中任意域的設定,。
很多情況下,,期望的觸發(fā)條件由于鏈路中的協(xié)議出現(xiàn)了錯誤而無法被偵測到,這會減緩甚至被迫中斷調試,。在此期間,,工程師往往不得不隨機捕獲數(shù)據(jù),手動地去分析數(shù)據(jù)和協(xié)議的正確性,。TLA7S16/08的序列觸發(fā)可以幫助工程師通過觸發(fā)鏈路中單獨的通道去發(fā)現(xiàn)問題的根源,。出現(xiàn)問題的通道暫時被忽略,協(xié)議的驗證和分析將得以進行下去,。
只要串行邏輯分析儀被觸發(fā),,采集到的數(shù)據(jù)將會顯示出完整的2.5Gbps到5Gbps速度切換的過程。工程師能非常直觀地發(fā)現(xiàn)有問題的通道,。另外,,所有采集到的數(shù)據(jù)都會按照協(xié)議規(guī)范進行解碼。
當系統(tǒng)完成2.5Gbps速度的訓練后,,鏈路會進入L0狀態(tài),。在鏈路雙方的訓練中會通知支持的速度,如果雙方都支持5Gbps,,則鏈路會嘗試著將速度切換到5Gbps,。當鏈路處在L0狀態(tài)時,會切換到Recovery狀態(tài),,并且開始進行5Gbps速度切換的訓練,。當完成訓練序列后,2.5Gbps的鏈路會進入電氣空閑狀態(tài),,接著鏈路會退出電氣空閑,,鏈路雙方將運行在5Gbps的速度上,同時發(fā)起電氣空閑退出有序集(EIEOS),,緊接著通過其他的訓練序列,,速度切換將發(fā)生在Recovery.Speed狀態(tài)中,,最后鏈路返回到L0狀態(tài)下。
請注意,,串行邏輯分析儀會將每一條鏈路上發(fā)生的每一個符號和相應的解碼信息一并顯示,。假如其中有一條通道發(fā)生誤碼的話,這些誤碼將會被顯示在單獨的通道上,,用戶能通過鏈路詳細信息(Link Detail Column)中的內容快速地判斷出在某一通道上是否存在問題,。傳統(tǒng)的協(xié)議分析儀僅能得到有錯誤幀的提示。
PCIe中的ASPM(Active State Power Management)是為了降低能耗而設計,,然而PCIe系統(tǒng)出現(xiàn)的問題大部分是在電源管理期間,。
當TLP Configuration Write命令發(fā)起,向寄存器寫入了一個錯誤的數(shù)據(jù),,就會引起系統(tǒng)的異常,。這種問題通常發(fā)生在ASPM使能期間,,硬件和軟件出現(xiàn)了配合問題,。為了捕獲這些異常事件,串行邏輯分析儀必須要捕獲到鏈路在退出以及進入L0s狀態(tài)過程中的TLP數(shù)據(jù)包,。分析儀為了能夠進行極限測試,,在退出EIDLE狀態(tài)過程中,必須盡可能多的捕獲FTS包,,即盡可能快地探測鏈路的變化,,及早和被測系統(tǒng)實現(xiàn)同步和鎖定。TLA7S16/08串行邏輯分析儀通常僅需要12個FTS包,,就可以完成退出EIDLE后鏈路的鎖定,。及時、快速的鏈路數(shù)據(jù)鎖定避免了在L0開始時有效TLP包的丟失,。傳統(tǒng)的協(xié)議分析儀可能需要上千個FTS包才能完成幀同步,。圖3說明了分析儀如何捕獲到鏈路進入L0s的狀態(tài)。
當鏈路退出EIDLE需要發(fā)送FTS包,,發(fā)送FTS包的個數(shù)在鏈路訓練的過程中已經確定了,。如果分析儀在退出EIDLE過程中不能鎖定數(shù)據(jù),就無法采集到TLP Configuration Read包,,更無法分析和驗證包內攜帶的數(shù)據(jù)信息,。
數(shù)據(jù)包級別的觸發(fā)功能再配合實時的數(shù)據(jù)過濾功能,可以進一步縮小需要尋找的感興趣的TLP和DLLP包的范圍,。
另一個可能發(fā)生的事件是當ASPM使能后,,出現(xiàn)了TLP丟包的情況。在正常的運行環(huán)境中(非L0s狀態(tài)),,所有的TLP包能夠被正確的捕獲,。在電源管理階段,,如果鏈路不能正常工作,很可能是TLP沒有正確的發(fā)起,。分析儀會捕獲所有的TLP包,,按照每一個TLP序列標識符進行排序,如果有TLP包丟失的情況,,很容易被發(fā)現(xiàn),。
五.鏈路寬度協(xié)商過程分析
一些調試、驗證的挑戰(zhàn)是和鏈路動態(tài)切換有關的,。PCIe規(guī)范允許鏈路雙方提升或者降低鏈路的寬度,。例如如果鏈路的一方在新的鏈路寬度訓練中出錯,鏈路將重新進入Recovery狀態(tài),。TLA7S16/08串行邏輯分析儀能夠驗證鏈路寬度訓練的整個過程,。同樣,當發(fā)起鏈路寬度訓練序列后,,鏈路會發(fā)起EIEOS,,接著進入EIDLE狀態(tài)。當鏈路退出EIDLE,,分析儀會捕獲完成鏈路寬度訓練的數(shù)據(jù)包(圖4),。
當鏈路退出EIDLE,同樣需要額外的TS包使得鏈路恢復到正常的狀態(tài),。串行邏輯分析儀同樣能夠捕獲完整的過程,。
六.多總線時間相關分析
隨著電子系統(tǒng)變得越來越復雜,對系統(tǒng)并行總線和高速串行總線的整合設計變的非常的普遍,。在許多應用中,,不可能僅對PCIe總線單獨進行分析,例如PCIe總線向控制器發(fā)起內存讀數(shù)據(jù)請求,,接著控制器向DDR內存進行讀操作,。如果DDR讀數(shù)據(jù)使用了錯誤的地址,將會導致PCIe請求到錯誤的數(shù)據(jù),,并可能引起系統(tǒng)崩潰,。邏輯分析儀是唯一能夠對PCIe、控制器總線和DDR內存在單一儀器內進行分析的設備,,所有的數(shù)據(jù)樣點都是有時間相關的時間標記,。
TLA7S16/08配合通用的邏輯分析儀模塊(TLA7BBx)可以提供PCIe鏈路和其他并行總線時間相關的調試能力。TLA7BBx以最高50GS/s采樣率對136路信號進行高精度的定時采集,,還可以通過外時鐘同步進行最高速度為1.4GHz的同步分析,。邏輯分析儀能夠獲得這些并行信號,串行分析模塊可以采集到PCIe鏈路的數(shù)據(jù),。這樣的時間相關的信息能幫助我們解決很多調試,、驗證問題,。
七.信號探測方式
對PCIe系統(tǒng)的探測必須遵循不能影響到鏈路正常特性的原則。在物理層面上,,要求探測不能破壞原來鏈路的信號完整性,;在數(shù)據(jù)層面上,要求不能改變原有系統(tǒng)的時序特性,。Tektronix提供的P6701S/P6704S/P6708S/P6716S系列內插探頭,,提供對被測信號的高阻探測,與傳統(tǒng)的協(xié)議分析儀先將信號緩存再輸出的結構不同,,而是直接將信號輸入到采集系統(tǒng)中,。此外,P6708/P6716探頭還支持芯片級的PCIe信號探測,。
總結
PCIE2.0的驗證充滿著各種挑戰(zhàn),,對芯片和系統(tǒng)性能的驗證;5Gbps的數(shù)據(jù)傳輸率,;最小化系統(tǒng)開銷以及高級電源管理(ASPM),;復雜的協(xié)議和瞬變的故障都使得PCIE2.0的調試變得困難重重。Tektronix公司TLA7Sxx系列串行邏輯分析儀模塊提供強大的硬件調試性能,,配合TLA7000邏輯分析儀主機以及其他測試方案,,最大程度滿足被測系統(tǒng)的邏輯,、協(xié)議測試,。