基于存儲器地址將來自高速緩存行的數(shù)據(jù)存儲到主存儲器的制造方法
【專利說明】
【背景技術(shù)】
[0001]在典型的計算系統(tǒng)中,中央處理單元(CPU)可以使用高速緩沖存儲器來降低訪問存儲器(例如,主存儲器)的時間。當CPU需要從主存儲器中的位置訪問數(shù)據(jù)(例如從主存儲器讀取數(shù)據(jù)或?qū)懭霐?shù)據(jù)到主存儲器)時,CPU可以檢查所述數(shù)據(jù)的副本是否在高速緩存中。如果數(shù)據(jù)的副本存儲在高速緩存中,則CPU可以從高速緩存訪問數(shù)據(jù)的副本,這比CPU為了相同數(shù)據(jù)訪問主存儲器要快得多。存儲于高速緩存中的數(shù)據(jù)還可以為了數(shù)據(jù)一致性而被寫回到或沖洗到主存儲器。
【附圖說明】
[0002]圖1圖示了基于主存儲器的地址寫回數(shù)據(jù)的示例系統(tǒng)。
[0003]圖2圖示了基于主存儲器的地址寫回數(shù)據(jù)的示例方法。
[0004]圖3圖示了基于主存儲器的地址寫回數(shù)據(jù)的另一示例方法。
【具體實施方式】
[0005]本文所描述的例子提供了基于存儲器地址使用高速緩存行的標識將數(shù)據(jù)從高速緩沖存儲器轉(zhuǎn)移到主存儲器。此外,提供了一種系統(tǒng)來使得能夠基于主存儲器的一個或多個指定地址范圍而將存儲在高速緩存中的數(shù)據(jù)存儲于或?qū)懟氐街鞔鎯ζ?。在一個例子中,處理器可以執(zhí)行指定主存儲器的地址范圍的高速緩存指令,并且基于所述地址范圍,處理器可以針對對應(yīng)于所述地址范圍的高速緩存行執(zhí)行存儲器操作。存儲器操作可以包括例如將數(shù)據(jù)從高速緩存行沖洗或存儲到主存儲器中的相應(yīng)位置。
[0006]根據(jù)例子,處理器可以確定存儲于處理器的高速緩沖存儲器中的至少一部分數(shù)據(jù)將被存儲于或?qū)懭氲街鞔鎯ζ?。處理器確定主存儲器的一個或多個地址范圍。所述一個或多個地址范圍可以對應(yīng)于高速緩沖存儲器中的多個高速緩存行。取決于實現(xiàn)方式,處理器可以識別對應(yīng)于一個或多個地址范圍中的地址的高速緩存行的集合,從而存儲于識別出的集合中的數(shù)據(jù)可以存儲于主存儲器中。對于識別出的集合中具有自高速緩存行首次加載到高速緩沖存儲器以來或者自先前的存儲操作以來已被修改的數(shù)據(jù)的每個高速緩存行,使得存儲于該高速緩存行中的數(shù)據(jù)被存儲于或?qū)懟氐街鞔鎯ζ鳌?br>[0007]在另一種實現(xiàn)方式中,處理器可以向高速緩沖存儲器提供一個或多個地址范圍,以使得高速緩沖存儲器能夠識別對應(yīng)于所述一個或多個地址范圍中的地址的高速緩存行的集合,從而可以將存儲于識別出的集合中的數(shù)據(jù)存儲于主存儲器中。
[0008]此外,提供了一種在計算系統(tǒng)中執(zhí)行存儲器操作的方法。所述方法包括識別足以一般地描述多個高速緩存行(但是少于整個高速緩存)的集合的高速緩存行的集合。存儲于多個高速緩存行的集合中的數(shù)據(jù)可以寫入到主存儲器。在一些例子中,可以使用主存儲器的一個或多個地址范圍來識別高速緩存行的集合,其中地址范圍是根據(jù)計算系統(tǒng)的處理器所執(zhí)行的高速緩存指令確定的。計算系統(tǒng)可以實施存儲于這樣的高速緩存行中的數(shù)據(jù)到主存儲器的寫回。以這種方式,可以識別多個高速緩存行(但是少于整個高速緩存),以使得它們存儲的數(shù)據(jù)沖洗到主存儲器,而不是例如到單個高速緩存行或整個高速緩存。
[0009]取決于變型,主存儲器可以對應(yīng)于非易失性存儲器。在其它例子中,主存儲器可以對應(yīng)于非易失性存儲器和易失性存儲器。例如,非易失性存儲器可以具有第一地址范圍,而易失性存儲器可以具有第二地址范圍,其中這些地址范圍不重疊。所確定的一個或多個地址范圍可以在第一地址范圍內(nèi)(例如,對應(yīng)于非易失性存儲器部分),從而存儲于對應(yīng)于非易失性存儲器中地址的高速緩存行中的數(shù)據(jù)可以存儲于非易失性存儲器而不是易失性存儲器中。
[0010]本文描述的一個或多個例子假設(shè)計算設(shè)備執(zhí)行的方法、技術(shù)和動作是以編程方式執(zhí)行的或者作為計算機實現(xiàn)方法執(zhí)行的。如本文所使用的“以編程方式”意指通過使用代碼或計算機可執(zhí)行指令。這些指令可以存儲于計算設(shè)備的一個或多個存儲器資源中。以編程方式執(zhí)行的步驟可以是自動的或可以不是自動的。
[0011]本文所描述的一個或多個例子可以使用程序的模塊、引擎或部件來實現(xiàn)。程序的模塊、引擎或部件可以包括程序、子例程、部分程序,或者能夠執(zhí)行一個或多個所陳述任務(wù)或功能的軟件部件或硬件部件。如本文所使用的,模塊或部件可以獨立于其它模塊或部件存在于硬件部件上??商娲?,模塊或部件可以是其它模塊、程序或機器的共享元件或過程。
[0012]本文所描述的一些例子通??梢砸笫褂糜嬎阍O(shè)備,包括處理和存儲器資源。例如,本文所描述的一個或多個例子可以整體或部分實現(xiàn)于計算設(shè)備上,計算設(shè)備例如是服務(wù)器、臺式計算機、蜂窩電話或智能電話、膝上型計算機、打印機、數(shù)碼相框、網(wǎng)絡(luò)設(shè)備(例如,路由器)以及平板設(shè)備。存儲器、處理和網(wǎng)絡(luò)資源都可以與建立、使用或執(zhí)行本文描述的任意例子結(jié)合使用(包括結(jié)合執(zhí)行任意方法或結(jié)合實現(xiàn)任意系統(tǒng))。
[0013]此外,可以通過使用一個或多個處理器可執(zhí)行的指令而實現(xiàn)本文所描述的一個或多個例子。這些指令可以攜帶在計算機可讀介質(zhì)上。利用以下附圖示出或描述的機器提供了可以在其上攜帶和/或執(zhí)行用于實現(xiàn)本文所描述的例子的指令的處理資源和計算機可讀介質(zhì)的例子。特別地,以本文描述的例子所示出的多個機器包括(多個)處理器和用于保持數(shù)據(jù)和指令的各種形式的存儲器。計算機可讀介質(zhì)的例子包括永久存儲器存儲設(shè)備,例如個人計算機或服務(wù)器上的硬盤驅(qū)動。計算機存儲介質(zhì)的其它例子包括便攜式存儲單元(例如CD或DVD單元)、閃速存儲器(例如,攜帶在智能電話、多功能設(shè)備或平板計算機上)、以及磁性存儲器。計算機、終端、網(wǎng)絡(luò)使能設(shè)備(例如,移動設(shè)備,諸如手機)都是利用處理器、存儲器和存儲于計算機可讀介質(zhì)上的指令的機器和設(shè)備的例子。另外,例子可以以計算機程序或者能夠攜帶這樣的程序的計算機可用載體介質(zhì)的形式實現(xiàn)。
[0014]系統(tǒng)描述
圖1示出了基于主存儲器的地址存儲數(shù)據(jù)的示例系統(tǒng)。諸如圖1中所示,計算系統(tǒng)可以包括一個或多個處理器以及一個或多個主存儲器。出于說明的目的,在圖1中僅提供了計算系統(tǒng)的單個處理器100和單個主存儲器160。在所提供的例子中,處理器100可以執(zhí)行指定主存儲器160的地址范圍的高速緩存指令?;谒龅刂贩秶?,處理器100可以針對對應(yīng)于所述地址范圍的高速緩存行執(zhí)行存儲器操作,例如將數(shù)據(jù)寫回到主存儲器160。以這種方式,高速緩存指令使得處理器100能夠選擇性地將數(shù)據(jù)多個高速緩存行寫入到主存儲器160中的各自位置。
[0015]在一個例子中,圖1圖示了處理器100,其包括控制模塊110、高速緩存120、高速緩存控制130、寄存器文件140以及執(zhí)行單元150??刂颇K110可以從各自的存儲器位置取回指令,轉(zhuǎn)譯/分析指令,并確定處理器100將如何處理指令。取決于指令,控制模塊110可以與執(zhí)行單元150通信以引導(dǎo)系統(tǒng)執(zhí)行不同的操作和功能。在各種實現(xiàn)方式中,處理器100所執(zhí)行的指令可以存儲于高速緩存120、處理器100可訪問的其它高速緩沖存儲器資源和/或主存儲器160中。
[0016]高速緩存120是使得處理器100能夠快速從高速緩存120訪問數(shù)據(jù)的存儲器資源,與存儲于主存儲器160中的數(shù)據(jù)相反。高速緩存120可以存儲從主存儲器160取得或取回的指令和/或數(shù)據(jù)。典型地,高速緩存120可以包括多個高速緩存行,其中每個高速緩存行可以具有(i)對應(yīng)的高速緩存標記以引用對應(yīng)于高速緩存行的主存儲器160中的地址,以及(ii)對應(yīng)的高速緩存標志以指示在所述高速緩存行中的數(shù)據(jù)是否已經(jīng)被處理器100修改或更新。在一些例子中,高速緩存控制130可以維護關(guān)于對應(yīng)高速緩存行的標記和標志的信息。高速緩存控制130可以例如包括具有存儲高速緩存120