《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 解決方案 > 利用MIPS多線程處理器優(yōu)化SoC設計

利用MIPS多線程處理器優(yōu)化SoC設計

2011-01-21
作者:Delfin Rodillas MIPS科技網(wǎng)絡業(yè)務發(fā)展總監(jiān)
來源:OFweek電子工程網(wǎng)
關鍵詞: MIPS 多線程 SOC

  多線程是一種基于硬件或軟件的處理技術,它的首要目標是計算型工作中利用并發(fā)來提高性能。多線程也可以用于區(qū)別各種任務,以便可以將優(yōu)先權分配給更多時間敏感的流量,如語音、視頻或關鍵數(shù)據(jù)。而公認的基于軟件的多線程技術,如任務切換和基于軟件的線程調度已經(jīng)存在了相當一段時間,很少有人知道基于硬件的多線程的歷史?;谟布亩嗑€程技術其實已經(jīng)存在了相當長一段時間,其實現(xiàn)可以追溯到20世紀60年代的CDC6600。在CDC6600電腦中,10個硬件線程被用來保證從I/O處理器到約16個外圍設備的響應時間。這個例子的處理器運行速度遠遠超過了許多I/O設備,是一個充分利用多線程優(yōu)勢的典型應用,因為空閑處理時間可以被從線程到線程切換的有益工作所取代。在70年代,Denelcor HEP機是在CPU內,而不是在I/O實際執(zhí)行線程切換。類似上例,最終結果是每個周期的指令(IPC)有了顯著改善。之后10年推出的其他幾個系統(tǒng)和學術研究進一步展示了硬件多線程的好處。

  今天的市場上有許多多線程處理器。英特爾公司已經(jīng)利用其超線程技術將該技術引入高端計算應用領域。此外,其他許多SoC制造商,如Broadcom、Lantiq、Mobileye、NetLogic Microsystems、PMC-Sierra、Ralink Technology和Sigma Designs也交付了上百萬個采用多線程處理器的產品。許多這樣的SoC都采用了基于業(yè)界標準MIPS架構的多線程MIPS32 34K系列內核或多線程、多處理MIPS32 1004K一致處理系統(tǒng)(CPS)。目前硬件多線程已經(jīng)成為主流應用,并越來越被視為SoC設計中實現(xiàn)最佳性能的有效方法。

  用多線程提高流水線利用率

  如前所述,增加一個給定單線程處理器的IPC數(shù)量是一個主要目標。通常情況下,即使是非常高性能的處理器也有大量時間閑置,目的是等待數(shù)據(jù)到達。常見的情況是,帶有共享存儲系統(tǒng)先進處理器需花50%的時間等待數(shù)據(jù)在緩存未中(cache miss)后返回。此數(shù)據(jù)檢索的等待時間可能會持續(xù)幾十個周期,在極端情況下甚至是數(shù)百個周期。無論數(shù)量多少,處理器在此期間做的都是無效工作。多線程處理器可以在多個線程之間切換以利用這些閑置的周期。這些周期現(xiàn)在可以用來自其他線程的有用指令填滿,從而避免未使用的周期白白浪費。這最終將獲得更好的流水線利用率并提升系統(tǒng)的吞吐量。

  確保線程切換效率的一個關鍵環(huán)節(jié)是怎樣進行線程相關信息或語境的管理。當映射到一個線程時,每個任務都有相關的上下文信息,如程序計數(shù)器和寄存器信息子集,這些信息是以硬件加載和更新的。在單線程處理器中,由于處理器在線程之間切換,這些上下文必須導入(swapped in)或導出。當在線程之間變換時,需要有與保存和恢復操作有關的額外處理。這種負擔可能會變得非常繁重,尤其是采用高語境(high context)切換。多線程處理器支持由每個硬件支持的線程的完整上下文存儲,無需保存和恢復操作。這種機制支持切換線程或上下文的零周期開銷。

  圖1顯示了多線程是如何提高流水線利用率的基本機制。在這種情況下,在不同的時間點有三個線程出現(xiàn)了緩存未中。在這些線程暫停(stall)期間,其他線程在同一條流水線上做著有用的工作,從而增加了IPC。

  

  MIPS多線程技術

  MIPS科技的多線程技術基于兩個層次框架,涉及虛擬處理單元(VPE)和線程上下文(TC),支持每個周期的線程切換。每個多線程內核多達可支持兩個VPE,它們共享其他硬件資源中的一條流水線。不過,由于每個VPE可以有自己針對高速緩存的轉換后備緩沖器(Translation Look-aside Buffer,TLB),因此它們都可作為針對一個SMP Linux操作系統(tǒng)的兩個獨立處理器出現(xiàn)。對于更細粒度的線程處理應用,每個VPE可以支持多個TC。這些TC共享一個執(zhí)行單元,但各有各的程序計數(shù)器和內核寄存器文件,以便每個TC都可以處理來自軟件的線程。34K內核多達可以支持分配在兩個VPE上的九個TC,在運行時進行優(yōu)化和分區(qū)。利用最小的芯片面積可執(zhí)行MIPS多線程功能。

  34K內核也允許為線程分配處理器周期,并利用一個可選的服務質量(QoS)管理塊設置相對線程優(yōu)先權。這有助于實現(xiàn)兩個優(yōu)先機制,確定總線上的信息流量。第一個機制允許用戶讓某一個線程優(yōu)先于另一個。第二個機制用來根據(jù)時間的變化為特定線程分配一個指定的周期率。這兩個機制的結合使用可以有效地給線程組分配帶寬,更好地控制延遲。在實時系統(tǒng)中,系統(tǒng)級的決定是非常關鍵的,而QoS塊有利于改善系統(tǒng)的可預測性。圖2a顯示了34K內核中VPE、TC和QoS塊的關系。

  1004K CPS是MIPS科技的最新一代多線程處理器。該系統(tǒng)支持多達四個多線程內核,每個內核都可以配置為像34K內核那樣支持2個VPE。在1004K CPS中的多個內核通過一個一致管理單元連接在一起,以保持每個CPU的L1高速緩存之間的一致性。一致多內核架構的每個內核的多線程集成允許1004K CPS超過同類單線程多核處理器的總性能。該系統(tǒng)還包括一個可選模塊,為來自I/O外圍設備的數(shù)據(jù)傳輸提供一致性,從而通過卸載作為操作系統(tǒng)一部分、通常運行于軟件的I/O一致性方案獲得額外的性能。一致處理系統(tǒng)還包括一個全局中斷控制器,可以接收多達256個中斷并把它們分配到內核,或每個內核內的硬件線程。整個系統(tǒng)采用MIPS L2高速緩存控制器,通過一個擴展的256位寬接口連接到一致管理單元,以優(yōu)化一致系統(tǒng)和L2高速緩存之間的吞吐量。EJTAG、“一致管控”程序和數(shù)據(jù)跟蹤塊完善了系統(tǒng),通過開發(fā)工具為系統(tǒng)中的每個CPU內核和一致單元提供了同步的能見度。

  SMP Linux被用來考察VPE接口的效應,從而保持高級API不變。這使得對現(xiàn)有傳統(tǒng)內核的利用在新內核出現(xiàn)后也不會改變。此外,一些諸如ThreadX的RTOS的SMP版本包括對細粒度、基于TC的多線程的支持。應該指出的是,1004K的多線程和多核硬件功能利用了一個通用的軟件編程模型。也就是說,例如,有人用SMP Linux開發(fā)的線程應用可以有效地運行在34K或1004K上,而無需修改,而SMP內核可以實現(xiàn)任務的親和性以及跨線程和內核的工作量負載均衡決策?! ?img alt="" src="http://files.chinaaet.com/images/20110120/344861ff-2c03-488a-abbb-c83fc70d12fa.jpg" style="width: 560px; height: 425px; " />

  圖2a:34K頂層架構。

  

  圖2b:1004K頂層架構。

  多線程是一種基于硬件或軟件的處理技術,它的首要目標是計算型工作中利用并發(fā)來提高性能。多線程也可以用于區(qū)別各種任務,以便可以將優(yōu)先權分配給更多時間敏感的流量,如語音、視頻或關鍵數(shù)據(jù)。而公認的基于軟件的多線程技術,如任務切換和基于軟件的線程調度已經(jīng)存在了相當一段時間,很少有人知道基于硬件的多線程的歷史?;谟布亩嗑€程技術其實已經(jīng)存在了相當長一段時間,其實現(xiàn)可以追溯到20世紀60年代的CDC6600。在CDC6600電腦中,10個硬件線程被用來保證從I/O處理器到約16個外圍設備的響應時間。這個例子的處理器運行速度遠遠超過了許多I/O設備,是一個充分利用多線程優(yōu)勢的典型應用,因為空閑處理時間可以被從線程到線程切換的有益工作所取代。在70年代,Denelcor HEP機是在CPU內,而不是在I/O實際執(zhí)行線程切換。類似上例,最終結果是每個周期的指令(IPC)有了顯著改善。之后10年推出的其他幾個系統(tǒng)和學術研究進一步展示了硬件多線程的好處。

  今天的市場上有許多多線程處理器。英特爾公司已經(jīng)利用其超線程技術將該技術引入高端計算應用領域。此外,其他許多SoC制造商,如Broadcom、Lantiq、Mobileye、NetLogic Microsystems、PMC-Sierra、Ralink Technology和Sigma Designs也交付了上百萬個采用多線程處理器的產品。許多這樣的SoC都采用了基于業(yè)界標準MIPS架構的多線程MIPS32 34K系列內核或多線程、多處理MIPS32 1004K一致處理系統(tǒng)(CPS)。目前硬件多線程已經(jīng)成為主流應用,并越來越被視為SoC設計中實現(xiàn)最佳性能的有效方法。

  用多線程提高流水線利用率

  如前所述,增加一個給定單線程處理器的IPC數(shù)量是一個主要目標。通常情況下,即使是非常高性能的處理器也有大量時間閑置,目的是等待數(shù)據(jù)到達。常見的情況是,帶有共享存儲系統(tǒng)先進處理器需花50%的時間等待數(shù)據(jù)在緩存未中(cache miss)后返回。此數(shù)據(jù)檢索的等待時間可能會持續(xù)幾十個周期,在極端情況下甚至是數(shù)百個周期。無論數(shù)量多少,處理器在此期間做的都是無效工作。多線程處理器可以在多個線程之間切換以利用這些閑置的周期。這些周期現(xiàn)在可以用來自其他線程的有用指令填滿,從而避免未使用的周期白白浪費。這最終將獲得更好的流水線利用率并提升系統(tǒng)的吞吐量。

  確保線程切換效率的一個關鍵環(huán)節(jié)是怎樣進行線程相關信息或語境的管理。當映射到一個線程時,每個任務都有相關的上下文信息,如程序計數(shù)器和寄存器信息子集,這些信息是以硬件加載和更新的。在單線程處理器中,由于處理器在線程之間切換,這些上下文必須導入(swapped in)或導出。當在線程之間變換時,需要有與保存和恢復操作有關的額外處理。這種負擔可能會變得非常繁重,尤其是采用高語境(high context)切換。多線程處理器支持由每個硬件支持的線程的完整上下文存儲,無需保存和恢復操作。這種機制支持切換線程或上下文的零周期開銷。

  圖1顯示了多線程是如何提高流水線利用率的基本機制。在這種情況下,在不同的時間點有三個線程出現(xiàn)了緩存未中。在這些線程暫停(stall)期間,其他線程在同一條流水線上做著有用的工作,從而增加了IPC。

  

  MIPS多線程技術

  MIPS科技的多線程技術基于兩個層次框架,涉及虛擬處理單元(VPE)和線程上下文(TC),支持每個周期的線程切換。每個多線程內核多達可支持兩個VPE,它們共享其他硬件資源中的一條流水線。不過,由于每個VPE可以有自己針對高速緩存的轉換后備緩沖器(Translation Look-aside Buffer,TLB),因此它們都可作為針對一個SMP Linux操作系統(tǒng)的兩個獨立處理器出現(xiàn)。對于更細粒度的線程處理應用,每個VPE可以支持多個TC。這些TC共享一個執(zhí)行單元,但各有各的程序計數(shù)器和內核寄存器文件,以便每個TC都可以處理來自軟件的線程。34K內核多達可以支持分配在兩個VPE上的九個TC,在運行時進行優(yōu)化和分區(qū)。利用最小的芯片面積可執(zhí)行MIPS多線程功能。

  34K內核也允許為線程分配處理器周期,并利用一個可選的服務質量(QoS)管理塊設置相對線程優(yōu)先權。這有助于實現(xiàn)兩個優(yōu)先機制,確定總線上的信息流量。第一個機制允許用戶讓某一個線程優(yōu)先于另一個。第二個機制用來根據(jù)時間的變化為特定線程分配一個指定的周期率。這兩個機制的結合使用可以有效地給線程組分配帶寬,更好地控制延遲。在實時系統(tǒng)中,系統(tǒng)級的決定是非常關鍵的,而QoS塊有利于改善系統(tǒng)的可預測性。圖2a顯示了34K內核中VPE、TC和QoS塊的關系。

  1004K CPS是MIPS科技的最新一代多線程處理器。該系統(tǒng)支持多達四個多線程內核,每個內核都可以配置為像34K內核那樣支持2個VPE。在1004K CPS中的多個內核通過一個一致管理單元連接在一起,以保持每個CPU的L1高速緩存之間的一致性。一致多內核架構的每個內核的多線程集成允許1004K CPS超過同類單線程多核處理器的總性能。該系統(tǒng)還包括一個可選模塊,為來自I/O外圍設備的數(shù)據(jù)傳輸提供一致性,從而通過卸載作為操作系統(tǒng)一部分、通常運行于軟件的I/O一致性方案獲得額外的性能。一致處理系統(tǒng)還包括一個全局中斷控制器,可以接收多達256個中斷并把它們分配到內核,或每個內核內的硬件線程。整個系統(tǒng)采用MIPS L2高速緩存控制器,通過一個擴展的256位寬接口連接到一致管理單元,以優(yōu)化一致系統(tǒng)和L2高速緩存之間的吞吐量。EJTAG、“一致管控”程序和數(shù)據(jù)跟蹤塊完善了系統(tǒng),通過開發(fā)工具為系統(tǒng)中的每個CPU內核和一致單元提供了同步的能見度。

  SMP Linux被用來考察VPE接口的效應,從而保持高級API不變。這使得對現(xiàn)有傳統(tǒng)內核的利用在新內核出現(xiàn)后也不會改變。此外,一些諸如ThreadX的RTOS的SMP版本包括對細粒度、基于TC的多線程的支持。應該指出的是,1004K的多線程和多核硬件功能利用了一個通用的軟件編程模型。也就是說,例如,有人用SMP Linux開發(fā)的線程應用可以有效地運行在34K或1004K上,而無需修改,而SMP內核可以實現(xiàn)任務的親和性以及跨線程和內核的工作量負載均衡決策。

  

  圖2a:34K頂層架構。

  

  圖2b:1004K頂層架構。

  多線程應用實例

  當決定多線程系統(tǒng)是否適用于一個特定應用時,設計人員必須考慮幾個因素。首先,設計人員必須考慮軟件和所需的功能集,包括不同的任務、可能分割這些任務的方式、每個任務的性能需求、不同任務的總線互動、多媒體等任務的特殊需求,以及其他考慮因素。其他主要考慮因素包括任務、安全性,當然還有功耗和成本的協(xié)調程度。

  的確,分析起來往往不太簡單,因此很好地理解重點至關重要。例如,如果目標是以最低的成本實現(xiàn)最高的IPC,設計人員就可以創(chuàng)建多線程系統(tǒng)來利用單個內核中不同的線程,并運行在最高頻率下。在另一個設計中,功率可能是一個關鍵問題,所以設計人員可以選擇將任務分布于多個內核的多個線程,并降低頻率以減少功耗。MIPS-Based多線程系統(tǒng)的關鍵是可擴展性,在需要時幫助設計人員達到盡可能高的性能,而當性能并不是最優(yōu)先考慮時,則可以縮減可擴展性。另一個例子是,一個系統(tǒng)可能需要運行2個操作系統(tǒng),同時要滿足非常嚴格的QoS和成本限制。設計人員可以利用兩個VPE運行軟件,其中一個運行RTOS,另一個運行bare iron,同時完全隔離語音或視頻等QoS敏感的應用。這些都可以在不運行第二個內核的情況下實現(xiàn)。以下例子的使用模型已經(jīng)部署在用于汽車和網(wǎng)絡的MIPS-Based多線程SoC中,證明了廣泛的應用都可以受益于多線程。

  1.汽車駕駛輔助系統(tǒng)

  多線程系統(tǒng)設計實際部署的第一個例子來自一家基于視覺的駕駛輔助系統(tǒng)(DAS)的SoC領先供應商。圖像和視頻分析在性能和成本方面的進步使這些技術開始進入消費市場。但是,對這類技術的不斷改進是一個非常艱巨的任務。例如,該SoC供應商使用了34K處理器的多線程功能,大幅提高了其視覺系統(tǒng)(原本基于單線程內核)的性能和效率,系統(tǒng)接收來自攝像頭的數(shù)據(jù),查找圖像中的元素,生成車道偏離、前向碰撞、視覺/雷達融合及行人偵測等警告。

  該SoC系統(tǒng)采用一系列圖像處理引擎作為外圍設備到主CPU總線的連接,以提供和接收實時數(shù)據(jù)。在這個系統(tǒng)中,大量的數(shù)據(jù)和指令從CPU傳輸?shù)綀D像處理引擎。伴隨著典型的指令緩存未中,這導致了單線程CPU無法解決的極具挑戰(zhàn)性的瓶頸。事實上,供應商的原始系統(tǒng)具有一個僅為0.3的IPC。新系統(tǒng)采用一個單線程架構,由于其性能要求很高,這意味著要么放慢整個系統(tǒng),要么跳過數(shù)據(jù)處理,因而有可能導致錯誤。增加CPU時鐘速度更加劇了這一問題,因為這只是增加了處理器暫停的頻率。此外,增加的額外內核增加了總線競爭數(shù)量,從而影響了實時帶寬。

  通過仿真,設計人員的結論是,一個多線程系統(tǒng)將通過管理整個系統(tǒng)包括8個圖像處理引擎的多個操作來性能提升。他們采用了一個4線程34Kf內核與8的圖像處理引擎互動。一個QoS管理器起到了調整和優(yōu)化關鍵線程的重要作用。實際上,這種架構有助于將IPC從0.3提高到0.9。使用QoS管理器對IPC從0.6到0.9非常關鍵。此外,有了如此高的IPC,增加的CPU時鐘實現(xiàn)了顯著的改善。事實上,由于利用了其多線程和其他架構的改進,供應商只需將頻率從110MHz適度地增加至166MHz,同時維持3W的功耗(這是前一代產品的功耗),就能夠實現(xiàn)其性能目標。此外,第二個34Kf內核的實例可以支持一個用戶的專有算法。在這兩個處理器線程之間的通信是通過對一個線程間通信塊的修改來實現(xiàn)的,這實際上有助于提高系統(tǒng)一致性。對于未來的系統(tǒng),將要求更高的性能和更低的成本。該SoC供應商將會采用一個4內核1004Kf CPS,以確保設計能夠滿足這些目標。

  2.寬帶CPE/住宅網(wǎng)關

  住宅網(wǎng)關是另一個面臨日益集成的系統(tǒng)。寬帶客戶端設備已經(jīng)發(fā)展到不僅是提供DSL、有線或PON等寬帶服務等基本接入的調制解調器設備。它們已成為集成式住宅網(wǎng)關或集成式接入設備,其中包括路由/交換、雙絞線/同軸/電源線/WiFi網(wǎng)絡功能、安全、USB和VoIP支持等,以及基本的調制解調器功能。某些架構還集成了存儲功能,其中的網(wǎng)關可作為媒體服務器使用。這種集成使網(wǎng)關系統(tǒng)的設計極具挑戰(zhàn)性,而多線程可以提高性能和/或改進這些設備的整體架構。

  無線家庭網(wǎng)絡和寬帶接入半導體市場的全球技術領導廠商Ralink Technology已在網(wǎng)關中成功部署了多線程MIPS-Based SoC。ADSL IAD是Ralink的首個基于34K內核的芯片,目前已批量生產,并已成功部署在歐洲電信運營商的網(wǎng)絡中。多線程已被證明非常適合這個三網(wǎng)融合系統(tǒng),因為它有助于更有效地運行多個應用。此外,通過使用VPE對時間敏感流量進行隔離是保證確定性響應的關鍵。該SoC采用一個34K內核和在兩個VPE上的四個線程。第一個VPE即VPE0執(zhí)行三個線程,支持WLAN、以太網(wǎng)和USB處理,而第二個VPE即VPE1執(zhí)行一個線程,支持ATM和VoIP。憑借這個架構,Ralink能夠以單個器件有效地提供確定性VoIP響應,支持多個應用。

  本文小結

  硬件多線程是一種已經(jīng)成為主流的技術,今天有許多芯片供應商在為各種應用提供MIPS-Based多線程SoC。本文討論了網(wǎng)絡和汽車應用,而多線程可以用于任何具有很多并發(fā)任務,或者是QoS非常重要的系統(tǒng)。其他廠商已經(jīng)實現(xiàn)了用于機頂盒、高端存儲和網(wǎng)絡基礎設施設備的MIPS多線程SoC。而一些評估已開始用于移動應用中使用的多線程,如智能手機和平板電腦。作為集成的通信、生產力和多媒體娛樂設備,這些設備的復雜性還在不斷增長。多線程將是有效處理多個移動應用(其中一些是延遲敏感的應用)的理想解決方案。當然,可以采用使用多個內核同時處理線程的強制方法,但是采用多線程是迄今為止實現(xiàn)IPC和/或QoS性能要求的一個更完美和成本更低的方法。通過提供支持硬件多線程的單內核和多內核產品,MIPS科技具備獨特的優(yōu)勢,可幫助設計人員以非常具有成本效益的方式開發(fā)高性能和低功耗的SoC。

  作者:Delfin Rodillas

  網(wǎng)絡業(yè)務發(fā)展總監(jiān)

  MIPS科技

本站內容除特別聲明的原創(chuàng)文章之外,轉載內容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創(chuàng)文章及圖片等內容無法一一聯(lián)系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經(jīng)濟損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。