<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 設計應用 > 靈活的互連設計

          靈活的互連設計

          作者:■ PMC-Sierra公司產品研究部 Duncan Bees 微處理器產品部 Bria 時間:2005-04-27 來源:eaw 收藏

          最近出現的幾種互不兼容的通用系統互連方式為芯片供應商創(chuàng)造了機會,同時也帶來了困難。本文將對幾種系統互連方式的屬性進行分析,通過認識這些互連方式之間所共有的邏輯和物理屬性,可以制定具有簡單設計和互配性能的實施方案。
          新興的系統互連方式包括PCI-Express(PCI-Ex)、HyperTransport (HT)和RapidIO(RIO)。它們在很大程度上提供了類似的能力,但是由于在邏輯層、數據鏈路層和物理層上均有所不同,因此互不直接兼容。由于這些互連方式和總線的應用領域并未清晰地劃分,因此可能會根據客戶的體系結構和設計選擇,要求電信和數據通信芯片對任一方式提供支持。對于既需要訪問控制層,也需要訪問數據層的通信,以及廣泛部署于各種體系結構中的微處理器來說,這一點尤為明顯。
          芯片設計師們必須時刻將這些要點牢記在心,以應對在互操作性方面的要求。為此,可以采用的策略包括:
          ?橋接:用一個外部器件執(zhí)行通信協議和物理轉換;
          ?可靈活配置的接口:用一個能夠進行配置的器件來支持一種以上的互連方式或總線;
          ?一個器件擁有多種型號:芯片制造商根據需要發(fā)布芯片來支持不同的接口。
          互配的范例如圖1所示。在這一示例中,一個高速內置微處理器采用并行HT互連,經過優(yōu)化后,具有低延遲現象和高帶寬的特點。通過PCI-Ex或RIO通信協議,采用一個并行轉串行的橋接將該處理器連接至一個串行背板。
          橋接和其它互配策略可以通過明確這些互連和總線間的核心功能來進行簡化。在有些情況下,接口參數可以選擇,以便將邏輯和物理層的差異降至最低,以此簡化和降低不同互連之間達到互操作的成本。
          圖2所示為這些互連中的一種端點實現方式。PCI-Ex、HT和RIO的分層十分清晰,在很大程度上遵循了類似的結構;并根據相應的交易層、數據鏈路層和物理層來制訂結構的實現方式。在圖2中,通向應用層的FIFO接口使交易層分組數據包在終點應用層與互連塊之間進行傳輸。在互連塊內,采用了交易層信息,如報頭CRC糾錯和序列編號,以及數據鏈路流的控制。在物理層,分組數據包被轉換成一個字節(jié)或位序列 ,然后進行編碼和其它操作。
          通常這些互連之間的交易層語義相當簡單,可以通過將其與系統互連接口的邏輯參數進行限制,對應用客戶提供的接口細節(jié)進行隱藏。在物理層, PCI-Ex總線和串行RIO總線均使用了基于SERDES的接口。HT和并行RIO采用了一種類似的并行數據總線、分離的時鐘信號和不同的電氣信號。

          交易層與數據鏈路層的比較
          下面將對這些總線的交易層和數據鏈路層進行比較。它們之間有著顯著的不同,也存在可實現靈活配置接口的相似性。
          未完成交易的數量
          任何接口的一項重要特性就是其所支持的未完成交易的數量。這一數值越高,對于編程者可供采用的系統并發(fā)性就越高(其代價是緩沖的增加)。未完成交易的數量依不同的通信協議而不同。較為合理的設計方案是可以支持16至32個未完成的請求。這一數值可以適用于所有這些總線和互連,并可在相對合理的緩沖開銷下為編程者提供較好的靈活性。
          排序模式
          加載-存儲總線所支持的排序模式對于總線的應用來說非常重要。在PCI  2.3版附錄E中所描述的“生產者-消費者”模式是最被廣泛接受的模式。它提供的模式使處于系統任何位置的“生產者”和“消費者”均可以在相互之間進行通信,而且在遵循特定規(guī)則的條件下,該通信的結果是切實可靠的。PCI-Ex和HT總線支持完整的“生產者-消費者”模式。對于RIO總線,在PCI技術規(guī)格中所描述的“標志位”和“數據”可能需要在橋接的同一側處于同一位置,從而可能限制系統設計的靈活性。
          與此相關的問題是總線的技術規(guī)格是否支持專用的后置請求通道。在PCI 2.3版的附錄E中,第5條和第7條中確實存在可導致死鎖的情況,而且這種情況僅在最少3個已經連接的橋接條件下才會發(fā)生。HT1.05附錄C.5.1和C.5.3中提供了一項替代性的描述。對于本文中所考慮的5種總線,只有RIO不支持后置請求通道。因此,RIO的應用可能在橋接復雜度較低的條件下受到限制。
          本文建議內部總線接口的設計支持PCI-X的排序模式。這樣,在不同的接口間進行連接和橋接時,就具備了相當大的靈活性。
          數據鏈路層特性
          雖然在數據鏈路層存在許多相同性,但PCI-Ex、HT和RIO之間的數據鏈路層還是有著顯著的不同。雖然靈活互連的分層結構隱含了許多細節(jié),但是數據鏈路層的某些方面會影響在交易層和應用層之間可配置內部接口的設計。
          例如,數據鏈路層中最大數據包的大小會影響到交易層??膳渲媒涌诘脑O計師必須考慮到最大數據包的尺寸可以變化,而且這一數值在每種技術規(guī)格中各有不同。但是,64~512字節(jié)是一個較為合理的支持范圍,這樣可以降低緩沖開銷,并能表現出良好的性能。
          防止出錯和鏈路控制機制也根據技術規(guī)格的差異而有所不同,但是在實現可配置內部接口的結果中,必須有一個陣列能夠應付一系列嚴重或非嚴重性錯誤。這個陣列包括一個無錯誤回應和一個表明鏈接斷開的指示。
          流量控制機制在這些總線之間也有所差異,但是通常不會影響到內部總線接口。特別是對RIO總線,建議不要使用控制RIO流效率較低的Rx控制版本,而應采用Tx控流選項。這一選項與PCI-Ex和HT總線的機制相同。

          物理接口對比
          在物理層,2種串行互連(PCI-Ex和串行RIO)以及2種并行互連(HT 和并行RIO)之間均存在很大的相同性。在每種情況下,共享的物理層設計都是可行的,只需對互連提出某些特定的要求。
          可配置的串行物理接口
          PCI-Ex 和RIO總線的每種物理層屬性都提出了特定值或范圍。 PCI-Ex的物理層引入了例如電源管理和即插即用等性能。
          連接速率和帶寬
          PCI-Ex在當前版本中使用了2.6G波特的信號速率。以后的版本可能支持更高的速率。
          RIO目前支持1.25、2.5和3.125 G波特的信號速率,有可能支持更高速率的SERDES。RIO在3.125G波特下的主要電氣參數與XAUI(3.125G波特)相近,而更低的RIO速率實際上屬于XAUI可擴展波特率的版本。
          在PCI-Ex下可采用多種通道,RIO將通道的寬度限制在x1和x4。而具備x1和x4 能力的物理結構有可能在這些互連的電信/數據通信領域內得到廣泛的應用。
          信號擺幅和預加重
          PCI-Ex和串行RIO的信號擺幅在一定程度上有所不同。但是,兩者的范圍可以通過可編程進行完善(主要是在CML中進行)。
          在當前的PCI-Ex版本中采用了稱為去加重的預加重方法,其轉換位的幅度比后續(xù)位更大。而預加重屬于RIO總線的一個選項。但是,在這兩種接口的背板應用中,預加重功能具有明顯的益處,因此推薦采用對其支持的功能。在芯片至芯片的應用中,預加重可能體現不出自己的優(yōu)勢。因此,推薦在可配置的物理解決方案中,對預加重的使用及程度進行配置。
          時鐘和抖動
          傳輸抖動和接收抖動允許的誤差在PCI-Ex和RIO總線之間是相當一致的。0.3UI(Tx)和.65UI(Rx)的重疊范圍屬于物理層的互操作屬性。
          PCI-Ex規(guī)定的時鐘允許誤差為



          關鍵詞: PMC-Sierra

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();