新四季網

具有本地高速緩存的內存緩存系統的製作方法

2023-09-11 23:18:30


本公開涉及數據處理的領域。更具體地,本公開涉及具有本地高速緩存的內存緩存(memcached)系統。



背景技術:

本文提供的背景描述是為了一般地呈現本公開的上下文的目的。除非本文另有指示,否則本部分中描述的材料不是本申請中的權利要求的現有技術並且不由於被包括在本部分中而被承認為是現有技術。

在計算中,內存緩存是一種通用的分布式存儲器高速緩存系統。它通常被用於通過在隨機存取存儲器(RAM)中高速緩存數據和對象來加速動態資料庫驅動的web站點以減少外部數據源(例如資料庫)必須被讀取的次數。大多數系統使用包括多個客戶端和伺服器的客戶端-伺服器架構。伺服器維護鍵值關聯陣列;客戶端填充此陣列並查詢它。客戶端使用客戶端側的庫來聯繫伺服器。每個客戶端都知道所有伺服器;伺服器通常不彼此通信。如果客戶端希望設置或讀取對應於某個鍵的值,則客戶端的庫首先計算鍵的散列以確定要使用的伺服器。然後它聯繫該伺服器。伺服器將計算鍵的第二散列以確定在哪裡存儲或讀取對應的值。通常,伺服器將值保持在RAM中;如果伺服器用完了RAM,則它丟棄最舊的值。

對於大型web應用、例如具有數百萬用戶的web應用而言,可能需要幾百個內存緩存伺服器來及時服務於頁面請求。為了滿足業務需求,服務運營商不僅需要提供儘可能大的總存儲器大小以滿足期望的服務水平協議(SLA),而且還需要很多的CPU能力來處理存儲器訪問請求,其除其他之外通常包括GET(獲取)、SET(設置)、UPDATE(更新)。

由於CPU的限制,內存緩存伺服器通常不能充分利用實現存儲器的物理容量。代之以,運營商需要跨多個內存緩存伺服器散布負載以實現預期的負載平衡並且因此實現SLA。這導致至少兩個問題:1)差的存儲器帶寬使用;和2)差的可擴展性。此外,由於重的CPU參與,用於每個存儲器訪問的開銷是高的。這導致按照每個鍵-值對訪問的差的功率效率。第三,對於內存緩存的訪問模式通常是高度隨機的,這使得對存儲在內存緩存中的數據的CPU高速緩存幾乎無用,但浪費了周期和功率。

附圖說明

通過結合附圖的以下詳細描述將容易理解實施例。為了便於該描述,相同的參考標號表示相同的結構元素。在附圖的圖中通過示例而非限制的方式示出了實施例。

圖1是示出根據所公開的實施例的具有內存緩存系統的計算布置的框圖,其中所述內存緩存系統具有本地高速緩存。

圖2-圖4是示出根據所公開的實施例的在伺服器上的內存緩存邏輯的各種操作流程的流程圖。

圖5-圖7是示出根據所公開的實施例的在客戶端上的內存緩存邏輯的各種操作流程的流程圖。

圖8示出了根據所公開的實施例的適合用於實踐本公開的各個方面的示例計算機系統。

圖9示出了根據所公開的實施例的具有用於實踐參考圖2-圖7所描述的方法的指令的存儲介質。

具體實施方式

本文公開了與具有本地高速緩存的內存緩存系統相關聯的設備、方法和存儲介質。在實施例中,內存緩存系統的客戶端設備可能包括存儲器和與存儲器耦合的一個或多個處理器。此外,客戶端設備可能包括內存緩存邏輯,其被配置為接收Get(獲取)或Set(設置)與內存緩存系統中的鍵相對應的值的請求,響應於接收到該請求,確定鍵是否導致由所述內存緩存邏輯在存儲器中維護的本地高速緩存中的命中,以及至少部分地基於所述確定的結果是否指示所述鍵導致所述本地高速緩存中的命中來服務所述Get(獲取)或Set(設置)請求。

在實施例中,內存緩存系統的伺服器可能包括存儲器和一個或多個處理器。此外,內存緩存系統還可能包括內存緩存邏輯,其被配置為接收Get(獲取)與內存緩存系統中的鍵相對應的值的請求,確定鍵是否導致命中,並且響應於所述鍵導致命中,返回所述值和與所述值相關聯的狀態標誌所存儲在的所述內存緩存系統的一個或多個位置的一個或多個地址。在實施例中,內存緩存邏輯還可能被配置為接收請求以使用第二對應值Update(更新)內存緩存系統中的第二鍵,確定第二鍵是否導致命中,以及響應於所述第二鍵導致命中,利用陳舊狀態更新與產生針對第二鍵的命中的第一條目相關聯的第二狀態標誌,將第一條目添加到收集列表,創建針對所述第二鍵的第二條目,以及將第二值指派給第二條目。

在下面的詳細描述中,參考形成詳細描述的一部分的附圖,其中相同的標號始終表示相同的部分,並且其中通過可能實踐的示範實施例的方式而被示出。應當理解,在不脫離本公開的範圍的情況下,可能利用其他實施例,並且可能進行結構或邏輯改變。因此,以下詳細描述不應被視為限制性的,並且實施例的範圍由所附權利要求書及其等同物限定。

在所附的說明書中公開了本公開的各方面。可能在不脫離本公開的精神或範圍的情況下設計本公開的替代實施例及其等同物。應當注意,以下公開的相同元素在圖中由相同的參考標號來指示。

各種操作可能以最有助於理解所要求保護的主題的方式依次被描述為多個離散動作或操作。然而,描述的順序不應被解釋為暗示這些操作必須是順序相關的。具體地,這些操作可能不按照呈現的順序而被執行。所描述的操作可能以與所描述的實施例不同的順序來執行。在附加的實施例中,可能執行各種附加的操作和/或可能省略所描述的操作。

為了本公開的目的,短語「A和/或B」意味著(A)、(B)或(A和B)。為了本公開的目的,短語「A、B和/或C」意味著(A)、(B)、(C)、(A和B)、(A和C)、(B和C) 、或(A,B和C)。

本說明書可能使用短語「在一個實施例中」或「在實施例中」,其每個可能指代相同或不同實施例中的一個或多個。此外,關於本公開的實施例所使用的術語「包括」、「包含」、「具有」等是同義的。

如本文所使用的,術語「模塊」可能指代、是如下內容的一部分或包括:專用集成電路(ASIC)、電子電路、執行一個或多個軟體或固件程序的處理器(共享、專用或群組)和/或存儲器(共享、專用或群組)、組合邏輯電路、和/或提供所描述的功能的其他適當的部件。

現在參考圖1,其中示出了圖示根據所公開的實施例的具有內存緩存系統的計算布置的框圖,其中所述內存緩存系統具有本地高速緩存。如圖所示,具有內存緩存系統的計算布置100可能包括通過網絡104彼此耦合的多個客戶端設備102a-102c和多個伺服器106a-106b。每個客戶端設備102a、102b或102c可能包括對應的處理器和存儲器112a、112b或112c、客戶端側內存緩存邏輯114a、114b或114c、本地高速緩存116a、116b或116c以及網絡接口卡(NIC)118a、118b或118c。然而,每個伺服器106a或106b可能包括對應的處理器和存儲器122a或122b、伺服器側內存緩存邏輯124a或124b,以及遠程直接存儲器訪問(RDMA)NIC 126a或126b。客戶端側內存緩存邏輯114a、114b和114c以及伺服器側內存緩存邏輯124a和124b一起實現具有本地高速緩存​​116a、116b和116c的內存緩存系統,提供了相對於現有內存緩存系統的潛在優點。將在下面更詳細地描述客戶端側內存緩存邏輯114a、114b和114c以及伺服器側內存緩存邏輯124a和124b的操作流程,包括本地高速緩存116a、116b和116c的使用和維護,以及NIC 118a-118c和RDMA NIC 126a-126b的使用。

除了客戶端側內存緩存邏輯114a、114b或114c以及本地高速緩存116a、116b或116c的實例化之外,客戶端設備102a、102b或102c旨在表示本領域已知的廣泛的計算設備,包括但不限於可從加利福尼亞州丘珀蒂諾的蘋果計算機公司、加尼福尼亞州帕羅奧圖的惠普公司獲得的智慧型電話、計算平板、超極本、膝上型計算機、臺式計算機或伺服器等等。因此,處理器和存儲器112a-112c和NIC 118a-118c可能是本領域中已知的許多這些元件中的任何一個。

類似地,除伺服器內存緩存邏輯124a或124b之外,伺服器106a或106b旨在表示本領域已知的廣泛的計算設備,包括但不限於可從德克薩斯州奧斯汀的戴爾計算機公司、紐約阿蒙克的IBM公司獲得的伺服器等等。雖然為了便於理解,示出了計算布置100並且用三個客戶端設備102a,102b和102c以及兩個伺服器106a和106b來描述計算布置100,但是本公開不限於此。在實施例中,計算布置100可能包括任何數量的客戶端設備和任何數量的伺服器。因此,處理器和存儲器122a-122c和RDMA NIC 126a-126b可能是本領域中已知的許多這些元件中的任何一個。

網絡104可能包括本領域已知的一個或多個有線和/或無線、局域和/或廣域、公共和/或私有網絡。每個網絡可能包括一個或多個路由器、交換機、網關和/或其他聯網設備。

現在參考圖2-圖4,其中示出了圖示根據所公開的實施例的在伺服器上的內存緩存邏輯的各種操作流程的三個流程圖。如圖所示,伺服器側內存緩存邏輯124a或124b的操作流程可能包括用於服務於各種請求的過程200和300以及用於維護伺服器的過程400。操作流程可能在框202處開始,其中伺服器側內存緩存邏輯124a或124b可能經歷內存緩存系統的典型伺服器初始化過程。然而,根據本公開,與現有的內存緩存系統不同,在初始化過程期間,伺服器側內存緩存邏輯124a或124b可能將其存儲器122a或122b的物理地址映射到內存緩存系統的地址空間。稍後將描述與虛擬地址相對的映射物理地址的潛在優點。

接下來在框204處,伺服器側內存緩存邏輯124a或124b可能接收並開始來自客戶端102a、102b或102c的請求的服務。在框206處,在接收到請求時,伺服器側內存緩存邏輯124a或124b可能首先確定所接收的請求是否是獲取與內存緩存系統中的鍵相對應的值的Get(獲取)請求。如果它是Get(獲取)請求,則操作流程可能在框208處繼續,其中伺服器側內存緩存邏輯124a或124b可能確定鍵是否導致命中。如果確定的結果指示所述鍵未導致命中,則操作流程可能在框210處繼續,其中伺服器側內存緩存邏輯124a或124b可能例如用指示鍵的請求值未被找到的消息來進行響應。此後,如前所述,操作流程可能繼續回到框204處。

然而,如果在框208處,確定的結果指示鍵導致命中,則操作流程可能在框212處繼續,其中伺服器側內存緩存邏輯124a或124b可能(代替返回所請求的值)向請求客戶端102a、102b或102c返回內存緩存系統的一個或多個位置的一個或多個地址,其中存儲鍵的對應值以及指示該值是否為陳舊的相關聯的狀態標誌。在客戶端設備102a、102b或102c接收到一個或多個地址之後的內容將在稍後參考圖5-圖7描述客戶端設備102a、102b或102c的操作流程時被描述。在實施例中,對應值的位置的地址、以及針對相關聯的狀態標誌的地址被返回。在其他實施例中,返回針對對應值和相關聯的狀態標誌共置的位置的一個地址。

回到框206處,如果確定的結果指示該請求不是Get(獲取)請求,則操作流程可能在圖3中繼續,在框302處開始。在框302處,伺服器側內存緩存邏輯124a或124b可能確定該請求是否是Set(設置)請求。如果確定的結果指示該請求既不是Set(設置)請求也不是Update(更新)請求,則伺服器側內存緩存邏輯124a或124b可能像在現有的存儲系統中那樣處理和服務該請求。此後,如前所述,操作流程可能繼續回到圖2的框204處。

另一方面,如果在框302處確定的結果指示它是Set(設置)或Update(更新)請求,則操作流程可能在框306處繼續。在框306處,伺服器側內存緩存邏輯124a或124b可能確定針對Set(設置)或Update(更新)請求的鍵是否存在舊的對應值。如果在框306處確定的結果指示針對Set(設置)或Update(更新)請求的鍵不存在舊的對應值,則操作流程可能在框308處繼續,其中伺服器側內存緩存邏輯124a或124b可能繼續為該鍵分配在內存緩存系統中的新條目,並為該條目指派由Set(設置)或Update(更新)請求所提供的值。接下來,在框310處,伺服器側內存緩存邏輯124a或124b可能例如用指示已成功完成Set(設置)或Update(更新)請求的消息來響應該請求。從框310,操作流程可能如前所述繼續到圖2的框204處。

回到框306處,如果在框306處確定的結果指示針對Set(設置)或Update(更新)請求的鍵存在舊的對應值,則操作流程可能在框312處繼續,其中伺服器側內存緩存邏輯124a或124b可能Update(更新)與該鍵相關聯的狀態標誌以反映舊的對應值為陳舊。此外,伺服器側內存緩存邏輯124a或124b可將具有鍵和舊對應值的條目添加到回憶(recollect)列表上,以使得被分配給該條目的存儲器能夠隨後被恢復。在實施例中,回憶列表可能是先進先出列表。從框312,操作流程可能如前所述繼續到框308處。

除了用於服務Get(獲取)、Set(設置)或Update(更新)請求的上述操作流程之外,伺服器側內存緩存邏輯124a或124b還可能周期性地執行維護過程400(也稱為清除過程)以恢復被分配給具有被標記為「陳舊」的值的條目的存儲器。過程400可能在框402處開始,其中伺服器側內存緩存邏輯124a或124b等待執行維護過程的時間。過程400可能在框402處連續循環,直到到執行維護過程400的時間。在這樣的時間,過程400可能在框404處繼續。在框404處,伺服器側內存緩存邏輯124a或124b可能確定在哪裡已經添加了任何條目到回憶列表。如果確定的結果指示回憶列表是空的,意味著自從最後維護以來沒有條目具有被標記為陳舊的它們的值,則過程400可能進入休眠,即,返回到框402,並且等待要執行維護時的下一時間點。

另一方面,如果在框404處確定回憶列表不為空,意味著具有陳舊值的一個或多個條目已被添加,則過程400可在框406處繼續。在框406處,伺服器側內存緩存邏輯124a或124b可能檢查回憶列表中的下一個條目,並且確定該下一個條目是否已經到期。可能例如基於自從其被放入回憶列表中的時間起逝去的時間量來確定到期。如果該下一條目尚未到期,對於回憶列表是先進先出列表的所示實施例而言,則如前所述,過程400可能也進入休眠,即返回到框402,並等待要執行維護時的下一時間點。在替代實施例中,在回憶列表不是先進先出列表的情況下,過程400可能返回到框404,並且如前所述那樣代之以從那裡繼續。

另一方面,如果在框406處確定所檢查的條目已到期,則接下來在框408處,伺服器側內存緩存邏輯124a或124b可將分配給該到期條目的存儲器釋放回存儲器池中以供重新使用。此後,過程400可能返回到框404,並且如前所述繼續。可重複框404-408處的操作,直到回憶列表中的沒有條目到期。在處理回憶列表中到期的所有條目時,過程400可能返回到框402,並且如前所述從那裡繼續。

現在參考圖5-圖7,其中示出了圖示根據所公開的實施例的在客戶端上的內存緩存邏輯的各種操作流程的三個流程圖。如圖所示,客戶端內存緩存邏輯114a、114b或114c的操作流程可能包括初始化過程500、服務Get(獲取)請求的過程600以及服務Set(設置)請求的過程700。

初始化過程500可能在圖5的框502處開始,其中客戶端側內存緩存邏輯114a、114b或114c可能如在現有的內存緩存系統中那樣在啟動時對其自身進行初始化。然而,對於所公開的實施例,接下來在框504處,客戶端側內存緩存邏輯114a、114b或114c可能分配本地存儲器的塊以用作本地高速緩存116a、116b或116c。

用於服務Get(獲取)請求的過程600可能在框602開始,其中客戶端內存緩存邏輯114a、114b或114c可能嘗試在本地高速緩存116a、116b或116c中定位Get(獲取)請求的鍵。如果該鍵沒有導致高速緩存命中(或簡單地,命中),則在框606處,客戶端側內存緩存邏輯114a、114b或114c可能向內存緩存系統的伺服器發送Get(獲取)請求,如在現有的內存緩存系統中那樣。作為響應,如前所述,與現有的內存緩存系統不同,在框608處,客戶端側內存緩存邏輯114a、114b或114c可能接收其中鍵的對應值和相關聯的「陳舊」狀態標誌所存儲在的內存緩存系統的一個或多個位置的一個或多個地址。客戶端內存緩存邏輯114a、114b或114c然後對鍵的對應值和相關聯的「陳舊」狀態標誌所存儲的內存緩存系統的一個或多個位置的該返回的一個或多個地址進行高速緩存。接下來,在框610處,客戶端側內存緩存邏輯114a、114b或114c可能使用所返回的值的地址來執行RDMA操作,並取回鍵的對應值。此後,客戶端內存緩存邏輯114a、114b或114c可能將取回的值返回到Get(獲取)請求的請求者。從框610,過程600可能結束。

注意,由於RDMA操作的性質,當客戶端102a、102b或102c取回該值時,伺服器側內存緩存邏輯124a或124b認識不到RDMA操作,並且因此伺服器106a或106b的處理器不涉及服務鍵的對應值的實際取回。換句話說,在本公開內容下,伺服器106a或106b的處理器將不再是瓶頸,從而約束伺服器106a或106b的存儲器的量。因此,在本公開下,與現有的內存緩存系統相比,期望可能在每個伺服器106a或106b上配置大得多的存儲器的量。繼而,與現有的內存緩存系統相比,對於應用而言,可能需要較少的伺服器106a或106b,並且本公開,特別是與在RDMA中物理地址(代替虛擬地址)的直接使用相結合,可能更有效且可擴展。此外,由於處理器的顯著較低的使用,與現有的內存緩存系統相比時,伺服器106a和106b可能消耗少得多的功率並且更節能。

仍然參考圖6,另一方面,如果框604處確定的結果指示該鍵導致命中,則過程600可能進行到框612。在框612處,內存緩存邏輯114a、114b或114c可能確定產生命中的高速緩存條目是否到期。如果產生命中的高速緩存條目尚未到期,則內存緩存邏輯114a、114b或114c可能使用存儲在產生高速緩存命中的高速緩存條目中的值和相關聯的狀態標誌的一個或多個地址來執行RDMA操作,以及取回該鍵的對應值和相關聯的狀態標誌。例如,可能通過將當前系統時間與從內存緩存伺服器取回一個或多個地址的時間進行比較來確定高速緩存條目的到期。如果時間差大於被配置的值,則高速緩存條目可能被確定為已到期。接下來在框614-框616處,內存緩存邏輯114a、114b或114c可能檢查狀態標誌以確定取回的值是否陳舊。如果在框616處確定所取回的值不是陳舊的,則在框618處,內存緩存邏輯114a、114b或114c可將取回的值返回給Get(獲取)請求的請求者。從框618,過程600可能結束。

然而,如果在框612處確定產生命中的高速緩存條目已到期,或者在框616處確定取回的值是陳舊的,則過程600可能在框620處繼續。在框620處,內存緩存邏輯114a、114b或114c可能像在現有的內存緩存系統中那樣向內存緩存系統的伺服器發送Get(獲取)請求。如前所述,與現有的內存緩存系統不同,在框620處,內存緩存邏輯114a、114b或114c可能響應地接收鍵的對應值和相關聯的狀態標誌所存儲的內存緩存系統的一個或多個位置的一個或多個地址。如先前針對類似接收所描述的那樣,內存緩存邏輯114a、114b或114c可能Update(更新)本地高速緩存116a、116b或116c,將返回的一個或多個地址存儲在本地高速緩存116a、116b或116c中的新的高速緩存條目中,並且使得產生高速緩存命中的先前高速緩存條目無效。在替代實施例中,內存緩存邏輯114a、114b或114c可能替代地更新產生高速緩存命中的先前高速緩存條目。接下來,在框622處,如前所討論的那樣,內存緩存邏輯114a、114b或114c可能使用值的返回地址來執行RDMA操作以取回值,並將取回的值返回給Get(獲取)請求的請求者。從框622,過程600可能結束。

類似地,用於服務Set(設置)請求的過程700可能在框702處開始,其中內存緩存邏輯114a、114b或114c可能嘗試在本地高速緩存116a、116b或116c中定位Set(設置)請求的鍵。如果鍵確實導致高速緩存命中(或簡單地,命中)且未到期,則在框706處,內存緩存邏輯114a、114b或114c可能使得產生高速緩存命中的高速緩存條目無效,然後進行到框708,否則過程700直接進行到框708。在框708處,內存緩存邏輯114a、114b或114c可能如在現有內存緩存系統中那樣處理和服務Set(設置)請求。從框708,過程700可能結束。

圖8示出了可能適於用作客戶端設備或伺服器來實踐本公開的所選方面的示例計算機系統。如圖所示,計算機900可能包括一個或多個處理器或處理器核902和系統存儲器904。為了包括權利要求書在內的本申請的目的,「處理器」和「處理器核」可能被認為是同義的,除非上下文另有明確要求。另外,計算機900可能包括大容量存儲設備906(諸如磁碟、硬碟驅動器、光碟只讀存儲器(CD-ROM)等)、輸入/輸出設備908(諸如顯示器、鍵盤、光標控制等)和通信接口910(例如網絡接口卡、數據機等)。元件可能經由系統總線912彼此耦合,系統總線912可能表示一個或多個總線。在多個總線的情況下,它們可能通過一個或多個總線橋(未示出)進行橋接。

這些元件中的每一個元件都可能執行其在本領域中已知的常規功能。特別地,系統存儲器904和大容量存儲設備906可能被採用來存儲實現被統稱為計算邏輯922的之前描述的客戶端或伺服器側內存緩存邏輯114a、114b、114c、124a或124b的編程指令的工作副本和永久副本。各種元件可能由(一個或多個)處理器902所支持的彙編器指令或可編譯為這樣的指令的諸如例如C的高級語言來實現。

這些元件910-912的數量、能力和/或容量可能根據計算機900是用作客戶端設備還是伺服器而變化。具體地,當用作客戶端設備時,這些元件910-912的能力和/或容量可能根據客戶端設備是固定的還是行動裝置而變化,行動裝置比如智慧型電話、計算平板、超級本或膝上型計算機。否則,元件910-912的組成是已知的,並且因此將不進一步進行描述。

如本領域技術人員將理解的那樣,本公開可能被體現為方法或電腦程式產品。因此,除了如前所述的被體現在硬體中之外,本公開可能採取完全軟體實施例(包括固件、駐留軟體、微代碼等)或組合軟體和硬體方面的實施例的形式,其可能全部被一般滴稱為「電路」、「模塊」或「系統」。此外,本公開可能採取體現在具有體現在介質中的計算機可用程序代碼的表示的任何有形或非暫時介質中的電腦程式產品的形式。圖9示出了可能適於用於存儲指令的示例計算機可讀非暫時性存儲介質,所述指令使得設備響應於由設備對指令的執行來實踐本公開的所選方面。如圖所示,非暫時性計算機可讀存儲介質1002可能包括多個編程指令1004。編程指令1004可能被配置為使得設備,例如計算機900,能夠響應於編程指令的執行而執行例如與客戶端或伺服器側內存緩存邏輯114a、114b、114c、124a或124b相關聯的各種操作。在替代實施例中,編程指令1004可能代之以被布置在多個計算機可讀的非暫時性存儲介質1002上。在替代實施例中,編程指令904可能被布置在計算機可讀的暫時存儲介質1002上,諸如信號。

一個或多個計算機可用或計算機可讀介質的任何組合可能被利用。計算機可用或計算機可讀介質例如可能是但不限於:電、磁、光、電磁、紅外或半導體系統、裝置、設備或傳播介質。計算機可讀介質的更具體的示例(非窮舉列表)將包括以下內容:具有一個或多個導線的電連接、可攜式計算機磁碟、硬碟、隨機存取存儲器(RAM)、只讀存儲器(ROM)、可擦除可編程只讀存儲器(EPROM或快閃記憶體)、光纖、可攜式光碟只讀存儲器(CD-ROM)、光存儲設備、傳輸介質,諸如支持網際網路或內聯網的那些,或磁存儲設備。注意,計算機可用或計算機可讀介質甚至可能是在其上列印程序的紙張或另一合適的介質,因為程序可能經由例如紙張或其他介質的光學掃描而被電子捕獲,然後如果需要的話則被編譯、解釋或者另外以合適的方式被處理,並且然後被存儲在計算機存儲器中。在本文檔的上下文中,計算機可用或計算機可讀介質可能是可以包含、存儲、傳送、傳播或傳輸由指令執行系統、裝置或設備使用或與指令執行系統、裝置或設備結合使用的程序的任何介質。計算機可用介質可能包括在基帶中或作為載波的一部分的具有隨其一起被體現的計算機可用程序代碼的傳播數據信號。可能使用任何適當的介質來傳輸計算機可用程序代碼,所述適當的介質包括但不限於無線、有線、光纖線纜、RF等。

用於執行本公開的操作的電腦程式代碼可能以一種或多種程式語言的任何組合來編寫,所述程式語言包括面向對象的程式語言,諸如Java、Smalltalk、C ++等,和常規的過程程式語言,諸如「 C」程式語言或類似的程式語言。程序代碼可能完全地在用戶的計算機上執行、部分地在用戶的計算機上執行、作為獨立軟體包執行、部分地在用戶的計算機上執行且部分地在遠程計算機上執行,或者完全地在遠程計算機或伺服器上執行。在後一種情況下,遠程計算機可能通過包括區域網(LAN)或廣域網(WAN)在內的任何類型的網絡連接到用戶的計算機,或者可能連接到外部計算機(例如,通過使用網際網路服務提供商的網際網路)。

參考根據本公開的實施例的方法設備(系統)和電腦程式產品的流程圖圖示和/或框圖來描述本公開。應當理解,流程圖圖示和/或框圖的每個框以及流程圖圖示和/或框圖中的框的組合可能通過電腦程式指令來實現。這些電腦程式指令可能被提供給通用計算機、專用計算機或其他可編程數據處理設備的處理器,以產生機器,使得經由計算機或其他可編程數據處理設備的處理器執行的指令創造用於實現流程圖和/或一個或多個框圖框中指定的功能/動作的裝置。

這些電腦程式指令還可能被存儲在計算機可讀介質中,其可能引導計算機或其他可編程數據處理設備以特定方式運轉,使得存儲在計算機可讀介質中的指令產生包括實現在流程圖和/或一個或多個框圖框中指定的功能/動作的指令裝置的製品。

電腦程式指令還可能被加載到計算機或其他可編程數據處理設備上,以使得在計算機或其他可編程設備上執行一系列操作步驟,以產生計算機實現的過程,使得在計算機或者其他可編程設備上執行的指令提供用於實現流程圖和/或一個或多個框圖框中指定的功能/動作的過程。

附圖中的流程圖和框圖示出了根據本公開的各種實施例的系統、方法和電腦程式產品的可能實現的架構、功能和操作。在這點上,流程圖或框圖中的每個框可能表示代碼的模塊、段或部分,其包括用於實現(一個或多個)指定的邏輯功能的一個或多個可執行指令。還應注意,在一些替代實現中,框中標註的功能可能不按照附圖中所示的順序發生。例如,取決於所涉及的功能,連續示出的兩個框實際上可能基本上同時被執行,或者框有時可能以相反的順序被執行。還將注意到,框圖和/或流程圖圖示中的每個框以及框圖和/或流程圖圖示中的框的組合可以由執行指定功能或動作的基於專用硬體的系統、或專用硬體和計算機指令的組合來實現。

本文使用的術語是僅為了描述特定實施例的目的,並且不旨在限制本公開。如本文所使用的,除非上下文另有明確指示,否則單數形式「一」、「一個」和「該」也旨在包括複數形式。將進一步理解的是,術語「包括」和/或「包含」當在本說明書中被使用時指明所述特徵、整體、步驟、操作、元素和/或部件的存在,但不排除一個或多個其他特徵、整體、步驟、操作、元素、部件和/或其群組的存在或添加。

實施例可能被實現為計算機進程、計算系統或實現為諸如計算機可讀介質的電腦程式產品之類的製品。電腦程式產品可能是計算機系統可讀的並且對電腦程式指令進行編碼以用於執行計算機進程的計算機存儲介質。

以下權利要求書中的所有裝置或步驟加功能元素的對應結構、材料、動作和等同物旨在包括用於與其他要求保護的元素組合地執行功能的任何結構、材料或動作。已經出於說明和描述的目的給出了本公開的描述,但是並不旨在窮盡或將本公開限制於所公開的形式。在不脫離本公開的範圍和精神的情況下,許多修改和變化對於普通技術人員將是清楚的。選擇和描述實施例,以便最好地解釋本公開的原理和實際應用,並且使得本領域的其他普通技術人員能夠理解如適於預期的特定用途的具有各種修改的實施例的公開。

返回參考圖9,對於一個實施例,處理器902中的至少一個處理器可能與具有計算邏輯922的存儲器封裝在一起(代替存儲在存儲器904和記憶裝置906上)。對於一個實施例,處理器902中的至少一個處理器可能與具有計算邏輯922的存儲器封裝在一起以形成系統級封裝(SiP)。對於一個實施例,處理器902中的至少一個處理器可能與具有計算邏輯922的存儲器集成在相同管芯上。對於一個實施例,處理器802中的至少一個處理器可能與具有計算邏輯922的存儲器封裝在一起以形成片上系統(SoC)。對於至少一個實施例,SoC可能被利用在例如但不限於智慧型電話或計算平板中。

因此,已經描述了本公開的各種示例實施例,包括但不限於:

示例1可能是包括存儲器和與存儲器耦合的一個或多個處理器的內存緩存系統的客戶端設備。所述客戶端設備還可能包括內存緩存邏輯,所述內存緩存邏輯由所述一個或多個處理器操作以:接收請求來Get(獲取)、Set(設置)或Update(更新)與所述內存緩存系統中的鍵相對應的值,響應於接收到所述請求,確定所述鍵是否導致在由所述內存緩存邏輯維護在存儲器中的本地高速緩存中的命中,以及至少部分地基於所述確定的結果是否指示所述鍵導致所述本地高速緩存中的命中來服務所述Get(獲取)、Set(設置)或Update(更新)請求。

示例2可能是示例1,其中,所述內存緩存邏輯用於進一步為所述本地高速緩存在存儲器內分配或使得被分配存儲空間。

示例3可能是示例1或2,其中,對於具有所述鍵導致命中的Get(獲取)請求,服務包括:訪問所述本地高速緩存以取回所述值和所述值的相關聯的狀態標誌所存儲的所述內存緩存系統的一個或多個位置的一個或多個地址;在所述內存緩存系統的伺服器上執行遠程直接存儲器訪問操作,以使用從所述本地高速緩存取回的所述一個或多個地址來取回所述值和所述相關聯的狀態標誌;和至少部分地基於通過所述遠程直接存儲器訪問操作取回的狀態標誌來確定通過所述遠程直接存儲器訪問操作取回的值是否陳舊。

示例4可能是示例3,其中,對於具有所述鍵導致命中的Get(獲取)請求,服務還包括:響應於陳舊確定的結果指示所述值不陳舊,返回所取回的值。

示例5可能是示例3,其中,對於具有所述鍵導致命中的Get(獲取)請求,服務還包括:響應於陳舊確定的結果指示所述值為陳舊,將所述Get(獲取)請求傳輸到所述內存緩存系統的伺服器以請求所述值;接收所述值和所述值的相關聯的狀態標誌所存儲的所述內存緩存系統的第二一個或多個位置的第二一個或多個地址;在所述內存緩存系統的伺服器上執行遠程直接存儲器訪問操作,以使用所接收的所述第二一個或多個地址來取回所述值和所述相關聯的狀態標誌;更新所述本地高速緩存以存儲針對所述鍵的第三和第四地址;並且返回接收的值

示例6可能是示例1-5中的任一個,其中,對於具有所述鍵未導致命中的Set(設置)請求,服務包括:將所述Get(獲取)請求傳輸到所述內存緩存系統的伺服器以請求所述值;接收所述值和所述值的相關聯的狀態標誌所存儲的所述內存緩存系統的一個或多個位置的一個或多個地址;在所述內存緩存系統的伺服器上執行遠程直接存儲器訪問操作,以使用所接收的一個或多個地址來取回所述值和所述相關聯的狀態標誌;和返回接收的值。

示例7可能是權利要求1-6中的任何一個,其中,對於Set(設置)請求,服務包括:響應於所述鍵導致命中,使得產生所述命中的所述本地高速緩存中的高速緩存條目無效;和將所述Set(設置)請求發送到所述內存緩存系統的伺服器

示例8可能是示例3,其中,執行遠程直接存儲器訪問包括首先確定產生所述命中的高速緩存條目尚未到期。

示例9可能是內存緩存系統的伺服器設備,包括:存儲器;與所述存儲器耦合的一個或多個處理器;和被配備來支持遠程存儲器直接訪問的網絡接口卡。所述伺服器設備還可能包括內存緩存邏輯,所述內存緩存邏輯由所述一個或多個處理器操作以:接收請求來Get(獲取)對應於所述內存緩存系統中的鍵的值,確定所述鍵是否導致命中,以及響應於所述鍵導致命中,返回所述值和與所述值相關聯的狀態標誌所存儲的所述內存緩存系統的一個或多個位置的一個或多個地址。

示例10可能是示例9,其中,內存緩存邏輯進一步接收請求以使用第二對應值Update(更新)所述內存緩存系統中的第二鍵,確定第二鍵是否導致命中,以及響應於所述第二鍵導致命中,使用陳舊狀態更新與產生針對所述第二鍵的命中的第一條目相關聯的第二狀態標誌,將所述第一條目添加到收集列表,創建針對所述第二鍵的第二條目,並為所述第二條目指派第二值。

示例11可能是示例9或10,其中,內存緩存邏輯進一步周期性地執行維護操作,以恢復被分配給具有有陳舊狀態的相關聯的狀態標誌的條目的存儲器。

示例12可能是示例9-11中的任一個,其中,所述內存緩存邏輯進一步將所述存儲器的物理地址映射到所述內存緩存系統的地址空間。

示例13可能是用於存儲器高速緩存數據的方法,其包括:由內存緩存系統的客戶端設備接收請求以Get(獲取)、Set(設置)或Update(更新)與所述內存緩存系統中的鍵相對應的值;由所述客戶端設備響應於所述請求的接收來確定所述鍵是否導致在所述客戶端設備的存儲器中維護的本地高速緩存中的命中,以及由所述客戶端設備至少部分地基於確定的結果是否指示所述鍵導致所述本地高速緩存中的命中來服務所述Get(獲取)、Set(設置)或Update(更新)請求。

示例14可能是示例13,還包括所述客戶端設備為所述本地高速緩存分配所述存儲器內的存儲空間。

示例15可能是示例13或14,其中,對於具有所述鍵導致命中的Get(獲取)請求,服務包括:訪問所述本地高速緩存以取回所述值和所述值的相關聯的狀態標誌所存儲的所述內存緩存系統的一個或多個位置的一個或多個地址;在所述內存緩存系統的伺服器上執行遠程直接存儲器訪問操作,以使用從所述本地高速緩存取回的所述一個或多個地址來取回所述值和相關聯的狀態標誌;和至少部分地基於通過所述遠程直接存儲器訪問操作取回的狀態標誌來確定通過所述遠程直接存儲器訪問操作取回的值是否陳舊。

示例16可能是示例15,其中,對於具有所述鍵導致命中的Get(獲取)請求,服務還包括:響應於陳舊確定的結果指示所述值不陳舊,返回所取回的值。

示例17可能是示例15或16,其中,對於具有所述鍵導致命中的Get(獲取)請求,服務還包括:響應於陳舊確定的結果指示所述值為陳舊,將所述Get(獲取)請求傳輸到所述內存緩存系統的伺服器以請求所述值;接收所述值和所述值的相關聯的狀態標誌所存儲的所述內存緩存系統的第二一個或多個位置的第二一個或多個地址;在所述內存緩存系統的伺服器上執行遠程直接存儲器訪問操作,以使用所接收的所述第二一個或多個地址來取回所述值和所述相關聯的狀態標誌;更新所述本地高速緩存以存儲針對所述鍵的第二或更多個地址;和返回接收的值。

示例18可能是示例13-17中的任一個,其中,對於具有所述鍵未導致命中的Set(設置)請求,服務包括:將所述Get(獲取)請求傳輸到所述內存緩存系統的伺服器以請求所述值;接收所述值和所述值的相關聯的狀態標誌所存儲的所述內存緩存系統的一個或多個位置的一個或多個地址;在所述內存緩存系統的伺服器上執行遠程直接存儲器訪問操作,以使用所接收的一個或多個地址來取回所述值和所述相關聯的狀態標誌;和返回接收的值。

示例19可能是示例13-18中的任一個,其中,對於Set(設置)請求,服務包括響應於所述鍵導致命中,使得產生所述命中的所述本地高速緩存中的高速緩存條目無效;和將所述Set(設置)請求發送到所述存儲系統的伺服器。

示例20可能是示例15,其中,執行遠程直接存儲器訪問操作包括:首先確定產生所述命中的高速緩存條目尚未到期。。

示例21可能是一種用於存儲器高速緩存數據的方法,其包括:由內存緩存系統的伺服器接收請求以Get(獲取)對應於鍵的值,由所述伺服器確定所述鍵是否導致命中,以及響應於所述鍵導致命中,由所述伺服器返回所述值和與所述值相關聯的狀態標誌所存儲的所述內存緩存系統的一個或多個位置的一個或多個地址。

示例22可能是示例21,還包括:由所述伺服器接收請求以使用第二對應值Update(更新)所述內存緩存系統中的第二鍵,由所述伺服器確定所述第二鍵是否導致命中,和響應於所述第二鍵導致命中,所述伺服器利用陳舊狀態更新與產生針對第二鍵的命中的第一條目相關聯的第二狀態標誌,將所述第一條目添加到收集列表,創建針對所述第二鍵的第二條目,並為所述第二條目指派第二值。

示例23可能是示例21或22,還包括由所述伺服器周期性地執行維護操作,以恢復被分配給具有有陳舊狀態的相關聯的狀態標誌的條目的存儲器。

示例24可能是示例21-23中的任一個,還包括由所述伺服器將所述伺服器的存儲器的物理地址映射到所述內存緩存系統的地址空間。

示例25可能是包括多個指令的一個或多個存儲介質,響應於客戶端設備對指令的執行,使客戶端設備執行示例13-18的方法中的任何一個。

示例26可能是包括多個指令的一個或多個存儲介質,響應於伺服器設備對指令的執行,使伺服器設備執行示例19-24的方法中的任何一個。

示例27可能是包括用於執行示例13-18的方法中的任一個的裝置的客戶端設備。

示例28可能是包括用於執行示例19-24的方法中的任一個的裝置的客戶端設備。

對於本領域技術人員顯而易見的是,在不脫離本公開的精神或範圍的情況下,可能在所公開的用於內存緩存的設備和相關方法的公開的實施例中進行各種修改和變化,包括應用於其他高速緩存應用、存儲應用或設備。因此,本公開旨在覆蓋上面公開的實施例的修改和變化,只要這些修改和變化落入任何權利要求書及其等同物的範圍內。

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀