控制片上系統(tǒng)(SoC)中的帶寬分配的制作方法
【專利說明】控制片上系統(tǒng)巧oC)中的帶寬分配
【背景技術(shù)】
[0001] 許多計算平臺,特別是便攜式和其他低功率設(shè)備,結(jié)合片上系統(tǒng)(SoC)作為主處 理器。該些SoC被配置為支持平臺的編程模型W確保軟件正確地工作。遵循基于個人 計算機(jī)(PC)標(biāo)準(zhǔn)的一些SoC典型地使用硬件來實現(xiàn)根據(jù)例如在外圍組件互連快速(PCI Express?(PCIe?))規(guī)范基礎(chǔ)規(guī)范版本2. 0中描述的PCIExpress?規(guī)范定義的程序排序語 義。
[0002] 排序架構(gòu)的一個引人注目的方面在于從主機(jī)代理到輸入/輸出(10)代理的下游 存儲器映射輸入輸出(MMI0)寫入與從存儲器返回到10代理的讀取完成數(shù)據(jù)經(jīng)歷相同的路 徑。該一路徑被稱為外發(fā)路徑,因為其從SoC的根聯(lián)合體離開。遵照PCIe?規(guī)則,到10代理 的存儲器讀取完成無法繞開已經(jīng)投送到相同虛擬通道上的任何在先的代理MMI0寫入。因 此基本上,在該一外發(fā)路徑上所產(chǎn)生的流量不是可控的,該會導(dǎo)致饑餓狀態(tài)和誤分配問題。
【附圖說明】
[0003] 圖1是根據(jù)本發(fā)明實施例的SoC的高級視圖的方框圖。
[0004] 圖2是根據(jù)本發(fā)明實施例說明在外發(fā)分配中設(shè)及的系統(tǒng)代理的組件的細(xì)節(jié)的方 框圖。
[0005] 圖3是根據(jù)本發(fā)明實施例用于控制具有不同類型的信息流的外發(fā)通道的帶寬的 方法的流程圖。
[0006] 圖4是根據(jù)本發(fā)明實施例用于執(zhí)行外發(fā)帶寬限制(throttle)的狀態(tài)機(jī)的方框圖。
[0007] 圖5是根據(jù)本發(fā)明實施例的外發(fā)限制邏輯的方框圖。
[0008] 圖6是根據(jù)本發(fā)明實施例存在于計算機(jī)系統(tǒng)中的組件的方框圖。
【具體實施方式】
[0009] 在各種實施例中,可W針對根聯(lián)合體外發(fā)路徑在SoC系統(tǒng)代理中提供可配置的服 務(wù)質(zhì)量機(jī)制。按照該一方式,可W調(diào)整來自諸如緩存代理的主機(jī)代理的下游MMI0請求W及 來自諸如非緩存代理的輸入/輸出(10)代理的上游存儲器讀取的完成的帶寬分配,同時還 滿足排序要求。用于控制帶寬分配的該一機(jī)制在進(jìn)入到系統(tǒng)代理的有序域之前執(zhí)行。雖 然本發(fā)明的范圍不限于此,但是在實施例中,該一帶寬分配調(diào)整是在基本輸入/輸出系統(tǒng) 炬10巧中實現(xiàn)的。
[0010] 現(xiàn)在參照圖1,示出了根據(jù)本發(fā)明實施例的SoC的高級視圖的方框圖。如圖1所 示,SoC100包括各種代理和其他組件。為了互連各種代理并且提供某些系統(tǒng)級控制技術(shù), 提供了相關(guān)結(jié)構(gòu)110,在本文也被稱為系統(tǒng)代理。如將在下面進(jìn)一步描述的,系統(tǒng)代理110 包括根據(jù)本發(fā)明實施例的下游分配邏輯W及各種其他組件,例如隊列、緩沖器、跟蹤器、控 制邏輯等等。
[0011] 如所看到的,相關(guān)結(jié)構(gòu)110用作多個不同的代理與其他組件之間的主片上互連。 在上游側(cè)上,提供了多個緩存代理12〇1-120。。雖然本發(fā)明的范圍不限于此,但是該些緩存 代理可w對應(yīng)于通常包括一個或多個處理器核屯、w及一級或多級高速緩沖存儲器的中央 處理單元(CPU)。因而,該些代理是緩存代理,因為它們被配置為經(jīng)由內(nèi)部代理高速緩存W 相關(guān)的方式來維持?jǐn)?shù)據(jù)。雖然被描述為CPU,但是應(yīng)理解,在一些實施例中,其他類型的緩存 代理,例如核屯、、圖形引擎或帶有相關(guān)聯(lián)的高速緩沖存儲器的其他專用處理邏輯也可W用 作緩存代理。還應(yīng)理解,發(fā)送MMIO寫入的代理不限于緩存代理,并且諸如非緩存代理的其 他代理也發(fā)送MMIO事務(wù)。
[0012] 相對而言,SoC100的其他代理可W被配置為非緩存代理??蒞存在諸如10代 理的不同類型的非緩存代理,其可W采取諸如捕獲設(shè)備、擅染設(shè)備、外圍設(shè)備等等的許多形 式。該些非緩存代理中的一些,例如非緩存代理13〇1和1302,經(jīng)由符合PCIe?排序規(guī)則的片 上互連直接禪合到系統(tǒng)代理110。非緩存代理在該一片上互連的主接口上發(fā)出上游探聽和 非探聽存儲器請求。10代理可W在SoC支持的任何虛擬通道(VC)上發(fā)出存儲器請求(注 意,一些SoC支持1VC,一些支持2VC,一些支持3VC,等等)。
[0013] 請求和寫入數(shù)據(jù)在進(jìn)入(inbound)路徑上到達(dá)系統(tǒng)代理110。讀取完成數(shù)據(jù)在外 發(fā)路徑上返回到代理。緩存代理使用端口 10或存儲器映射讀取/寫入來將下游請求發(fā)出 到10設(shè)備。在實施例中,該些請求在第一虛擬通道(即VC0)上行進(jìn)。當(dāng)來自緩存代理120 的每一個請求在全局上被排序時,該請求從系統(tǒng)代理110接收指示。當(dāng)來自緩存代理120 的MMIO寫入進(jìn)入系統(tǒng)代理110的有序域中時,它們在全局上被排序。該一進(jìn)入被稱為將下 游寫入投送到外發(fā)路徑中。一旦外發(fā)讀取完成已經(jīng)進(jìn)入有序域,其就無法繞開已經(jīng)投送到 該有序域中的相同VC的任何在先的匪10寫入。
[0014] 轉(zhuǎn)而,其他非緩存10代理13〇3-130,經(jīng)過開關(guān)結(jié)構(gòu)135禪合到片上互連主接口 或者經(jīng)過橋禪合到不同的協(xié)議。在所示的示例中,該些非緩存代理中的每一個及開關(guān) 結(jié)構(gòu))能夠經(jīng)由片上互連的主接口禪合到相關(guān)結(jié)構(gòu)110。在實施例中,主接口包括一個或 多個VC,在不同的VC之間沒有排序要求。此外,SoC100還包括多個集成的非緩存代理 14〇1-140,,其可W經(jīng)由不同互連技術(shù)的請求器接口直接禪合到相關(guān)結(jié)構(gòu)110。另外,多個存 儲器控制器15〇1-150。也可W禪合到相關(guān)結(jié)構(gòu)110W提供互連并且控制禪合到SoC的存儲 器(為了易于說明,在圖1中未示出)的功能,在實施例中,該存儲器可W被實現(xiàn)為動態(tài)隨 機(jī)存取存儲器值RAM)。雖然在圖1的實施例中W該一示例示出,但是應(yīng)理解,本發(fā)明的范圍 不限于此,并且許多不同類型的SoC和其他半導(dǎo)體器件可W利用根據(jù)本發(fā)明實施例的下游 分配邏輯。
[0015] 現(xiàn)在參照圖2,示出了根據(jù)本發(fā)明實施例說明在外發(fā)分配中設(shè)及的系統(tǒng)代理的組 件的細(xì)節(jié)的方框圖。如圖2所示,系統(tǒng)200包括均位于系統(tǒng)代理內(nèi)的各種組件W及SoC的 其他組件。
[0016] 在圖2的實施例中,該些SoC組件包括上游組件,即CPU模塊21〇1-210。,其通常 可W關(guān)于圖1的緩存代理而被如上所述地配置。此外,存在多個存儲器控制器25〇1-25〇2。 為了該里討論的目的,該些存儲器控制器提供響應(yīng)于上游讀取請求從存儲器接收的進(jìn)入數(shù) 據(jù),即,經(jīng)過該些存儲器控制器提供讀取完成數(shù)據(jù),并且隨后該讀取完成數(shù)據(jù)傳輸經(jīng)過選擇 器252并且到達(dá)數(shù)據(jù)緩沖器215,數(shù)據(jù)緩沖器215是來自各種虛擬通道和其他代理的附加寫 入數(shù)據(jù)經(jīng)過另一選擇器212被提供到其中的共享緩沖器。
[0017] 數(shù)據(jù)緩沖器215可W被控制為響應(yīng)于來自選擇邏輯220的控制信號而輸出數(shù)據(jù)的 給定部分,例如,緩沖器中的條目,在實施例中,選擇邏輯220可W提供地址和讀取使能信 號,W便因而能夠輸出在所選擇的地址處的數(shù)據(jù),例如存儲在共享緩沖器215的給定條目 中的數(shù)據(jù)。共享數(shù)據(jù)緩沖器215存儲傳輸至/自存儲器、至/自緩存代理W及至/自10代 理的全部數(shù)據(jù)。注意到,在一些實施例中,可W在專用的每存儲器通道基礎(chǔ)上提供單獨的數(shù) 據(jù)緩沖器。并且,單獨的數(shù)據(jù)緩沖器可W是每代理或每功能專用的(例如,MMI0寫入數(shù)據(jù) 具有數(shù)據(jù)緩沖器),或者可W針對每一個VC提供單獨的數(shù)據(jù)緩沖器。
[001引如在圖2中更具體示出的,該一數(shù)據(jù)可W被輸出到合適的目的地,例如,到CPU模 塊2101-210。或者到另一代理的上游數(shù)據(jù)。而且,在外發(fā)方向上提供的數(shù)據(jù)被從數(shù)據(jù)緩沖器 215輸出并且輸出到有序域270內(nèi)的合適隊列,該有序域270可W被配置有多個輸出隊列 2401-24012。雖然所示為有限數(shù)目的隊列,但是應(yīng)理解,本發(fā)明的范圍不限于此,并且在其他 實施例中更多或更少該樣的隊列可W與特定的虛擬通道相關(guān)聯(lián)并且可W存在信息類型。
[0019] 為了在外發(fā)方向上提供讀取數(shù)據(jù),可W將該讀取數(shù)據(jù)存儲在該些隊列中的被標(biāo)識 的一個隊列中。具體地說,可^將讀取完成數(shù)據(jù)存儲在多個完成隊列240。4,24〇11和24〇12的 一個中,它們中的每一個對應(yīng)于給定的虛擬通道的完成隊列,該給定的虛擬通道即是虛擬 通道VC0-VCN。此外,從數(shù)據(jù)緩沖器215輸出的數(shù)據(jù)可W被進(jìn)一步提供到數(shù)據(jù)隊列240。2,該 數(shù)據(jù)隊列240。2可W被配置為存儲針對虛擬通道0的投送和非投送數(shù)據(jù)。如將進(jìn)一步描述 的,關(guān)于VC0中的事務(wù)的信息,包括從數(shù)據(jù)緩沖器215輸出的數(shù)據(jù),也可W被存儲在順序