芯片,怎麼連?(上)_風聞
半导体行业观察-半导体行业观察官方账号-专注观察全球半导体最新资讯、技术前沿、发展趋势。1小时前
我們生活在信息時代,但如果信息無法到達其預期目的地,那麼它就毫無用處。而信息從這裏到達那裏的方式就是通過互連。
從廣義上講,互連有兩個層次。在一個宏大的規模上,我們有連接各大洲併為有訪問權限的人帶來互聯網的網絡。這種互連依賴於路由器和交換機等系統,而這些系統又依賴於半導體。這些芯片也有它們自己的內部互連,包括通過極細的銅線實現的片上互連,以及通過引線框架或基板或中介層實現的封裝內互連。
本文介紹的是第二種互連。文章展示了不同的互連結構,例如片上線路、通孔、總線和網絡,以及它們的構建方式。在本章節中,我們先了解一下什麼是片上互聯。
互聯的組成元素
一個典型的硅芯片最多可以包含五種不同的互連元素:
線:線是最常見的互連形式,用於在芯片上短距離或長距離傳輸信號。它們由金屬或多種金屬組合而成。佈線的靈活性取決於製造工藝的先進程度。多個層可以承載線路,並由介電材料隔開。先進製程節點可擁有多達15層線路。通孔(Vias):通孔連接一個金屬層上的線路到另一個層上的線路,同樣由金屬或金屬組合製成。局部互連(Local interconnect):這是一種特殊的互連層,通常由摻雜多晶硅製成。它連接晶體管正上方的端子,位於金屬層以下。不同的代工廠實現方式可能不同,具體細節通常不會公開。接觸孔(Contacts):這是位於有源硅正上方介電層中的開口,金屬通過它們連接晶體管。它們位於最底層金屬之下,並可通過常規金屬線或局部互連進行連接。硅通孔(TSV):這些通孔從晶圓正面某一金屬層穿透至背面,而不是從一個金屬層到相鄰金屬層。當芯片正面朝上封裝時,TSV 是將連接延伸到晶圓背面的關鍵方式。焊盤(Bond pads):這些是暴露於外部的金屬焊盤,用於連接鍵合線或焊球/凸點。焊球或凸點(Balls or bumps):這是利用表面貼裝技術(SMT)而非線焊的芯片安裝方式。焊球通常由焊錫製成,而非銅或鋁。
圖1:芯片內部基本互連元素。線路負責信號在芯片上的傳輸;通孔在各層線路之間傳遞信號;局部互連將位於前端製程(FEoL)中的有源器件上方的晶體管引腳連接起來;接觸孔實現金屬層與晶體管等有源器件之間的連接;這些金屬層屬於後端製程(BEoL);硅通孔(TSV)將信號從晶圓正面穿過硅體傳導至背面。
芯片製造過程通常被分為兩個階段。在硅片上製造晶體管的步驟被稱為前端工藝(FEoL);隨後構建互連層的步驟被稱為後端工藝(BEoL)。
金屬線
芯片上的大部分互連結構由金屬線組成。在通孔的幫助下,通常可以實現多層金屬互連。下層金屬層通常用於最窄最短的連接;而上層金屬層用於較長的連接,以及電源和接地的分佈,這些層的線寬和厚度都更大。
線寬和線厚必須平衡,以便在保證足夠連接空間的同時控制電流密度在合理範圍內。如果電流過大而線路又過窄,會影響線路的長期可靠性。
在早期工藝中,每一層金屬層都可進行二維(2D)佈線,即線路可以有拐角,並沿東西或南北方向佈線。大多數情況下(特別是數字電路)都使用“曼哈頓佈線”,即線路只沿東西或南北方向佈置,不會以傾斜角度佈線。模擬或光子芯片可能存在例外情況。
在更先進節點的光刻技術中,打印拐角變得具有挑戰性,因為要打印的特徵尺寸比用於曝光它們的光的波長小得多。因此,後來的節點強制採用一維佈線。任何給定層上的所有線路都必須沿東西向或南北向佈線,不能有拐角。交替的層可以相互正交運行,從而允許相同的佈線,但以不同的方式分解。然而,一維佈線可能需要更多的通孔,而通孔的電阻可能比金屬線更高。因此,確定理想的佈線也需要儘量減少“拐角”的數量,這些“拐角”現在是跳到另一層。
圖2:一維(1D)與二維(2D)佈線對比。早期工藝節點中,金屬線可在任一層上沿東西或南北方向佈線,如圖所示。但這種佈線圖樣在先進製程中難以印製,因此一維佈線限制每一層只允許一個方向的佈線。圖中展示的是相同線路的2D與1D版本:路徑相同,但在1D中,拐角由通孔代替,而通孔的電阻通常高於金屬線。因此,如果能單獨優化,1D佈線可能優於傳統2D佈線方式。
通孔將一層中的金屬線連接到其上方或下方層中的金屬線。理論上它們可以跳過層,但實際上它們不能。通孔的尺寸必須平衡,以確保良好的良率、良好的性能和高效的空間利用。
過大的通孔會阻止線路運行得儘可能近。過小的通孔可能難以清晰地生產,並且可能電阻過大,這取決於流經它的電流。理想的通孔尺寸由製造芯片的代工廠決定,工藝設計工具包 (PDK) 中的設計規則將指定尺寸和放置目標。
局部互連
晶體管端子之間在非常局部層面的短互連可以通過局部互連來實現。與其他互連不同,這種互連傾向於是摻雜的多晶硅。它已由各種代工廠實施,但細節作為競爭優勢被更嚴格地保密。
接觸點
接觸點是 FEOL(前端工藝)期間構建的結構與 BEOL(後端工藝)期間構建的互連基礎設施連接的點。它們類似於通孔,只是它們不接觸較低的金屬層。相反,它們接觸暴露的晶體管(以及其他)端子。接觸點往往比通孔小,但同樣,尺寸和位置會影響加工良率和性能。與通孔尺寸一樣,關於接觸點構造的規則也包含在 PDK(工藝設計工具包)中。
圖3:通孔尺寸。過小的通孔將更難打印,可能損害良率,並且電阻會更大,可能損害性能。過大的通孔會佔用不必要的空間,迫使其他線路離得更遠。通孔的確切最佳尺寸將由正在使用的製造工藝決定,並構成管理芯片佈局的設計規則的一部分。
被連接的硅區域必須經過重摻雜,才能形成所謂的“歐姆接觸”——即單純作為導體的連接。如果未摻雜,這種連接將形成肖特基二極管。
圖4:簡化的MOS晶體管圖,展示了接觸孔如何連接源極和漏極區域。
硅通孔(TSV)
接觸孔和通孔將晶體管等器件產生的信號引導至芯片頂層,以連接芯片外部。而當多個芯片堆疊在一起但仍需連接到外部時,TSV 就變得不可或缺。
兩個芯片可以正面相對地鍵合,這種方式允許信號在芯片間從正面傳遞(如傳統方式)。但要將該堆疊結構連接至外部,還需從最底部芯片的背面引出信號。
TSV 在原理上類似普通通孔,但後者連接金屬層,而前者連接芯片外部。此外,它們的製造工藝也存在顯著差異。類似結構也可用於中介層(interposer),此時稱為TIV;若中介層為玻璃,則稱為TGV。
圖5:TSV實例。如果兩個芯片正面貼合,芯片間連接距離非常短。但為了連接封裝基板或PCB,仍需通過TSV將信號引導至其中一個芯片的背面以實現安裝。
背面供電(Backside Power Delivery)
大量生產的芯片通常將所有金屬層設置在硅片上方,這意味着電源和接地需與信號線路共享佈線空間。因此,業界正在探索“背面供電”方案,在晶圓背面增加幾層金屬層,用於電源與接地佈線。
這也就意味着,電源與接地仍需通過 TSV 與靠近晶圓頂部的器件連接。
該技術尚未實現大規模量產,但正在逐步接近,將集成至2nm以下製程節點,並於未來一年內實現產品落地。
金屬線與通孔的構建
金屬線經歷了兩個主要階段——鋁與銅。最初使用鋁是因為其導電性尚可且加工簡單。但在製程縮小至約220nm或180nm時,銅更強的導電性變得更具吸引力,推動了重大工藝變革。至130nm節點,代工廠已全面轉向銅互連。
鋁
鋁可通過廣泛應用於其他材料的沉積/刻蝕工藝進行加工。其加工流程包括:將鋁濺射至晶圓上(通常覆蓋一層介電材料),隨後進行圖形曝光與顯影,再刻蝕掉多餘金屬。
圖6:鋁線的製作。該過程採用簡單的沉積/刻蝕工藝:先在晶圓上覆蓋鋁與光刻膠,通過掩模曝光所需圖形,顯影后刻蝕金屬,去除光刻膠殘留,最終形成所需的線路。
銅
銅的導電性優於鋁,但它存在兩個主要缺點:第一,銅在適用於硅加工的尺寸下難以刻蝕,使得傳統的沉積/刻蝕工藝在成本上不划算;第二,銅會向硅中擴散,造成“污染”。因此,晶圓廠管理者曾竭力將銅拒之門外,以避免任何可能導致生產線停工的污染風險。
因此,若銅要成為主要互連材料,就必須開發新的加工方式。最終產生了如今廣泛應用的“雙鑲嵌工藝”(dual-damascene)。該術語“Damascene”源自大馬士革,用於描述將一種金屬嵌入另一金屬中的工藝。在此工藝中,首先在材料中刻蝕出溝槽,再將金屬填入,隨後對錶面進行拋光和打磨。
這為半導體中銅的引入提供了靈感。由於介電材料比銅更易於刻蝕,因此先在介電層中形成溝槽,再在整個晶圓上沉積金屬。接着通過化學機械拋光(CMP)去除多餘材料(overburden),形成平整表面。“雙”指的是在此過程中,通孔和線路可以同時填充。
在此之前,通孔通常需單獨填充鎢,然後再進行鋁線加工。
雙鑲嵌工藝解決了通孔和線同時填充的問題,但並未根治銅擴散的“毒害”問題。為此,需在介電層之上先沉積一層阻擋層,防止銅向晶圓擴散。常用的阻擋材料是氮化鉭(TaN),雖然其導電性不如銅,但只需極薄一層,因此增加的電阻可以忽略。
雖然阻擋層有效防擴散,但並不利於銅附着,因此還需再沉積一層“襯層”(liner)作為種子層以幫助銅粘附,常見材料是金屬鉭。襯層完成後,即可將銅沉積到晶圓上。阻擋層和襯層通常採用濺射工藝沉積,而大體積銅則通過電鍍添加。
上述描述和圖示為簡化版本。不同代工廠或不同製程節點的具體工藝細節各不相同。
圖7:簡化的雙鑲嵌工藝圖。通孔首先進行圖形化和刻蝕。
隨後對線路圖案進行曝光和刻蝕。此圖簡化假設用於通孔的光刻膠也可用於線路刻蝕,否則還需增加一次光刻膠去除與重塗的步驟。
接下來,先沉積一層薄阻擋層,然後加一層襯層作為銅的附着基礎。再進行銅電鍍,使銅的高度超過所需線路高度以確保填充充分。最後,CMP 去除多餘材料,留下填充完整的線路和通孔結構。
其他金屬的應用
在芯片中,過去主要使用鋁,而現在主要使用銅。但還有其他金屬也在扮演重要角色。此外,科研人員正致力於尋找銅的下一代替代材料。
鎢長期用於製作接觸孔、通孔(銅使用前)及柵電極。鎢、鈦、鉭等被歸類為難熔金屬(refractory metals,意為“頑固”),具有極高的熔點和硬度,能很好地抵抗熱和電遷移(確實“頑固”)。鎢導電性良好,且可通過化學氣相沉積(CVD)簡便地沉積,常用六氟化鎢作為前驅體。
鎳也常用於製造可靠連接,可以單獨使用或與其他金屬合金化。鎳具有良好的耐腐蝕性、耐用性和導電性。銦和鎘等其他金屬也有應用,主要與其他元素組合,用於製造特殊器件如太陽能電池和激光器,它們通常不用於作為導體。
研究仍在持續尋找新一代導電金屬。隨着金屬線變得越來越細,在銅線中電子的平均自由程縮短,導致電阻增加。在這類超細線路中,鈷的導電性最終優於銅,儘管在寬線路中銅的導電性更強。
鈷已經在一些先進製程節點中被使用,但它是一種昂貴的材料,開採和加工過程存在可持續性問題,因此人們傾向於尋找鈷的替代品。
釕和鉬也正在被評估用於互連,但尚未進入量產階段,距離成為主流應用還有數年時間。
介電材料
儘管本文關注的是互連結構,介電材料本身不導電,但它們對金屬線的行為有重要影響。介電材料的主要作用是保持金屬線彼此隔離。最常用、最方便的介電材料是二氧化硅(SiO₂),它來源豐富,易於形成,性能也足夠好。
但無論是水平方向還是垂直方向,如果兩條金屬線距離太近,它們之間的電場可能穿透氧化層,影響鄰近線,產生所謂的“串擾”(crosstalk)現象。這種機制與電容器的工作原理類似,不過在這裏,氧化層的任務是將線路隔開,而不是讓它們表現得像電容板。
介電材料的隔離效果取決於其介電常數(κ,kappa),這是行業中衡量其性能的關鍵參數。在其他學科中,這種特性被稱為“介電常數”或“介電率”(permittivity),可分為絕對或相對,一般用ε而非κ表示。由於SiO₂使用廣泛,它被作為尋找其他介電材料的基準,其相對介電常數為3.9。
在需要隔離距離較近的線路時,通常希望降低電容效應,因此開發了比SiO₂更低K值的低介電常數材料(low-K dielectric),以支持更密集的高速信號佈線。這些低K材料中,有的通過摻雜SiO₂實現,有的則引入孔隙結構(或兩者兼有)。其中,空氣間隙被視為理想介電體,其K值約為1.0,接近真空。製造多孔介電材料就是為了引入空氣,但這種空氣分佈在整個材料的微孔中。當前的研究正在探索如何更有效地將大尺寸的空氣間隙用於介電結構。顯然的問題是:空氣沒有機械支撐結構,單純用空氣替代SiO₂ 不具可行性,因此這是一個仍在積極研究的方向。
圖8:串擾示意圖。兩條平行線路中,一條信號變化劇烈的線可視為“干擾者”,另一條為“受害者”。干擾線的電場會影響到鄰近線路,若串擾過強,會嚴重干擾受害線路的信號。圖示中“受害者”處於空閒狀態,但在真實系統中,串擾是雙向的;即這條“受害線”也可能成為“干擾線”,導致雙方互為干擾。因此,串擾既可出現在同層相鄰線路(水平),也可發生在相鄰層線路(垂直)之間。
圖9:空氣間隙作為介電體。空氣接近理想介電體,但缺乏機械支撐。圖可理解為水平或垂直方向,但圖中強調的是垂直結構的問題:僅靠少量介電材料支撐兩層金屬,雖能提升隔離性能,但結構易塌陷。
在另一個典型案例中,我們需要更高的電容行為:MOS晶體管的柵極。它本質上就是一個電容器,其行為對晶體管性能有重大影響。在一定範圍內,隨着工藝演進,柵氧化層會越來越薄,但薄到一定程度時,電子會通過“隧穿效應”泄漏出去。於是,業界轉向使用一種高介電常數材料——氧化鉿(HfO₂),它能在不變薄的前提下,表現出類似於超薄SiO₂的電容效果。
圖10:高K柵氧化層。HfO₂ 的介電常數高於 SiO₂,因此即便厚度較大,也能產生與較薄的 SiO₂ 相同的電容效應。其優勢是厚HfO₂不會發生電子泄漏,而薄SiO₂會。
TSV(硅通孔)的構建
TSV使用的材料與普通通孔相似,但尺寸、形狀和製造工藝都不同。TSV同樣用於連接金屬層,但它連接的目標是芯片的背面層。TSV與其他通孔的主要區別在於尺寸,尤其是深度,TSV的深度可達200微米,而其他通孔多為納米級。
必須先鑽出深孔,再填充金屬。孔深與孔寬的比值稱為縱橫比(aspect ratio),這個比值越大,製造難度也越高。目前,50:1 是可實現的最大縱橫比,也就是説孔的深度是其寬度的50倍。
通孔的形狀也很關鍵。它們的邊通常不是垂直的,而是略微傾斜的,孔底比孔頂更窄。這樣有助於金屬沉積過程中均勻覆蓋整個孔洞,避免產生空隙。高縱橫比結構對這一點尤為重要。
深孔鑽刻通過深反應離子刻蝕(DRIE)完成,利用離子束轟擊晶圓以去除硅。理想情況下孔應一直刻蝕到晶圓背面,但這在實踐中不現實:太深意味着縱橫比過大,難以控制,耗時也長。
實際操作中,會先刻出一個非常深的盲孔(blind via),即孔並不貫穿晶圓。前端製程完成後,將正面暫時鍵合至一塊載體晶圓,再對背面進行磨削,直到TSV結構暴露出來。
TSV與普通通孔的另一個區別是:在金屬屏障層、襯層及填充金屬之前,通常要先在孔內沉積一層SiO₂阻擋層,方法為等離子增強化學氣相沉積(PECVD)。其作用是防止電子在TSV之間通過硅材料發生泄漏。普通通孔本身就位於介電層中,因此不需要額外的SiO₂屏障。
雖然圖11展示了一種TSV製造流程,但它只是簡化版,只代表眾多工藝路徑中的一種。不同晶圓廠在屏障材料、襯層材料和具體步驟上可能有所不同,隨着工藝進步,這些流程也可能會不斷更新優化。
圖11:TSV製程圖解。通孔刻蝕方式與普通通孔相似,但由於深度更大,需採用DRIE技術。此外,還需在金屬沉積前加一層SiO₂阻擋層。該通孔內會填入金屬(包含阻擋層和襯層),隨後將晶圓正面與載體晶圓鍵合,使得可以對晶圓背面進行磨削,暴露TSV結構。最後形成焊盤,便於與其他晶圓或封裝基板連接。
由於TSV必須比普通通孔更粗,以維持可控的縱橫比,因此它們在芯片中佔據了相當多的硅面積。此外,製造過程中的應力和熱效應可能影響電路性能,因此需在TSV周圍設置“禁止區域(keep-out region)”,進一步佔用空間。儘管存在上述限制,TSV仍能提供遠多於標準I/O的連接數,是高帶寬內存(HBM)等技術的關鍵。
圖12:TSV頂視圖。為避免製造或工作過程中的應力影響晶體管性能,TSV周圍必須設置禁止區域。
電源軌與熱管
大多數互連結構傳輸的是信號,但電源與接地線也與這些信號線共處在同一層中。位於頂部的更厚金屬層主要用於電源和接地分佈,以承載更高的電流並提供穩定性。為了電源穩定性,通常需要去耦電容器來過濾噪聲。最初,這些電容是佈置在芯片外部的,比如PCB上。隨着頻率升高,電容器逐步從PCB靠近芯片,進入封裝內部,甚至佈置到芯片上。外部電容仍在使用,但設計人員也在芯片內部添加小型電容,以應對芯片內部更高的頻率需求。
實現芯片內電容的方法有很多,例如利用金屬堆疊中相鄰電源層與地層之間的電容。介電層本意是降低跨層電容效應(通常使用低K材料),但完全消除並不現實,而且它反而可用於去耦。這種結構稱為金屬-氧化物-金屬電容(MOM)。如果使用其他絕緣體材料,則可形成金屬-絕緣體-金屬(MIM)電容。
有些TSV並不傳輸電流,被稱為“熱管”(thermal pipes),用於將芯片內部的熱量傳導至封裝基板或PCB。它們是純熱連接結構,不傳輸信號、電源或接地,通常用於高功耗處理器。
互連繫統
通過接觸孔、通孔和金屬線的組合,可在芯片不同區域之間建立連接。這類單獨線路曾很常見,尤其適用於只需一根線的控制信號等功能。但大多數通信涉及多位信息,如地址與數據。
一條線通常只能傳輸一位數據(除非使用特殊技術),因此需要多根相關線路。在當今的大規模片上系統(SoC)中,即使是單比特控制信號的集合也會變得臃腫難管理。為簡化這些連接,需要更高層次的抽象機制。
最早的一種抽象形式是“總線”(bus),它是多條線路的集合,每條線路負責傳輸一位數據,但功能相同。隨着芯片規模繼續增長,片上網絡(NoC)已被證實非常實用。NoC 是在總線基礎上更高層級的抽象。
圖13:互連繫統示意圖。多根線路組成總線,多個總線又可構成片上網絡(NoC)。
芯片內的總線和網絡在概念上與芯片外的類似結構相似,但做了專門優化以適應片內通信需求。例如,信號從起點到終點在單根線路上的傳輸時間被稱為“延遲”。如果路徑中包含觸發器,則信號傳輸可能需要多個時鐘週期,此時的延遲稱為“時延”(latency)。如果抽象結構替代了單根線路,那麼其時延應儘可能接近原始線路的延遲。任何偏離理想延遲的情況都會削弱芯片性能。
總線
從理論上講,總線是相關信號線的集合。早期總線可能是1字節(8位)寬,而現在的總線寬度可以超過1000根線路。
線路通常從源頭連接到目標,總線也一樣。但若為每一組源和目的地都單獨配置一條總線,會非常低效且佔用大量資源。因此,許多常見的總線(如計算機系統總線)採用“多點分佈”(multi-drop)結構,允許一條總線連接多個源和多個目的地。
典型的計算機系統包含內存總線、外設總線和系統總線。隨着技術發展,這些總線已被整合進SoC系統內,而不是如以往那樣連接多個芯片或電路板。架構也在演進,原本分離的地址線和數據線現在可能整合為內存總線,通過分時複用共享同一組線路。
當大多數總線運行在芯片之外時,網絡(如以太網)與總線之間的定義常常模糊不清。早期對總線的定義要求其不僅能傳輸數據,還必須能為接收端供電。總線定義的這一方面已不再使用。
信號編碼方式
最簡單的總線採用非歸零編碼(NRZ)傳輸數據。這是最直觀的編碼方式:高電壓表示1(邏輯高),低電壓表示0(邏輯低)。NRZ的名稱源於與另一種方式“歸零編碼(RZ)”的對比。RZ中,例如邏輯1由信號上升表示,隨後信號回落為低電平。RZ信號在芯片上並不常見。
圖14:信號編碼格式。NRZ在整個時鐘週期內保持一個電平,RZ(對比展示)發出一個脈衝後返回零。SDR每週期傳輸一個值,DDR每週期傳輸兩個值。此圖未標註建立時間和保持時間。
脈衝幅度調製(NRZ)格式每條總線線路承載一位數據,並且很容易在目的地輸入端檢測到。可以在一條線路上放置多個位的數據,其中放置在線路上的每個值都是一個可以承載多個位的符號。PAM4 就是這樣一種格式,每個符號放置兩位。不太常見的 PAM8 每個符號可以承載三位。儘管這些更高級的格式如今經常使用,但它們主要用於芯片之間或電路板之間傳輸信號。它們的複雜性和增加的延遲使它們在片上應用中不太受歡迎。
一種更簡單的信號方式是通過改進編碼來實現數據速率翻倍。這種方式的總線以與時鐘頻率相同的速率傳輸數據,每次時鐘跳變(邊緣)觸發數據狀態改變。這種方式稱為單數據率(SDR)。而“雙數據率”(DDR)則在時鐘的上升沿和下降沿都進行數據傳輸,因此速率為時鐘頻率的兩倍。DDR方式主要用於DDR內存的接口通信。
帶寬
總線批量傳輸數據,這就需要一個度量單位來描述其傳輸速率——帶寬。最簡單的情況下,一條線路的帶寬等於其時鐘頻率。每個時鐘上升沿(或下降沿)傳輸一位。對於實際總線來説,通常寬度為8位或更多,也就是説每個時鐘週期每條線傳輸一位。因此,一個時鐘頻率為1 MHz、寬度為8位的總線,其帶寬為8 Mbps。
不過總線帶寬通常以“每秒字節數”表示,因此上述帶寬也可寫作1 MBps。DDR編碼方式使得每個時鐘週期傳輸兩位數據,因此帶寬翻倍。每次數據傳輸被稱為一個“事務”(transaction,常縮寫為T,如MT/s)。
如今內存時鐘已進入GHz級,但仍以MHz表示(如1000 MHz)。內存帶寬的計算容易混淆,因為它涉及時鐘頻率、總線寬度和信號編碼方式。由於內存芯片的性能通常以“每秒多少位”而非“每秒多少字節”來表述,因此容易造成混淆。帶寬的通用計算公式如下:
其中,總線寬度以位為單位;格式因子(Format)為SDR時為1,DDR時為2。
所以,一個64位DDR內存總線,時鐘為1000 MHz:
令人驚訝的是,不同廠商對內存帶寬的定義並不一致,有時甚至在數據手冊中會把事務數和帶寬混淆。
並行與串行
現在的總線可以是並行也可以是串行。並行總線使用多根線路,而串行總線線路較少,但每根線的傳輸速率更高。芯片外的總線可能採用差分信號(雙端),但芯片內的總線通常是單端的。
如果源與目的端時鐘一致,並行總線比串行總線更簡單。最大挑戰在於“線間偏移(skew)”,即不同線路的延遲差異。佈線必須保證每根線的延遲一致。偏移在所難免,但如果超過允許範圍,會導致部分位無法在目標時鐘下正確接收。
當源端與目的端的時鐘不同步時,通常需要將時鐘與數據一同傳輸,以確保目標端能穩定接收數據。這種方法稱為“時鐘前傳”或“源同步(source synchronous)”。接收端先用源時鐘採樣數據,然後必須進行“時鐘域跨越”,以使接收到的數據能夠轉移到目標時鐘域下繼續處理。另一種方法是源端“借用”目標時鐘來驅動數據發送,這種方式與時鐘前傳相反,被稱為“目標同步(destination synchronous)”。
並行總線可以採用多點連接(multi-drop),讓多個源與多個目的端共享同一條總線。為了避免多個源同時訪問總線,需引入“總線控制器(bus controller)”進行仲裁,一次只允許一個源發送數據。仲裁機制可以是簡單的“輪詢法(round-robin)”,也可以非常複雜,比如引入服務質量(QoS)機制,為某些源優先分配訪問權。
當總線偏移問題變得嚴重時,可以採用串行總線作為替代方案。串行總線將時鐘嵌入數據編碼中,使接收端能夠從數據中恢復出時鐘。但這需要更復雜的電路,也會帶來額外的延遲。串行總線通常為點對點連接(point-to-point),而非多點。芯片內部一般不使用串行總線,它們多用於如PCIe等芯片間通信協議。[因此,我們將不討論它們超出這個簡短的描述。]
圖15:不同類型的總線。色塊表示不同的時鐘域。前三種為並行總線:第一種源與目的時鐘相同,後兩種源與目的時鐘不同,分別展示源同步和目的同步方式。第四種為串行總線,僅支持點對點連接。雖然圖中僅第一個展示了多點連接,但所有並行總線都可配置為多點,只要加上總線仲裁器。
總線負載與橋接
多點連接總線很方便,因為一條總線可以連接多種來源和目的地,實現通信。缺點是總線線路可能較長,帶來更大的電容負載,從而降低性能。每個源或目的地也會形成額外負載,進一步拖慢總線速度。
解決方案之一是將總線分段,並通過橋接器連接各段。在這種情況下,橋就像信號中繼器。
每段總線更短、負載更少,因而速度更快。如果通信目標位於另一段上,消息必須通過橋傳遞,增加一定延遲。因此,頻繁通信的模塊最好位於同一段上。
圖16:總線橋。圖上部表示一條總線上連接多個負載,會導致性能下降。圖下部通過橋將總線分段,雖然跨橋通信會增加延遲,但每段總線更短,性能更好。
片上並行總線示例
目前最常見的片上總線是 Arm 提出的 AMBA(高級微控制器總線架構)。儘管 AMBA 並非經權威標準機構正式認證的標準,但 Arm 免費開放並主導其維護,因此被廣泛採用。
隨着應用場景的發展,AMBA架構也演化出多個變種,包括:
ASB:系統總線(system bus)APB:外設總線(peripheral bus)AHB:高性能總線(high-performance bus)AXI:可擴展接口總線(extensible interface)ATB:用於 Arm CoreSight 調試的跟蹤總線(trace bus)ACE:用於 AMBA 4 中對 AXI 添加一致性擴展CHI:在 AMBA 5 中替代 ACE 的一致性接口另一類廣為人知的總線是由 JEDEC 標準化的 DRAM 總線。它們涵蓋了多種 DDR 標準和高帶寬內存(HBM)。這些總線不運行在芯片內部,但任何與內存接口的芯片都必須支持。
其他一些總線如 IBM 的 CoreConnect 和開放架構的 WishBone 雖未達到 AMBA 的普及程度,但同樣是免費可用的。
共享總線 vs 點對點連接
大多數總線採用共享結構,多個信號源可驅動總線,所有接收端都能看到信號(即便不響應)。由於多個電路可能同時驅動一條線,因此驅動器需採用特殊的 I/O 電路。
典型電路有兩種有效狀態:高電平和低電平。具體電壓值取決於所採用的邏輯風格。“低有效邏輯”中,邏輯1(真)表示為低電壓;而“高有效邏輯”則表示為高電壓。
兩個有效輸出絕不能直接連接,否則不同電平可能會形成大電流路徑,造成電路衝突。因此,總線輸出必須為“三態(tristate)”或“有線或(wired-OR)”結構。三態輸出具有三種狀態:高電平(上拉導通)、低電平(下拉導通)、高阻抗(上下拉皆關閉)。
圖17:有線或與三態總線。左上展示了兩個標準輸出連接到總線時可能出現的衝突,可能導致大電流。右上是典型有線或結構;下方展示了兩種三態總線的實現方式,均帶有使能信號(EN)。
對於性能要求不高的總線,也可只使用下拉電阻作為輸出(適用於低有效邏輯)。上拉部分僅由電阻(或充當電阻的晶體管)實現。多個輸出可同時導通,因為都是下拉結構,不會衝突。如果都未導通,則由上拉電阻將總線拉高。
由於一個或多個輸出在為低電平(在低有效邏輯中代表邏輯1)時會將總線拉低,這種連接方式類似“或門”(OR門)的效果——不是通過典型的邏輯門電路實現,而是通過將總線連接至電阻器而得名“有線或”(wired-OR)。
由於總線具有電容性,電阻器在將總線拉高時速度較慢。如果對性能要求更高,應使用三態輸出(tristate),其響應更快。
內存總線是SoC中常見的關鍵組件。但在複雜芯片中,多個功能模塊可能同時請求訪問內存。如果內存通過共享總線訪問,那麼事務處理時間將包括仲裁時間、等待總線空閒的時間,以及總線上眾多負載帶來的延遲。
當需要儘可能快地訪問內存時,可將SRAM模塊通過點對點連接方式直接連接到處理器。這種稱為“緊耦合存儲器(TCM)”的設計現已被廣泛應用於許多SoC中。
圖18:緊耦合存儲器。普通SRAM通過共享總線被CPU和GPU訪問,但這種共享結構可能導致性能下降。如果為CPU單獨配置一個通過專用端口連接的SRAM模塊,則可實現更高訪問速度。
TCM常用於存儲代碼,確保指令能以確定的時序被取出,提高響應確定性。這類應用多為深度嵌入式系統,區別於大多數運行在DRAM(通過緩存系統)上的軟件。
片上網絡(NoC)
現代SoC體積龐大、結構複雜,標準總線往往變得龐大笨重,效率低下。多個臨時性總線結構易造成佈局混亂、管理困難。現代大型SoC普遍採用一種全新互連方式——片上網絡(NoC)。
這種技術在高層次上模仿了我們熟悉的網絡結構(如互聯網),相當於在芯片內部“建網”。不過由於其運行在芯片內部,用於取代傳統的點對點連接,因此必須對其進行專門適配與優化。它們必須針對芯片內的環境進行適配。就像芯片外的網絡一樣,片上網絡將原本直接的事務打包成數據包,並尋找路徑將其送達目標。較大的事務可能需要分多個數據包傳輸。
NoC 仍然通過總線連接各網絡節點,這些總線的位寬可以達到1024位。這些位可以用於一個高速流,也可以劃分為多個子通道以同時傳輸多個數據包。後者方式更便於尋找可用路由。
一般來説,片上網絡有多種拓撲結構,但許多NoC採用網格結構,如圖19所示。這提供了將數據包路由到目的地的多種方法。但是其他的拓撲結構,比如環,也是可能的。
圖19:NoC數據包傳送方式。單播(unicast)發送到一個節點,廣播(broadcast)發送給所有節點,多播(multi-cast)發送給若干選定節點。
多目標尋址
最簡單的情況下,數據包從源發送到一個目標。但如果只能這樣,一些操作效率會很低。例如在 AI 任務中,需將大量權重數據移動至多個計算引擎,如果逐個發送,會大大拖慢處理速度。
為了解決這個問題,NoC 的尋址機制中通常包含多種發送方式。單播(unicast)指數據包只發給一個目標;相對的,廣播(broadcast)則將數據包發送給所有目標。單播和廣播的尋址方式都相對簡單,只需一個目標地址(或表示“全部”的標識符)即可。有些NoC可以設定廣播範圍,僅限某些區域內有效。
介於單播與廣播之間的是多播(multi-cast),它也是發送給多個目標,但具有選擇性。這要求地址編碼機制能有效支持多個目標地址。每種網絡結構在實現上可能略有不同。
路由與交換方法
由於 NoC 是網絡結構,信息必須沿路徑從源到達目的地。具體細節取決於設計決策,以下內容基於簡單直接的網格拓撲結構展開説明。並非所有 NoC 都採用該架構,但相關原則適用於其他拓撲結構。
在網格網絡中,每個交叉點或“中心”可視為一個交叉開關(crossbar)。例如,數據從西邊到達後,可以向北、東、南三個方向傳輸。數據需經過多個跳點(hops)才能到達目標,其所需時間取決於所選擇的路徑。每穿越一個hub都會帶來延遲,因此最快的路徑是經過跳數(hops)最少的路徑。hub可視為連接輸入總線與輸出總線的橋,但它與傳統橋不同之處在於,它能根據目標靈活選擇不同的路徑進行切換。
圖20:網格拓撲中的節點。在此結構中,從左(西)進入的數據可被切換至其他三個方向。
hub 可用至少三種方式來將接收的數據轉發到下一段。與芯片外網絡不同,片上網絡中連接的模塊位置是固定的,因此可簡化尋址;(但叫醒休眠模塊是另一個問題)。路由可在數據包生成時確定,每個hub隨後根據該路由表將數據包向目的地逐跳推進。
最常見於芯片外網絡,也可用於 NoC 的一種方式是“存儲-轉發(store-and-forward)”。該方法中,一個hub會先完整接收整個數據包並存儲下來,然後再發送至下一跳。優點包括:
每個hub可以在轉發之前對數據包進行差錯檢測。當網絡擁堵時,hub可選擇最佳時機發送數據包,從而平衡網絡流量。