欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

具有指令和數(shù)據(jù)的懸停(h)狀態(tài)的高速緩存相關(guān)協(xié)議的制作方法

文檔序號:6416211閱讀:327來源:國知局
專利名稱:具有指令和數(shù)據(jù)的懸停(h)狀態(tài)的高速緩存相關(guān)協(xié)議的制作方法
技術(shù)領(lǐng)域
本發(fā)明一般涉及一種用于數(shù)據(jù)處理的方法和系統(tǒng),具體涉及一種在多處理器數(shù)據(jù)處理系統(tǒng)中保持數(shù)據(jù)相關(guān)的方法和系統(tǒng)。而更具體地,本發(fā)明涉及一種用于多處理器數(shù)據(jù)處理系統(tǒng)的高速緩存相關(guān)協(xié)議,其中包括一懸停(H)狀態(tài),該狀態(tài)允許以有效數(shù)據(jù)修改第一高速緩存,以響應(yīng)第二高速緩存獨立發(fā)送該有效數(shù)據(jù)至一耦合第一和第二高速緩存的互連部件上。
在常規(guī)的對稱多處理器(SMP)數(shù)據(jù)處理系統(tǒng)中,所有的處理器通常是相同的,即,這些處理器都采用公共的指令集和通信協(xié)議,具有相似的硬件結(jié)構(gòu),并且一般配備有類似的存儲器層次。例如,一常規(guī)SMP數(shù)據(jù)處理系統(tǒng)可以包括一系統(tǒng)存貯器、多個處理部件和一系統(tǒng)總線,其中每個處理部件包括一處理器和一級或多級高速緩沖存貯器,該系統(tǒng)總線將一處理部件耦合至每一其它處理部件和系統(tǒng)存貯器。為了在SMP數(shù)據(jù)處理系統(tǒng)中獲得有效的執(zhí)行結(jié)果,重要的是保持相關(guān)存貯器層次,即,為所有的處理部件提供存貯器內(nèi)容的單一視圖。
通過使用一選擇的存貯器相關(guān)協(xié)議,例如MESI協(xié)議的應(yīng)用來保持相關(guān)存貯器層次。在該MESI協(xié)議中,一相關(guān)狀態(tài)的指示被與至少所有較高級的(高速緩沖)存貯器的每一相關(guān)區(qū)組(例如,高速緩存行或區(qū)段)相關(guān)聯(lián)地存儲,每個相關(guān)區(qū)組可以具有四個狀態(tài)中的一個狀態(tài),即修改(M)、專用(E)、共享(S)或無效(I),它們在高速緩存目錄中由兩位表示。該修改狀態(tài)表示一相關(guān)區(qū)組僅在存儲該被修改相關(guān)區(qū)組的高速緩存中有效并且該被修改的相關(guān)區(qū)組的值還未寫到系統(tǒng)存貯器。當一相關(guān)區(qū)組被指示為專用狀態(tài)時,則在存貯器層次的這一級的所有高速緩存中,該相關(guān)區(qū)組僅駐留在具有該處于專用狀態(tài)的相關(guān)區(qū)組的高速緩存中。但是在專用狀態(tài)中的數(shù)據(jù)與系統(tǒng)存貯器一致。如果在高速緩存目錄中一相關(guān)區(qū)組被標志為共享,則該相關(guān)區(qū)組駐留在其相關(guān)聯(lián)的高速緩存中以及至少一個位于存貯器層次同一級的其它高速緩存中,該相關(guān)區(qū)組的所有這些拷貝與系統(tǒng)存貯器一致。最后,所述無效狀態(tài)指示與一相關(guān)區(qū)組相關(guān)聯(lián)的數(shù)據(jù)和地址標志都是無效的。
每個相關(guān)區(qū)組(例如高速緩存行)被設(shè)置的狀態(tài)依賴于該高速緩存行的在先狀態(tài)和請求處理器想要的存貯器訪問的類型。因此,在多處理器數(shù)據(jù)處理系統(tǒng)中保持存貯器相關(guān)就需要這些處理器經(jīng)由系統(tǒng)總線傳送指示它們讀或?qū)懘鎯卧囊鈭D的消息。例如,當一處理器想要將數(shù)據(jù)寫到一存儲單元時,為了實現(xiàn)該寫操作,該處理器必須首先將其把數(shù)據(jù)寫到該存貯單元的意圖通知所有其它處理部件并且從所有其它處理部件接收許可。由該請求處理器接收的這些許可消息表示該存貯單元內(nèi)容的所有其它的高速緩存拷貝已經(jīng)被無效,由此保證其它處理器將不訪問失效的局部數(shù)據(jù)。這種消息交換就是公知的交叉-無效(cross-invalidation)(Ⅺ)。
本發(fā)明知道的是,雖然高速緩存項的交叉-無效足以維持SMP數(shù)據(jù)處理系統(tǒng)中的存貯器相關(guān),但是,遠程處理器的高速緩存項的無效因降低局部高速緩存中的命中率而對數(shù)據(jù)處理系統(tǒng)的性能產(chǎn)生不利影響。因此,即使配置大的局部高速緩存,但是當一處理部件從另一處理部件的遠程高速緩存或者系統(tǒng)存貯器中檢索曾經(jīng)駐留在局部高速緩存中的數(shù)據(jù)時,前述欲檢索數(shù)據(jù)的處理部件也要承擔長的訪問等待時間。因此,如將會明顯地看到的那樣,最好是提供一種方法和系統(tǒng),用于在SMP數(shù)據(jù)處理系統(tǒng)中保持存貯器相關(guān),該方法和系統(tǒng)減小了由于高速緩存項的交叉-無效的結(jié)果而招致的性能惡化。
因此,本發(fā)明的一個目的是提供一種改進的用于數(shù)據(jù)處理的方法和系統(tǒng)。
本發(fā)明的另一個目的是提供一種改進的用于在多處理器數(shù)據(jù)處理系統(tǒng)中保持數(shù)據(jù)相關(guān)的方法和系統(tǒng)。
本發(fā)明的再一個目的是提供一種用于多處理器數(shù)據(jù)處理系統(tǒng)的高速緩存相關(guān)協(xié)議,該協(xié)議包括一懸停(H)狀態(tài),該狀態(tài)允許第一高速緩存被以有效數(shù)據(jù)修改,以響應(yīng)第二高速緩存獨立發(fā)送該有效數(shù)據(jù)至耦合第一和第二高速緩存的互連部件上。
前面的目的的實現(xiàn)將如下所述。一數(shù)據(jù)處理系統(tǒng)包括多個處理器,其中每個處理器與多個高速緩存中相應(yīng)的一個相關(guān)聯(lián)。根據(jù)本發(fā)明的方法,一個數(shù)據(jù)項與表示該數(shù)據(jù)項的地址的一地址標志相關(guān)聯(lián)地存儲在第一高速緩存中。在第一高速緩存中的一相關(guān)指示符被設(shè)置為第一狀態(tài),該第一狀態(tài)指示該數(shù)據(jù)項有效。在該相關(guān)指示符被設(shè)置為第一狀態(tài)的時候,響應(yīng)另一高速緩存指示想要存儲至由該地址標志指示的地址,在第一高速緩存中的相關(guān)指示符被修改至第二狀態(tài),該第二狀態(tài)指示該地址標志有效而該第一高速緩存中的數(shù)據(jù)項無效。此后,根據(jù)一個實施例,在該相關(guān)指示符設(shè)置為該第二狀態(tài)時,響應(yīng)與由該地址標志指示的地址相關(guān)的數(shù)據(jù)傳輸?shù)臋z測,通過與該地址標志相關(guān)聯(lián)地在所述第一高速緩存中存儲一個第二數(shù)據(jù)項而代替第一高速緩存中的該數(shù)據(jù)項。另外,將該相關(guān)指示符更新為第三狀態(tài),該第三狀態(tài)表示該第二數(shù)據(jù)項有效。
本發(fā)明的上述及其它的目的、特性和優(yōu)點將在下面的詳細描述中變得明白。
新的性能所認為的本發(fā)明的特征描述于后附的權(quán)利要求中。但是,本發(fā)明本身,所用的最佳實施例以及其它的目的和優(yōu)點將最好是結(jié)合附圖并參照下面的說明性實施例的詳細描述來理解,其中

圖1描述了根據(jù)本發(fā)明的多處理器數(shù)據(jù)處理系統(tǒng)的一說明性實施例;圖2是描述根據(jù)本發(fā)明的高速緩存的說明性實施例的方框圖;圖3是描述本發(fā)明的H-MESI存貯器相關(guān)協(xié)議的說明性實施例的狀態(tài)圖。
現(xiàn)在參照附圖,特別參照圖1,圖1說明了根據(jù)本發(fā)明的多處理器數(shù)據(jù)處理系統(tǒng)的高級方框圖。如圖所示,數(shù)據(jù)處理系統(tǒng)8包括多個處理器10a-10n,其中每個處理器最好由來自IBM公司的Power PCTM系列處理器的其中之一構(gòu)成。除了常規(guī)寄存器、指令流邏輯和用于執(zhí)行程序指令的執(zhí)行部件外,每個處理器10a-10n還包括板上一級(L1)高速緩存12a-12n中相關(guān)聯(lián)的一個高速緩存,這個高速緩存臨時存儲很可能被相關(guān)聯(lián)的處理器訪問的指令和數(shù)據(jù)。雖然在圖1中L1高速緩存12a-12n被圖解為存儲指令和數(shù)據(jù)(此后這二者被簡單地稱作數(shù)據(jù))的一體化的高速緩存,但是本領(lǐng)域的技術(shù)人員將明白的是,L1高速緩存12a-12n中的每一個都能替換地實現(xiàn)為分開的指令和數(shù)據(jù)高速緩存。
為了最小化數(shù)據(jù)訪問等待時間,數(shù)據(jù)處理系統(tǒng)8還包括一級或多級附加的高速緩存,例如二級(L2)高速緩存14a-14n,它們用于分級至L1高速緩存12a-12n的數(shù)據(jù)。換句話說,L2高速緩存14a-14n用作系統(tǒng)存貯器18和L1高速緩存12a-12n的中間存儲器,并且它們通常存儲比L1高速緩存12a-12n大的多的數(shù)據(jù)量,但需要較長的訪問等待時間。例如,L2高速緩存14a-14n可以具有256或512KB的存貯容量,而L1高速緩存可以具有64或128KB的存貯容量。如上所述,雖然圖1中僅示出了兩級高速緩存,但是,數(shù)據(jù)處理系統(tǒng)8的存貯層次可以被擴展至包括串聯(lián)的附加級(L3、L4,等等)高速緩存或者后備高速緩存。
如圖所示,數(shù)據(jù)處理系統(tǒng)8還包括I/O設(shè)備20、系統(tǒng)存貯器18、以及非易失性存貯器22,它們都耦合至互連部件16。I/O設(shè)備20包括諸如顯示設(shè)備、鍵盤和圖形指示器等常規(guī)外圍設(shè)備,它們都通過常規(guī)適配器連接至互連部件16。非易失性存儲器22存儲操作系統(tǒng)和其它軟件,響應(yīng)數(shù)據(jù)處理系統(tǒng)8被加電它們被加載到易失性的系統(tǒng)存貯器18。當然,本領(lǐng)域的技術(shù)人員將明白的是,數(shù)據(jù)處理系統(tǒng)8能夠包括許多圖1中未示出的其它部件,諸如用于至網(wǎng)絡(luò)或所接設(shè)備的連接的串并口、管理對系統(tǒng)存儲器18的訪問的存貯控制器,等等。
互連部件16可由一個或多個總線或一交叉點開關(guān)組成,該互連部件作為用于在L2高速緩存14a-14n系統(tǒng)存貯器18、輸入/輸出(I/O)設(shè)備20、和非易失性存貯器之間的通信事務(wù)的管道。在互連部件16上的一個典型通信事務(wù)包括指示該事務(wù)的源的一個源標志、指定該事務(wù)的預(yù)計的接受者的一個目的標志、一地址和/或數(shù)據(jù)。耦合到互連部件16的每個設(shè)備最好都探聽在互連部件16上的所有通信事務(wù)。
現(xiàn)在參見圖2,圖2描述了根據(jù)本發(fā)明的L2高速緩存14的一說明性實施例的較詳細的方框圖。在該說明性實施例中,L2高速緩存14是采用32位地址的四路組相關(guān)高速緩存。因此,L2高速緩存14的數(shù)據(jù)陣列34包括許多同余類(congruence class),每個同余類含有用于存儲高速緩存行的4個路。如常規(guī)組相關(guān)高速緩存那樣,采用在存貯單元地址范圍內(nèi)的索引位(例如32位地址的20-26位),系統(tǒng)存貯器18的存貯單元被映射到特定的同余類。
在數(shù)據(jù)陣列34內(nèi)存儲的高速緩存行記錄在高速緩存目錄32中,該目錄包括用于數(shù)據(jù)陣列34的每一路的一個目錄項。每個目錄項包括標志字段40、相關(guān)狀態(tài)字段42、最近最少使用(LRU)字段44和包含字段46。標志字段40通過存儲該高速緩存行的系統(tǒng)存貯器地址的標志位(例如0-19位)來確定哪個高速緩存行存儲在數(shù)據(jù)陣列34的相應(yīng)路中。如下面將參照圖3詳細討論的那樣,相關(guān)狀態(tài)字段42利用預(yù)定義的位組合來表示存儲在數(shù)據(jù)陣列34的相應(yīng)路中的數(shù)據(jù)的相關(guān)狀態(tài)。LRU字段44指示最近數(shù)據(jù)陣列34的相應(yīng)路相對于其同余類的其它路已經(jīng)如何被訪問,由此指示哪個高速緩存行應(yīng)從該同余類中舍去以響應(yīng)一高速緩存未命中。最后,包含字段46指示存儲在數(shù)據(jù)陣列34的相應(yīng)路中的高速緩存行是否還存儲在相關(guān)聯(lián)的L1高速緩存12中。
再參照圖2,L2高速緩存14還包括高速緩存控制器36,它根據(jù)從相關(guān)聯(lián)的L1高速緩存12接收的信號以及在互連部件16上探聽的事務(wù)而管理在數(shù)據(jù)陣列34中的數(shù)據(jù)的存儲和檢索以及對高速緩存目錄32的修改。如圖所示,高速緩存控制器36含有一讀隊列50和一寫隊列52,從這兩個隊列中高速緩存控制器36執(zhí)行對高速緩存目錄32的修改以及對數(shù)據(jù)陣列34的訪問。例如,響應(yīng)從關(guān)聯(lián)的L1高速緩存12接收一讀操作,高速緩存控制器36將該讀操作放在讀隊列50的一個項中。高速緩存控制器36通過提供所請求的數(shù)據(jù)至關(guān)聯(lián)的L1高速緩存12而滿足該讀請求的需要,并且然后將該讀請求從讀隊列50中刪除。作為另一個例子,高速緩存控制器36可以探聽到一由L2高速緩存14a-14n中另一個啟動的表示一遠程處理器10想要修改其本地的一特定高速緩存行的拷貝的事務(wù)。響應(yīng)于該探聽的事務(wù),高速緩存控制器36在讀隊列50中放入一個讀高速緩存目錄32的請求以便確定該特定高速緩存行是否駐留在數(shù)據(jù)陣列34中。如果是那樣的話,高速緩存控制器36發(fā)出一適當?shù)捻憫?yīng)到互連部件16上,并且如果需要,插入一目錄寫請求到寫隊列52中,當其被服務(wù)時,修改與該特定高速緩存行相關(guān)聯(lián)的相關(guān)狀態(tài)字段。雖然圖2示出了在其中僅使用一個讀隊列和一個寫隊列的實施例,但是應(yīng)該明白,高速緩存控制器36采用的隊列數(shù)只是設(shè)計選擇的問題,并且高速緩存控制器36可以為高速緩存目錄訪問和數(shù)據(jù)陣列訪問采用單獨的隊列。
高速緩存控制器36還包括模式寄存器60,如下面更詳細地的描述那樣,該模式寄存器由一位或多位組成,所述一位或多位的設(shè)置控制高速緩存控制器36的操作。另外,高速緩存控制器36包括性能監(jiān)視器70。性能監(jiān)視器70裝配有性能視計數(shù)器(PMCO-PMCn)72,當啟動時,這些計數(shù)器遞增以響應(yīng)由一個或多個控制寄存器(CRO-CRm)74確定的一個事件或事件的組合的每一次發(fā)生。可由PMC72計數(shù)以響應(yīng)CR74的設(shè)置的這些事件包括高速緩存命中、高速緩存未命中、特定隊列中的項數(shù)、L2高速緩存命中的訪問等待時間、L2高速緩存未命中的訪問等待時間,等等。PMC72和CR74中的每一個最好是可由相關(guān)聯(lián)的處理器10通過加載和存儲指令來讀和寫的存貯映象寄存器。
現(xiàn)在參見圖3,圖中描述了根據(jù)本發(fā)明的H-MESI存貯器相關(guān)協(xié)議的一說明性實施例。該H-MESI協(xié)議最好只由存貯層次中最低級的高速緩存(例如,在圖1的數(shù)據(jù)處理系統(tǒng)8的實施例中的L2高速緩存14a-14n)實現(xiàn),而較高級的高速緩存最好實現(xiàn)常規(guī)的MESI協(xié)議。但是,在數(shù)據(jù)處理系統(tǒng)8的另一實施例中,H-MESI協(xié)議能夠以額外的高速緩存之間的通信量為代價而在存貯層次的每一級高速緩存中實現(xiàn)。
如圖3所示,H-MESI存貯器相關(guān)協(xié)議包括常規(guī)的MESI協(xié)議的修改(M)、專用(E)、共享(S)和無效(I)狀態(tài),它們分別由參考號80、82、84、86標識。另外,本發(fā)明的H-MESI存貯器相關(guān)協(xié)議包括懸停(H)狀態(tài)90,H狀態(tài)指示存儲在相關(guān)聯(lián)的標志字段40中的地址標志有效而存儲在數(shù)據(jù)陣列34的相應(yīng)路中的數(shù)據(jù)項(例如高速緩存行或高速緩存區(qū)段)無效。
在一最佳實施例中,任一L2高速緩存目錄32的每一項的相關(guān)狀態(tài)字段42在加電時被初始化為I狀態(tài)86,以便指示標志字段40和存儲在數(shù)據(jù)陣列34的相應(yīng)路中的數(shù)據(jù)都是無效的。類似地,根據(jù)常規(guī)MESI協(xié)議,L1高速緩存目錄項也被初始化為無效狀態(tài)。此后,根據(jù)由處理器10a-10n產(chǎn)生的存貯器請求的類型和存貯層次對這些請求的響應(yīng),處于無效狀態(tài)86的存儲于L2高速緩存14a-14n的其中之一的一高速緩存行(或高速緩存區(qū)段)的相關(guān)狀態(tài)能夠修改為M狀態(tài)80、E狀態(tài)82或S狀態(tài)84的其中之一。
例如,如果處理器10a產(chǎn)生一讀請求以響應(yīng)一加載指令,則L1高速緩存12a首先確定所請求的數(shù)據(jù)是否駐留在L1高速緩存12a中。響應(yīng)在L1高速緩存12a中的命中,L1高速緩存12a簡單地將所請求數(shù)據(jù)提供給處理器10a。但是,響應(yīng)在L1高速緩存12a中的未命中,L1高速緩存12a通過高速緩存之間的連接發(fā)送該讀請求至L2高速緩存14a。響應(yīng)在L2高速緩存14a中的命中,所請求的數(shù)據(jù)被L2高速緩存14a提供至L1高速緩存12a,L1高速緩存12a與適當?shù)腗ESI相關(guān)狀態(tài)結(jié)合地存儲所請求數(shù)據(jù)并且發(fā)送所請求數(shù)據(jù)至處理器10a。但是,如果該讀請求在L1高速緩存12a和L2高速緩存14a中都未命中,則L2高速緩存14a的高速緩存控制器36作為一事務(wù)發(fā)出該讀請求到互連部件16上,該事務(wù)被每個L2高速緩存14b-14n探聽。
根據(jù)探聽在互連部件16上的該讀請求,在每個L2高速緩存14b-14n中的高速緩存控制器36確定所請求數(shù)據(jù)是否駐留在其數(shù)據(jù)陣列34或者L2高速緩存12b-12n中相關(guān)聯(lián)的一個中。如果L2高速緩存14b-14n或者L1高速緩存12b-12n都未存儲所請求數(shù)據(jù),則每個L2高速緩存14a-14n返回一空響應(yīng)至L2高速緩存14a,然后L2高速緩存14a從系統(tǒng)存貯器18中請求該數(shù)據(jù)。當所請求數(shù)據(jù)從系統(tǒng)存儲器18返回到L2高速緩存14a時,高速緩存控制器36發(fā)送所請求數(shù)據(jù)至L1高速緩存12a,存儲所請求數(shù)據(jù)到其數(shù)據(jù)陣列34中,并且如參考號100所示,修改與存儲所請求數(shù)據(jù)的路相關(guān)聯(lián)的相關(guān)狀態(tài)字段42從I狀態(tài)86至E狀態(tài)82。如在常規(guī)MESI協(xié)議中那樣,E狀態(tài)82表示關(guān)聯(lián)的高速緩存行有效并且沒有駐留在存貯層次第二級的任何其它高速緩存中。
類似地,如果任一L1高速緩存12b-12n或者L2高速緩存14b-14n存儲所請求數(shù)據(jù)在E狀態(tài)82或S狀態(tài)84,并且因此對由L2高速緩存發(fā)送到互連部件16上的該讀請求指示“共享”響應(yīng),則L2高速緩存14a從系統(tǒng)存貯器18中檢索所請求數(shù)據(jù)。但是,在這種情況下,在存儲所請求數(shù)據(jù)的L2高速緩存14a中的路的相關(guān)狀態(tài)從I狀態(tài)86變換到S狀態(tài)84,如參考號102所示。存儲所請求數(shù)據(jù)于E狀態(tài)82的其它L2高速緩存14也修改至S狀態(tài)84,如參考號104所示。
如果處理器10a請求的數(shù)據(jù)沒有駐留在L1高速緩存12a和L2高速緩存14a中,而是例如在L1高速緩存12n中存儲為M狀態(tài)80,則L2高速緩存12n的高速緩存控制器36用一重試回答該讀請求并且發(fā)信號通知L1高速緩存12n將所請求數(shù)據(jù)推入存貯器。然后,在L1高速緩存12n和L2高速緩存14n中所請求數(shù)據(jù)的相關(guān)狀態(tài)被修改至S狀態(tài)84,如參考號106所示。此后,當L2高速緩存14a重試該讀請求到互連部件16上時,如上所述,L2高速緩存14n回答一共享響應(yīng)并且L2高速緩存14a從系統(tǒng)存貯器18中獲取所請求數(shù)據(jù)。在支持所謂的修改干預(yù)的另一實施例中,所請求數(shù)據(jù)由L2高速緩存14n的高速緩存控制器36而不是系統(tǒng)存貯器18來發(fā)送,因而減少了訪問等待時間。
如果L1高速緩存12a不是發(fā)出一讀請求,而是發(fā)出一表示處理器10a想要獲得一存貯單元的專用權(quán)以便修改該單元的“想要修改的讀”請求,則就會接著發(fā)生上述的獲得含有該特定存貯單元的高速緩存行的處理。但是,當獲得所請求的高速緩存行時,L1高速緩存12a存儲所請求高速緩存行在修改狀態(tài)。另外,由于該“想要修改的讀”事務(wù)表示所請求的高速緩存行的其它拷貝將變?yōu)殛惻f的,因此,其它的L1和L2高速緩存必須將它們的所請求高速緩存行的拷貝表示為無效。在L1高速緩存12b-12n中,所請求高速緩存行的任何拷貝都簡單地標志為無效。但是,存儲在L2高速緩存14b-14n中的該請求高速緩存行的拷貝的相關(guān)狀態(tài)不是象常規(guī)的利用交叉-無效(Ⅺ)的多處理器數(shù)據(jù)處理系統(tǒng)那樣被修改為I狀態(tài)86。但是,根據(jù)本發(fā)明的一個重要方面,存儲該請求高速緩存行的拷貝的各個L2高速緩存14b-14n將與其拷貝相關(guān)聯(lián)的相關(guān)狀態(tài)字段42從任意的R狀態(tài)92、S狀態(tài)84、M狀態(tài)80、或者E狀態(tài)82分別修改為H狀態(tài)90,如參考號110、112、114所示。如上所述,H狀態(tài)90指示存儲在標志字段40中的標志保持有效,但在數(shù)據(jù)陣列34中相關(guān)聯(lián)的高速緩存行無效。類似地,響應(yīng)其它被探聽的要求使數(shù)據(jù)無效的事務(wù),在高速緩存目錄32中的項也被修改至H狀態(tài)90,前述的事務(wù)包括清除(Kill)(即,明確地使一特定數(shù)據(jù)塊無效的事務(wù))、清空(flush)(即,使一特定數(shù)據(jù)塊無效并且拷貝任一修改數(shù)據(jù)至系統(tǒng)存貯器的事務(wù))、dclaim(即,根據(jù)一高速緩存行的局部拷貝變成修改狀態(tài)以響應(yīng)一存儲,使在遠程高速緩存中標志為共享的該高速緩存行的拷貝無效的事務(wù)),等等。
如參考號116、118、120所示,根據(jù)一高速緩存接收的事務(wù)類型,該高速緩存的目錄項可以從H狀態(tài)90分別變換到E狀態(tài)82、M狀態(tài)80、或者S狀態(tài)84。例如,根據(jù)產(chǎn)生一讀請求的處理器10a(在未命中于L1高速緩存12a和L2高速緩存14a之后)接收一來自L2高速緩存14b-14n的空響應(yīng),處理H狀態(tài)90的L2高速緩存14a的一目錄項產(chǎn)生一個至E狀態(tài)82的轉(zhuǎn)換(如參考號86所示),這是因為所有的L2高速緩存14a-14n當中,從系統(tǒng)存貯器18檢索到的數(shù)據(jù)僅存儲在L2高速緩存14a中。另一方面,如果處理器10a指示想要存儲數(shù)據(jù)到處于H狀態(tài)90的L1高速緩存12a的一路中,L1高速緩存12a指示這個意圖至L2高速緩存14a,則L2高速緩存14a將發(fā)送一“想要修改的讀”事務(wù)到互連部件16上。如上所述,響應(yīng)探聽該“想要修改的讀”事務(wù),存儲在L2高速緩存14b-14n中的該請求高速緩存行的拷貝被修改為H狀態(tài)90,而存儲在L1高速緩存12b-12n中的該請求高速緩存行的拷貝被標志為無效。一旦該請求高速緩存行返回到L1高速緩存12a并且處理器10a修改該高速緩存行,在L1高速緩存12a中該高速緩存行就被標志為修改狀態(tài)以表示該高速緩存行有效,但是與系統(tǒng)存貯器18不相關(guān)。根據(jù)該實現(xiàn),其后該修改的高速緩存行可以存儲到L2高速緩存14a(例如,響應(yīng)一L1的舍去)而不需要該修改的高速緩存行寫回到系統(tǒng)存貯器18。如果這樣,則在L2高速緩存14a中與該修改的高速緩存行相關(guān)聯(lián)的相關(guān)狀態(tài)字段被修改為M狀態(tài)80,如參考號118所示。最后,根據(jù)一些不同的請求響應(yīng)情況,處于H狀態(tài)90的一L2高速緩存目錄項被修改為S狀態(tài)84。
首先,當關(guān)聯(lián)的處理器10發(fā)出一讀請求至由標志字段40中的(有效)地址指示的地址并且至少一個L2高速緩存14回答一共享響應(yīng)時,處于H狀態(tài)90的一L2目錄項變換到S狀態(tài)84。更重要地,處于H狀態(tài)90的一L2高速緩存目錄項能夠修改至S狀態(tài)84而不需要關(guān)聯(lián)的處理器10發(fā)出一數(shù)據(jù)請求或者L2高速緩存14產(chǎn)生一事務(wù)到互連部件16上。如上所述,每個L2高速緩存14a-14n探聽發(fā)送在互連部件16上的所有事務(wù)。如果L2高速緩存14a-14n的其中之一,例如L2高速緩存14a探聽由L2高速緩存14b-14n的另一個發(fā)出的一事務(wù),該事務(wù)包括在L2高速緩存14a中存儲為H狀態(tài)90的數(shù)據(jù)的一修改(即,有效)拷貝,則L2高速緩存14a的高速緩存控制器36從互連部件16上采樣該數(shù)據(jù),存儲所探聽的數(shù)據(jù)到數(shù)據(jù)陣列34中,并且將相關(guān)聯(lián)的相關(guān)狀態(tài)字段42從H狀態(tài)90修改至S狀態(tài)84。當然,如果需要一響應(yīng)以保持相關(guān),則L2高速緩存14a還提供一響應(yīng)至該探聽的事務(wù)。例如,如果該探聽的事務(wù)是一讀請求,則L2高速緩存14a必須提供一表示其想要采樣所請求數(shù)據(jù)的共享響應(yīng),使得發(fā)出請求的L2高速緩存存儲所請求數(shù)據(jù)在S狀態(tài)84而不是E狀態(tài)82。這樣,在互連部件16上的能夠被探聽而刷新與一有效地址標志相關(guān)聯(lián)的無效數(shù)據(jù)的事務(wù)包括讀事務(wù)、寫事務(wù)、由于高速緩存行的舍去而導致的數(shù)據(jù)回寫至系統(tǒng)存貯器18,等等。
在圖3所示的H-MESI存貯器相關(guān)協(xié)議的說明性實施例中可能產(chǎn)生的狀態(tài)變換概括于下面的表Ⅰ中。
表Ⅰ
根據(jù)本發(fā)明的一個重要方面,H-MESI協(xié)議可以精確地或者不精確地實現(xiàn)。H-MESI協(xié)議的精確實現(xiàn)要求L2高速緩存14a-14n總是采樣可在互連部件16上得到的數(shù)據(jù)以便刷新處于H狀態(tài)90的無效高速緩存行。相反,非精確實現(xiàn)允許高速緩存14a-14n選擇地采樣互連部件16上的數(shù)據(jù)以便刷新處于H狀態(tài)90的高速緩存行。在圖2所示的說明性實施例中,根據(jù)在其模式寄存器60中的模式位62的狀態(tài),每個L2高速緩存14能夠獨立于其它L2高速緩存地操作于精確模式或者非精確模式。
當在對軟件進行調(diào)試或性能調(diào)整時,由于操作的精確模式促進了更加可預(yù)測的工作狀態(tài)以及一致的軟件定時,因此在精確模式中操作L2高速緩存14a-14n具有特別的優(yōu)點。另外,在該精確模式中,在兩級局部高速緩存中未命中(并且要求局部L2高速緩存14發(fā)出一事務(wù)到互連部件16上)的數(shù)據(jù)請求通常很少,因此這種數(shù)據(jù)請求在軟件中可用作一可能“故障”(bugs)的指示。而且,在支持修改干預(yù)的本發(fā)明的實施例中,該精確H-MESI協(xié)議保證由處理器10請求并且在局部L2高速緩存14中存儲為H狀態(tài)90的數(shù)據(jù)將總是通過修改干預(yù)(即,很快地)發(fā)送。在精確模式中操作L2高速緩存14的主要缺點是,對于探聽到的能夠修改處于H狀態(tài)90的L2高速緩存行的事務(wù),如果例如由于L2高速緩存14的寫隊列52滿(即,忙)而不能執(zhí)行該修改,則必須重試該事務(wù)。
由于最好不重試必須的操作,例如讀操作,以便執(zhí)行處于H狀態(tài)90的選擇修改,因此,通常較好的是在正常操作期間使L2高速緩存14a-14n處于非精確模式。如上所述,操作的非精確模式允許對處于H狀態(tài)90的高速緩存行的修改選擇性地執(zhí)行。在一最佳實施例中,當L2高速緩存14處于非精確模式中時,只有當寫隊列52(或者一專用目錄寫隊列,如果有的話)少于一閾值數(shù)量的項時才執(zhí)行對處于H狀態(tài)90的高速緩存行的修改。因此,根據(jù)寫隊列52中的項數(shù)超過一預(yù)定閾值,在L2高速緩存14中的硬件或者由相關(guān)聯(lián)的處理器10執(zhí)行的軟件能夠用于設(shè)置模式位62至與該非精確模式對應(yīng)的狀態(tài)。但是,如下所述,本發(fā)明的其它實施例可以根據(jù)其它的標準來選擇地執(zhí)行對處于H狀態(tài)90的L2高速緩存的修改。
在圖2所示的數(shù)據(jù)處理系統(tǒng)8的說明性實施例中,每個L2高速緩存14a-14n能夠通過軟件或者硬件或者二者的結(jié)合而獨立地設(shè)置為精確模式或非精確模式。例如,如果需要對L2高速緩存14a操作于其中的模式進行軟件控制,則處理器10a能夠通過執(zhí)行一以模式寄存器60為目標的存儲指令而簡單地設(shè)置模式位62。另外,軟件能夠存儲值至CR74,使得PMC72對所關(guān)心的事件的發(fā)生,諸如在寫隊列52中插入并移去項、L2訪問、L2高速緩存未命中、在L2高速緩存未命中時的訪問等待時間等等計數(shù)。然后軟件能夠通過執(zhí)行加載指令訪問在所關(guān)心的PMC72中的值。根據(jù)PMC72的一個值或幾個值的組合超過軟件定義的閾值,該軟件能夠設(shè)置模式位62以選擇該精確和非精確模式中適當?shù)囊粋€。例如,如果L2高速緩存14a操作于非精確模式并且L2高速緩存未命中的次數(shù)大于L2訪問總次數(shù)的一預(yù)定比例,則軟件能夠設(shè)置模式位62至與精確模式對應(yīng)的狀態(tài)。
類似地,性能監(jiān)視器70能夠?qū)崿F(xiàn)L2高速緩存14a-14n的操作模式的硬件控制。在一說明性的實施例中,每個性能監(jiān)視器70包括用于根據(jù)在一個或多個PMC72中累積的一選擇事件或多個事件的組合發(fā)生的次數(shù)超過一預(yù)定閾值而產(chǎn)生一設(shè)置模式位62至特定狀態(tài)的信號的邏輯。通過性能監(jiān)視器70的缺省設(shè)置或者通過相關(guān)聯(lián)處理器10執(zhí)行的軟件能夠確定PMC 72的啟動和所述關(guān)心的一個事件或多個事件的選擇。而在另一個實施例中,根據(jù)一選擇事件或多個事件的組合發(fā)生的次數(shù)超過一預(yù)定閾值,能夠設(shè)置性能監(jiān)視器70以產(chǎn)生一性能監(jiān)視器中斷(PMI)。該PMI由相關(guān)聯(lián)的處理器10提供服務(wù),該關(guān)聯(lián)的處理器10執(zhí)行一改變模式位62的狀態(tài)的中斷處理程序。
如上所述,本發(fā)明提供了一種用于在多處理器數(shù)據(jù)處理系統(tǒng)中保持存貯器相關(guān)的改進的方法和系統(tǒng)。本發(fā)明提供的改進的存貯器相關(guān)協(xié)議允許在相關(guān)聯(lián)的處理器不發(fā)出一明確的讀或?qū)懻埱蟮那闆r下,與一有效地址標志相關(guān)聯(lián)的存儲在一高速緩存中的一無效數(shù)據(jù)項被自動地修改為有效數(shù)據(jù)。這樣,因遠程處理器的活動而被無效的數(shù)據(jù)能夠在該數(shù)據(jù)被本地處理器訪問之前刷新,從而通過消除從一遠程高速緩存或系統(tǒng)存貯器中檢索該數(shù)據(jù)的需求而實質(zhì)上減少了訪問等待時間。由于在不訪問存貯器或不請求一鎖定的情況下就能修改高速緩存行,因此也實質(zhì)上減少了對存貯器訪問的爭用和系統(tǒng)范圍內(nèi)的鎖定。
雖然本發(fā)明已經(jīng)參照說明性的實施例而具體地示出和描述,但是應(yīng)該明白,在不脫離本發(fā)明的精神和范圍的前提下,本領(lǐng)域的技術(shù)人員可以在形式和細節(jié)上作出各種改變。例如,在圖3所示的存貯器相關(guān)協(xié)議的說明性實施例中,由于I狀態(tài)86僅用于在加電時初始化目錄項并且決不會從另一狀態(tài)重新進入,因此可通過刪除I狀態(tài)86而修改該實施例。如果I狀態(tài)86被刪除,則在加電時每個L2目錄項的相關(guān)狀態(tài)字段被初始化為H狀態(tài)90,并且每個L2目錄項的標志字段初始化為一標志值,該標志值至少在同一同余類中是唯一的。另外,應(yīng)該明白的是,圖2的性能監(jiān)視器70能夠可替換地實現(xiàn)為耦合至互連部件16的單個系統(tǒng)范圍內(nèi)的性能監(jiān)視器,而不是在每個L2高速緩存14內(nèi)部的多個分離的性能監(jiān)視器。
權(quán)利要求
1.一種在含有多個處理器的數(shù)據(jù)處理系統(tǒng)中保持高速緩存相關(guān)的方法,每個處理器與多個高速緩存中相應(yīng)的一個相關(guān)聯(lián),所述方法的特征在于包括在所述多個高速緩存的第一高速緩存中,與一地址標志相關(guān)聯(lián)地存儲第一數(shù)據(jù)項,該地址標志指示所述數(shù)據(jù)項的地址;設(shè)置所述第一高速緩存中的一相關(guān)指示符至第一狀態(tài),該第一狀態(tài)指示所述數(shù)據(jù)項有效;以及在所述相關(guān)指示符被設(shè)置為所述第一狀態(tài)的時候,響應(yīng)所述多個高速緩存中的另一個指示想要存儲至由所述地址標志指示的所述地址,修改所述第一高速緩存中的所述相關(guān)指示符至第二狀態(tài),該第二狀態(tài)指示所述地址標志有效而在所述第一高速緩存中的所述數(shù)據(jù)項無效。
2.如權(quán)利要求1的方法,其特征在于所述數(shù)據(jù)處理系統(tǒng)還包括一個連接所述多個處理器的互連部件,所述數(shù)據(jù)項是一個第一數(shù)據(jù)項,而所述方法還包括步驟探聽所述互連部件以識別在所述互連部件上的與由所述地址標志指示的所述地址相關(guān)的一數(shù)據(jù)傳送,所述數(shù)據(jù)傳送由所述多個高速緩存中的另一個啟動并且包括一個第二數(shù)據(jù)項;在所述相關(guān)指示符設(shè)置為所述第二狀態(tài)時,響應(yīng)在所述互連部件上檢測的與由所述地址標志指示的所述地址相關(guān)的一數(shù)據(jù)傳送,通過在所述第一高速緩存中與所述地址標志相關(guān)聯(lián)地存儲所述第二數(shù)據(jù)項以代替所述第一數(shù)據(jù)項;以及修改所述相關(guān)指示符至第三狀態(tài)表示所述第二數(shù)據(jù)項有效。
3.如權(quán)利要求2的方法,其特征在于所述修改所述相關(guān)指示符至指示所述第二數(shù)據(jù)項有效的第三狀態(tài)的步驟包括修改所述相關(guān)指示符至一共享狀態(tài)的步驟,該共享狀態(tài)指示所述第二數(shù)據(jù)項存儲在所述第一高速緩存和所述多個高速緩存的另一個中。
4.如權(quán)利要求1的方法,其特征在于,所述設(shè)置所述第一高速緩存中的一相關(guān)指示符至指示所述數(shù)據(jù)項有效的第一狀態(tài)的步驟包括設(shè)置所述第一高速緩存中的所述相關(guān)指示符至修改狀態(tài)、共享狀態(tài)和專用狀態(tài)的其中之一的步驟。
5.如權(quán)利要求1的方法,其特征在于所述數(shù)據(jù)處理系統(tǒng)還包括一個低級存儲器,所述第一高速緩存可從該低級存儲器檢索數(shù)據(jù),所述多個處理器包括與所述第一高速緩存相關(guān)的第一處理器,所述數(shù)據(jù)項包括一個第一數(shù)據(jù)數(shù)據(jù)項,所述方法還包括步驟在所述相關(guān)指示符設(shè)置為所述第二狀態(tài)時,響應(yīng)所述第一處理器對與由所述地址標志指示的所述地址相關(guān)的數(shù)據(jù)的請求,從所述多個高速緩存的另一個中而不是從所述低級存儲器中獲得與所述地址有關(guān)的一個有效的第二數(shù)據(jù)項。
6.如權(quán)利要求1的方法,其特征在于還包括設(shè)置所述相關(guān)指示符為一個無效狀態(tài)以表示所述地址標志和所述數(shù)據(jù)項均無效的步驟。
7.一種用于在含有多個處理器的數(shù)據(jù)處理系統(tǒng)中支持高速緩存相關(guān)的高速緩存,所述多個處理器中的每一個與多個高速緩存中相應(yīng)的一個相關(guān)聯(lián),所述高速緩存的特征在于包括存儲一個數(shù)據(jù)項的數(shù)據(jù)存儲器;標志存儲器,它存儲指示包含在所述數(shù)據(jù)存儲器中的所述數(shù)據(jù)項的地址的地址標志;相關(guān)指示符,響應(yīng)所述數(shù)據(jù)項存入所述數(shù)據(jù)存儲器,該相關(guān)指示符被設(shè)置至表示所述數(shù)據(jù)項有效的第一狀態(tài),而在所述相關(guān)指示符被設(shè)置為所述第一狀態(tài)的時候,響應(yīng)該多個高速緩存中的另一個指示想要存儲至由所述地址標志指示的所述地址,該相關(guān)指示符被設(shè)置至第二狀態(tài),所述相關(guān)指示符的所述第二狀態(tài)指示所述地址標志有效而在所述數(shù)據(jù)存儲器中的所述數(shù)據(jù)項無效。
8.根據(jù)權(quán)利要求7的高速緩存,其特征在于所述數(shù)據(jù)項是一個第一數(shù)據(jù)項,所述數(shù)據(jù)處理系統(tǒng)還包括一個連接所述多個處理器的互連部件,而所述高速緩存還包括探聽所述互連部件以識別在所述互連部件上的與由所述地址標志指示的所述地址相關(guān)的一數(shù)據(jù)傳送的裝置,所述數(shù)據(jù)傳送由所述多個高速緩存中的另一個啟動并且包括一個第二數(shù)據(jù)項;在所述相關(guān)指示符設(shè)置為所述第二狀態(tài)時,響應(yīng)在所述互連部件上的與由所述地址標志指示的所述地址相關(guān)的一數(shù)據(jù)傳送的檢測,通過在所述數(shù)據(jù)存儲器中與所述地址標志相關(guān)聯(lián)地存儲所述第二數(shù)據(jù)項以代替所述第一數(shù)據(jù)項的裝置;以及修改所述相關(guān)指示符至第三狀態(tài)表示所述第二數(shù)據(jù)項有效的裝置。
9.如權(quán)利要求8的高速緩存,其特征在于所述修改所述相關(guān)指示符至指示所述第二數(shù)據(jù)項有效的第三狀態(tài)的裝置包括修改所述相關(guān)指示符至一共享狀態(tài)的裝置,該共享狀態(tài)指示所述第二數(shù)據(jù)項存儲在所述高速緩存和所述多個高速緩存的另一個中。
10.如權(quán)利要求7的高速緩存,其特征在于所述相關(guān)指示符的第一狀態(tài)包括修改狀態(tài)、共享狀態(tài)和專用狀態(tài)的其中之一。
11.如權(quán)利要求7的高速緩存,其特征在于所述高速緩存是一個第一高速緩存,所述多個處理器包括與所述第一高速緩存相關(guān)的第一處理器,所述數(shù)據(jù)處理系統(tǒng)還包括一個低級存儲器,所述第一高速緩存可從該低級存儲器檢索數(shù)據(jù),所述高速緩存還包括在所述相關(guān)指示符設(shè)置為所述第二狀態(tài)時,響應(yīng)所述第一處理器對與由所述地址標志指示的所述地址相關(guān)的數(shù)據(jù)的請求,從所述多個高速緩存的另一個中而不是從所述低級存儲器中獲得與所述地址有關(guān)的有效數(shù)據(jù)的裝置。
12.如權(quán)利要求7的高速緩存,其特征在于所述相關(guān)指示符還包括一個無效狀態(tài)以表示所述地址標志和所述數(shù)據(jù)項均無效。
13.一種數(shù)據(jù)處理系統(tǒng),包括一互連部件;耦合至所述互連部件的多個處理器;多個高速緩存,其中每個高速緩存與所述多個處理器中相應(yīng)的一個相關(guān)聯(lián),其中,在所述多個高速緩存中的第一高速緩存包括存儲一個數(shù)據(jù)項的數(shù)據(jù)存儲器;標志存儲器,它存儲指示包含在所述數(shù)據(jù)存儲器中的所述數(shù)據(jù)項的地址的地址標志;相關(guān)指示符,響應(yīng)所述數(shù)據(jù)項存入所述數(shù)據(jù)存儲器,該相關(guān)指示符被設(shè)置至表示所述數(shù)據(jù)項有效的第一狀態(tài),在所述相關(guān)指示符被設(shè)置為所述第一狀態(tài)的時候,響應(yīng)該多個高速緩存中的另一個指示想要存儲至由所述地址標志指示的所述地址,該相關(guān)指示符被設(shè)置至第二狀態(tài),所述相關(guān)指示符的所述第二狀態(tài)指示所述地址標志有效而在所述數(shù)據(jù)存儲器中的所述數(shù)據(jù)項無效。
14.根據(jù)權(quán)利要求13的數(shù)據(jù)處理系統(tǒng),其特征在于所述數(shù)據(jù)項是一個第一數(shù)據(jù)項,所述第一高速緩存還包括探聽所述互連部件以識別在所述互連部件上的與由所述地址標志指示的所述地址相關(guān)的一數(shù)據(jù)傳送的裝置,所述數(shù)據(jù)傳送由所述多個高速緩存中的另一個啟動并且包括一個第二數(shù)據(jù)項;在所述相關(guān)指示符設(shè)置為所述第二狀態(tài)時,響應(yīng)在所述互連部件上的與由所述地址標志指示的所述地址相關(guān)的一數(shù)據(jù)傳送的檢測,通過在所述數(shù)據(jù)存儲器中與所述地址標志相關(guān)聯(lián)地存儲所述第二數(shù)據(jù)項以代替所述第一數(shù)據(jù)項的裝置;以及修改所述相關(guān)指示符至第三狀態(tài)表示所述第二數(shù)據(jù)項有效的裝置。
15.如權(quán)利要求14的數(shù)據(jù)處理系統(tǒng),其特征在于所述修改所述相關(guān)指示符至指示所述第二數(shù)據(jù)項有效的第三狀態(tài)的裝置包括修改所述相關(guān)指示符至一共享狀態(tài)的裝置,該共享狀態(tài)指示所述第二數(shù)據(jù)項存儲在所述第一高速緩存和所述多個高速緩存的另一個中。
16.如權(quán)利要求13的數(shù)據(jù)處理系統(tǒng),其特征在于所述相關(guān)指示符的第一狀態(tài)包括修改狀態(tài)、共享狀態(tài)和專用狀態(tài)的其中之一。
17.如權(quán)利要求13的高速緩存,其特征在于所述多個處理器包括與所述第一高速緩存相關(guān)的第一處理器,所述數(shù)據(jù)處理系統(tǒng)還包括一個低級存儲器,所述第一高速緩存可從該低級存儲器檢索數(shù)據(jù);在所述第一高速緩存的所述相關(guān)指示符設(shè)置為所述第二狀態(tài)時,響應(yīng)所述第一處理器對與由所述地址標志指示的所述地址相關(guān)的數(shù)據(jù)的請求,從所述多個高速緩存的另一個中而不是從所述低級存儲器中獲得與所述地址有關(guān)的有效數(shù)據(jù)的裝置。
18.如權(quán)利要求13的數(shù)據(jù)處理系統(tǒng),其特征在于所述相關(guān)指示符還包括一個無效狀態(tài)以表示所述地址標志和所述數(shù)據(jù)項均無效。
全文摘要
描述了維護數(shù)據(jù)處理系統(tǒng)中的高速緩存相關(guān)性的高速緩存和方法。該系統(tǒng)包括分別與多個高速緩存中的一個相關(guān)的多個處理器。一個數(shù)據(jù)項存儲在第一高速緩存中,同時還相關(guān)存儲指示該數(shù)據(jù)項地址的一個地址標志,相關(guān)指示符設(shè)置在第一狀態(tài),表示該數(shù)據(jù)項有效。如果另一個高速緩存要在該地址標志指示的地址存儲數(shù)據(jù),則將相關(guān)指示符更新的第二狀態(tài),表示該地址標志有效,第一高速緩存中的數(shù)據(jù)項無效。在此狀態(tài),若檢測到與該地址標志相關(guān)的數(shù)據(jù)傳送,則用第二數(shù)據(jù)項代替第一數(shù)據(jù)項,同時將相關(guān)指示符更新為第三狀態(tài)。
文檔編號G06F12/08GK1230721SQ99101308
公開日1999年10月6日 申請日期1999年1月15日 優(yōu)先權(quán)日1998年2月17日
發(fā)明者R·K·阿里米利, J·S·多森, J·D·劉易斯 申請人:國際商業(yè)機器公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
隆安县| 新源县| 安义县| 仁化县| 武川县| 奉化市| 屯昌县| 舞钢市| 衡东县| 光泽县| 诸暨市| 丰顺县| 沛县| 贵德县| 江口县| 上高县| 德安县| 蓬安县| 宁晋县| 宿州市| 聂拉木县| 昌吉市| 兰溪市| 额敏县| 元谋县| 江油市| 沅江市| 弋阳县| 牟定县| 永嘉县| 邹平县| 德清县| 叶城县| 宁武县| 古田县| 建湖县| 宁明县| 宣城市| 沾化县| 从江县| 昌平区|