PCIe資料交易的傳遞模式採用三層架構:資料交易層-資料鏈結層-實體層,而資料通訊的概念與一般貨運的概念是一致的,因此PCIe最精彩之處就在於資訊載送的傳輸道路與方式,實體層也成為廠商競爭的重兵集結處。在PCIe實體層規格中,PHY/MAC介面是真正的核心,接腳的定義與時序圖也是重點所在。
在2006年1月15日,隸屬於IEEE802.15委員會之下,負責超寬頻(Ultra-Wide Band, UWB)的TG3a決定解散,並以95%以上壓倒性的票數贊成解散,與成立之初和衷共濟的景象形成強烈對比。從2002年初開始,經過漫長四年的討論,最後竟成一場空。那麼,底層採用超寬頻的無線USB又該何去何從?既然官方撒手,民間只好自力救濟。超寬頻論壇(UWB Forum)與WiMedia聯盟迅速反應,發表聲明表示保證將把超寬頻推向商用化,就是自力救濟的具體舉動。
TG3a解散的事件,就是所謂的「技術風險」。那麼,已經出現一段日子的PCI Express(以下稱PCIe),在市面上的產品除了顯示卡之外,其他產品少之又少,令人擔心PCIe會不會重蹈超寬頻的覆轍?這一點倒是可以放心,PCIe終將站穩腳步!為何有把握這麼說?在此陳述一些事實作為根據。
其一,微處理器巨人英特爾(Intel)隨著雙核心處理器的推出,新一代的ICH8晶片組(圖1),似乎徹底取消PCI匯流排,以PCIe取代PCI的決心強烈。但是PCI並不會從市場上絕跡,畢竟PCI的裝機量與十餘年來的技術累積資產,自然會找到另外的出路。
其二,蘋果電腦的新一代的iMac電腦,架構已經完全投向英特爾的懷抱,期望在電腦領域扳回一城。觀察iMac內部,擁有PCIe介面的Express Card介面已經被蘋果電腦悄悄使用了(圖2)。
其三,當然就是Express Card的蓄勢待發。眾所皆知,PCI的被取代也意味著PCMCIA的改朝換代,Express Card是唯一的接班人。目前相關產品雖然有限,但是只要筆記型電腦的平台數量達到門檻,業者就會馬上介入,毋須擔心。
其四,一些嵌入型應用(Embedded System)的產品,有逐漸朝向PCIe的傾向。
其五,微軟在2005年推出的傑作產品Xbox 360遊戲機,若是仔細觀察其微處理器與晶片組的介面,似乎與PCIe的架構方式很相像。當初PCIe架構的開發目標,就是提供晶片至晶片的連線,與配接卡的輸出入連線功能,或做為PCIe與其他連線的輸出入連接點(Attach Point),例如PCI、1394(FireWire)與USB等。
然而,本文探討的是PCIe規格實體介面(Physical Interface for PCIe Specification, PIPE),這是英特爾開發的規範。基本上這是晶片或上游元件的設計者才會詳細閱讀的規格,設計終端產品的人可能用不上,只要略知即可。
廠商重兵集結於 實體層設計
為了維持文章的完整性,還是必須回顧兩個基本觀念。第一,PCIe資料交易的傳遞模式,是採用三個階層:資料交易層—資料鏈結層—實體層。第二,資料通訊的概念,與一般貨運的概念是一致的。一旦了解這兩點,就會發現,最精彩之處就在於真正將資訊載送過去的傳輸道路與方式(圖3),這就是為何實體層總是廠商競爭的重兵集結處。
此外,依據規格書記載,PCIe實體層又可細分成三個功能區塊(圖4),規範中以MAC-PCS-PMA來描述。
媒體存取控制層(Media Access Control, MAC)負責邏輯的處理,PCIe則是將之歸類在實體層中。實體編碼子層(Physical Coding Sublayer, PCS)與實體媒體連接層(Physical Media Attachment Layer, PMA)的區別,完全是為了解釋各個功能的處理而各自表述的,事實上以一顆晶片就可以實踐。而數位與邏輯之間的標準介面就是PIPE,與USB介面中的UTMI在理念上是彼此呼應的。有一個問題始終困擾許多人,那就是PCIe與PIPE規範兩者之間的對應關係究竟為何?為了解釋方便,在此使用圖5來說明。
不過請勿因圖5而誤解,PCS與PMA之分,只是功能上的描述,其間並無實質規範。反而是MAC與PCS之間才是PIPE的重心。圖5使用了PHY/MAC的描述方式,PHY/MAC是一個雙單工、並列式的介面。同時,MAC層到資料鏈結層(Data Link Layer, DLL)之間並無規範,而是由競爭廠商各自努力。鏈路調訓和狀況狀態機(Link Training and Status State Machine, LTSSM)、資料攪和(Data Scrambling)、位元等量(Byte Striping)等功能,都是MAC層的職責。
了解這個概念後,可知PHY/MAC介面才是PIPE真正的核心,接腳的定義與時序圖(Timing)是重點所在。不同廠商晶片之間的相容性就必須仰賴這些正確的時序,才能彼此動作無誤。
很明顯的,這個並列式介面是以MAC為主,資料的傳遞交換可採用8位元或16位元的方式,又因為PCIe的編碼採用8b/10b的編碼方式,因此也需要一或兩個Control K(圖6的TxDataK)來區別純資料或控制字元(Character),這一點可以完全理解,有趣之處反而是傳送端那七條訊號線所建構的指令(Command)與接收端的狀態線(Status)。這七條訊號線是MAC層用來告知PCS要處理下列工作:
1.起始接收器的偵測(Receiver Detection)。
2.讓外部進入迴路(Look-back)的狀態。
3.進入電氣閒置(Electrical Idle)的狀態。
4.設定目前的執行配類(Running Parity)為正還是為負。
5.轉換接收資料的極性(Polarity)。
6.重置(Reset)實體層。
7.將實體層導入各個電源管理(Power Management)模式。
既然有指令傳送過去,自然也必須有狀態訊號將實體層狀態從PCS告知MAC。6個位元構成了各種狀態回應:
1.所收到資料有效。
2.實體層已經獲得字元(Character)的鎖定。
3.實體層已經完成各種電源管理狀態的遷移。
4.實體層已經偵測到對方接收器的接上。
5.實體層已經偵測到鏈結(Link)進入了電氣閒置的狀態。
6.定義有8個額外的狀態碼與錯誤碼。
此外,實體層有一個PCLK的時脈輸出線,用來同步MAC/PHY介面的資料傳送。當資料寬採用16位元,時脈頻率為125MHz;若是該介面採用8位元的資料寬,PCLK時脈頻率則為250MHz。當然這些數值是為了迎合串流連結的速度而制定的,假設未來PCIe的速度向上提升,這些時脈頻率理應跟著加倍。
固然實體編碼子層(PCS)是實體層中的一個小方塊,承擔著MAC/PHY介面的溝通,然而與PMA之間的接續,在PIPE規格中並無規範,完全任憑廠商的設計本領(圖7)。參考時脈CLK訊號的輸入,是實體層用來產生內部位元傳輸率的時脈,也是用來產生PCLK訊號的基礎,採用展頻調變(Spread Spectrum Modulation)則是允許的。
8b/10b編碼線路就存在PCS中,8b/10b編碼器的輸入當然就是來自MAC/PHY介面的資料與控制字元,而且,目前「執行不對稱(Running Disparity)」與TxDataK訊號也是編碼器所需的資訊,畢竟資料字元與控制字元兩者的編碼是不同的。此外,彈性緩衝空間(Elastic Buffer)也是內建於PCS,用來補償傳送器與接收器兩者時脈的微小差異。
在重置(Reset)之後,鏈結初始化(Link Initialization)與調訓歷程(Training Process)之後的第一個動作,就是偵測彼端是否有接收器存在。當然PCS中的線路會控制接收器的偵測,並將結果透過MAC/PHY介面來通知MAC層。因此,PCS會包括有一個鎖相迴路(Phase Lock Loop, PLL),依據CLK訊號的輸入來產生實體層所需的內部高速時脈。
實體媒體連接層(PMA)理所當然就是要實踐PCIe高速訊號的類比-數位線路,例如每一個連結的差動驅動器與差動接收器等(圖9)。PCS與PMA之間的資料交遞是10位元的資訊,還必須經過序列反序列轉換器(Serialization & De-serialization, SERDES)的處理,才能夠創造出序列式的傳輸環境。
一路探索至此,可開始談論一個滿足PIPE規範的實體層所扮演的功能與特色,並作扼要整理。無論是一個獨立的實體層元件或巨集單元(Macrocell),皆是用來處理PCIe低階傳輸協定與高速電氣傳送訊號。綜合以上所述,可歸納出一個符合PIPE規範的實體層,必須實踐下列功能(圖9):
1.建構SERDES線路。
2.8b/10b的編碼器(Encoder)與解碼器(Decoder)。
3.傳送資料與接收資料的類比緩衝。
4.一個作為雙端時脈補償的彈性緩衝空間(Elastic Buffer)。
5.接收器偵測線路。
6.PCIe互容性字元組(Compliance Pattern)的不對稱(Disparity)控制。
7.信標(Beacon)訊號的傳送與接收線路,主要是用來實現遠端喚醒(Remote Wake-up)的功能。
PIPE規格確實描述PCS的PMA的基本動作,但是對於內部的設計並沒有規範。PIPE重點在於訊號接腳的定義,就結構而論,訊號可歸納成四大類(圖10):
1.PLL的輸入與輸出時脈。
2.資料的傳送與控制。
3.資料的接收與控制。
4.命令與狀態。
鎖相迴路(PLL)功能方塊必須依賴輸入的CLK訊號來產生MAC/PHY並列介面所需的PCLK訊號,作為同步用途(圖11)。PCLK在16位元載送時為125MHz,8位元載送時則為250MHz,此外針對8b/10b編碼解碼器則提供一個250MHz時脈輸入。額外的2.5GHz當然與資料傳送速度息息相關,輸入到SERDES與時脈回復(Clock Recovery)迴路。
接著來觀察傳送器的細部構成。很明顯的,傳送器依照資料的流動可細分成四個部分(圖12)。從MAC/PHY並列介面仰賴PCLK上緣送過來的8位元或16位元資料,至於16位元轉換8位元是一個選項,畢竟8位元並不需要這個轉換手續。
8b/10b編碼的動作就是將8位元字元(Character)映射成10位元符號(Symbol),動作頻率為250MHz。這是IBM於1980年代初期發表的論文,轉換規則在該論文中詳述。TxDataK乃是用來區別資料或控制字元的編碼。TxCompliance是一輸入訊號,用來強迫編碼器的執行配類(Running Parity)變為負,針對互容性測試產生錯誤的狀況。
由於PCIe有規範實體層的折返(Loop-back)模式,主要是將接收器的資料直接饋入傳送器的P-S轉換器再傳送出去。使用者不會用到這個功能,只有元件線路設計者或產品之間測試時才用的到。P-S自然要遵照PCIe的規格送出位元序列流,TxElecIdle訊號是用來告知差分驅動器進入電氣閒置狀態。如果沒有設定,差分驅動器則會正常送出資料或信標訊號。
至於接收器端就較傳送器複雜一些,由於8b/10b編碼本身就有內置時脈(Embedded Clock),因此接收端勢必要有時脈與資料回復(Clock & Data Recovery)線路。當然也會偵測連結的電氣閒置狀態,並且經由RxElecIdle狀態訊號來告知MAC層(圖13)。
S-P轉換器的動作與P-S轉換器完全相反,會將10位元的資料符號送入彈性緩衝器與K28.5(Comma Character)偵測電路。彈性緩衝器主要用以傳送與接收兩端時脈相差的補償,有趣之處在於K28.5的偵測。回顧PCIe的每個指令集(Ordered Set)的開頭必定是K28.5,因此該電路是用來作為符號鎖定,並且經由RxValid狀態訊號線來通知MAC層。
彈性緩衝器的輸出,則是饋入8b/10b解碼器、RxStatus電路與迴路折返到傳送器。RxStatus電路的主要功用,則是查看彈性緩衝器是否發生溢位(Overflow)或欠位(Underflow)的情況,也查看8b/10b編碼器是否發生錯誤,這是透過RxStatus狀態訊號來告知MAC層。8b/10b解碼器是將10位元符號轉換成原來的8位元字元,是資料或控制字元,會由RxDataK訊號來反應。
與傳送端同樣的道理,最後階段的8-16位元轉換線路是選項,僅16位元的MAC/PHY介面才會使用到。如果MAC/PHY介面是採用8位元傳送模式,8-16位元轉換線路就不需要,收到的資料是以250MHz送出。
談論至此,已勾勒出PIPE規格的輪廓。由英特爾主導的PIPE規範是一項新技術,不時有更新版本,有心學習者必須主動常常上網查閱,以免落伍。最後以PIPE訊號圖(圖14)作為本文結尾。
參考資料
1.www.intel.com/products/motherboard/pix/d975xbx_lg.jpg
2.www.pcisig.com
3.www.asic-architectinc.com
4.www.mindshare.com
5.PHY Interface for the PCIe Architecture(PIPE)文獻,英特爾。
6.www.ti.com/pciexpress
7.www.pciexpressdevnet.org/apps/org/workgroup/devnetgf/pipe
8.PCIe講義,科學自強基金會,陳乃塘。
9.陳乃塘技術日誌2002/2003/2004/2005/2006。
10.Interface/Design Wave與www.kumikomi.net網站。