擴展適配卡的前世今生

在談過主板的大部分解與各時代曾經稱霸一時的各類大小板型之後,主板的鳥瞰介紹就到此告一段落,接下來我打算進入細部介紹的部分,從本節主要討論的擴展卡接口開始依序介紹主板上的一些大大小小的組件。

擴展適配卡的前世今生

延續上一節曾經談過的主板板型標準,當年在 AT 與 Baby AT 時代中前期的時候,主板本身其實是沒有 I/O 背板設計的,當時的主板在蓋起機殼之後是不會有任何部份外露的 (如下圖中的 IBM PC/AT),所有的外部 I/O 接口其實都是由適配卡提供 (當時還不被稱為擴展適配卡,因為這些適配卡都很基本,例如鼠標或鍵盤的端口之類的,這些都是必須的零組件,因此並不被視為額外的擴展,英文上稱之為 Interface Card)。

擴展適配卡的前世今生

之後的主板會把一些必備的外接界面做在緊貼機殼開口的位置使其直接外露,以節省主板上的空間,而後來 IBM PS/1 更直接在機殼上規定了一個長方形的開口讓主板能夠把對外的 I/O 接口全部集中設計於此 (而 ATX 標準則把這個區域改成較高但較短的長方形,以更加節省主板的空間),從此主板與芯片組 (南橋的部分) 廠商就開始逐步將許多使用上必備的界面 (例如鼠標、鍵盤、打印機,後來還有 USB 等) 直接整合到主板上而不再像古早時期那樣以可抽換的適配卡這樣的形式提供。

擴展適配卡的前世今生

從此之後適配卡主要用於「額外擴展功能」的用途,例如顯示適配器提供強大的 2D/3D 圖形輸出能力、網絡卡提供較主板內建芯片更強大或更多元的網絡功能等,因此我們通常將這類適配卡稱之為擴展適配卡 (Expansion Card)。

歷代總線接口與擴展卡插槽種類介紹 (上)

歷史上曾經廣泛成為標準的擴展卡接口大致上有 ISA、PCI、AGP、PCI Express 這幾大家族的衍伸產品,而實際上這些擴展卡接口是由南橋芯片拉出的信道聯機 (總線)、實體可見的擴展卡插槽、擴展適配卡本身用於連接主板的界面 (俗稱金手指) 這三項共同成套組成的,因此介紹時我會一次說明。

按:雖然這裡稱之為擴展卡接口,但實際上現今的主板上有許多整合的功能芯片會使用擴展卡的總線接口與南橋芯片聯機,但實際外觀上看不到擴展卡插槽的作法,從軟件觀點來說這些設備芯片也會被視為擴展適配卡的一種。

遠古時代的 ISA 總線接口家族 (又被稱為 Legacy Bus)

1981 ~ 1993:傳統 ISA

最早被廣泛應用於計算機中的總線接口大概就是 ISA 了,全稱為工業標準結構 (Industry Standard Architecture),由 IBM 在 1981 年隨著 IBM PC/AT 一同發佈 (因此一開始是被稱為 AT-bus),大致上與第一代 IBM PC 使用的 8-bit 總線維持兼容,是一款寬度為 8-bit,連接界面採 62-pin 設計的總線接口。

擴展適配卡的前世今生

↑ 嗯,這是一張顯示適配器 (基於 8-bit ISA 界面)。

之後 IBM 在 1984 年的 PC/AT 上發佈了第二代的 ISA 接口,將信道寬度由 8-bit 增加一倍為 16-bit,運作頻率也由原先的 4.77 MHz 提高一倍為 8.33 MHz (理論數據傳輸率 16.66 MB/s) ,連接界面也隨之拓增為 98-pin,由於當時的技術限制,金屬觸點之間還沒辦法像現在這樣做得如此密集,因此 ISA 插槽在主板上可以說是佔據了不小的位置 (下圖中較長的為 16-bit ISA 插槽,少掉最左邊一段的則是 8-bit ISA 插槽)。

擴展適配卡的前世今生

後 ISA 時期:擴展卡接口大亂鬥開始1987 ~ 1993:試圖取代 ISA 的 MCA 界面

前面提過一開始 ISA 界面是被稱為 AT-bus,那 ISA 這個名字是怎麼來的呢?實際上是由 IBM 當時的競爭對手 (以後來被 HP 吃掉的 COMPAQ 為首) 提出的,要談這中間發生的故事之前得先了解一下當時的時空背景,在 1987 年時,IBM 發展了新的總線接口-MCA (Micro Channel Architecture),信道寬度拓增到 16-bit、32-bit,運作頻率也拉高到 10 MHz (理論數據傳輸率高達 20~40 MB/s),用於自家的 PS/2 計算機上,希望能夠取代現有的 ISA 架構。

擴展適配卡的前世今生

↑ 其實這是一張網絡卡 XD (基於 MCA 接口)

而當時的 IBM 為了能夠重新奪回對市場上總線標準的主導權,MCA 被設計為與已經被廣泛應用的 ISA 不兼容且大半專利均由 IBM 所把持,而當時 IBM 向製造商要求的授權金也相當高昂,但實際上在個人計算機方面 ISA 架構還屬堪用 (雖然 MCA 的進步不可謂不大,但對一般人來說其實還沒有升級的必要),在這樣的環境下其他計算機制造商並不願意向 IBM 低頭乖乖支付授權金,所以他們決定停留在 ISA 接口上而不升級到 MCA,並且為原本習慣稱為 AT-bus 的這款總線接口起名 ISA 以避開 IBM 持有的 "AT" 註冊商標。

擴展適配卡的前世今生

↑ MCA 擴展卡插槽,其實長得蠻像倒過來的 PCI。

不過雖然在個人計算機市場中 ISA 大致上還算堪用,但在服務器市場上就未必如此,服務器市場期待有更高的總線數據傳輸速率、更寬的信道寬度,僅僅使用 ISA 接口並不足以滿足這樣的需求,此時市場開始分成許多不同的派別,包含以 IBM 為首的 MCA、由 COMPAQ 等競爭對手為首用於反制 MCA,並且以擴展現有 ISA 架構為目標的 E-ISA、同樣採擴展 ISA 架構而設計出來的 VESA Local Bus 等。

1988 ~ 1993:以 ISA 為基礎拓展為 32-bit 的 EISA

EISA 顧名思義就是擴展版的 ISA,在 1988 年由 COMPAQ 為首提出,作為對 MCA 的反制武器而生。EISA 最明顯的特色就是插槽外觀上與 16-bit 的 ISA 插槽非常相似,實質上則與 ISA 單向兼容 (技術上是使用較小且上下交替排列的金屬接觸點來達成腳位與通道寬度的擴展),原有的 ISA 適配卡可以直接安裝在 EISA 插槽上,但 EISA 適配卡是不能用於 ISA 插槽的。

擴展適配卡的前世今生

上圖當中三條棕色的插槽就是 EISA 插槽,可以很明顯發現金屬觸點部分的密度比最上、最下兩條 ISA 16-bit 插槽來得密集很多,而且長度與寬度都一模一樣,卡榫的設計位置也相同,至於看到適配卡本身的部分呢,我想以這張同時兼具 EISA 與 ISA 接口的顯示適配器為例 (雖然長得很奇葩 XD):

擴展適配卡的前世今生

從上圖中應該就可以很明顯看到 EISA 與 ISA 插槽在金屬觸點密度上的差異了,EISA 的金屬觸點多達 198-pin,理論數據傳輸率則可以提高到 33 MB/s,由於導入成本低 (得益於與 ISA 的向下兼容與相對 MCA 而言極其低廉的授權費用),儘管性能受制於頻率無法提高而遜於 MCA,但 EISA 在市場上的能見度可以說是 ISA 家族各分支與同時期的 MCA 接口中最高的。

1992 ~ 1993:過渡色彩濃厚的 VESA Local Bus

在擴展適配卡中,通常對帶寬需求最大的就是顯示適配器了,這點從古至今幾乎都沒有甚麼改變,當時間來到 1990 年代時,當時顯示適配器的帶寬需求成長已經到了 ISA 總線遠遠無法滿足的地步,對於更高速的總線接口的需求開始浮上臺面,而眼下可用的替代方案- IBM 主導的 MCA 與其競爭對手 EISA 分別都有一些問題存在,前者的問題依然是高昂的授權費與專利,而後者的問題就是前面提過的性能問題,EISA 的數據傳輸率仍然不足以滿足顯示適配器的需要,因此硬件製造商就決定發展另一套總線接口來解決這個問題,於是在 1992 年,VESA (Video Electronics Standards Association, 負責制定顯示相關標準規格的單位) 就發佈了 VESA Local Bus 標準。

擴展適配卡的前世今生

VESA Local Bus 與 EISA 類似,同樣是 ISA 接口的延伸,實際上 VESA Local Bus 標準的擴展卡插槽本來就是由標準 16-bit ISA 插槽與後方延伸一組和 IBM MCA 相同物理結構的 116-pin 插槽組成 (這裡有個蠻有趣的事情,因為 MCA 接口並不受到市場歡迎,所以生產出來卻剩下一堆的插槽就被拿來做 VESA Local Bus 後面的延伸段插槽了,不過兩者之間並不兼容哦),下圖當中三條橫橫跨整張主板的就是 VESA Local Bus,其超長的長度導致甚至有人揶揄其縮寫 VLB 其實是 Very Long Bus 的意思。

擴展適配卡的前世今生

前面談到過 VESA Local Bus 是一款過渡色彩很濃厚的總線接口,從設計特色就可以很容易看出這點,除了前面提到過的為了節約成本而拿 MCA 插槽來「廢物利用」之外,VESA Local Bus 有一項很重要的特性:為了實現高數據傳輸率,VESA Local Bus 運用了 DMA (直接內存訪問) 和內存映像 I/O,這使得 VESA Local Bus 非常依賴內存總線,因為這個原因一旦芯片組上的內存總線設計發生大幅改變,VESA Local Bus 就幾乎完全無用武之地了,因此 VLB 雖然在 486 世代中期以後的計算機上被大量採用,卻在進入 Pentium 世代時瞬間就幾乎銷聲匿跡。

除此之外,由於有一大部分線路是從內存總線拉出來的,這導致 VLB 的數量上和穩定性上都受到很大的限制,一般而言主板上最多隻能設置三條 VLB 插槽,且如果主板的設計不夠完善的話,VLB 適配卡和插槽所產生的干擾可以很容易使整臺計算機變得不穩定甚至造成數據遺失,而且因為頻率是依據內存總線而來,隨著處理器頻率的提升 (當時處理器頻率與內存總線頻率是連動的),VLB 的穩定性問題也越發明顯,這某種程度上也促成了 Intel 開始在自家處理器上使用倍頻器。

歷代擴展接口標準比較 (1981 ~ 1992)


擴展適配卡的前世今生


上一篇看了一些老式的擴展適配卡標準之後 (其實上篇談的那些標準,活躍的年代筆者根本還沒出生 XD),這一篇開始要介紹一些你我比較熟悉,甚至很有可能根本用過或是正在使用的擴展適配卡總線標準囉。

歷代總線接口與擴展卡插槽種類介紹 (下)

1993 ~ 2004 : 重回大一統局面-PCI 總線接口

在 1990 年代初期計算機的擴展適配卡標準可說是陷入群雄割據的局面,一方面有 IBM 主導的 MCA 例求重新掌握技術主導權,另一方面還有以 COMPAQ 為首的九人幫提出的 EISA 挾著低導入成本和與 ISA 向下兼容的優勢努力搶市,後來 VESA 也推出了自家對 ISA 的擴展接口-VESA Local Bus 以滿足顯示適配器日益提高的帶寬需求,在這樣大亂斗的狀況下對使用者和廠商其實都是不利的,對使用者來說各種不同的擴展卡規格帶來了採購上的困難,對廠商來說也有庫存控制與產品設計上的麻煩,因此提出一個可以滿足各種需要的總線接口以統一全境是迫在眉睫的事情。

擴展適配卡的前世今生

在這樣的背景之下,Intel 於 1992 年提出了被稱為 PCI (Peripheral Component Interconnect) 的接口標準的一部分,之後數家科技公司共同成立了 PCI-SIG 並在 1993 年正式發佈了 PCI 2.0 標準 (首個完整制定各項 PCI 插槽、適配卡等規範的版本),針對過去 ISA、EISA、VLB、MCA 曾有的缺點進行改進與避免,特別是關於授權的部分 (MCA 的硬傷),透過由獨立的 PCI-SIG 持有並統一相關的規格,從而避免單一廠商控制規格發展或掌握大量專利的可能,也避免了高額的授權金。

而相較於 VLB 而言,改進了當時 VLB 寬度過長的問題,除此之外 PCI 在一般計算機上的普及也受惠於 VLB 過度依賴 486 系統架構,在進入 Pentium 時代之後比起繞遠路想辦法將限制較多且性能較差的 VLB 排除萬難移植到 Pentium 系統上,絕大多數廠商會寧願直接導入 PCI 接口。

因為這些各式各樣的理由, PCI 在推出之後很快就獲得了廣泛的應用,在市佔率上迅速奪得龍頭的地位,一舉取代了當時其他的各類擴展卡接口,讓計算機擴展卡接口再度迴歸大一統的狀態。

擴展適配卡的前世今生

PCI 是一個相當長壽的擴展適配卡總線接口,一直到 2009 年都還可以在許多主板上面看到 PCI 插槽的影子 (例如上圖出現的這張主板就是筆者在 2009 年時曾經使用過的 X58 平臺主板),同時也因為太過長壽的關係,PCI 擴展接口先後有過不少個版本,插槽也分成好幾種不同的規格。

例如上圖這張主板藍色插槽左側的兩條白色插槽就是最常見的 32-bit PCI 插槽,防呆卡榫在右邊表示工作電壓為 5V 的意思 (這也是最常見的 PCI 插槽種類),除此之外偶爾還會看到防呆卡榫在左側的,表示工作電壓為 3.3 V,如果適配卡的工作電壓不合可是插不上去的,因此後來有很多 PCI 適配卡實際上都是像下圖中的聲卡這樣,能夠同時支持 3.3V 與 5V 工作電壓 (底下金屬觸點處有兩個缺口),在 2002 年發佈的 PCI 標準 2.3 版修正中也正式移除了對僅支持 5V 的適配卡的支持,僅保留 3.3V/5V 雙用 Universal 與純 3.3 V 適配卡,並在兩年後發佈的 PCI 標準 3.0 版中直接移除對 5V 適配卡插槽的支持,但實際上絕大多數消費性主板仍然都只提供了 5V 的界面卡插槽。

擴展適配卡的前世今生

而除了 32-bit 通道寬度的版本之外,PCI 標準在進入 2.1 版 (1995 年) 之後還另有數據信道寬度翻倍來到 64-bit 的版本 (下圖中白色的部分就是了),外觀上與過去 VESA Local Bus 的做法有點相似,也就是前半段維持與 32-bit PCI 向下兼容的插槽 (實際上也有許多 64-bit PCI 適配卡是可以在犧牲部分性能後直接用於 32-bit PCI 插槽的),採用後面外加一段延伸的方式來提供額外 32-bit 的通道寬度,值得注意的是,64-bit PCI 同樣有 5V 與 3.3V 的版本,分辨方式同樣是左側的防呆卡榫,若防呆卡榫靠右與延伸區的卡榫相鄰就是 5V,反之即為 3.3 V。

擴展適配卡的前世今生

各類 PCI 兼容性與最大理論數據傳輸率一覽表


擴展適配卡的前世今生


除此之外 PCI 標準也針對擴展卡的版型進行規範,因此擴展適配卡的寬度與高度是有標準規定的,高度的部分分為全高 (Full Height) 與半高 (Low Profile) 兩種,前者的擋板高度規範為 12 公分,適配卡本身則通常矮於 10.7 公分,後者的擋板高度縮減為 7.9 公分,適配卡本身高度也一併縮減為 6.4 公分,至於長度的部分雖然也有區分半長 (最長可達 17.5 公分) 與全長,但由於全長卡可長達 31 公分,幾乎在市場上是看不到的,所以在這裡就不多著墨了。

1998 ~ 2004:主要僅見於服務器系統上的 PCI-X

後來在 1998 年,IBM、HP、COMPAQ 等公司合力制定了 PCI-X 作為 PCI 的延伸版本,PCI-X 在插槽上可以完整向下支持 PCI 64-bit 與 PCI 32-bit,因此很快的在市面上的服務器其實很難看到純粹僅支持原版 PCI 標準的 PCI 64-bit 插槽,大部分都是直接給 PCI-X 為主。

擴展適配卡的前世今生

↑ PCI-X 比較成功的地方大概是 Logo 比較帥吧 XD

基本上 PCI-X 的插槽與 PCI 64-bit 插槽的機件構造上相通,但對接腳的定義有些許不同,為了達成向下兼容因此有額外設計專門用於辨識適配卡為 PCI 標準或 PCI-X 標準的專屬觸點。PCI-X 帶來了不少新的特色 (像是 Message Signaled Interrupts, MSI 訊息驅動中斷等),也加入了一些例如容錯等在服務器上相當實用的特性,但最為鮮明且為人所知的特性主要還是比起 PCI 64-bit 來得高上許多的運作頻率,運作頻率的大幅提升連帶的也把每秒理論數據傳輸率拉高了不少。

擴展適配卡的前世今生

在標準 PCI-X 規格中,由低到高一共有 66 MHz、133 MHz、266 MHz、533 MHz 這些等級,不過實際上發展到 PCI-X 2.0 (也就是後二者) 的時候由於 PCI Express 已經快推出了,所以並沒有被廣泛的應用,能見度可以說是相當的低,除此之外雖然前面提過在服務器系統中,PCI-X 很順利的取代了 PCI 64-bit 的地位,但在消費性市場上的推動就不順利了,在消費性平臺的部分是直接從 PCI 32-bit 跳入 PCI Express 的。

擴展適配卡的前世今生


1997 ~ 2004:顯示適配器專用的 AGP 界面

相較於 PCI-X,這個同樣奠基於 PCI 技術延伸發展出來的 AGP (Accelerated Graphics Port) 聽過的人應該就多了吧?和當年的 VESA Local Bus 的情況很類似,都是為了滿足相對其他種類的擴展適配卡而言傳輸速率需求成長快上非常多的顯示適配器而特別設計的接口,而且同樣都是基於同世代最流行的總線接口延伸發展的結果,當年 VESA Local Bus 是延伸 ISA 界面而來,而晚了五年出生的 AGP 接口則是以 PCI 為基礎,並且同樣由 Intel 主導。

擴展適配卡的前世今生

AGP 活躍於顯示適配器領域的時間可以說是相當的長,以 NVIDIA 發展的顯示適配器來說,早在 NVIDIA 公司創立後的第二代個人計算機用顯示適配器產品 RIVA TNT 系列 (下圖這張就是了) 就開始使用 AGP 接口 (當時 GeForce 這名詞都還沒出生呢),直到 2005 年 06 月釋出 GeForce 7 系列才全數轉移到原生支持 PCI Express 接口,並且仍繼續提供透過加入一枚橋接芯片使其能夠搭配 AGP 接口使用的產品。

擴展適配卡的前世今生


前面談過 AGP 與 PCI 一樣是由 Intel 所主導,而且 AGP 又有一部分技術是基於 PCI 發展而來,加上也和 PCI 一樣在計算機上被使用了很長一段時間,因此 PCI 上出現過的一些特性也陸續發生在 AGP 上,例如前面花過不少篇幅討論的電壓問題,實際上 AGP 也分為 3.3 V、1.5 V、0.8 V 三種 (但實際上物理上僅分為兩種,1.5 V 與 0.8 V 的插槽在外觀上是一樣的,透過電路上的設計來辨識)。

擴展適配卡的前世今生

通常最早期採用 AGP 的主板會選用 3.3 V 的插槽,這類主板是無法使用後期的 1.5 V 適配卡的 (除非卡片是 Universal 制式,同時支持 3.3 V 與 1.5 V 的工作電壓),而在 1.5 V 電壓增加到規格書中之後,主板廠商通常比較傾向於選擇同時搞定 3.3 V 與 1.5 V 的線路,選用 Universal 制式的插槽以同時對兩種工作電壓的適配卡提供支持,而進入後期之後主板廠商大多選擇在加入對 0.8 V 電壓的支持時順便拿掉了對 3.3 V 電壓的支持,因此通常改用 1.5 V 的插槽,後期的適配卡也通常會拿掉對 3.3 V 電壓的支持 (例如下面這張 6600GT 就是),值得注意的是當年有一些顯示適配器雖然有 3.3 V 的缺口,但實際上是不支持 3.3V 電壓的,造成的結果就是插到只有 3.3 V 的主板上就直接燒掉了

擴展適配卡的前世今生

AGP 也和 PCI 相似,由於投入使用的年限頗長因此先後有過數次改版,一般而言我們比較注意的有三次主要的大改版,分別提出了四種不同的 AGP 規格,由於每個版本之間速度都差了兩倍因此我們通常以數據傳輸率的提升倍率來命名。


擴展適配卡的前世今生


擴展適配卡的前世今生

看完 AGP 和 PCI 相似的地方之後,接下來我們要看的是 AGP 與 PCI 之間不同的地方,首先當然最顯而易見的就是插槽上的不同了,AGP 的插槽 (66-pin,上圖中的橘色插槽) 本身與 PCI 插槽沒有任何兼容性,可以注意到為了避免誤插甚至連位置都搬了,除此之外 AGP 與 PCI 最大的根本差異在於 PCI 是一種總線 (Bus),也就是同一個通道上可以安置多個裝置,彼此共享這條「高速公路」的帶寬,但 AGP 實際上只是一種點對點傳輸通道 (Peer to Peer),AGP 插槽與芯片組之間的通道上就「只會有一個顯示適配器裝置」,並不會有其他裝置進行分享。

擴展適配卡的前世今生

最後關於 AGP 我特別想提一下當時有幾家主板廠商對 AGP 與 PCI、PCI Express 之間有很多天馬行空的想象,最後創造出了許多神奇 (?) 的組合,例如 ASRock 就搞出了一個 AGI 接口,可以在只支持 PCI 的 Intel 865GV/845GV 芯片組上拉出 AGP 插槽 (這同時也證實了前面提過的 AGP 在技術底層上與 PCI 有一定程度的相似這點)、EpoX 與 Biostar 也做了類似的事情,不過共通點就是這些「四不像」的兼容性與性能表現都無法與真正的 AGP 接口相比,因此很快就消失在歷史的洪流中了。


上一篇我們把已經成為過去歷史的一部分的那些總線接口介紹完,接下來是時候回到現代了,從過去 20 年內的經驗我們大致上可以說這段歷史幾乎是重複著從大一統走向百家爭鳴,之後又因為太過複雜造成的麻煩而重新迴歸大一統的循環,而目前正好是走到了大一統的時代。不過 PCI Express 也已經發布超過十年了,或許此刻同時也是正要再次走向百家爭鳴的開始。

PCI Express

在 PCI 規範推出將近十年之後,人們意識到當年 ISA 末期的狀況似乎又重現了,甚至比當年還要更加複雜,光是 PCI 自己就有先後不同版本,還有使用不同電壓的問題,而後來為了顯示適配器而另外設計的 AGP 某種程度上也重演了當年 PCI 末年衍伸出 VESA Local Bus 的歷史,甚至連當年 ISA 的後續延伸 EISA 這樣的歷史也在 PCI-X 的出現之下被重演了,於是重新統一總線接口的需求再次出現。

擴展適配卡的前世今生

PCI Express 就是在這樣的背景下誕生的,與 PCI、AGP 一樣又是 Intel 主導 (Intel 在這幾年內關於規格標準制定方面特別活躍),開發階段中被稱為第三代 I/O (3GIO,命名來源是將 PCI 是為第二代 I/O,ISA 視為第一代 I/O),由 Intel 制定並轉交 PCI-SIG 進行審定作為 PCI 的後續標準發佈。

以 PCI 技術為底層基礎進行大改造

為了降低在軟件上需要的修改量,並且提高 PCI Express 能一口氣取代所有多種慣用接口的資本,所以 PCI Express 發展的時候使用了與 PCI 一致的通訊標準,不過除此之外基本上 PCI Express 與 PCI、PCI-X 已經大不相同,最明顯的差異就在於傳輸接口從原來的並列 (Parallel) 改為序列 (Serial),這和 IDE 升級到 SATA 的趨勢有點類似,所以 PCI Express 基本上在使用上與 PCI 是沒有直接兼容性可言的,但由於在通訊標準上的一致,所以廠商可以很容易設計出橋接芯片在原生 PCI Express 接口上拉出 PCI 插槽來 (下圖左邊的 PCIe to PCI/PCI-X Bridge)。

擴展適配卡的前世今生

從上面的拓樸圖中還可以看到 PCI Express 的另一個特性,不同於 PCI/PCI-X 是使用共享總線的設計,PCI Express 實際上比較接近 AGP,是採用點對點聯機通道的方式組成,而且單一裝置可以使用複數條聯機通道來達成更高的理論數據傳輸率 (例如顯示適配器最多可以使用 16 條)。

可延伸性的通道設計

如同前面所說,PCI Express 的主要特色之一就是傳輸通道是可延伸的,就目前而言規格設計上有最窄是使用單一通道,最寬則可以一次使用 16 條通道,在 PCI Express 的插槽設計上可以很明顯看到這個特色,在防呆卡榫左側的 11 根針腳 x 2 面 (22 個觸點) 是共通的供電與系統管理總線,在防呆卡榫左側緊鄰的 2 根針腳 x 2 面 (4 個觸點) 則是用於控制時鐘頻率,這兩個部分不論是在 PCI Express x1,x4,x8,x16 上都是一樣的。

擴展適配卡的前世今生

接下來從第 14 號針腳開始就是傳輸通道的部分,每個傳輸通道分別需要上行與下行各 2 根針腳 x 2 面 (4 個觸點) 組成,而在 x1 的結尾、x4 的結尾、x8 的結尾、x16 的結尾之前都額外設計了一到兩組接地。

擴展適配卡的前世今生

而這樣的信道設計原則上是彈性且互相兼容的,也就是將 x16 (最多支持 16 組通道) 的適配卡插到 x8、x4、x1 的插槽上基本上還是可以正常運作 (如果主板的插槽是類似上圖這樣,沒有把右側封死的話),只是適配卡的性能會因為信道數量不夠而受到很大的影響 (數據傳輸變慢的關係)。

反過來說也是成立的,將 x1 的適配卡插到 x16 的插槽上是可以正常運作的,而且性能不會受到影響,但是插槽上實體拉線的剩下 15 個傳輸通道就用不到了,由於通道數通常有限所以一般而言我們會盡力避免這種配置。

擴展適配卡的前世今生

這裡要特別提一下的是,近年來流行多顯示適配器配置,但實際上處理器可以拉出來的 PCI Express 通道是有限的,因此在主板上看到 x16 的插槽時其實不一定真的有拉出 16 條通道來 (例如上面這張 P6T Deluxe 的三條 PCI Express x16 就只能配置成 x16+x16+x1 或 x16+x8+x8 兩種),有時候第二、第三、第四顯示適配器插槽雖然看起來都是 x16 的外型,但實際上其實只有拉 8/4/1 條通道 (仔細看可以看得出來,這類插槽的後半段可能都是沒有金屬觸點的),在這類主板上要特別留意一號顯示適配器插槽上一定要有裝顯示適配器,才能發揮最高的性能。


序列點對點傳輸帶來大幅提升的理論數據傳輸率

前面提過 PCI Express 與 PCI 最大的差異在於 PCI Express 捨去過去的並列傳輸,改採序列訊號為基礎,並且捨去過去的多點共享總線架構改採點對點數據信道設計,這樣的特性主要是為了解決過去 PCI 使用並列訊號時必須做到每條訊號線路都能等長的問題 (其實等長只是簡單的說法,實際上是需要確保傳輸的時候不會因為速度落差造成訊號不同步產生扭曲的問題),讓線路設計變得更加簡單,而且可以很容易透過增加數據信道數量的方式來倍數提升數據傳輸速率,除此之外也解決了並列傳輸一直以來都有,而且隨著傳輸速率增加越來越嚴重的串音干擾問題 (其實理由跟從 IDE 轉換到 SATA 差不多)。

在改用串行傳輸技術再加上差動訊號的設計等改進之後,PCI Express 的運作頻率有了近乎瘋狂的提升,還記得前面討論 PCI、AGP 等接口的時候都是 33 / 66 MHz,最高也只看到 533 MHz 嗎?PCI Express 1.0 的傳輸頻率是 2.5 GHz (25 x 100 MHz),在 2006 年發佈的 PCI Express 2.0 中還直接提高一倍來到了 5 GHz (50 x 100 MHz)。

除了頻率以外,追求進一步提升數據傳輸率的手段

然而我們都知道運作頻率是不可能無限往上增加的,所以在設計 PCI Express 3.0 的時候就把腦筋動到了數據的編碼方式上,原先 PCI Express 1.0/2.0 使用的是 8b/10b 編碼法,也就是將原先佔用 8 個 bit 的數據編碼為 10 個 bit,目的在於以增加冗餘數據的方式來達到降低數據誤傳時造成系統出錯的機率的目的,於是實際的編碼效率僅有 80%。

而到了 PCI Express 3.0 時改採 128b/130b 編碼法,也就是每 128 個 bit 的數據只搭配 2 個 bit 的冗餘,新的編碼法效率可以高達 98.46%,也就是用於冗餘數據而被「浪費掉」的數據傳輸率僅有 1.54 %,這使得規格制定者只需要將運作頻率拉高到 8 GHz 就可以實現帶寬兩倍成長的預期目標,而不需要直接撐上 10 GHz。

供電能力的提升

擴展適配卡的前世今生

考慮到 PCI Express x16 主要用於顯示適配器,而且顯示適配器的供電需求越來越高,早在 AGP 的中後期就已經有需要外接 4-pin 電源的顯示適配器出現 (上圖這張就是),到晚期甚至有需要兩個 4-pin 電源接頭 (傳統硬盤用的那種) 的顯示適配器,顯然 AGP 的 25W 供電能力是遠遠不夠的,所以在設計 PCI Express 接口的時候就有特別考慮到這個問題,將 PCI Express x16 的供電能力一舉提高三倍,來到了 75W 之譜。

擴展適配卡的前世今生

以 7600GT 為例,PCI Express 版本 (上圖) 基本上是不需要外接電源的,供電電路也相對簡單許多,而 AGP 版本除了多了一顆橋接芯片之外,還需要額外的外部電源 (下圖)。

擴展適配卡的前世今生

不過呢,後來發生的事情大家都知道了,在 PCI Express 的時代開始之後,顯示適配器的功率需求馬上就破百瓦了,所以現在的顯示適配器通常都還是有外部輔助電源,而且電源供應器也發展出專門用於顯示適配器的 6-pin 與 8-pin 電源接頭了,硬要說的話,當年對供電能力的強化其實並沒有如同預期發揮在滿足顯示適配器需求上,倒是給了開發擴展卡時更加充裕的電源,使得一些相較於過去而言強化許多的擴展適配卡 (例如高性能的磁盤陣列卡) 得以成為可能。

PCI Express 的下一步

雖然 PCI Express 從 2004 年正式發佈到現在已經將近 12 個年頭了,但就目前我們所知道的消息,PCI Express 的發展還沒到尾聲,原先預定在今年要隨 Skylake 架構推出進軍消費性計算機市場的 PCI Express 4.0 已經被延期到 2017 年 (其實我個人是不看好在 2017 年有辦法釋出,很有可能要到 2018 或 2019 年,說起來最早的排程是下圖中的 2014~2015 年呢)。

擴展適配卡的前世今生

PCI Express 4.0 的預期數據傳輸率將會比 PCI Express 3.0 再高出一倍,被認為這應該會是銅纜接觸技術的極限,接下來大概要往光纖發展了,沒有意外的話 PCI Express 4.0 應該會是 PCI Express 的最後一次大改版。


分享到:


相關文章: