ASI為PCI Express (PCIe)的新應用,也為AdvancedTCA應用的子標準之一,它的目標是要統一不同設計介面不相容的問題。這是一種交換連結的新技術標準,可廣泛用於晶片間連結、刀鋒伺服器、背板、路由器或交換器等領域。
ASI(Advanced Switching Interconnect)共用PCIe實體層與資料聯結層,但提供比PCIe更多的交易層處理能力,如對等傳輸、多點傳輸、服務品質保証等功能。為了提高服務範圍,ASI制定許多協定介面以選擇性提供特殊的服務需求,如封包分段重組、擁塞管理、遠端記憶體存取等功能。
ASI為ASI-SIG(Special Interest Group)組織所推動,也為ATCA的五項子標準之一[註1],這是一種新的交換連結技術,且Intel為主要推動者之一。這項技術主要是要解決各公司所自行開發的晶片介面不相容問題。ASI-SIG主要的成員有Agere、Alcatel、IDT、Intel、Siemens、Vitesse和Xilinx等,而ASI-SIG首頁上表示,截至2005年5月為止已有54家廠商加入。
在應用上,ASI可使用於二大市場,分別為「通信與網路」市場以及「伺服器與儲存設備」市場。在通信與網路方面有路由器、交換器、閘道器、都會乙太網路、無線網路與有線網路等;在伺服器與儲存設備方面有母板伺服器、刀鋒伺服器、伺服器背板、儲存伺服器與磁碟陣列等。目前市場上,這類產品的介面與溝通方式都是由各公司自行規範設計,如SPI-4.2/SPI-3、CSIX、Rapid IO、Hyper Transport、PCI-X、PCI Express (PCIe)等,而傳輸內容也沒有一致性,所以不同公司之間產品完全無法溝通,造成使用者必須長期依賴單一供應商,並要確保供應商是否能提供後續長期的維護,另外,也可能為了新增系統功能,必須大規模重新採購新設備,造成同樣功能的設備重覆投資,這些都大大增加了維護上與投資上的負擔。ASI的介面解決方案便可解決這些不同規格的介面問題,增加採購者選擇上的彈性,而開發廠商也可利用網路設備模組化,加速網路市場的發展。
在技術上,ASI以具有高延展性的PCIe技術為基礎,PCIe已得到市場上的認同,除了晶片與與晶片間的使用(如DSP、NPU),更已經應用於背板上。ASI延用PCIe的實體層與資料聯結層,再加上比PCIe更多的交易層處理能力,達到比PCIe更多的功能,如對等傳輸(Peer-to-Peer)、多點傳輸(Multicast)、服務品質保証(QoS)等功能。
ASI是以封包為基礎的協議層協定(圖1),有別於其他並行訊號腳的控制方式。在實體層方面,因為實體層和PCIe共用(圖2),所以實體層是以單條線速2.5Gbps的串列解串列介面(SerDes I/F),圖3為串列解串列介面的示意圖,在傳送端是以8bit的單位,經過8b/10b的特殊編碼方式,將8bit的資料轉換成10bit的資料,接著,再以bit為單位的傳送;而接收端依照相反的運作模式,先將1bit的接收進來,再累積到10bit之後,以8b/10b的特殊解碼方式,將10bit的資料還原為8bit。
SerDes已經是一種高速傳輸的趨勢,它是在1980年時由IBM Corp所提出,以低電壓差動訊號(Low Voltage Differential Signaling, LVDS)的直流平衡(DC Balanced)特性,解決高速傳輸時的AC-Coupled負載驅動問題,並提高傳輸線距離。由於它的串列傳輸大幅減少針腳數目,且內含的時脈資訊可以避免資料匯流排訊號之間的同步問題,普遍用於高速背板或晶片間的溝通。要使用這種傳輸方式,首先要訂定訊號的起始訊號,經過特別保留的特殊碼(Special Characters,在編碼標準為Kx.y,如K28.5為IDLE),先達到傳送端與接收端彼此之間的同步,之後就可以傳送一般資料。一般資料編碼也是經過特別挑選過的(Data Symbol,在編碼標準為Dx.y,如D22.5)。資料的編碼可以加強資料正確性的偵錯(Error Detection),但是8b/10b編碼並沒有錯誤更正(Error Correction)的能力。圖3所示為一條串列/解串列的操作情形,稱之為單一通道(Lane),若要達到更高速頻寬的溝通,可以增加平行通道數,目前PCIe Rev1.0a規定可使用x1, x2, x4, x8, x12, x16或x32的通道寬度,但要注意的是,若要使用高寬度通道,必要注意各通道之間的同步問題。
而資料連結層也和PCIe共用(如圖2),它主要是提供協議層之間可靠的交換,PCIe的資料連結層有幾種偵錯與重試方式:
.負責產生協議層封包的序號與LCRC。
.暫存協議層封包以應付重傳的發生。
.協議層封包與資料連結層封包的資料完整性(Integrity)檢查。
.正向以及反向的資料連結層回應(Acknowledge)。
.錯誤發生的記錄與報告。
.連結回應的超時重傳機制。
協議層必須特別討論,因為ASI訂定和PCIe不相同的協議封裝方式,首先我們先了解PCIe的協議層提供那些功能:
.協議封包順序(ordering)與要求處理。
.信用量方式的連結控制。
.資料正確性偵測。
在協議定址方面,PCIe的協議層除了支援PCI的三種傳統定址方式,記憶體(Memory)協議、輸出入(I/O)協議及設置(Configuration)協議,並加入了新的訊息(Message)協議,新加入的訊息協議在以往是以專屬針腳的方式溝通,如中斷、錯誤通知、電源管理等,在PCIe中是以封包夾帶不同訊息的方式作溝通。但是,這些都不足以應付ASI所要達到的功能,所以ASI重新訂定了協議層的內容。
在定址方面,首先,我們必須先了解PCIe的使用環境,由於PCIe在制定的基本目標之一就是要能夠很容易將傳統PCI的功能延伸,並完全相容現有的軟/硬體,這代表傳統的PCI架構限制了PCIe只能採用共用記憶體定址(Global Memory Address-Based)和樹狀拓樸(Tree Topologies),PCIe處理的是單台電腦、單處理器的環境,若要溝通兩個獨立記憶體位址,PCIe採用非通透橋接器(Non-transparent Bridge)。但是ASI的環境可能是幾台獨立的電腦、也可能是幾顆獨立的處理器,它們的特徵是控制的記憶體位址是各自獨立的,若ASI的機器之間要做資料的讀寫,使用PCIe的協議層定址便會發生問題。ASI的拓樸方式,不只是樹狀拓樸,也可能是星狀(Star)、雙星(Dual-star)或網狀(Mesh)等拓撲,而這些拓樸常常使用於刀鋒伺服器、電腦叢集、儲存陣列、電信路由器、或交換器等環境中,為了達到對等傳輸(Peer-to-Peer)的能力而不必外掛非通透橋接器,ASI訂定了簡單讀存(SLS)、簡單佇列(SQ)、和保證資料傳送(SDT)等協定介面。
在品質保證方面,PCIe只提供信用量的連線控制,在PCIe是一個比較小的世界,主要和北橋晶片作溝通,當某設備如顯示卡等佔用PCIe頻寬時,造成的系統延遲僅限於單台電腦。而ASI是多處理器或是多台電腦的架構,某兩條連線造成其他連線的阻塞(Head-Of-Line Blocking, HOLB)是很嚴重的,為此,ASI提供兩種良好的壅塞管理(Congestion Management)機制,除了信用量連線控制(Credit-based Flow Control, CBFC),還加入了狀態連線控制(Status-based Flow Control, SBFC),以達到更好的連線控制與品質保証服務(QoS)。
除此之外,ASI希望擴大服務的範圍,除了ASI封包,它還希望能夠交換PCIe、SPI-4.2、Fiber Channel、Infiniband、TDM及乙太網路封包等,換句話說,ASI想達到各種協定封包的隧道(Tunneling),因此ASI加入了可選擇性堆疊的「協定介面群」(Protocol Interfaces, PIs),PIs除了ASI-SIG所訂定的功能區外,還有自訂功能區與保留功能區,以應付已知與未知的封包隧道。
ASI的封包標頭如圖4所示,它共有8Bytes。它的路由機制和乙太網路的路由機制完全不同,ASI採用一種簡易、低成本的路由機制,它的路由資訊包含有方向(Direction,ASI標頭中的D)、轉向池(Turn Pool)和轉向指位器(Turn Pointer),如圖5所示。它是以封包來源為基礎(Source-based),而非乙太網路中各裝置的唯一MAC/IP位址。ASI封包在傳送前必須知道和自己相關的連結拓樸,這意味著兩個不同裝置要傳送給同一裝置時,這兩台裝置所使用的路由資訊是完全不同的。「方向」決定路由方向,可能為正向或反向(圖6)。「轉向指位器」則決定「轉向池」的起始位置,每經過一個交換器,轉向指位器就會增加log2(埠數),例如某交換器有8個埠,則經過這個交換器之後,轉向指位器就會加3。轉向池的內容為此交換封包的進埠與出埠的「間隔差」,例如一個8埠的交換器,進埠為6,而出埠為4,則正轉向池的內容為5(間隔為7、0、1、2、3,共5個埠)。
ASI提供「快速錯誤恢復」(Rapid Fault Recovery)的功能,乙太網路則為Source MAC與Destination MAC作交換,可能還要將MAC查表之後重貼為新的值。但是ASI在處理這類問題時並沒有那麼複雜,它不用複雜且龐大的MAC/IP搜尋表(Look-Up Table),當交換後有錯誤發生時,將方向D由正向變成反向,而轉向池的內容不需改變,則錯誤回覆封包便可直接回到導致錯誤發生的封包產生端,而封包產生端也可以很快的知道錯誤回覆封包的產生來源。
ASI支援多點傳輸路由,其封包標頭內容如圖7所示,它的協定介面為PI-0。可支援64K組多點傳輸群組,而群組的建立/移除由軟體完成,終端裝置可以寫入(Write)與傾聽(Listen)。ASI交換器依照封包標頭中的「多點傳輸群組識別」(Multicast Group Index)對應內部的搜尋表,搜尋表內含有各群組識別所對應的輸出埠,最後ASI交換器再依照這些指定輸出埠將封包複製許多份之後傳送出去。
ASI提供兩種良好的壅塞管理(Congestion Management)機制分別為信用量連線控制(Credit-based Flow Control, CBFC)與狀態連線控制(Status-based Flow Control, SBFC)。
為了控制連線流量,首先必須先區分連線的種類。在ASI的封包標頭中(圖1)有3位元的傳輸量類別(Traffic Class, TC)資訊,而這項資訊在交換過程中並不會被更動,ASI交換器依照傳輸量類別的指示分類所接收的封包。ASI交換器內另外有一個對應表(如圖8),將這筆封包再分類於TC所對應的虛擬通道(Virtual Channel, VC),這項對應可能是一對一的對應,也可能是多對一的對應,舉例而言,有可能TC0~TC3都對應到VC0,而TC4~TC7分別對映VC1~VC5。最後ASI交換器再依照虛擬通道分別將這些累積在虛擬通道佇列內的封包傳送出去。當分類完成後,ASI交換器便可以分別對VC(以信用量連線控制)或TC(以狀態連線控制)做監控。
「信用量連線控制」是以信用量為單位對每條虛擬通道連線的連線控制,交換後接收端(圖9中的Egress Line Card)定時發出信用量給交換後傳送端(圖9中的Fabric Card),而交換後傳送端接收到信用量的更新訊息後,便不斷累積所得到的信用量,當有累積足夠的信用量可以傳送等待的封包資料後,傳送端就可將封包送出。
SBFC是以狀態的方式對每條傳輸量類別連線的連線控制。當Fabric Card將封包交換後會先暫存於佇列中,而這些佇列空間的使用狀況便會傳送到前一級。當佇列空間不足時,便會發出XOFF訊號,而前一級收到XOFF後,則必須停止傳送,以避免佇列空間接收過多的封包。直到XOFF訊息中指定的逾時時間之後,才可以再開始傳送。
ASI提供許多特殊的功能,它的封裝方式如圖10所示,而提供的功能種類如表1。除了ASI Route Header之外,其他都為選擇性使用,這代表ASI的使用彈性,在不同的應用可以有不同的組合使用方式,也可減少不必要的頻寬浪費。協定介面可能是為了提供更高層的服務,也可能只是交換過程間的中間產物,在封包的終點這些協定介面就會被拔除,類似目前新的通訊協定「多重協定標號交換(Multi-Protocol Label Switching, MPLS)」所提供的網路功能。
PI Header是以堆疊(Stack)的方式將PI所代表的功能附加上ASI封包中。表1所列為目前已知的協定介面,簡單說明如下。
訂定於協定介面PI-0。當使用環境各裝置的拓樸有兩個獨立的拓展樹(Spanning Tree)時,可用來選擇拓展樹的主要擁有者(Owner),最大可支援16個拓展樹,也可用來建立每個VC Type的最大封包長度、或建立多點傳輸路徑的群組。多點傳輸普遍使用於儲存媒體與工作站,例如資料映射(Data Mirroring)或設備重覆(Redundancy)等,當有同樣的訊息要傳給多位接收者時可使用這個協定介面。
使用協定介面PI-1,可建立點對點的連線識別,當識別建立時會以「事件報告」訊息回傳。
PI-2協議介面可提供以下功能:
‧分段與重組(Segmentation and Reassembly, SAR)
‧封裝(Encapsulation)
‧定序(Sequencing)
‧可靠傳送(Reliable Transport)
封包的分段在服務品質保証(QoS)和硬體設計限制是有必要的。例如當封包很長,硬體沒有提供足夠的緩衝區時;或者在做不同協定間的交換,協定本身對於封包長度的限制不相同時。而封包過長,可能會影響到其他封包流的傳送接收,在乙太網路上,IP就提供這種分段服務。過長的封包被切割成許多小封包,接收端必須要將這些小封包重組回原來的大封包。不過要注意的是,PI-2必不支援非順序(Out-Of-Order, OOO)的封包重組,這一類的封包重組必須使用大量的資料管理與儲存空間,而在ASI這種短距離且交換路徑非常態變動的環境之下,除了突然的裝置失效,幾乎不太可能發生非順序錯亂。
PI-4可用來讀取/寫入裝置的控制結構,因此這項操作必須擁有操作特權,否則會出現安全問題。
PI-5事件報告一定是以反向路由的方式以識別事件發生的來源。
PCI Express通道(PCIe Tunneling)
PI-8只提供一個PCIe樹狀拓樸的封包橋接,並不支援非通透橋接,這也顯示出它只負責單一處理器與單一記憶體空間。
SDT為ASI的協定介面PI-9。它使用硬體的方式提供Stream Socket中的Read/Write功能,並且可直接將資料放入應用程式記憶體中,可結合RDMA、及作業系統核心所使用的分散(Scatter)/集合(Gather)資料處理方式。它讓ASI提供類似TCP的功能。
SLS為ASI的協定介面PI-10。它讓每個PCI/PCIe裝置都能擁有一個獨立的記憶體位置,可支援多處理器等多記憶體空間的環境,這代表SLS取代了PCI/PCIe原本需要有「非通透橋接器」才能擁有的對等傳輸功能。ASI與PCIe原本就有共用的實體層與資料聯結層,PCIe的封包並不需要重新封裝,只要做簡單的記憶體位置轉譯。對於網路儲存上的新興技術,RDMA(Remote Direct Memory Access),若使用SLS可以比原本RDMA所採用的TCP/IP更有效率。
SQ為ASI的協定介面PI-11。它使用一個簡單的推拉佇列Push/pull Queue)作訊息的交換,簡單佇列的行為與簡單讀存非常類似,主要不同點在於簡單佇列是採用指定位置的共同佇列記憶體,而非個別記憶體定址的方式,在使用時必須檢查路徑(Path)、鎖鑰(Key)及溢滿(Overflow)等安全確認。它提供類似UDP的功能。
ASI為PCI Express的新興應用,並且是AdvancedTCA的子標準之一,它的目標是要統一各廠間介面設計不相容的問題,統一後更可模組化各設備,加速各市場的成長。ASI共用PCI Express的實體層與資料連結層,它的好處在於減少了廠商開發ASI的技術時研發時程與成本,並避免設計經驗的重覆投資。它採用與乙太網路不相同的路由機制,並能達到PCIe所沒有的對等傳輸功能。ASI提供更好的服務品質保証、更安全可靠的備援機制、更直接的記憶體控制、以及更廣泛的服務範圍。為了已知與不可知的路由交換支援,ASI訂定了充分具有彈性的協定界面,可以選擇性加入與移除各項特別的功能。
市場上已有AdvancedTCA產品,而ASI的標準仍在進行當中。目前可以看到的是Stargen的AXSYS產品家族推出了兩套系列產品,分別為MERLIN(Switch)與KESTREL(PCIe Bridge),他們宣稱是業界第一的ASI矽晶解決方案;nSYS也提供ASI的Simulation Environment,並提供設計與測試驗証工程師,以及客製化的設計服務;測試儀器大廠Agilent Tech.已經有支援最大x8的ASI測試儀器;PLX有PCIe的Bridge/Switch控制晶片,但是ASI仍在開發中;XILINX為市場上FPGA的提供者,目前已有ASI Endpoint的解決方案,提供以Coregen產生的HDL Simulation、以及Virtex-II Pro的Emulation;至於Intel、IDT、Sandburst與Alcatel,尚未看到有晶片組的推出,但Intel正全力推動ASI的發展。
PCIe的應用正不斷的成長,在未來,所有PCIe應用的裝置都可以靠ASI連結,ASI正成為趨勢,它的重要性已不可言諭。