上一篇看了一些老式的擴充介面卡標準之後 (其實上篇談的那些標準,活躍的年代站長根本還沒出生 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 相容性與最大理論資料傳輸率一覽表
→ 介面卡 ↓ 插槽 | 3.3V 64-bit 100/133 MHz | 3.3V 64-bit 66 MHz | 3.3V 32-bit 66 MHz | 5V 64-bit 33 MHz | 5V 32-bit 33 MHz | Universal 32-bit |
3.3V 64-bit 100/133 MHz | 支援 | 支援 | 支援 | X | X | 支援 |
3.3V 64-bit 66 MHz | 支援 | 支援 | 支援 | X | X | 支援 |
3.3V 32-bit 66 MHz | 向下相容 | 向下相容 | 支援 | X | X | 支援 |
5V 64-bit 33 MHz | X | X | X | 支援 | 支援 | 支援 |
5V 32-bit 33 MHz | X | X | X | 支援 | 支援 | 支援 |
最大理論 資料傳輸率 (MB/s) | 800~1066 | 533 | 266 | 266 | 133 | 133 |
除此之外 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 的。
PCI-X 66 | PCI-X 133 | PCI-X 266 | PCI-X 533 | |
規格版本 | 1.0 | 1.0 | 2.0 | 2.0 |
發佈年代 | 1998 | 1998 | 2003 | 2003 |
運作時脈 | 66 MHz | 133 MHz | 133 MHz | 133 MHz |
資料傳輸 | SDR | SDR | DDR | QDR |
每秒理論資料傳輸率 | 533 MB/s | 1066 MB/s | 2133 MB/s | 4266 MB/s |
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 制式 | 標準修訂版本 | 運作時脈 (MHz) | 理論資料傳輸率 | 工作電壓 |
AGP 1x | 1.0 | 66 SDR | 266 MB/s | 3.3V |
AGP 2x | 1.0 | 66 DDR | 533 MB/s | 3.3V |
AGP 4x | 2.0 | 66 QDR | 1066 MB/s | 1.5V |
AGP 8x | 3.0 | 66 ODR | 2133 MB/s | 0.8V |
看完 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 介面相比,因此很快就消失在歷史的洪流中了。