專利名稱:用于數(shù)據(jù)儲存和訪問的方法和設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明的示例實施方式涉及數(shù)據(jù)儲存和訪問領(lǐng)域。本發(fā)明的某些實施方式涉及數(shù)據(jù)高速緩存領(lǐng)域,并且具體地涉及用于存儲計算結(jié)果的高速緩存。
發(fā)明內(nèi)容
本發(fā)明的示例實施方式涉及一種方法,該方法包括在查詢儲存器中存儲查詢和從主要儲存器獲得的與所述查詢有關(guān)的結(jié)果;以及在差異儲存器中存儲對所述主要儲存器的數(shù)據(jù)已經(jīng)改變的指示。該方法還可以包括在所述差異儲存器中存儲與所述存儲的查詢和與所述存儲的結(jié)果有關(guān)的數(shù)據(jù)。在所述差異儲存器中存儲對所述主要儲存器的數(shù)據(jù)已經(jīng)改變的指示可以包括在所述差異儲存器中存儲指向所述主要儲存器的指針。該方法還可以包括通過從所述查詢儲存器和從所述差異儲存器取回數(shù)據(jù)來服務(wù)于所述接收的查詢。所述差異儲存器可以被配置成存儲對所述主要儲存器的內(nèi)容的改變。差異儲存器可以適于將數(shù)據(jù)和與所述數(shù)據(jù)對應(yīng)的標(biāo)記一起存儲。標(biāo)記可以標(biāo)識數(shù)據(jù)類型,并且所述方法還可以包括在所述差異儲存器中存儲多于一個數(shù)據(jù)類型,并且在這一實例中,可以對差異儲存器進行分區(qū),各分區(qū)容納所述標(biāo)記的值不同的數(shù)據(jù)。一個或者多個分區(qū)可以具有預(yù)定大小。一個或者多個所述分區(qū)的大小可以是動態(tài)可變的。分區(qū)數(shù)目可以是動態(tài)可變的。主要儲存器可以用第一儲存類型存儲而所述查詢儲存器和所述差異儲存器可以用第二儲存類型存儲,所述第二儲存類型具有比所述第一儲存類型更快的訪問時間。該方法還可以包括參照存儲于差異儲存器中的數(shù)據(jù)來更新查詢儲存器的內(nèi)容??梢栽诓町悆Υ嫫鞯拇笮〕^預(yù)定大小時執(zhí)行更新??梢栽陬A(yù)定時間之后執(zhí)行更新??梢詤⒄账霾町悆Υ嫫骺臻e的時間段來確定預(yù)定時間。本發(fā)明的其他示例實施方式擴展至一種設(shè)備,該設(shè)備包括處理器,存儲器,布置成主要儲存器、查詢儲存器和差異儲存器;所述存儲器包括計算機程序代碼,存儲器和計算機程序代碼被配置成用處理器使設(shè)備至少執(zhí)行在查詢儲存器中存儲查詢和從主要儲存器獲得的與查詢有關(guān)的結(jié)果;以及在差異儲存器中存儲對所述主要儲存器的數(shù)據(jù)已經(jīng)改變的指示。該設(shè)備還可以執(zhí)行在所述差異儲存器中存儲與所述存儲的查詢和與所述存儲的結(jié)果有關(guān)的數(shù)據(jù)。在所述差異儲存器中存儲對所述主要儲存器的數(shù)據(jù)已經(jīng)改變的指示可以包括在所述差異儲存器中存儲指向所述主要儲存器的指針。該設(shè)備還可以執(zhí)行通過從所述查詢儲存器和從所述差異儲存器取回數(shù)據(jù)來服務(wù)于所述接收的查詢。所述差異儲存器可以被配置成存儲對所述主要儲存器的內(nèi)容的改變。差異儲存器可以適于將數(shù)據(jù)和與所述數(shù)據(jù)對應(yīng)的標(biāo)記一起存儲。標(biāo)記可以標(biāo)識數(shù)據(jù)類型,并且所述設(shè)備還可以執(zhí)行在所述差異儲存器中存儲多于一個數(shù)據(jù)類型,并且在這一實例中,可以對差異儲存器進行分區(qū),各分區(qū)容納所述標(biāo)記的值不同的數(shù)據(jù)。一個或者多個分區(qū)可以具有預(yù)定大小。一個或者多個所述分區(qū)的大小是動態(tài)可變的。分區(qū)數(shù)目可以是動態(tài)可變的。主要儲存器可以用第一儲存類型存儲而所述查詢儲存器和所述差異儲存器可以用第二儲存類型存儲,所述第二儲存類型具有比所述第一儲存類型更快的訪問時間。該設(shè)備還可以執(zhí)行參照存儲于差異儲存器中的數(shù)據(jù)來更新查詢儲存器的內(nèi)容??梢栽诓町悆Υ嫫鞯拇笮〕^預(yù)定大小時執(zhí)行更新??梢栽陬A(yù)定時間之后執(zhí)行更新??梢詤⒄账霾町悆Υ嫫骺臻e的時間段來確定預(yù)定時間。本發(fā)明的其他示例實施方式擴展至一種包括計算機可讀介質(zhì)的計算機程序產(chǎn)品, 該計算機可讀介質(zhì)承載體現(xiàn)于其中的用于與計算機一起使用的計算機程序代碼,該計算機程序代碼包括用于在查詢儲存器中存儲查詢和從主要儲存器獲得的與所述查詢有關(guān)的結(jié)果的代碼;以及用于在差異儲存器中存儲對所述主要儲存器的數(shù)據(jù)已經(jīng)改變的指示的代碼。該計算機程序產(chǎn)品還可以包括用于執(zhí)行前述方法的代碼。本發(fā)明的其他示例實施方式擴展至一種計算機程序,該計算機程序包括用于在查詢儲存器中存儲查詢和從主要儲存器獲得的與所述查詢有關(guān)的結(jié)果的代碼;以及用于在差異儲存器中存儲對所述主要儲存器的數(shù)據(jù)已經(jīng)改變的指示的代碼。該計算機程序還可以包括用于執(zhí)行前述方法的代碼。該計算機程序可以是包括計算機可讀介質(zhì)的計算機程序產(chǎn)品,該計算機可讀介質(zhì)承載體現(xiàn)于其上的用于與計算機一起使用的計算機程序代碼。本發(fā)明的其他示例實施方式擴展至一種方法,該方法包括在查詢儲存器中存儲查詢和與所述查詢有關(guān)的結(jié)果,所述結(jié)果基于存儲于主要儲存器中的數(shù)據(jù)來計算;在檢測到存儲于所述主要儲存器中的對存儲于所述主要儲存器中的一個或者多個結(jié)果有影響的數(shù)據(jù)改變時,在差異儲存器中存儲對已經(jīng)影響所述一個或者多個結(jié)果的指示而不重新計算影響的所述一個或者多個結(jié)果。
所述差異儲存器中的各指示可以與所述差異儲存器中的對應(yīng)結(jié)果有關(guān)。本發(fā)明的其他示例實施方式擴展至維護如這里描述的差異儲存器??梢栽陬A(yù)定時間之后執(zhí)行更新。預(yù)定時間可以是差異儲存器空閑的時間段。
下文參照以下附圖描述本發(fā)明的示例實施方式圖1是本發(fā)明的一個實施方式已經(jīng)實施于其中的移動計算設(shè)備的示意圖;圖2是圖1的移動計算設(shè)備的硬件組件的示意圖;圖3是代表圖1的移動計算設(shè)備的各個方面的框圖;圖4是根據(jù)本發(fā)明一個實施方式的儲存系統(tǒng)的框圖;圖5是圖4的儲存系統(tǒng)的查詢儲存器的列表表示;圖6是圖示了本發(fā)明一個實施方式的過程圖;圖7是根據(jù)又一實施方式的查詢儲存器的列表表示;圖8是根據(jù)又一實施方式的差異儲存器的列表表示;圖9是根據(jù)又一實施方式的查詢儲存器的框圖;圖10是本發(fā)明又一實施方式的過程圖;以及圖11是本發(fā)明又一實施方式的過程圖。
具體實施例方式圖1是具有殼12的移動計算設(shè)備10的示意圖。殼12封裝小鍵盤14、屏幕16、揚聲器18和麥克風(fēng)20。設(shè)備10還包括天線22。圖1中所示移動計算設(shè)備10可以作為電話來工作,并且在這一實例中經(jīng)由天線22發(fā)送和接收電信信號。圖2是示出了圖1的設(shè)備10的某些硬件組件的布置的示意圖。這一實施方式的小鍵盤14、顯示器16、揚聲器18和麥克風(fēng)20連接到系統(tǒng)總線42。這一實施方式的總線42 還連接到應(yīng)用處理器24、基帶處理器26、數(shù)字信號處理器(DSP) 38、發(fā)送器28、接收器30和電池40。這一實施方式的發(fā)送器28和接收器30連接到天線22。這一實施方式的總線42 還連接到存儲器控制器32,該存儲器控制器又連接到易失性存儲器34和非易失性存儲器 36。這一實施方式的應(yīng)用處理器24處理與運行于設(shè)備10上并且提供設(shè)備10的各種功能的各種軟件模塊和操作系統(tǒng)軟件有關(guān)的指令。這一實施方式的基帶處理器26與通信功能連接并且為此控制電話棧并且與發(fā)送器28和接收器30通信以借助天線22建立通信。在一個替代實施方式中,可以在單個處理器上提供設(shè)備10的各種處理元件如應(yīng)用處理器24 和基帶處理器26。這一實施方式的存儲器控制器32控制對易失性存儲器34和非易失性存儲器36 的訪問,以及與易失性存儲器34和非易失性存儲器36的交互。這一實施方式的應(yīng)用處理器24能夠與各種硬件元件以及存儲器控制器32通信,并且由此根據(jù)存儲于易失性存儲器 34或者非易失性存儲器36上的軟件指令來控制各種硬件元件的操作。在圖2中圖示了僅單個總線(總線42)。將認(rèn)識到這一總線可以在其他示例實施方式中替換為兩個或者更多總線,并且圖2的拓撲將相應(yīng)變化。另外,已知計算設(shè)備還包括除了圖2中所示硬件組件之外的硬件組件,但是這些在本領(lǐng)域中已知并且這里未進一步加以描述或者圖示。圖3是圖示了設(shè)備10的各種硬件和軟件組件的圖??梢杂酶鞣N方式對這一實施方式的設(shè)備10上操作的軟件進行分類。某些軟件操作用于管理各種硬件組件提供的資源并且建立其他軟件在其中執(zhí)行的操作環(huán)境。這一軟件稱為這一實施方式的設(shè)備的操作系統(tǒng)并且在圖3中由內(nèi)核42表示。這一實施方式的內(nèi)核42與如先前所述連接到易失性存儲器 34和非易失性存儲器36的存儲器控制器32交互。這一實施方式的內(nèi)核42還連接到多個用戶程序44,各用戶程序可以用內(nèi)核42規(guī)定的方式訪問硬件組件。這一實施方式的內(nèi)核 42還借助設(shè)備驅(qū)動器46連接到小鍵盤14、借助設(shè)備驅(qū)動器47連接到揚聲器18以及借助設(shè)備驅(qū)動器48連接到顯示器16。這一實施方式的僅僅某些硬件組件已被圖示,但是一般而言,內(nèi)核42通過各種設(shè)備驅(qū)動器控制這一實施方式的設(shè)備10的硬件資源。另外,雖然已經(jīng)將這一實施方式的設(shè)備驅(qū)動器圖示為與內(nèi)核42分離,但是有可能在其他示例實施方式中讓它們并入內(nèi)核42中。圖3的軟件組件由虛線區(qū)41界定。然而,在軟件與硬件之間的這一區(qū)分并不是必要的。在圖3中描繪為軟件的組件可以在其他示例實施方式中表現(xiàn)為硬件,而描繪為硬件的組件可以在其他示例實施方式中表現(xiàn)為軟件。另外,其他示例實施方式的一些組件可以具有軟件部分以及硬件部分。在操作這一實施方式的設(shè)備期間,存儲于非易失性存儲器36中的軟件指令建立內(nèi)核42、用戶程序44以及設(shè)備驅(qū)動器46、47和48。通過使用圖3中所示各種組件,用戶能夠根據(jù)由各種用戶程序44提供的功能來利用這一實施方式的設(shè)備10。例如,用戶使用這一實施方式的小鍵盤14以借助設(shè)備驅(qū)動器46來與內(nèi)核42通信以使用戶程序44之一借助存儲器控制器32訪問存儲于非易失性存儲器36上的數(shù)據(jù)。這一實施方式的內(nèi)核42然后使存儲器控制器32供應(yīng)的數(shù)據(jù)與用戶程序供應(yīng)的指令一起發(fā)送到應(yīng)用處理器24(圖2)。這一實施方式的應(yīng)用處理器24將根據(jù)數(shù)據(jù)和指令來返回結(jié)果(在該過程中一般利用易失性存儲器34),并且內(nèi)核42將向用戶程序返回這些結(jié)果。按照來自這一實施方式的用戶程序的更多指令,內(nèi)核42將借助設(shè)備驅(qū)動器48使結(jié)果在顯示器16上顯示給用戶。僅通過示例呈現(xiàn)圖1、圖2和圖3的圖示。本發(fā)明的示例實施方式可以在其上操作的已知設(shè)備可以包括比所示組件更多或者更少的組件。本發(fā)明的示例實施方式的實施并不依賴于圖1、圖2和圖3中所示組件的精確布置和配置。因此,可以替換功能類似的其他組件并且向其添加更多組件或者從中省略所示組件而不影響本發(fā)明某些實施方式的操作。圖4是本發(fā)明一個示例實施方式的框圖并且圖示了圖1至圖3中所示移動計算設(shè)備的儲存系統(tǒng)148。在這一示例中,儲存系統(tǒng)148包括連接到易失性存儲器24和非易失性存儲器36的存儲器控制器32。這一實施方式的非易失性存儲器36充當(dāng)用于這一實施方式的設(shè)備的主要長期儲存。這一實施方式的存儲器控制器32還連接到包括查詢儲存器140 和差異儲存器42的高速緩存130。在這一實施方式中,高速緩存130實施于易失性存儲器 34中。在其他示例實施方式中,高速緩存130可以實施于獨立儲存中或者實施為易失性儲存器34的一部分。提供用于存儲差異和/或查詢儲存器的更快高速緩存存儲器可以添加明顯速度優(yōu)點。對差異儲存器進行分割(見下文)的優(yōu)點在差異儲存器存儲于高速緩存中時特別恰當(dāng),因為這些存儲器雖然比長期儲存更快但是經(jīng)常明顯更小。這一實施方式的存儲器控制器32控制對易失性存儲器34以及對查詢儲存器140和差異儲存器142的讀和寫訪問。在這一實施方式中,非易失性存儲器34充當(dāng)主要存儲器儲存器。圖5以列表格式圖示了這一實施方式的查詢儲存器140。在這一視圖中,這一實施方式的查詢儲存器140包括兩列,查詢列152和查詢結(jié)果列150。在這一實施方式中,在查詢列152中存儲多個查詢查詢1 154、查詢2 156、查詢3 158、···、查詢N 160。在這一實施方式的查詢結(jié)果列150中存儲多個結(jié)果結(jié)果1 162、結(jié)果2 164、結(jié)果3 168、···、結(jié)果N 168。在這一實施方式的查詢結(jié)果列150中存儲的結(jié)果對應(yīng)于查詢列152中存儲的查詢。在這一實施方式中,存儲器控制器32在適當(dāng)用戶程序如郵件用戶程序的指引之下編輯這一實施方式的查詢儲存器140。當(dāng)這一實施方式的用戶程序執(zhí)行依賴于非易失性存儲器34上存儲的數(shù)據(jù)的查詢時,計算出結(jié)果并且向用戶程序返回結(jié)果。存儲器控制器32 將查詢的備份與對應(yīng)結(jié)果一起存儲于查詢儲存器40中,從而獲得用于這一示例的所示布置。由于查詢儲存器140在這一示例實施方式中位于高速緩存130中,所以可以比非易失性儲存器36中的數(shù)據(jù)更快地訪問查詢儲存器140中的數(shù)據(jù)。另外,如果重復(fù)查詢則無需重新計算查詢的結(jié)果,因為在這一實施方式中可以從查詢儲存器140直接讀取結(jié)果。然而,當(dāng)查詢儲存器中的結(jié)果所基于的數(shù)據(jù)改變時,以前有必要使查詢儲存器140中的對應(yīng)條目無效并且將這替換為基于非易失性存儲器36中的改變數(shù)據(jù)的重新計算結(jié)果。為了避免這樣,本發(fā)明的某些實施方式提供也存儲于圖4的高速緩存130中的差異儲存器142。這一實施方式的差異儲存器142包括指向非易失性存儲器36的地址的指針集,其中由于查詢儲存器140被編輯,所以在那些地址處的數(shù)據(jù)已經(jīng)改變。差異儲存器142 由存儲器控制器32管理,該控制器在這一示例實施方式中確定非易失性存儲器36中的與存儲的查詢相關(guān)的數(shù)據(jù)是否改變并且在差異儲存器142中存儲如下指針,該指針指向改變的數(shù)據(jù)的地址。下文描述存儲器控制器32在這一示例實施方式中控制查詢儲存器140和差異儲存器142的方式的更多方面。通過存儲如下指針,該指針指向這一實施方式的主要儲存器的數(shù)據(jù),差異儲存器比如果它存儲主要儲存器的數(shù)據(jù)副本時它將有的大小明顯更小。 另外通過存儲指針(比如地址),可以容易找到和訪問這一實施方式的主要儲存器上的對應(yīng)數(shù)據(jù)。圖6是本發(fā)明一個示例實施方式的過程圖并且圖示了如何用圖4和圖5中所示的布置服務(wù)于新的接收查詢。在這一實施方式的塊170處接收查詢。在前述示例實施方式中,將從用戶應(yīng)用接收這一查詢(盡管查詢的源頭對于本發(fā)明的目的而言并不重要并且其他實施方式在例如存儲器控制器32生成的查詢方面適用)。在這一實施方式的后繼塊(塊 172)處,存儲器控制器32確定查詢是否存在于查詢儲存器140中。在這一實施方式中,這通過在查詢列152之下存儲的查詢中搜尋其中與接收的查詢對應(yīng)的條目來完成。如果與接收的查詢對應(yīng)的查詢存在于查詢儲存器140中,則這一實施方式的過程繼續(xù)到塊176,其中存儲器控制器確定差異儲存器是否存在。如果差異儲存器不存在,則這一實施方式的過程繼續(xù)到塊184,其中向客戶機返回查詢的結(jié)果。這通過以常規(guī)方式用存儲于這一實施方式的非易失性存儲器36中的數(shù)據(jù)滿足查詢來完成。然而,如果差異儲存器確實存在,則這一實施方式的過程從塊176繼續(xù)到這一實施方式中的塊178,其中這一實施方式的存儲器控制器32確定非易失性存儲器36中的被差異儲存器中的條目引用的數(shù)據(jù)是否滿足接收的查詢。
如果差異儲存器引用的數(shù)據(jù)與接收的查詢匹配,則這一實施方式的過程繼續(xù)到塊 182,其中查詢儲存器被更新。在這一示例實施方式中,存儲器控制器32針對與接收的查詢對應(yīng)的行將存儲于列150中的結(jié)果數(shù)據(jù)替換或者更新為非易失性存儲器36中的被差異儲存器142引用的改變數(shù)據(jù)從而更新查詢儲存器140。一旦對查詢儲存器的這一更新已經(jīng)出現(xiàn),則該過程在這一示例實施方式中將繼續(xù)到塊184,其中向發(fā)起接收的查詢的用戶應(yīng)用返回針對接收的查詢的結(jié)果。由于查詢儲存器已被更新,所以這一實施方式的存儲器控制器 32將在這一實例中從查詢儲存器140直接讀取所需結(jié)果。如果差異儲存器引用的數(shù)據(jù)與接收的查詢不匹配,則這一示例實施方式的過程將從塊178繼續(xù)到塊184并且將從查詢儲存器滿足接收的查詢。在這一實例中,將已經(jīng)確定并無針對主要儲存器的更新影響接收的查詢的結(jié)果?;氐綁K172,如果在查詢儲存器140中沒有與接收的查詢對應(yīng)的查詢,則這一示例實施方式的過程將繼續(xù)到塊174,其中根據(jù)存儲于非易失性存儲器36中的數(shù)據(jù)計算這一查詢的結(jié)果。一旦這已經(jīng)完成,則在塊180中將用與接收的查詢和計算的結(jié)果對應(yīng)的新條目更新這一實施方式的查詢高速緩存。然后在這一實施方式的塊184中向這一示例實施方式的用戶應(yīng)用報告結(jié)果。可以用不同類型的數(shù)據(jù)以及不同的對應(yīng)查詢和結(jié)果實施本發(fā)明的示例實施方式。 由于上述實施方式的差異儲存器142包含如下指針、這些指針指向非易失性存儲器36中的由于編輯查詢儲存器140而已經(jīng)改變的數(shù)據(jù)這一事實,可以用明顯更少指令滿足接收的查詢,其中非易失性存儲器36中的與該查詢有關(guān)的數(shù)據(jù)已經(jīng)改變。在一種先前已知布置中, 在非易失性存儲器36中的數(shù)據(jù)已經(jīng)改變時將有必要重新計算整個查詢或者搜尋非易失性存儲器36上的已經(jīng)改變的數(shù)據(jù)。然而,在本發(fā)明示例實施方式的布置之下,存儲器控制器 32可以快速標(biāo)識需要重新計算的那些查詢并且在非易失性存儲器36上找到與該查詢有關(guān)的相關(guān)數(shù)據(jù)。本發(fā)明的實施方式因此提供一種用于查詢和對應(yīng)結(jié)果的儲存系統(tǒng),其中當(dāng)結(jié)果所基于的數(shù)據(jù)改變時能夠通過訪問主要儲存器的已經(jīng)改變的那些部分來更新查詢。由于僅需訪問對主要儲存器的改變以更新結(jié)果,所以在與一種必須重新計算整個條目或者必須搜索整個主要儲存器以確定數(shù)據(jù)是否已經(jīng)改變的系統(tǒng)相比時這一實施方式的計算和存儲器訪問明顯減少。因此本發(fā)明的示例實施方式能夠用比先前情況更少的計算和存儲器訪問周期基于改變的數(shù)據(jù)滿足高速緩存的查詢。圖7、圖8和圖9圖示了適用于消息收發(fā)信息的本發(fā)明又一示例實施方式的方面。 圖4中所示的示例實施方式也可以適用于這一實施方式。在這一實施方式中,考慮消息收發(fā)儲存器取代非易失性儲存器36。然而消息收發(fā)儲存器將包含于更大存儲器儲存器內(nèi)并且就這一點而言的不同對于本發(fā)明示例實施方式的操作而言無關(guān)緊要。如圖7中所示,根據(jù)本發(fā)明這一實施方式的查詢儲存器200可以包括三列查詢列 202、查詢結(jié)果列204和服務(wù)類型列106。在這一實施方式的查詢列102中存儲五個查詢查詢1 208、查詢2 210、查詢3 212、查詢4 214和查詢5 216。在這一實施方式的查詢結(jié)果列204中存儲以下結(jié)果結(jié)果1 218、結(jié)果2 220、結(jié)果3 222、結(jié)果4 2 和結(jié)果5 226。在這一示例實施方式中存儲的查詢和結(jié)果在功能上類似于上文參照圖5描述的查詢儲存器 140。圖7的示例實施方式的查詢儲存器200不同之處在于它包括服務(wù)類型列,其中存儲對查詢的服務(wù)的指示。在這一實施方式中有三項服務(wù)服務(wù)A、服務(wù)B和服務(wù)C。查詢1如在條目2 中反映的那樣為類型服務(wù)A,查詢2如在條目230中反映的那樣為服務(wù)類型B, 查詢3如在查詢232中反映的那樣為服務(wù)類型A,查詢4如在條目234中反映的那樣為服務(wù)類型B,而查詢5如在條目236中表明的那樣為服務(wù)類型C。在這一實施方式中,服務(wù)對應(yīng)于消息收發(fā)類型。因此例如服務(wù)類型A可以對應(yīng)于SMS消息、服務(wù)類型B對應(yīng)于電子郵件消息而服務(wù)類型CMMS消息。將認(rèn)識到本發(fā)明不限于此并且服務(wù)類型列可以用來存儲可以用來對查詢進行分組的其他信息、比如任何標(biāo)記(這將依賴于那些查詢涉及的數(shù)據(jù)類型)。 標(biāo)記可以取多個值。用于數(shù)據(jù)的標(biāo)記允許儲存系統(tǒng)通過根據(jù)所述標(biāo)記的所述值對差異儲存器的內(nèi)容進行分類來快速找到數(shù)據(jù)??梢允褂枚鄠€標(biāo)記。由于這一實施方式的數(shù)據(jù)涉及消息收發(fā),所以查詢儲存器200的查詢和對應(yīng)結(jié)果將涉及消息收發(fā)。例如,查詢1可以是對顯示指定發(fā)送者發(fā)送的所有電子郵件消息(即這一示例中的服務(wù)類型B)的請求。對應(yīng)結(jié)果(結(jié)果1)然后將包含該發(fā)送者已經(jīng)發(fā)送的所有電子郵件消息的列表。然而將理解本發(fā)明并不依賴于查詢類型或者涉及的數(shù)據(jù)類型。圖8圖示了用于本發(fā)明這一實施方式的差異儲存器250。這一實施方式的差異儲存器250包括數(shù)據(jù)列252和服務(wù)類型列253。數(shù)據(jù)列252存儲指向消息收發(fā)儲存器的指針。 差異儲存器250包括五個指針指針1 256、指針2 258、指針3沈0、指針4 262和指針5 2660這一實施方式的各指針包括主要儲存器上已經(jīng)改變的數(shù)據(jù)的地址。這一實施方式的差異儲存器250與圖4中所示差異儲存器142不同之處在于它包括附加列(列254),該列包括服務(wù)類型,該列存儲對如下服務(wù)類型的指示,該服務(wù)類型對應(yīng)于數(shù)據(jù)列252之下存儲的指針?biāo)赶虻脑谙⑹瞻l(fā)儲存器中的數(shù)據(jù)。因此如圖8中所示,指針1為服務(wù)A這一類型沈8,指針2為服務(wù)B這一類型270,指針3為服務(wù)C這一類型272,指針4為服務(wù)B這一類型274,而指針5為服務(wù)B這一類型278。在一個替代實施方式中,差異儲存器和查詢儲存器均存儲用于各條目的時間戳, 從而可以通過比較查詢儲存器的條目的時間戳與差異儲存器的查詢的時間戳來確定查詢差異儲存器中的條目是否與查詢儲存器的特定查詢相關(guān)。這避免需要引用在計算查詢儲存器中的接收查詢之前出現(xiàn)的對主要儲存器的數(shù)據(jù)的改變。圖7和圖8的實施方式將以與上文參照圖6描述的方式相同的方式操作。然而當(dāng)在這一示例實施方式中在塊170中接收查詢時,存儲器控制器32將從客戶機應(yīng)用(在這一情況下可以是消息收發(fā)應(yīng)用)接收針對該查詢的服務(wù)類型。因此,在這一實施方式的塊172 和178中,當(dāng)主要控制器32對查詢儲存器200和差異儲存器250進行查詢時,它將僅查詢與接收的查詢的服務(wù)對應(yīng)的那些條目。這有助于減少待查詢的條目的數(shù)目,因此潛在地提高整個過程的速度。另外,在這一示例實施方式中,當(dāng)更新差異儲存器和查詢儲存器(對應(yīng)于塊180) 時,這些儲存器中的數(shù)據(jù)包括對對應(yīng)服務(wù)的指示以保證將來一致。一般而言,標(biāo)記可以涉及針對數(shù)據(jù)的服務(wù)類型。圖9是圖8的差異儲存器250的替代表示。如圖9中所示,這一實施方式的差異儲存器250分區(qū)成三個分區(qū)觀0、282和觀4。三個分區(qū)對應(yīng)于差異儲存器250中存儲的三個服務(wù)類型。分區(qū)280對應(yīng)于服務(wù)類型A,分區(qū)282對應(yīng)于服務(wù)類型B,而分區(qū)284對應(yīng)于服務(wù)類型C。在所示示例實施方式中,分區(qū)觀0、282和284大小相等,并且與服務(wù)A對應(yīng)的所有行條目(在圖8的表示中)存儲于分區(qū)觀0中,與服務(wù)B對應(yīng)的那些條目存儲于分區(qū)282中,而與服務(wù)C對應(yīng)的那些條目存儲于分區(qū)284中。通過根據(jù)標(biāo)記的值對差異儲存器進行分區(qū)來改進在找到這一實施方式的差異儲存器中的數(shù)據(jù)時的所需時間和涉及到的計算。 用于分區(qū)的預(yù)定大小具有相對易于實施和維護的優(yōu)點。這一實施方式的各分區(qū)180、182和184對應(yīng)于差異儲存器150的地址塊。因此當(dāng)這一實施方式的存儲器控制器32查詢差異儲存器時僅有必要在對應(yīng)分區(qū)中搜尋接收的查詢的服務(wù)類型。因此在這一示例實施方式中不必讓存儲器控制器32在訪問這一儲存器時對查詢儲存器250中的各條目進行查詢。這大量提高存儲器控制器可以訪問差異儲存器 150中的數(shù)據(jù)的速度。雖然圖8中所示布置示出了大小相同的三個分區(qū),但是其他分組和部分大小設(shè)定是可能的。根據(jù)適當(dāng)?shù)姆?wù)類型(或者任何用來界定查詢儲存器中的條目的其他標(biāo)記),可以實施多于或者少于三個分區(qū)。另外不必讓分區(qū)具有相等大小。取而代之,如果已知某些服務(wù)可能比其他服務(wù)需要更多空間,則可以相應(yīng)地布置分區(qū)。在一個示例實施方式中,可以動態(tài)地布置分區(qū)以適應(yīng)變化的要求。這有助于避免浪費如下儲存,該儲存在差異儲存器150存儲于小而快的存儲器中的情況下釋放寶貴資源。通過動態(tài)變化分區(qū)的大小,可以適應(yīng)針對與標(biāo)記的不同值有關(guān)的數(shù)據(jù)的可變存儲要求, 并且可以更高效使用可用于存儲差異儲存器的空間。通過動態(tài)變化分區(qū)數(shù)目,本發(fā)明的實施方式能夠在差異儲存器中容納標(biāo)記值數(shù)目可變的數(shù)據(jù)。這提供高效使用可用于存儲差異儲存器的空間。然而將認(rèn)識到差異儲存器150的分區(qū)并非必需并且圖7和圖8中所示查詢和差異儲存器的前述布置導(dǎo)致如下結(jié)果即,針對在未使用分區(qū)的實施方式的儲存器中的平均查詢而言,執(zhí)行的周期數(shù)目減少。根據(jù)圖6的實施方式的前述操作以及與圖7、圖8和圖9的實施方式有關(guān)的對應(yīng)討論將認(rèn)識到某些實施方式的差異儲存器將隨時間變得越來越大。一般而言,差異儲存器的大小受限于它駐留于其上的儲存介質(zhì)、具體在儲存介質(zhì)是用作RAM的小而快的存儲類型的情況下如此。在又一實施方式中,提供用來刷新或者刪除差異儲存器的過程。在刷新之前,希望在刪除差異儲存器中的條目之前向查詢儲存器中并入對差異儲存器表示的系統(tǒng)存儲器的改變。這可能是處理器密集的過程,因此針對特定時間調(diào)度差異儲存器的刷新是有利的。圖10圖示了根據(jù)一個示例實施方式的用于刷新差異高速緩存的過程。在塊300 處,存儲器控制器32確定差異儲存器空閑的時間段(差異儲存器未被訪問的時間段)。在 302處,這一實施方式的存儲器控制器32比較計算的差異儲存器的空閑時間與預(yù)定限制。 如果空閑時間超過限制,則這一實施方式的過程繼續(xù)到塊304,其中刷新差異高速緩存。在預(yù)定時間之后執(zhí)行這一更新將增加更新過程(其可能是處理器密集的)對差異儲存器的正常操作無干擾的可能性。然而,如果空閑時間未超過預(yù)定限制,則這一實施方式的過程返回到這一實施方式中的塊300。圖11圖示了用于刷新差異儲存器的替代過程。在塊310處,這一實施方式的存儲器控制器32確定差異高速緩存的大小。在這一實施方式的塊312處,存儲器控制器32比較確定的大小與預(yù)定限制。如果大小超過設(shè)置的限制,則該過程繼續(xù)到塊314,其中刷新這
12一實施方式的差異高速緩存。在差異儲存器超過預(yù)定大小時刷新差異高速緩存(或者更新查詢儲存器的內(nèi)容)有助于保證差異儲存器未達到將對搜索差異儲存器的時間有不可接受的影響的大小,并且保證差異儲存器中的數(shù)據(jù)不被破壞(如果儲存器超過最大大小則可能出現(xiàn)破壞)。例如可以在差異儲存器充滿75%時執(zhí)行更新過程。然而,如果差異高速緩存的大小未超過設(shè)置的限制,則該過程返回到塊301。將認(rèn)識到圖10和圖11的過程并不互斥而是可以相互結(jié)合使用。在任一情況下, 此類實施方式的差異高速緩存的刷新可以涉及更新查詢儲存器中的如下查詢,針對這些查詢,差異高速緩存中的條目表明對非易失性存儲器36的改變將具有影響。在某些實施方式中,可以參照存儲于差異儲存器中的數(shù)據(jù)更新查詢儲存器的內(nèi)容。例如,可以通過重新計算查詢儲存器的查詢(差異儲存器表明這些查詢已經(jīng)改變)來適配差異儲存器。本發(fā)明的實施方式由此保證僅在系統(tǒng)需要與查詢對應(yīng)的計算結(jié)果時更新查詢儲存器。這比每當(dāng)結(jié)果所基于的數(shù)據(jù)改變時就更新該結(jié)果更高效和快速。在一個替代實施方式中,同時刷新查詢儲存器和差異儲存器的內(nèi)容。這在處理器忙碌得無法用差異儲存器的內(nèi)容更新查詢儲存器的情況下是有利的。本領(lǐng)域技術(shù)人員將理解替代實施方式是可能的并且可以在如所附權(quán)利要求書限定的本發(fā)明范圍內(nèi)進行對這里描述的方法和實施方式的各種修改。也應(yīng)當(dāng)注意可以在本發(fā)明的不同實施方式中組合或者省略這里描述的特征和過程要素的任何組合。
權(quán)利要求
1.一種方法,包括在查詢儲存器中存儲查詢和從主要儲存器獲得的與所述查詢有關(guān)的結(jié)果;以及在差異儲存器中存儲對所述主要儲存器的數(shù)據(jù)已經(jīng)改變的指示。
2.根據(jù)權(quán)利要求1所述的方法,還包括在所述差異儲存器中存儲與所述存儲的查詢和與所述存儲的結(jié)果有關(guān)的數(shù)據(jù)。
3.根據(jù)權(quán)利要求1或者2所述的方法,其中在所述差異儲存器中存儲對所述主要儲存器的數(shù)據(jù)已經(jīng)改變的指示包括在所述差異儲存器中存儲指向所述主要儲存器的指針。
4.根據(jù)權(quán)利要求3所述的方法,還包括通過從所述查詢儲存器和從所述差異儲存器取回數(shù)據(jù)來服務(wù)于所述接收的查詢。
5.根據(jù)任一項前述權(quán)利要求所述的方法,其中所述差異儲存器被配置成存儲對所述主要儲存器的內(nèi)容的改變。
6.根據(jù)權(quán)利要求7所述的方法,其中所述差異儲存器適于將數(shù)據(jù)和與所述數(shù)據(jù)對應(yīng)的標(biāo)記一起存儲。
7.根據(jù)權(quán)利要求6所述的方法,其中所述標(biāo)記標(biāo)識數(shù)據(jù)類型,所述方法還包括在所述差異儲存器中存儲多于一個數(shù)據(jù)類型,其中對所述差異儲存器進行分區(qū),各分區(qū)容納所述標(biāo)記的值不同的數(shù)據(jù)。
8.根據(jù)權(quán)利要求7所述的方法,其中一個或者多個所述分區(qū)具有預(yù)定大小。
9.根據(jù)權(quán)利要求7或者8所述的方法,其中一個或者多個所述分區(qū)的大小是動態(tài)可變的。
10.根據(jù)權(quán)利要求7至9中的任一項權(quán)利要求所述的方法,其中分區(qū)數(shù)目是動態(tài)可變的。
11.根據(jù)任一項前述權(quán)利要求所述的方法,其中所述主要儲存器用第一儲存類型存儲而所述查詢儲存器和所述差異儲存器用第二儲存類型存儲,所述第二儲存類型具有比所述第一儲存類型更快的訪問時間。
12.根據(jù)任一項前述權(quán)利要求所述的方法,還包括參照存儲于所述差異儲存器中的數(shù)據(jù)來更新所述查詢儲存器的內(nèi)容。
13.根據(jù)權(quán)利要求12所述的方法,其中在所述差異儲存器的大小超過預(yù)定大小時執(zhí)行所述更新。
14.根據(jù)權(quán)利要求12或者13所述的方法,其中在預(yù)定時間之后執(zhí)行所述更新。
15.根據(jù)權(quán)利要求14所述的方法,其中參照所述差異儲存器空閑的時間段來確定所述預(yù)定時間。
16.一種設(shè)備,包括 處理器,存儲器,被布置成主要儲存器、查詢儲存器和差異儲存器; 所述存儲器包括計算機程序代碼,所述存儲器和所述計算機程序代碼被配置成用所述處理器使所述設(shè)備至少執(zhí)行 在所述查詢儲存器中存儲查詢和從所述主要儲存器獲得的與所述查詢有關(guān)的結(jié)果;以及在所述差異儲存器中存儲對所述主要儲存器的數(shù)據(jù)已經(jīng)改變的指示。
17.根據(jù)權(quán)利要求16所述的設(shè)備,還執(zhí)行在所述差異儲存器中存儲與所述存儲的查詢和與所述存儲的結(jié)果有關(guān)的數(shù)據(jù)。
18.根據(jù)權(quán)利要求16或者17所述的設(shè)備,其中在所述差異儲存器中存儲對所述主要儲存器的數(shù)據(jù)已經(jīng)改變的指示包括在所述差異儲存器中存儲指向所述主要儲存器的指針。
19.根據(jù)權(quán)利要求18所述的設(shè)備,還執(zhí)行通過從所述查詢儲存器和從所述差異儲存器取回數(shù)據(jù)來服務(wù)于所述接收的查詢。
20.根據(jù)權(quán)利要求16至19中的任一項權(quán)利要求所述的設(shè)備,其中所述差異儲存器被配置成存儲對所述主要儲存器的內(nèi)容的改變。
21.根據(jù)權(quán)利要求20所述的設(shè)備,其中所述差異儲存器適于將數(shù)據(jù)和與所述數(shù)據(jù)對應(yīng)的標(biāo)記一起存儲。
22.根據(jù)權(quán)利要求21所述的設(shè)備,其中所述標(biāo)記標(biāo)識數(shù)據(jù)類型,所述設(shè)備還執(zhí)行在所述差異儲存器中存儲多于一個數(shù)據(jù)類型,其中對所述差異儲存器進行分區(qū),各分區(qū)容納所述標(biāo)記的值不同的數(shù)據(jù)。
23.根據(jù)權(quán)利要求22所述的設(shè)備,其中一個或者多個所述分區(qū)具有預(yù)定大小。
24.根據(jù)權(quán)利要求22或者23所述的設(shè)備,其中一個或者多個所述分區(qū)的大小是動態(tài)可變的。
25.根據(jù)權(quán)利要求22至24中的任一項權(quán)利要求所述的設(shè)備,其中分區(qū)數(shù)目是動態(tài)可變的。
26.根據(jù)權(quán)利要求16至25中的任一項權(quán)利要求所述的設(shè)備,其中所述主要儲存器用第一儲存類型存儲而所述查詢儲存器和所述差異儲存器用第二儲存類型存儲,所述第二儲存類型具有比所述第一儲存類型更快的訪問時間。
27.根據(jù)權(quán)利要求16至26中的任一項權(quán)利要求所述的設(shè)備,還執(zhí)行參照存儲于所述差異儲存器中的數(shù)據(jù)來更新所述查詢儲存器的內(nèi)容。
28.根據(jù)權(quán)利要求27所述的設(shè)備,其中在所述差異儲存器的大小超過預(yù)定大小時執(zhí)行所述更新。
29.根據(jù)權(quán)利要求27或者28所述的設(shè)備,其中在預(yù)定時間之后執(zhí)行所述更新。
30.根據(jù)權(quán)利要求29所述的設(shè)備,其中參照所述差異儲存器空閑的時間段來確定所述預(yù)定時間。
31.一種包括計算機可讀介質(zhì)的計算機程序產(chǎn)品,所述計算機可讀介質(zhì)承載體現(xiàn)于其中的用于與計算機一起使用的計算機程序代碼,所述計算機程序代碼包括用于在查詢儲存器中存儲查詢和從主要儲存器獲得的與所述查詢有關(guān)的結(jié)果的代碼;以及用于在所述差異儲存器中存儲對所述主要儲存器的數(shù)據(jù)已經(jīng)改變的指示的代碼。
32.根據(jù)權(quán)利要求31所述的計算機程序產(chǎn)品,還包括用于執(zhí)行根據(jù)權(quán)利要求2至15中的任一項權(quán)利要求所述的方法的代碼。
33.一種計算機程序,包括用于在查詢儲存器中存儲查詢和從主要儲存器獲得的與所述查詢有關(guān)的結(jié)果的代碼;以及用于在所述差異儲存器中存儲對所述主要儲存器的數(shù)據(jù)已經(jīng)改變的指示的代碼。
34.根據(jù)權(quán)利要求33所述的計算機程序,還包括用于執(zhí)行根據(jù)權(quán)利要求2至15中的任一項權(quán)利要求所述的方法的代碼。
35.根據(jù)權(quán)利要求33或者34所述的計算機程序,其中所述計算機程序是包括計算機可讀介質(zhì)的計算機程序產(chǎn)品,所述計算機可讀介質(zhì)承載體現(xiàn)于其上的用于與計算機一起使用的計算機程序代碼。
全文摘要
一種查詢高速緩存存儲查詢和查詢的對應(yīng)結(jié)果,查詢的結(jié)果是從主要儲存器獲得的。差異儲存器存儲指向主要儲存器的如下數(shù)據(jù)的指針,該數(shù)據(jù)已經(jīng)改變并且影響存儲于查詢儲存器中的查詢的結(jié)果。新查詢可以通過如下操作來滿足訪問查詢儲存器中的對應(yīng)查詢并且通過參照差異儲存器來確定主要儲存器中與查詢有關(guān)的數(shù)據(jù)是否已經(jīng)由于查詢儲存器被編輯而改變,并且如果適用則通過訪問主要儲存器中的對應(yīng)數(shù)據(jù)來完成新查詢??梢愿鶕?jù)標(biāo)記對差異儲存器中的數(shù)據(jù)進行布置和分區(qū)??梢愿鶕?jù)預(yù)定規(guī)則變化分區(qū)。
文檔編號G06F17/30GK102227717SQ200980147734
公開日2011年10月26日 申請日期2009年11月27日 優(yōu)先權(quán)日2008年11月27日
發(fā)明者A·卡瑪, H·桑亞納拉亞納納加, K·克哈塔瓦特, M·查納巴薩帕, P·普拉莫德達斯(達斯普拉莫德), S·巴尼克, V·S·R·加納帕西拉朱 申請人:諾基亞公司