專利名稱:用于i/o流量的一致性開關(guān)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般地涉及片上系統(tǒng),并且具體地,涉及用于在片上系統(tǒng)中路由事務(wù)的方法和機(jī)制。
背景技術(shù):
片上系統(tǒng)(SoC)由于電子產(chǎn)業(yè)的持續(xù)技術(shù)提高在復(fù)雜度額尺寸上越來越高。通常的SoC可以包括連接到包含一個或多個處理器的處理器聯(lián)合體的多個輸入/輸出(I/O)裝置。處理器聯(lián)合體通常可以包括一個或多個處理器以及一個或多個緩存,并且處理器聯(lián)合體可以耦接到存儲器控制器的CPU端口,其中處理器聯(lián)合體可以通過CPU端口來訪問存儲器。I/o裝置可以耦接到處理器聯(lián)合體上的一致性(coherency)端口并通過存儲器控制器的CPU端口來訪問存儲器。來自I/O裝置的流量的一部分可以是緩存一致的(cache coherent)。來自I/O裝置的流量的另一部分可以是低性能事務(wù),并且低性能事務(wù)中的一些可以針對非可共享存儲器。通常,鑒于硬件、性能和功率,核實每個事務(wù)的緩存一致性的成本很高。另外,來自I/O裝置的流量會與處理器聯(lián)合體競爭存儲器控制器上的CPU端口上的存儲帶寬。此外,來自I/o裝置的流量也不一定引起在處理器聯(lián)合體中發(fā)生探聽活動。
發(fā)明內(nèi)容
在一個實施例中,一種設(shè)備,可以包括一個或多個處理器、存儲器控制器、一個或多個I/o裝置和一致性開關(guān)。這一個或多個處理器可以位于處理器聯(lián)合體中,并且處理器聯(lián)合體可以耦接到存儲器控制器的實時端口。處理器聯(lián)合體可以包括一級或多級緩存,并且,處理器聯(lián)合體還可以包括耦接到一致性開關(guān)的一致性端口。一致性開關(guān)可以耦接到這一個或多個I/o裝置、處理器聯(lián)合體和存儲器控制器。在一些實施例中,該設(shè)備可以包括非實時(NRT)模塊,并且一致性開關(guān)可以經(jīng)由NRT模塊耦接到存儲器控制器。該設(shè)備還可以包括復(fù)用器并且一致性開關(guān)可以經(jīng)由復(fù)用器耦接到一個或多個I/O裝置。一致性開關(guān)可以接收來自一個或多個I/O裝置的事務(wù),并且一致性開關(guān)可以將接收的事務(wù)在設(shè)備內(nèi)的兩條分離的路徑上路由到存儲器控制器。第一路徑傳遞經(jīng)過處理器聯(lián)合體上的一致性端口并且經(jīng)過存儲器控制器的第一端口。來自已知是一致的源的流量可以經(jīng)由第一路徑被路由到存儲器。第二路徑可以傳遞經(jīng)過NRT模塊并且經(jīng)過存儲器控制器的第二端口。來自已知是非一致的源的流量可以經(jīng)由第二路徑被路由到存儲器。已知是非一致的源可以生成僅訪問非共享存儲器的事務(wù)。在一個實施例中,一致性開關(guān)可以基于伴隨事務(wù)的標(biāo)識符來確定路由事務(wù)的路徑。在各個實施例中,一致性開關(guān)可以配置為將流量從一致路徑重新分配到非一致路徑或從非一致路徑分配到一致路徑。一致性開關(guān)可以維護(hù)配置寄存器,并且,配置寄存器可以存儲每個事務(wù)標(biāo)識符的指示符。指示符可以指定對應(yīng)的事務(wù)是應(yīng)當(dāng)經(jīng)由一致的還是非一致的路徑被路由到存儲器。在一個實施例中,一致性開關(guān)可以維護(hù)配置寄存器的兩個拷貝。配置寄存器的第一拷貝可以是軟件可寫拷貝并且配置寄存器的第二拷貝可以是工作拷貝。工作拷貝也可以稱為影子拷貝。具有配置寄存器的兩個拷貝可以輔助流量的動態(tài)切換。例如,配置寄存器的兩個拷貝可以允許軟件發(fā)起對配置寄存器的改變,同時,一致性開關(guān)硬件可以控制對系統(tǒng)行為的實際改變。具體地,軟件應(yīng)用可以更新配置寄存器的軟件可寫拷貝來基于事務(wù)標(biāo)識符重新分配流量流。一致性開關(guān)可以檢測對軟件可寫拷貝的更新,并且隨后一致性開關(guān)可以更新被用來實際實現(xiàn)新路由的工作拷貝。鑒于以下對在此提出的方法的更詳細(xì)描述,這些和其它特征和優(yōu)點(diǎn)將對本領(lǐng)域技術(shù)人員變得顯而易見。
通過結(jié)合附圖參考以下描述,可以更好地理解方法和機(jī)制的以上和更多優(yōu)點(diǎn),在附圖中圖1是圖示出集成電路的一部分的一個實施例的框圖。圖2是圖示出由一致性開關(guān)路由事務(wù)的框圖。圖3是圖示出一致性開關(guān)的一個實施例的框圖。圖4是根據(jù)一個或多個實施例的配置單元的框圖。圖5是配置寄存器的影子拷貝的一個實施例的框圖。圖6是圖示出用于路由事務(wù)和操作一致性開關(guān)的方法的一個實施例的一般流程圖。圖7是圖示出用于更新一致性開關(guān)的配置寄存器的方法的一個實施例的一般流程圖。圖8是系統(tǒng)的一個實施例的框圖。圖9是圖示出計算機(jī)可讀介質(zhì)的一個實施例的框圖。
具體實施例方式在以下描述中,闡述了大量具體細(xì)節(jié)來提供對在此提出的方法和機(jī)制的透徹理解。然而,本領(lǐng)域技術(shù)人員將認(rèn)識到,可以在沒有這些具體細(xì)節(jié)的情況下實踐各個實施例。在一些實例中,公知的結(jié)構(gòu)、組件、信號、計算機(jī)程序指令和技術(shù)沒有被詳細(xì)描述以避免使在此描述的方式模糊。將明白,為了圖解的簡化和清楚起見,圖中示出的元件不一定是按比例繪制的。例如,一些元件的尺寸會相對于其它元件被放大。本說明書包括對“一個實施例”的引用。不同的上下文中出現(xiàn)的短語“在一個實施例中”不一定是指相同實施例。具體的特征、結(jié)構(gòu)或特點(diǎn)可以以符合本公開的任意適合的方式被組合。并且,貫穿本申請使用的詞語“可以”以許可含義使用(即,意味著有可能性)而不是以強(qiáng)制含義使用(即意味著必須)。類似地,詞語“包括”意味著包括但不限于。術(shù)語。以下段落提供對本公開(包括權(quán)利要求書)中找得到的術(shù)語的定義和/或上下文?!鞍?。該術(shù)語是開放式的。如權(quán)利要求書中所使用的,該術(shù)語不排除另外的結(jié)構(gòu)或步驟??紤]記載了“一種處理器,包含緩存……”的權(quán)利要求。這樣的權(quán)利要求不排除處理器包括另外的組件(例如網(wǎng)絡(luò)接口、交叉開關(guān))。“配置為”。各種單元、電路或其它組件可以被描述為或聲稱為“配置為”執(zhí)行一個或多個任務(wù)。在這樣的上下文中,“配置為”用于通過指明所述單元/電路/組件包括在操作期間執(zhí)行所述一個或多個任務(wù)的結(jié)構(gòu)(例如,電路)來意指結(jié)構(gòu)。這樣,可以說所述單元/電路/組件被配置為執(zhí)行該任務(wù),即使該指定的單元/電路/組件當(dāng)前并不是在工作的(例如,沒有開啟)。與“配置為”語言一起使用的單元/電路/組件包括硬件——例如,存儲可運(yùn)行來實現(xiàn)操作的程序指令的存儲器、電路等。單元/電路/組件“被配置為”執(zhí)行一個或多個任務(wù)的記敘明確地意在不針對該單元/電路/組件調(diào)用35U. S. C. § 112第六段。另外,“配置為”可以·包括由軟件和/或固件(例如,F(xiàn)PGA或同通用處理器運(yùn)行的軟件)操縱來以能夠執(zhí)行所討論的一個或多個任務(wù)的方式工作的普通結(jié)構(gòu)(例如,普通電路)。“配置為”也可以包括使得制造工藝(例如,半導(dǎo)體制造設(shè)備)適配適合實現(xiàn)或執(zhí)行一個或多個任務(wù)的制造裝置(例如集成電路)?!暗谝弧薄ⅰ暗诙钡?。如這里所使用的,這些術(shù)語被用作在它們之后的名詞的標(biāo)記,并且不暗指任何類型的排序(例如,空間的、時間的、邏輯的),除非明確這樣定義。例如,在具有五個端口的存儲器控制器中,術(shù)語“第一”和“第二”端口可以用來指代五個端口中的任何兩個端口。“基于”。如這里使用的,該術(shù)語用來描述影響確定的一個或多個因素。該術(shù)語并不排除可能影響確定的另外的因素。即,確定可以僅基于那些因素,或可以至少部分地基于那些因素??紤]短語“基于B確定A”。雖然B可以是影響A的確定的一個因素,但是,這樣的短語并不排除還基于C來確定A。在其它實例中,A可以僅基于B來確定?,F(xiàn)在參考圖1,示出圖示出集成電路(IC)的一部分的一個實施例的框圖。在所圖示的實施例中,IC 10包括一致性開關(guān)(一致性開關(guān))12、復(fù)用器14、直接存儲器訪問(direct memory access, DMA)控制器15、I/O裝置16、18和20、處理器聯(lián)合體22、非實時(non-real-time, NRT)模塊26、存儲器控制器30以及存儲器物理接口電路(PHY) 38和40。應(yīng)當(dāng)注意,IC 10也可以包括圖1中未示出的其它組件和連接。在各個實施例中,IC 10也可以稱為片上系統(tǒng)(SoC),稱為專用集成電路(ASIC)或稱為設(shè)備。IC 10中示出的組件可以使用任何適合的總線和/或接口機(jī)構(gòu)相互耦接。在一些實施例中,這些組件可以使用高級微控制總線架構(gòu)(AMBA )協(xié)議(來自ARM Holdings)或用于邏輯模塊的連接和管理的任何其它適合的片上互連規(guī)范。AMBA總線和/或接口的示例可以包括高級可擴(kuò)展接口(AXI )、高級高性能總線(AHB)、高級系統(tǒng)總線(ASB )、高級外圍總線(APB )和高級跟蹤總線(ATB )。IC 10包括一致性開關(guān)12,并且一致性開關(guān)12可以是軟件能夠動態(tài)配置的可編程開關(guān)。如圖1中所示,一致性開關(guān)12經(jīng)由NRT模塊26耦接到存儲器控制器30的端口 36。在一個實施例中,一致性開關(guān)12與NRT模塊26之間的連接可以是AXI接口。在另一實施例中,一致性開關(guān)12可以直接耦接到端口 36。在又一實施例中,一致性開關(guān)12可以經(jīng)由另一模塊或組件耦接到端口 36。一致性開關(guān)12還經(jīng)由處理器聯(lián)合體22的高級一致性端口(advanced coherency port,ACP)24稱接到存儲器控制器30的端口 32。在一個實施例中,一致性開關(guān)12可以利用AXI主接口來經(jīng)由ACP 24連接至處理器聯(lián)合體22的一致性域。在一些實施例中,一致性開關(guān)12可以是1/0 —致性橋接器(未示出)等的一部分。
一致性開關(guān)12還耦接到復(fù)用器14,并且復(fù)用器14耦接到DMA控制器15和I/O裝置16和20。復(fù)用器14還經(jīng)由DMA控制器15耦接到I/O設(shè)備18。復(fù)用器14可以包括用于緩沖來自I/O裝置16-20和/或DMA控制器15的數(shù)據(jù)的一個或多個緩沖器。在一個實施例中,復(fù)用器14可以是ARM Holdings的PL301高性能矩陣。I/O裝置16-20代表任意數(shù)量的I/O裝置,并且各種I/O裝置可以以各種方式(例如直接地,通過DMA控制器15,和/或通過另一裝置)耦接到復(fù)用器14。I/O裝置16-20與復(fù)用器14之間的連接類型的變形是可能的并且可以狗想到。在其它實施例中,復(fù)用器14可以耦接到I/O處理器、外圍I/O隊列和/或一個或多個圖1中未示出的其它裝置。一致性開關(guān)12可以接收來自I/O裝置16-20的事務(wù)并且可以將事務(wù)傳遞給處理器聯(lián)合體22或NRT模塊26。在一些實施例中,響應(yīng)于接收到事務(wù),一致性開關(guān)12可以發(fā)布對應(yīng)的存儲請求給處理器聯(lián)合體22或NRT模塊26。一般而言,交易可以包括存儲請求,并且術(shù)語“存儲請求”不限于最終由存儲器響應(yīng)的請求,而是還可以包括由緩存滿足的請求。應(yīng)當(dāng)注意,貫穿本公開,術(shù)語“存儲請求”、“事務(wù)”和“存儲操作”可以交換使用。盡管在圖1中未被示出,但是處理器聯(lián)合體22可以包括一個或多個處理器、緩存、緩存控制器、控制單元以及各種其它數(shù)量的其它元件和邏輯組件。在一些實施例中,每個處理器可以具有其自己的緩存(例如,LI緩存)。處理器聯(lián)合體22可以使得I/O裝置16-20能夠訪問系統(tǒng)存儲器,同時保持(一個或多個)緩存與系統(tǒng)存儲器之間的一致性。I/O裝置16-20可以包括配置為或能夠與處理器聯(lián)合體22和/或系統(tǒng)存儲器(未示出)交互的任何裝置。I/O裝置16-20的示例包括音頻控制器、視頻或圖形控制器、串行總線(USB)控制器、接口控制器、諸如以太網(wǎng)MAC或WiFi (IEEE 802. 11)控制器之類的聯(lián)網(wǎng)媒體訪問控制器(MAC),以及各種其它裝置。應(yīng)當(dāng)注意,I/O裝置16-20也可以稱為外圍裝置或I/O外圍件。存儲器控制器30包括端口 32、34和36,所述端口 32、34和36代表任意數(shù)量的端口。端口 32可以耦接到處理器聯(lián)合體22。在一個實施例中,端口 32可以設(shè)計成接收實時(RT)存儲請求。端口 36可以耦接到NRT模塊26。在一個實施例中,端口 36可以被指定來接收NRT存儲請求。一般而言,NRT存儲請求可以視為比存儲器控制器30的RT存儲請求的優(yōu)先級低。端口 34可以耦接到IClO的另一模塊(未示出)。例如,在一個實施例中,端口34可以耦接到RT外圍模塊。在另一實施例中,端口 34可以耦接到圖形控制器。存儲器控制器30可以包括被配置為與存儲器(未示出)接口的電路。例如,存儲器控制器30可以配置為與動態(tài)隨機(jī)訪問存儲器(DRAM)諸如同步DRAM (SDRAM)、雙倍數(shù)據(jù)速率(DDR) SDRAM、DDR2 SDRAM, Rambus DRAM (RDRAM)等接口。存儲器控制器30還可以耦接到存儲器物理接口電路(PHY)38和40。存儲器PHY38和40代表可以耦接到存儲器控制器30的任意數(shù)量的存儲器PHY。存儲器PHY38和40可以配置為與存儲器接口。存儲器控制器30可以接收來自處理器聯(lián)合體22、NRT模塊26和其它模塊(未示出)的存儲請求,并且存儲器控制器30可以執(zhí)行對應(yīng)的到存儲器的讀寫操作。一致性開關(guān)12可以使用各種方法來確定(經(jīng)由復(fù)用器14)從I/O裝置接收的事務(wù)是緩存一致事務(wù)還是非緩存一致事務(wù)。貫穿本公開,緩存一致事務(wù)可以稱為“一致事務(wù)”或“一致存儲請求”,并且非緩存一致事務(wù)可以稱為“非一致事務(wù)”或“非一致存儲請求”。一般而言,非一致事務(wù)可以對應(yīng)于不對照緩存核實的存儲操作。在一個實施例中,一致性開關(guān)12可以基于從其接收事務(wù)的那個I/O裝置來確定該事務(wù)是一致的還是非一致的。I/O裝置16-20的第一部分可以被指定為一致裝置,并且I/O裝置16-20的第二部分可以被指定為非一致裝置。在另一實施例中,一致性開關(guān)12可以基于事務(wù)標(biāo)識符來確定事務(wù)是一致的還是非一致的。每個I/O裝置可以被指定一定范圍的事務(wù)標(biāo)識符,并且這些標(biāo)識符可以被指定用作一致的或非一致的事務(wù)。在各個實施例中,I/O裝置16-20可以有權(quán)經(jīng)由經(jīng)由復(fù)用器14、一致性開關(guān)12然后通過處理器聯(lián)合體22或NRT模塊26來訪問存儲器。例如,源發(fā)I/O裝置可以發(fā)布讀或?qū)懻埱蠼o存儲器。該請求可以傳遞經(jīng)過復(fù)用器14,并且隨后一致性開關(guān)12可以接收該請求并確定該請求是應(yīng)當(dāng)被路由到處理器聯(lián)合體22 (用于一致請求)還是NRT模塊26 (用于非一致請求)。對于一致流量,處理器聯(lián)合體22可以提供探聽緩存的機(jī)制。如果存在緩存命中,則處理器聯(lián)合體22可以提供響應(yīng)給一致性開關(guān)12。如果存在緩存失中,則處理器聯(lián)合體22可以將該請求轉(zhuǎn)發(fā)給存儲器。對于非一致流量,一致性開關(guān)12可以將請求轉(zhuǎn)發(fā)給NRT模塊26并且隨后NRT模塊26可以將請求(經(jīng)由存儲器控制器30)轉(zhuǎn)發(fā)給存儲器。應(yīng)當(dāng)注意,其它實施例可以包括組件的其它組合,包括圖1中所示的組件和/或其它組件的子集或超集。盡管可以在圖1中示出給定組件的一個實例,但是其它實施例可以包括給定組件的一個或多個實例。類似地,貫穿該詳細(xì)描述,即使僅示出給定組件的一個實例也可以包括給定組件的一個或多個實例,和/或即使示出多個實例也可以使用僅包括一個實例的實施例。現(xiàn)在參考FIG. 2,示出一致性開關(guān)12的操作的一個實施例的框圖。在一個實施例中,復(fù)用器14可以將流量耦接到一致性開關(guān)12。如圖2中所示,用大寫字母“C”表示一致
事務(wù),其中下標(biāo)標(biāo)識不同的一致事務(wù)。例如,C1可以是由一致性開關(guān)12接收的第--致請
求,C2可以在C1隨后被接收到,以此類推。用大寫字母“NC”表示非一致事務(wù),其中下標(biāo)標(biāo)識不同的非一致請求。在一些實施例中,事務(wù)可以被分割到不同的分組中,并且圖2中的框可以表示或者事務(wù)或者分組 。一致性開關(guān)12可以接收來自復(fù)用器14的事務(wù)并且一致和非一致事務(wù)可以是混合的。如圖2中所示,事務(wù)可以按照如下次序到達(dá)一致性開關(guān)12 =CpC2,在一個實施例中,一致性開關(guān)12可以基于伴隨事務(wù)的標(biāo)識符將事務(wù)識別為一致的或非一致的。一致性開關(guān)12可以將一致事務(wù)(C1,C2和C3)路由至處理器聯(lián)合體22。一致性開關(guān)12可以將非一致事務(wù)(NC1和NC2)路由至NRT模塊26。以類似的方式(圖2中未示出),經(jīng)由處理器聯(lián)合體22和NRT模塊26從存儲器返回的流量在返回源發(fā)I/O裝置時,返回流量可以在一致性開關(guān)12中被交織并且在單個路徑上被遞送回復(fù)用器14?,F(xiàn)在參考圖3,示出一致性開關(guān)的一個實施例的框圖。配置單元50可以耦接到外出端口復(fù)用器52和進(jìn)入端口復(fù)用器54。在各個實施例中,單元50可以發(fā)送事務(wù)標(biāo)識符,準(zhǔn)備就緒信號、有效信號和/或其它配置和控制信號給外出端口復(fù)用器52和進(jìn)入端口復(fù)用器54。ACP隊列56可以存儲從外出端口復(fù)用器52耦接的一致事務(wù),并且隨后then ACP隊列56可以將一致事務(wù)遞送給處理器聯(lián)合體(未示出)的ACP。類似地,NRT隊列58可以存儲從外出端口復(fù)用器52耦接的非一致事務(wù),并且隨后NRT隊列58可以將一致事務(wù)遞送給NRT模塊(未示出)。ACP隊列60可以存儲從處理器聯(lián)合體耦接的一致事務(wù)返回數(shù)據(jù),并且隨后ACP隊列60可以將返回數(shù)據(jù)遞送給進(jìn)入端口復(fù)用器54。類似地,NRT隊列62可以存儲從NRT模塊耦接的非一致事務(wù)返回數(shù)據(jù),并且隨后,NRT隊列62可以將返回數(shù)據(jù)遞送給進(jìn)入端口復(fù)用器54。盡管在圖3中未示出,但是,復(fù)用器52的輸入和輸出可以包括分離的信道以用于與上游寫事務(wù)相關(guān)聯(lián)的地址和數(shù)據(jù)。在一個實施例中,進(jìn)入端口復(fù)用器54可以將與一致和非一致事務(wù)相關(guān)聯(lián)的數(shù)據(jù)混合在到I/o裝置的返回路徑上。進(jìn)入端口復(fù)用器54可以按照從ACP隊列60和NRT隊列62接收與一致和非一致事務(wù)相關(guān)聯(lián)的數(shù)據(jù)的次序來混合所述數(shù)據(jù)。在各個實施例中,隊列56-62可以是用于存儲任意數(shù)量的事務(wù)或任意數(shù)量的與事務(wù)相關(guān)聯(lián)的返回數(shù)據(jù)的任意各種大小。在一個實施例中,配置單元50可以是可經(jīng)由高級外圍總線(APB )接口等訪問的。例如,在外部裝置或處理器(未示出)上運(yùn)行的軟件可以利用APB接口 64來對配置單元50進(jìn)行編程或配置。APB接口 64可以是獨(dú)立于傳遞經(jīng)過一致性開關(guān)12的事務(wù)和數(shù)據(jù)的?,F(xiàn)在看到圖4,示出耦接到根據(jù)一個或多個實施例的一致性開關(guān)的配置單元的接口的框圖。APB接口 64可以被用來對軟件可寫寄存器72進(jìn)行寫入以更新一個或多個事務(wù)標(biāo)識符的值。軟件可寫寄存器72可以包括用于每個事務(wù)標(biāo)識符的指示符。在一個實施例中,每個事務(wù)標(biāo)識符可以是9比特長,并且軟件可寫寄存器72針對每個可能的標(biāo)識符值可以具有總共512個條目。在其它實施例中,事務(wù)標(biāo)識符可以具有不同的比特長度。影子寄存器74也可以以與軟件可寫寄存器72類似的方式被組織。應(yīng)當(dāng)注意,影子寄存器74也可以稱為配置寄存器的影子拷貝或者稱為配置寄存器的工作拷貝。在一個實施例中,響應(yīng)于系統(tǒng)或軟件復(fù)位,寄存器72和74中的全部值都可以設(shè)置為零,其中,零值對應(yīng)于一致路徑。作為復(fù)位的結(jié)果,寄存器72和74的值中的每一個可以指示對于每個事務(wù)標(biāo)識符應(yīng)該采用一致路徑。這可以是針對每個事務(wù)標(biāo)識符的默認(rèn)設(shè)置。應(yīng)當(dāng)注意,在其它實施例中,寄存器72和74中每一個的值可以對應(yīng)于一致路徑,并且零可以對應(yīng)于非一致路徑。在一個實施例中,CPU 76或78可以經(jīng)由APB接口 64寫入軟件可寫寄存器72以改變針對被指派給一個或多個I/o裝置的事務(wù)標(biāo)識符的路由設(shè)置。在另一實施例中,I/O處理器80可以經(jīng)由APB接口 64寫入軟件可寫寄存器72以改變針對不同事務(wù)標(biāo)識符的路由設(shè)置。在又一實施例中,另一裝置(未示出)可以經(jīng)由APB接口 64寫入軟件可寫寄存器72以改變針對一個或多個事務(wù)標(biāo)識符的路由設(shè)置。如圖4中所示,三個裝置(CPU 76和78以及處理器80)耦接到APB接口 64。然而,在其它實施例中,其它數(shù)量的裝置可以耦接到APB接口 64。在一個實施例中,在檢測到對軟件可寫寄存器72的改變之后,一致性開關(guān)12可以停止從(圖1的)1/0裝置16-20接受新事務(wù)。一致性開關(guān)12可以處理所有暫掛事務(wù),更新影子寄存器74來反映對軟件可寫寄存器72作出的一個或多個改變,并且隨后,一致性開關(guān)12可以開始接收來自I/O裝置16-20的新事務(wù)。配置單元50可以通過使用一個或多個計數(shù)器來保持對未完成交易的跟蹤。在一個實施例中,配置單元50可以利用第一計數(shù)器來保存未完成寫事務(wù)的計數(shù)并且配置單元50可以利用第二計數(shù)器來保持未完成讀事務(wù)的計數(shù)。當(dāng)對軟件可寫寄存器72的更新被檢測到時,配置單元50可以停止接收新事務(wù)直到所有未完成寫事務(wù)已經(jīng)被處理完為止。配置單元50可以利用第一計數(shù)器來確定所有寫事務(wù)都已經(jīng)被處理的時間。軟件可寫寄存器72中的路由指示符可以不影響讀事務(wù)的返回路徑,因此,在一些實施例中,可以不監(jiān)視多個未完成讀事務(wù)。在另一實施例中,配置單元50可以針對多個未完成一致寫事務(wù)并針對多個未完成非一致寫事務(wù)維護(hù)分開的計數(shù)器。在一個實施例中,一致性開關(guān)可以包括具有用于寫事務(wù)的分離的地址和數(shù)據(jù)總線的分割總線架構(gòu)。在這樣的實施例中,配置單元50可以利用計數(shù)器來檢測是否存在任何暫掛寫事務(wù)。在一個實施例中,計數(shù)器可以被初始化為一特定值,該特定值表示其中沒有事務(wù)暫掛的狀態(tài)。例如,對于從O計數(shù)到255的8比特計數(shù)器,計數(shù)器的特定(初始)值可以設(shè)置為128。當(dāng)事務(wù)的地址部分被接收到時,計數(shù)器可以被遞增,并且該遞增可以與和事務(wù)相關(guān)聯(lián)的數(shù)據(jù)量成比例。此外,每次寫數(shù)據(jù)拍子(beat)被接收到時,計數(shù)器可以被遞減。當(dāng)計數(shù)器等于其初始(特定)值時,這將表示未完成寫事務(wù)的所有地址和數(shù)據(jù)都已經(jīng)被一致性開關(guān)接收到并且沒有未完成的寫事務(wù)。另外,當(dāng)計數(shù)器回到初始值時,配置單元50隨后可以在對軟件可寫拷貝已經(jīng)被檢測到之后基于對軟件可寫拷貝的更新來更新配置寄存器的影子拷貝?,F(xiàn)在看到圖5,示出配置寄存器的影子拷貝一個實施例。影子寄存器74在圖5中被示出,并且(圖4的)軟件可寫寄存器72可以以與影子寄存器74類似的方式布置。影子寄存器74可以為每個地址存儲路由指示符,并且路由指示符可以是單個比特(B卩,O或I)。例如,在一個實施例中,“O”的路由指示符可以指定針對特定地址的一致路徑并且“I”的路由指示符可以指定非一致路徑。而且,在一個實施例中,地址可以是伴隨事務(wù)的9比特標(biāo)識符。在另一實施例中,事務(wù)標(biāo)識符可以映射到用來訪問影子寄存器74中的地址條目的值。路由指示符可以指示由地址值表示的對應(yīng)事務(wù)標(biāo)識符是一致的事務(wù)還是不一致的事務(wù)。在其它實施例中,路由指示符可以布爾值(即,真或假),可以用多于一個比特表示,或者可以用各種其它值或指定來表示。在另一實施例中,影子寄存器74可以被分割成多個寄存器,每個寄存器對應(yīng)于作為總地址范圍一部分的地址范圍。影子寄存器74在圖5中被示出包含512個條目,但是這僅僅用于說明目的。應(yīng)當(dāng)注意,在其它實施例中,影子寄存器74可以包括其它數(shù)量的地址條目。還應(yīng)當(dāng)注意,在其它 實施例中,影子寄存器74可以包括其它信息并且可以以任何適合的方式組織。例如,在另一實施例中,影子寄存器74的每個條目可以包括用來指示特定地址或標(biāo)識符當(dāng)前是否正被使用或處于“飛行”(即具有未完成的事務(wù))的有效字段。在各個實施例中,每個I/O裝置可以被指定將被用于事務(wù)的地址范圍。例如,一個I/o裝置可以被指定用于其事務(wù)的地址0-15,另一 I/O裝置可以被指定地址16-23等等。在一些實施例中,每個I/O裝置可以或者被指定作為一致事務(wù)源,或者被指定作為非一致事務(wù)源。在其它實施例中,個別的I/O裝置可以是一致事務(wù)和非一致事務(wù)兩者的源。在更多實施例中,具體的事務(wù)標(biāo)識符或地址可以被指定為一致事務(wù)。I/O裝置可以將一具體事務(wù)標(biāo)識符用于一致事務(wù),并隨后在將來的某個點(diǎn),I/o裝置可以決定為非一致事務(wù)使用該具體事務(wù)標(biāo)識符。I/o裝置可以更新配置寄存器的軟件可寫拷貝以改變用于具體事務(wù)的路由指示符,并且隨后,在一個實施例中,I/o裝置可以在發(fā)送非一致事務(wù)之前將阻礙指令發(fā)送給一致性開關(guān)。阻礙指令可以使得一致性開關(guān)有時間更新配置寄存器的影子拷貝以匹配軟件可寫拷貝。阻礙指令還可以用來向一致性開關(guān)通知,已經(jīng)發(fā)生了對配置寄存器的影子拷貝的更新。
在又一實施例中,對配置寄存器的軟件可寫拷貝的更新可以發(fā)生在一致性開關(guān)已經(jīng)僅接收到特定事務(wù)的地址部分之后。在此情況中,一致性開關(guān)可以不更新配置寄存器的影子拷貝,直到對于該特定事務(wù),來自相關(guān)數(shù)據(jù)流量的所有拍子都已經(jīng)被接收到。一致性開關(guān)可以利用之前描述的計數(shù)器機(jī)制來確定沒有未完成的事務(wù)的時間?,F(xiàn)在看到圖6,示出用于路由事務(wù)和操作一致性開關(guān)的方法的一個實施例。為了討論的目的,按照順序示出該實施例中的步驟。應(yīng)當(dāng)注意,在以下描述的方法的各個實施例中,所描述的元素中的一個或多個可以被并行執(zhí)行、按照與所示出的次序不同的次序執(zhí)行,或者可以完全省略。還可以按照期望執(zhí)行其它另外的元素。在一個實施例中,多個事務(wù),包括第一和第二事務(wù),可以在一致性開關(guān)處被接收(框90)。事務(wù)可以是由一個或多個I/O裝置生成的。一個或多個I/O裝置可以通過復(fù)用器、DMA控制器和/或其它裝置耦接到一致性開關(guān)。第一和第二事務(wù)可以分別伴隨有第一標(biāo)識符和第二標(biāo)識符。在接收到第一事務(wù)和第二事務(wù)之后,一致性開關(guān)可以訪問配置寄存器中的第一路由指示符和第二路由指示符(框92)。在一個實施例中,一致性開關(guān)可以利用第一標(biāo)識符和第二標(biāo)識符作為配置寄存器中分別用于訪問第一路由指示符和第二路由指示符的索引或地址。一致性開關(guān)可以響應(yīng)于確定第一路由指示符具有第一值而在第一路徑上路由第一事務(wù)(框94)。在一個實施例中,第一值可以是“0”,其指示第一事務(wù)是一致請求。第一路徑可以從一致性開關(guān)進(jìn)行到處理器聯(lián)合體的ACP。一致性開關(guān)可以響應(yīng)于第二路由指示符具有第二值而在第二路徑上路由第二事務(wù)(框96)。在一個實施例中,第二值可以好似“ I ”,其指示第二事務(wù)是非一致請求。第二路徑可以從一致性開關(guān)進(jìn)行到非實時(NRT)模塊并且隨后到存儲器控制器的NRT端口?,F(xiàn)在看到圖7,示出用于更新一致性開關(guān)的配置寄存器的方法的一個實施例。為了討論目的,按照順序示出該實施例中的步驟。應(yīng)當(dāng)注意,在以下描述的方法的各個實施例中,所描述的元素中的一個或多個可以被并行執(zhí)行、按照與所示出的次序不同的次序執(zhí)行,或者可以完全省略。還可以按照期望執(zhí)行其它另外的元素。一致性開關(guān)可以配置為檢測對配置寄存器的軟件可寫拷貝的更新(框100)。隨后,在檢測到該更新之后,一致性開關(guān)可以停止接收來自連接的I/o裝置的新事務(wù)(框102)。接著,一致性開關(guān)可以確定是否存在任何仍處于飛行狀態(tài)的未完成的事務(wù)(條件框104)。在一個實施例中,一致性開關(guān)可以諸如如上所述的計數(shù)器之類的計數(shù)器機(jī)制來確定是否存在任何未完成的事務(wù)。如之前所述,如果計數(shù)器等于預(yù)定值,則這表明所有暫掛事務(wù)已經(jīng)被處理。在其它實施例中,一致性開關(guān)可以利用其它機(jī)制來確定是否存在任何需要完成的未完成事務(wù)。如果不存在任何仍處于飛行狀態(tài)的未完成事務(wù)(條件框104),則一致性開關(guān)可以更新配置寄存器的影子拷貝(框106)。如果一致性開關(guān)確定存在仍處于飛行狀態(tài)的未完成事務(wù)(條件框104),則一致性開關(guān)可以等待直到所有未完成事務(wù)在更新影子拷貝之前被完成。在框106之后,一致性開關(guān)可以開始接收新事務(wù)(框108)。隨后,一致性開關(guān)可以接收新事務(wù)(框110)。一致性開關(guān)可以基于配置寄存器的已更新的影子拷貝來路由新事務(wù)(框112)。在一個實施例中,事務(wù)可以包括標(biāo)識符并且一致性開關(guān)可以查找配置寄存器的影子拷貝中的標(biāo)識符來找到對應(yīng)的路由指示符。
現(xiàn)在參考圖8,示出系統(tǒng)120的一個實施例的框圖。在所示出的實施例中,系統(tǒng)120包括耦接到存儲器122的集成電路10的至少一個實例。集成電路10耦接到一個或多個外圍件124和存儲器122。還設(shè)有電源126,其提供電源電壓以及一個或多個電源電壓給集成電路10、存儲器122和/或外圍件124。在其它實施例中,可以提供多于一個電源126。在一些實施例中,多可以包括集成電路10的多于一個的實例(也可以包括多于一個的存儲器122)。存儲器122可以是任意類型的存儲器,諸如動態(tài)隨機(jī)訪問存儲器(DRAM)、同步DRAM (SDRAM)、雙倍數(shù)據(jù)速率(DDR, DDR2, DDR3等)SDRAM (包括諸如mDDR3等的SDRAM的移動版本和/或諸如LPDDR2等的SDRAM低功率版本)、RAMBUS DRAM (RDRAM)、靜態(tài)RAM(SRAM)等。一個或多個存儲器裝置可以耦接到電路板上以形成存儲器模塊,諸如單列直插式內(nèi)存模塊(SMM)、雙列直插式內(nèi)存模塊(DMM)等。外圍件124可以根據(jù)系統(tǒng)120的類型包括任何期望的電路。例如,在一個實施例中,系統(tǒng)120可以是移動裝置(例如,個人數(shù)字助理(PDA)、智能手機(jī)、電子讀取裝置)并且外圍件124可以包括用于各種無線通信的裝置,例如W1-F1、藍(lán)牙、蜂窩、全球定位系統(tǒng)等。外圍件124還可以包括另外的存儲裝置,包括RAM存儲裝置、固態(tài)存儲裝置或盤存儲裝置。外圍件124可以包括諸如顯示屏(包括觸摸顯示屏或多點(diǎn)觸控顯示屏)之類的用戶接口裝置、鍵盤或其它輸入裝置、麥克風(fēng)、揚(yáng)聲器等。在其它實施例中,系統(tǒng)120可以是任何類型的計算系統(tǒng)(例如,桌面?zhèn)€人計算機(jī)、膝上計算機(jī)、工作站、視頻游戲控制臺、電視、上網(wǎng)本)。現(xiàn)在看到圖9,示出代表(圖1)的集成電路(IC) 10中包括的電路的一個或多個數(shù)據(jù)結(jié)構(gòu)的計算機(jī)可讀介質(zhì)的框圖的一個實施例。一般而言,計算機(jī)可讀介質(zhì)130可以包括任何非暫時性存儲介質(zhì),諸如磁介質(zhì)或光介質(zhì),例如,盤、CD-ROM或DVD-ROM、諸如RAM(例如SDRAM、RDRAM、SRAM等)之類的易失性或非易失性存儲介質(zhì),以及可經(jīng)由傳輸介質(zhì)訪問的媒體或諸如經(jīng)由諸如網(wǎng)絡(luò)和/或無線鏈路之類的通信介質(zhì)傳遞的諸如電信號、電磁信號或數(shù)字信號之類的信號。一般,計算機(jī)可讀介質(zhì)130上的電路的一個或多個數(shù)據(jù)結(jié)構(gòu)可以通過程序被讀取并且被直接或間接地用來構(gòu)造包括該電路的硬件。例如,這一個或多個數(shù)據(jù)結(jié)構(gòu)可以包括諸如Verilog或VHDL之類的高級設(shè)計語言(HDL)的硬件功能的一個或多個高級描述或寄存器傳輸級(RTL)描述。這一個或多個描述可以由綜合工具讀取,綜合工具可以綜合描述來產(chǎn)生包括來自綜合庫的門的列表的一個或多個網(wǎng)表。這一個或多個網(wǎng)表包括一組門,其也代表包括電路的硬件的功能。這一個或多個網(wǎng)表隨后可以被放置并被路由以產(chǎn)生描述將應(yīng)用于掩模的幾何形狀的一個或多個數(shù)據(jù)集。掩模隨后被用在各種半導(dǎo)體制造步驟中來產(chǎn)生與電路對應(yīng)的半導(dǎo)體電路??商鎿Q地,按照需要,計算機(jī)可讀介質(zhì)130上的一個或多個數(shù)據(jù)結(jié)構(gòu)可以是一個或多個網(wǎng)表(帶有或不帶有綜合庫)或一個或多個數(shù)據(jù)集。在另一替代例中,數(shù)據(jù)結(jié)構(gòu)可以包括從其得出的示意性程序或網(wǎng)表或數(shù)據(jù)集的輸出。盡管計算機(jī)可讀介質(zhì)130包括IC 10的表示,但是其它實施例可以包括IC 10的任何部分或部分組合的表示(例如,例如,一致性開關(guān)12、復(fù)用器14、處理器聯(lián)合體22、NRT框26、存儲器控制器30)。應(yīng)當(dāng)強(qiáng)調(diào)的是,上述實施例僅僅是實現(xiàn)方式的非限制性示例。一旦完全明白以上公開,則許多變形例和修改例對于本領(lǐng)域技術(shù)人員將變得顯而易見。意圖以下權(quán)利要求解 釋成包括所有這樣的變形例和修改例。
權(quán)利要求
1.一種設(shè)備,包括 存儲器控制器,包括多個端口 ; 處理器聯(lián)合體,耦接到所述多個端口中的第一端口 ; 一個或多個輸入/輸出(I/O)裝置;以及 一致性開關(guān),耦接為接收來自該一個或多個I/o裝置的事務(wù); 其中,所述一致性開關(guān)配置為 響應(yīng)于確定所接收的事務(wù)是一致事務(wù),將該事務(wù)路由到所述處理器聯(lián)合體;以及響應(yīng)于確定所接收的事務(wù)是非一致事務(wù),將所接收的事務(wù)路由到所述存儲器控制器的多個端口中的第二端口。
2.如權(quán)利要求1所述的設(shè)備,其中,所述一致性開關(guān)配置為基于與所接收的事務(wù)對應(yīng)的標(biāo)識符來確定所接收的事務(wù)是否是一致事務(wù)。
3.如權(quán)利要求1所述的設(shè)備,其中,所述處理器聯(lián)合體配置為經(jīng)由一致端口從所述一致性開關(guān)接收一致事務(wù),并且其中,所述處理器聯(lián)合體配置為一致地執(zhí)行一致事務(wù)緩存。
4.如權(quán)利要求1所述的設(shè)備,其中,所述一致性開關(guān)經(jīng)由復(fù)用器耦接到所述多個I/O裝置。
5.如權(quán)利要求1所述的設(shè)備,其中,所述存儲器控制器配置為 在該第一端口上接收實時存儲請求;以及 在該第二端口上接收非實時存儲請求。
6.如權(quán)利要求5所述的設(shè)備,其中,所述存儲器控制器配置為在所述多個端口中的每個端口上并行地接收事務(wù)。
7.如權(quán)利要求1所述的設(shè)備,其中,所述處理器聯(lián)合體包括一個或多個緩存,并且其中,所述處理器聯(lián)合體配置為經(jīng)由所述一致性端口來探聽所接收的事務(wù)。
8.—種設(shè)備,包括 一致性開關(guān); 處理器聯(lián)合體,包括一個或多個處理器; 存儲器控制器,耦接到所述處理器聯(lián)合體和所述一致性開關(guān);以及 多個I/O裝置; 其中,所述一致性開關(guān)配置為 接收來自所述多個I/O裝置的多個事務(wù); 至少部分地基于存儲在配置寄存器的影子拷貝中的值來選擇第一路徑或者第二路徑以用于路由所接收的事務(wù);以及 響應(yīng)于檢測到所述配置寄存器的更新來更新所述配置寄存器的所述影子拷貝。
9.如權(quán)利要求8所述的設(shè)備,其中,所述第一路徑經(jīng)過所述處理器聯(lián)合體到所述存儲器控制器的第一端口,并且其中,所述第二路徑繞過所述處理器聯(lián)合體。
10.如權(quán)利要求8所述的設(shè)備,其中,所述配置寄存器是軟件可寫的,并且其中,來自所述處理器聯(lián)合體的給定處理器配置為更新所述配置寄存器。
11.如權(quán)利要求8所述的設(shè)備,其中,所述配置寄存器是軟件可寫的,并且其中,所述設(shè)備還包括位于所述處理器聯(lián)合體外部的、配置為更新所述配置寄存器的I/O處理器。
12.如權(quán)利要求8所述的設(shè)備,其中,所述設(shè)備還包括復(fù)用器,并且其中,所述一致性開關(guān)還配置為 接收兩個分離的端口上的返回數(shù)據(jù); 將從所述兩個分離的端口接收的數(shù)據(jù)混合;以及 將混合后的數(shù)據(jù)在單個路徑上遞送給所述復(fù)用器。
13.如權(quán)利要求12所述的設(shè)備,其中,所述復(fù)用器耦接到所述多個I/O裝置。
14.如權(quán)利要求8所述的設(shè)備,其中,所述值是單個比特。
15.如權(quán)利要求8所述的設(shè)備,其中,伴隨事務(wù)的標(biāo)識符被用作所述配置寄存器的所述影子拷貝中的用來訪問相應(yīng)值的索引。
16.—種方法,包括 在一致性開關(guān)處接收第一事務(wù)和第二事務(wù),其中,第一標(biāo)識符伴隨該第一事務(wù),并且其中,第二標(biāo)識符伴隨該第二事務(wù); 使用該第一標(biāo)識符來訪問配置寄存器中的第一路由指示符,并且使用該第二標(biāo)識符來訪問所述配置寄存器中的第二路由指示符; 響應(yīng)于所述第一路由指示符具有第一值來在第一路徑上路由所述第一事務(wù);以及響應(yīng)于所述第二路由指示符具有第二值來在第二路徑上路由所述第二事務(wù),其中,該第二值與該第一值不同。
17.如權(quán)利要求16所述的方法,其中,該第一路徑經(jīng)過處理器聯(lián)合體到達(dá)存儲器控制器的第一端口,并且其中,該第二路徑耦接到所述存儲器控制器的第二端口而不經(jīng)過所述處理器聯(lián)合體。
18.如權(quán)利要求16所述的方法,其中,該第一值表明該第一事務(wù)是一致事務(wù),并且其中,該第二值表明該第二事務(wù)是非一致事務(wù)。
19.如權(quán)利要求16所述的方法,還包括 檢測對所述配置寄存器的軟件可寫拷貝的更新;以及 基于對所述配置寄存器的軟件可寫拷貝的所述更新來更新所述配置寄存器的影子拷貝。
20.如權(quán)利要求19所述的方法,其中,對所述配置寄存器的軟件可寫拷貝的更新是通過將所述配置寄存器的軟件可寫拷貝與所述配置寄存器的影子拷貝比較來檢測的。
21.—種系統(tǒng),包括 處理器聯(lián)合體,包括一個或多個處理器; 一致性開關(guān),耦接到所述處理器聯(lián)合體; 復(fù)用器,耦接到所述一致性開關(guān); 多個I/O裝置,耦接到所述復(fù)用器; 存儲器控制器,包括多個端口,其中,所述存儲器控制器耦接到所述處理器聯(lián)合體和所述一致性開關(guān);以及 存儲器,耦接到所述存儲器控制器; 其中,所述一致性開關(guān)配置為 經(jīng)由所述復(fù)用器接收來自所述多個I/O裝置的多個事務(wù); 針對每個事務(wù),確定該事務(wù)是一致事務(wù)還是非一致事務(wù); 響應(yīng)于確定所接收的事務(wù)是一致事務(wù),將所接收的事務(wù)轉(zhuǎn)發(fā)給所述處理器聯(lián)合體;以及 響應(yīng)于確定所接收的事務(wù)是非一致事務(wù),將所接收的事務(wù)轉(zhuǎn)發(fā)給所述存儲器控制器。
22.如權(quán)利要求21所述的系統(tǒng),其中,所述一致性開關(guān)還配置為 監(jiān)視若干未完成的寫事務(wù); 檢測對配置寄存器的暫掛更新,其中,所述配置寄存器為每個事務(wù)確定路由路徑; 停止從所述多個I/O裝置接收新事務(wù); 響應(yīng)于確定所有未完成的寫事務(wù)已經(jīng)被路由 實施對所述配置寄存器的所述暫掛更新;以及 從所述多個I/O裝置接收新事務(wù)。
23.如權(quán)利要求22所述的系統(tǒng),其中,對所述配置寄存器的所述暫掛更新僅應(yīng)用于所述多個I/o裝置的第一部分,其中,所述多個I/O裝置的第二部分不受對所述配置寄存器的所述暫掛更新的影響,并且其中,響應(yīng)于檢測到對所述配置寄存器的所述暫掛更新,所述一致性開關(guān)配置為 停止從所述多個I/o裝置的第一部分接收新事務(wù);以及 從所述I/o裝置的第二部分接收新事務(wù)。
24.如權(quán)利要求22所述的系統(tǒng),其中,其中,所述一致性開關(guān)還配置為 監(jiān)視多個未完成的一致寫事務(wù);以及 監(jiān)視多個未完成的非一致寫事務(wù)。
全文摘要
本公開涉及一種用于I/O流量的一致性開關(guān)。一種用于在SoC中將流量從I/O裝置路由到存儲器的系統(tǒng)、設(shè)備和方法。一致性開關(guān)通過處理器聯(lián)合體上的一致性端口將一致流量路由至存儲器控制器的實時端口。一致性開關(guān)將非一致流量路由到存儲器控制器的非實時端口。一致性開關(guān)還可以在兩個路徑之間動態(tài)切換。流量的路由可以經(jīng)由配置寄存器來配置,并且盡管軟件能夠發(fā)起對配置寄存器的更新,但是實際的一致性開關(guān)硬件將實施該更新。軟件可以對配置寄存器的軟件可寫拷貝進(jìn)行寫入來發(fā)起針對事務(wù)標(biāo)識符的對到存儲器的流路徑的更新,并且,隨后,一致性開關(guān)更新配置寄存器的工作拷貝并實施該新路由。
文檔編號G06F13/16GK103049406SQ20121033163
公開日2013年4月17日 申請日期2012年9月7日 優(yōu)先權(quán)日2011年9月7日
發(fā)明者T·J·米利特, M·肯徹納, S·S·德塞 申請人:蘋果公司