[go: up one dir, main page]

TWI859085B - 管理通過第二記憶體訪問第一記憶體的方法及系統 - Google Patents

管理通過第二記憶體訪問第一記憶體的方法及系統 Download PDF

Info

Publication number
TWI859085B
TWI859085B TW113107739A TW113107739A TWI859085B TW I859085 B TWI859085 B TW I859085B TW 113107739 A TW113107739 A TW 113107739A TW 113107739 A TW113107739 A TW 113107739A TW I859085 B TWI859085 B TW I859085B
Authority
TW
Taiwan
Prior art keywords
memory
pointer
data
internal memory
data block
Prior art date
Application number
TW113107739A
Other languages
English (en)
Other versions
TW202439119A (zh
Inventor
郭保宏
范博鈞
楊昇諺
Original Assignee
聯發科技股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 聯發科技股份有限公司 filed Critical 聯發科技股份有限公司
Publication of TW202439119A publication Critical patent/TW202439119A/zh
Application granted granted Critical
Publication of TWI859085B publication Critical patent/TWI859085B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/507Control mechanisms for virtual memory, cache or TLB using speculative control

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Dram (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

一種管理通過第二記憶體訪問第一記憶體的方法,對該第一記憶體的訪問速度為第一速度,該第一記憶體包括第一組資料區塊,對該第二記憶體的訪問速度為與該第一速度不同的第二速度,且該第二記憶體包括第二組資料區塊,該方法包括:將資料從該第一記憶體中的該第一組資料區塊中的一個或多個資料區塊順序地自動複製到該第二記憶體中的該第二組資料區塊中對應的一個或多個資料區塊;接收對該第二記憶體的讀取命令;響應於接收到該讀取命令,獲取指示該第二記憶體中的一資料區塊的地址的一指針,該第二記憶體中的該資料區塊包含從該第一記憶體複製的第一個可被訪問的資料;以及根據該指針獲取該第二記憶體中的該資料區塊的該第一個可被訪問的該資料。

Description

管理通過第二記憶體訪問第一記憶體的方法及系統
本公開的一些方面涉及應用程式介面(Application Programming Interface,API)中的記憶體訪問,更具體地說,涉及外部記憶體與內部記憶體之間的自動複製。
任何執行功能的軟體都可被視為一個應用程式。當應用程式彼此互動時,API 簡化了應用程式之間的整合並促進無縫通訊。API 通過隔離通過 API 連接的每個應用程式的基礎設施來提供安全性。應用程式之間的資料傳輸是 API 的核心功能之一。因此,在設計 API 時,多個應用程式之一用於請求信息的請求與該信息的交付之間的延遲(即時間延遲)是考慮的因素之一。
本公開提供管理通過第二記憶體訪問第一記憶體的方法及系統。
在一個可選的實施例中,本公開提供一種管理通過第二記憶體訪問第一記憶體的方法,對該第一記憶體的訪問速度為第一速度,該第一記憶體包括第一組資料區塊,對該第二記憶體的訪問速度為與該第一速度不同的第二速度,且該第二記憶體包括第二組資料區塊,該方法包括:將資料從該第一記憶體中的該第一組資料區塊中的一個或多個資料區塊順序地自動複製到該第二記憶體中的該第二組資料區塊中對應的一個或多個資料區塊;接收對該第二記憶體的讀取命令;響應於接收到該讀取命令,獲取指示該第二記憶體中的一資料區塊的地址的一指針,該第二記憶體中的該資料區塊包含從該第一記憶體複製的第一個可被訪問的資料;以及根據該指針獲取該第二記憶體中的該資料區塊的該第一個可被訪問的該資料。
在另一可選的實施例中,本公開提供一種系統,包括:內部記憶體;以及一個或多個處理器,配置為通過該內部記憶體訪問外部記憶體,以第一速度訪問該外部記憶體,該外部記憶體包括第一組資料區塊,以與該第一速度不同的第二速度訪問該內部記憶體,且該內部記憶體包括第二組資料區塊,該一個或多個處理器還配置為:將資料從該外部記憶體中的該第一組資料區塊中的一個或多個資料區塊順序地自動複製到該內部記憶體中的該第二組資料區塊中對應的一個或多個資料區塊;接收對該內部記憶體的讀取命令;響應於接收到對該內部記憶體的讀取命令,獲取指示該內部記憶體中的一資料區塊的地址的一指針,該資料區塊包含從該外部記憶體複製的第一個可被訪問的資料;以及根據該指針獲取該內部記憶體中的該資料區塊中的該第一個可被訪問的該資料。
實施本公開提供的實施例可實現資料的自動複製且可通過使用指針消除地址確定和管理。
現在將參考圖式詳細描述本公開內容。應理解,圖式和示例性的實施例不限於本公開所述之細節。可以在不偏離所公開主題的精神和範圍的情況下進行修改。
如前所述,API促進了應用程式之間的無縫通信和資料傳輸。多個應用程式之一對資料的請求與滿足該請求之間的延遲或延時可能會影響基於延遲所產生的使用者體驗API 的效率。影響延遲的一個因素是實現API功能的處理器將資料從長延遲記憶體轉移到快速記憶體所需的時間。長延遲記憶體(也稱為外部記憶體或次級記憶體)通常被視為不直接連接到實現API功能的處理器的記憶體,而快速記憶體(也稱為內部記憶體或主記憶體)可能是連接到並可直接由實現API功能的處理器訪問的記憶體。長延遲或次級記憶體可通過快速或主記憶體被訪問。長延遲記憶體的一些例子包括雲存儲、固態硬盤和光盤,而快速記憶體的一些例子包括只讀記憶體(ROM)、隨機訪問記憶體(RAM)和快取記憶體(cache memory)。
當實現API功能的處理器需要載入和使用存儲在長延遲記憶體中的資料或將資料寫入長延遲記憶體時,與長延遲記憶體和快速記憶體之間的資料傳輸相關的延遲可能會被API的用戶注意到。同時,長延遲記憶體的存儲容量通常大於快速記憶體的存儲容量。因此,作為舉例,長延遲記憶體中的所有資料可能無法一次移動到快速記憶體中以使其更快被訪問。減少對長延遲記憶體中的資料的訪問延遲的先前方法包括將資料的一個子集從長延遲記憶體移動到快速記憶體以減少訪問該子集資料的延遲。然而,此先前方法可能需要跟踪快速記憶體中的存儲可用性以確定何時可以從長延遲記憶體中複製更多資料,以及需要管理快速記憶體中的記憶體地址。也就是說,當資料通過程序命令從長延遲記憶體放入快速記憶體,然後被釋放時,API的程序員可能需要計算快速記憶體中的記憶體地址的命令。這可能很麻煩。
有益的是,本公開詳細介紹的任何一種方法或組合的方法都有助於在快速記憶體中有空間時自動將資料從長延遲記憶體複製到快速記憶體。空間可以以稱為磚塊(tile)或區塊(block)的單位引用,例如,快速記憶體可能包括磚塊/區塊的一維或二維陣列。除了自動複製,還可以通過使用多個指針消除地址確定和管理。這種方法可以透過在處理器需要資料之前在快速記憶體中提供資料來隱藏與對長延遲記憶體訪問資料相關的延遲,同時潛在地避免管理地址的需要。雖然出於解釋的目的而具體討論了API,但任何需要訪問次級記憶體存儲的應用程式都可能受益於此處詳細介紹的自動複製和基於指針的訪問的各個方面。
圖1是根據某些實施例的可訪問外部記憶體140的示例的系統100的方塊圖。作為舉例,外部記憶體140可以由多個區塊或磚塊構成。系統100包括內部記憶體110,其存儲容量通常小於外部記憶體140。內部記憶體110也可以構造為包括多個區塊或磚塊。系統100包括一個或多個處理器120,處理器120可以直接訪問內部記憶體110,但不能直接訪問外部記憶體140。訪問速度S1和延遲L1可與外部記憶體140和內部記憶體110之間的資料傳輸相關。訪問速度S2和延遲L2可與一個或多個處理器120和內部記憶體110之間的資料傳輸相關。訪問速度S2可能比S1快。因此,由於訪問速度和延遲成反比,延遲L2可能小於L1。
系統100還可能包括其他記憶體130。其他記憶體130可能存儲例如使處理器120實施諸如API的操作的指令。系統100還可能包括促進系統100功能的其他組件。當內部記憶體110中的一個或多個記憶體區塊未使用時,資料會自動從外部記憶體140複製到內部記憶體110中的可用區塊。處理器120處理的指令(例如,存儲在其他記憶體130中)可以使用存儲內部記憶體110中下一個可讀區塊的地址的指針(pointer)來訪問內部記憶體110中的資料,而不是通過確定用於訪問資料的地址來訪問資料。可以使用額外的指針來確定是否可以執行從外部記憶體140到內部記憶體110的自動複製,以及是否已將內部記憶體110中的資料載入到一個或多個處理器120中以供使用,從而可以從內部記憶體110釋放資料以容納來自外部記憶體140的額外複製。將參考圖2A至圖3B討論指針的使用。
圖2A根據某些實施例示出了一個示例性的記憶體傳輸方案。外部記憶體140的示例性區塊顯示為包括由A1-A3和B1-B3指示的資料。內部記憶體110顯示為包括三個區塊。示例性的圖示不旨在限制外部記憶體140或內部記憶體110的記憶體區塊的排列或數量。作為舉例,記憶體區塊可以排列成二維陣列,並且可以包括任意數量的記憶體區塊。
如箭頭所示,內部記憶體110的三個區塊首先分別通過從外部記憶體140的自動複製填充資料A1、A2、A3(即,資料A1被複製到內部記憶體110的第一區塊,資料A2被複製到第二區塊,資料A3被複製到第三區塊)。當內部記憶體110中的每個資料區塊被讀出(即,被載入到處理器120中)時,執行自動複製以填充該區塊。例如,如箭頭所示,在資料A1從內部記憶體110被載入到處理器120之後,內部記憶體110的第一區塊通過從外部記憶體140的自動複製填充資料B1。在資料A2被載入到處理器120之後,內部記憶體110的第二區塊通過從外部記憶體的自動複製填充資料B2,並且在資料A3被載入到處理器120之後,內部記憶體110的第三區塊通過從外部記憶體的自動複製填充資料B3。
圖2B根據某些實施例示出了圖2A中的示例性的記憶體傳輸方案所涉及的操作。圖2B示出了從外部記憶體140到內部記憶體110的順序地自動複製操作,以及從內部記憶體110到處理器120的載入操作,這些載入操作至少可以部分與自動複製操作並行執行。如圖3A和圖3B所詳細介紹的,可以使用不同的指針來確定應從外部記憶體140自動複製到的內部記憶體110中的下一個資料區塊,內部記憶體110中的下一個資料區塊可以由處理器120讀取或寫入,以及內部記憶體110中的下一個資料區塊可以由外部記憶體140讀取或從外部記憶體140複製。
圖3A根據某些實施例示出了與從外部記憶體140複製資料到內部記憶體110和從內部記憶體110載入資料到處理器120相關的記憶體操作的示例。在示例性的圖示中,示出了外部記憶體140的九個資料區塊,並且內部記憶體110包括三個記憶體區塊。如前所述,此示例性的圖示不限制外部記憶體140和內部記憶體110中的記憶體區塊的數量和排列。
內部記憶體110的快照序列編號為 “(1)”至 “(12)”。在序列的每個快照中,指示三個指針“複製”、“下一個”和“釋放”的位置。複製指針存儲內部記憶體110中的可以使資料從外部記憶體140複製到的下一個區塊的地址,並且每次從外部記憶體140到內部記憶體110的自動複製完成後複製指針自動增加。因此,如圖所示,在序列(1)中,複製指針指示內部記憶體110的第一區塊。在序列(1)和序列(2)之間,執行了自動複製以填充內部記憶體110的所有三個區塊。因此,複製指針在序列(2)中回到開始位置,以指示內部記憶體110的第一區塊作為下一個自動複製到的區塊。
下一個指針可能會在程式指令中被使用(例如,儲存在其他記憶體130中),以便一個或多個處理器120將資料載入內部記憶體110或從內部記憶體110載出(例如,進入下一個指針和複製指針之間的區塊或從下一個指針和複製指針之間的區塊載出)。釋放指針也可能在程式指令中被使用,並指定內部記憶體110中可用於自動複製的區塊(例如,複製指針和釋放指針之間的區塊)。與自動複製後會自動更新的複製指針不同,下一個指針和釋放指針是使用程式指令更新的。如圖3A中的示例性圖示所示,從外部記憶體140到內部記憶體110的自動複製是由用戶通過程式指令控制下一個指針和釋放指針觸發的。每個序列的標題指示了可能儲存(例如,在其他記憶體130中)並由一個或多個處理器120處理的示例性指令,例如,“取下一個”指示獲取下一個用於讀取或寫入的區塊的指令,而“釋放”指示允許資料被重寫的指令。然而,“自動複製”不是一個被處理的指令,而是一個自動操作。如參考圖4所述,可能有與這些指令相關的檢查。
如圖3A所示,在與序列(2)至(3),(5)至(6),(8)至(9)和(11)至(12)相關的快照中,當資料從內部記憶體110的區塊載入到處理器120時,釋放指針被增加。也就是說,下一個指針指示下一個要載入資料的區塊,而釋放指針最初與下一個指針指向相同的區塊(例如,如序列(2)中所示),然後基於從先前指示的區塊載入,釋放指針被增加(例如,如序列(3)中所示)。如與序列(3)至(4),(6)至(7)和(9)至(10)相關的快照所示,執行從外部記憶體140到內部記憶體110的已釋放區塊的自動複製,並且複製指針在複製後自動增加。
如序列(9)至(11)所示,在具有三個區塊的示例性的內部記憶體110中,上述指針會回到第三區塊之後的第一區塊。也就是說,釋放指針在序列(9)中返回到第一區塊,複製指針在序列(10)中返回到第一區塊,下一個指針在序列(11)中返回到第一區塊。因為上述指針以這種方式循環通過區塊,所以根據某些實施例,內部記憶體110可以被描繪和視為一個循環環形緩衝區。如參考圖4所述,程式碼可能被寫入以執行檢查,以確保基於指針的位置僅獲得有效的區塊或相關錯誤訊息。
圖3B根據某些實施例示出了與從處理器120存儲資料到內部記憶體110和從內部記憶體110複製資料到外部記憶體140相關的記憶體操作的示例。類似於圖3A所示的,示例性的圖示示出了外部記憶體140的九個資料區塊和內部記憶體110的三個記憶體區塊。類似於圖3A,內部記憶體110的一系列快照從“(1)”編號到“(12)”。在序列的每個快照中,都指示了“複製”、“下一個”和“釋放”的位置。除了“存儲和釋放”,本圖中的標題與圖3A中的相同,“存儲和釋放”用於指示在區塊被釋放之前區塊中的資料從內部記憶體110寫入外部記憶體140。更多細節將參考圖5進行討論。
如圖3B所示,在與序列(2)至(3),(5)至(6),(8)至(9)和(11)至(12)相關的快照中,當資料從處理器120寫入到內部記憶體110中的區塊時,釋放指針被增加。也就是說,下一個指針指示下一個要寫入資料的區塊,釋放指針和下一個指針最初指向相同的區塊(例如,如序列(2)中所示),然後基於資料被寫入先前指示的區塊,釋放指針被增加(例如,如序列(3)中所示)。如與序列(3)至(4),(6)至(7)和(9)至(10)相關的快照所示,執行從內部記憶體110到外部記憶體140的自動複製,並且複製指針在複製後自動增加。如參考圖3A所述,因為指針循環通過區塊,如在序列(9),(10)和(11)中所示,根據某些實施例,內部記憶體110可以被描繪和視為一個循環環形緩衝區。
圖4是根據一些實施例的控制與將資料從外部記憶體140複製到內部記憶體110以及由一個或多個處理器120從內部記憶體110獲取資料相關聯的記憶體操作的方法400的處理流程。該方法可能由系統100執行。記憶體操作的各方面已在圖3A中描繪。在401,初始化內部記憶體110,該初始化可能包括設置複製緩衝區、釋放緩衝區和下一個緩衝區(也即,設置複製指針、釋放指針和下一個指針)以存儲相同的地址(即內部記憶體110的第一區塊的地址(例如,如圖3A中的序列(1)所示))。在402,從外部記憶體140順序地自動複製一個或多個資料區塊到內部記憶體110,例如,如圖3A的序列(2)中所示。
在404,接收用於從內部記憶體110讀取的命令。具體指一個或多個處理器120接收與從內部記憶體110讀取資料相關聯的指令(例如,儲存在其他記憶體130中)。在406,處理用於從內部記憶體110讀取的命令,該處理包括確定例如下一個指針指示的有效資料區塊,並且可以涉及一組命令。例如,可以先發出取得下一個指針的命令,以確定是否有有效的資料區塊可供訪問或是否回傳錯誤代碼。用於從內部記憶體110讀取的一個或多個有效資料區塊是下一個指針和複製指針之間的區塊。因此,如果下一個指針和複製指針在同一個位置,則沒有有效的區塊可供讀取。如果在406的檢查通過,這可能導致一個或多個處理器120從內部記憶體110載入資料。在408,接收釋放內部記憶體的命令,該步驟具體是指一個或多個處理器120實施指令以釋放內部記憶體110的一個或多個區塊,在410,增加釋放指針。在可選的實施中,在步驟406,一個或多個處理器120可從內部記憶體110中第一個可被訪問的資料開始從內部記憶體載入資料。此處所述的“第一個可被訪問的資料”是針對某一個特定的訪問時刻該下一個指針所指的位置,當訪問時刻發生變化或者說當下一個指針發生移動,“第一個可被訪問的資料”相應進行變化或移動。
在412,可能執行檢查以確定是否滿足從外部記憶體140到內部記憶體110的自動複製的條件。例如,可能執行檢查複製指針所指示的地址是否與釋放指針所指示的地址相同。如果在412的檢查表明滿足自動複製的條件(例如,複製指針和釋放指針之間至少有一個區塊),則可能實施從402開始的另一個迭代。相反,如果412的檢查結果是不滿足自動複製的條件,則從外部記憶體複製的過程結束。因為這是一個異步結束,在414,可能接收到一個(同步)等待命令。也就是說,由一個或多個處理器120實施的指令可能包括一個等待指令,以在412的檢查結果為條件不滿足時同步等待對應的異步結束完成。等待後,過程可能在416結束。結束(在416)可能表明釋放內部記憶體110,隨後可能重新初始化(在401)。如果對讀取命令的處理的一部分的檢查(在406)表明內部記憶體110中沒有有效的區塊可用,則也可能執行414的處理。
圖5是根據一些實施例的控制與將來自一個或多個處理器120的資料儲存在內部記憶體110中以及將資料從內部記憶體110複製到外部記憶體140相關聯的記憶體操作的方法500的處理流程。記憶體操作的各方面已在圖3B中描繪。像方法400的過程一樣,方法500的過程可能由系統100執行。在501,初始化內部記憶體110,該初始化可能包括設置複製緩衝區、釋放緩衝區和下一個緩衝區(也即,複製指針、釋放指針和下一個指針)以存儲相同的地址(即內部記憶體110的第一區塊的地址(例如,如圖3B中的序列(1)所示))。在502,從內部記憶體110順序地自動複製一個或多個資料區塊到外部記憶體140,例如,如圖3B的序列(4)所示的,從內部記憶體110的第一區塊中複製 “A”到外部記憶體140。
在504,從一個或多個處理器120接收用於將資料寫入內部記憶體110的命令。該步驟指的是一個或多個處理器120接收到將資料寫入內部記憶體110的指令。在506,處理用於將資料寫入到內部記憶體110的命令,該處理可以包括驗證內部記憶體110的有效區塊可用。此驗證可以涉及將指示內部記憶體110中的一個區塊的地址的下一個指針的地址與複製指針的地址進行比較,以確保在下一個指針和複製指針之間存在至少一個區塊。如前所述,在執行該驗證時必須考慮循環訪問(例如,根據圖3B中的佈置,在最後一個區塊之後到達第一個區塊)。也就是說,由於參考圖3A和3B所述的循環方案,在另一個地址(例如,最後一個區塊的地址)之後的地址(例如,第一個區塊的地址)可以具有更低的地址值和在另一個地址(例如,第一個區塊的地址)之前的地址(例如,最後一個區塊的地址)可以具有更高的地址值。因此,當下一個指針和複製指針之間存在至少一個區塊時,複製指針可以具有比下一個指針更低的地址值。 基於此驗證,一個或多個處理器120可以將資料寫入到內部記憶體110的一個或多個區塊中。在508,接收用於釋放內部記憶體的命令,該步驟具體是指一個或多個處理器120實施釋放內部記憶體的一個或多個區塊的指令。在510增加釋放指針。
在512,可執行檢查以確定是否滿足從內部記憶體110到外部記憶體140的自動複製的條件。作為舉例,此檢查可以類似於參考圖4的方法400的412討論的檢查。檢查的目的是確定複製指針和釋放指針之間是否存在一個或多個區塊。 如果在512處的檢查結果指示滿足自動複製的條件,則可以實施在502處開始的另一個迭代。 相反,如果512處的檢查結果是不滿足自動複製的條件,則可以在514處接收等待命令以解決該過程的非同步結束。在同步等待命令完成之後,該過程可以在516處結束。
根據本文所述的原理操作的技術可以以任何合適的方式實現。上述流程圖的處理和決策區塊表示可以包括在執行這些過程的算法中的步驟和動作。從這些過程導出的算法可以實現為與一個或多個單用途或多用途處理器整合並指導其操作的軟體,或者,可以實現為功能上等效的電路,例如DSP電路或ASIC,或者可以以任何其他適當的方式實現。應理解,本文中包含的流程圖不展示任何特定電路或任何特定程式語言或程式語言類型的語法或操作。相反,流程圖示出了所屬技術領域具有通常知識者可以用來製造電路或實現電腦軟體算法以執行本文所述的技術類型的特定裝置的處理的功能資訊。例如,流程圖或其一部分可以單獨由被配置或建構成執行流程圖的各種流程硬體(例如,一個或多個類比或數位電路、一個或多個硬體實現的狀態機等),和/或它們的任何組合來實現。在一些例子中,流程圖或其部分可以由機器可執行指令(例如,機器可讀指令、計算機可讀指令、計算機可執行指令等)來實現,當指令由一個或多個單用途或多用途處理器執行時,執行流程圖的各種處理。也應理解,除非本文另外指示,否則每個流程圖中描述的步驟和/或動作的特定順序僅是可以實現的算法的說明,並且可以在本文描述的原理的實現和實施例中變更。
因此,在一些實施例中,本文所述的技術可以作為軟體實現,具體體現為機器可執行指令中,所述軟體包括應用軟體、系統軟體、韌體、中介軟體、嵌入式程式碼或任何其他合適類型的電腦程式碼。這樣的機器可執行指令可以使用多種合適的程式語言和/或程式設計或腳本工具中的任何一種來產生、編寫等,並且還可以被編譯為在框架上執行的可執行機器語言程式碼或中間代碼、虛擬機器或容器。
當本文所述的技術被體現為機器可執行指令時,這些機器可執行指令可以以任何合適的方式實現,包括實現為多個功能設備,每個功能設備提供一個或多個操作以根據本文所述的技術完成算法的執行。無論如何實例化,「功能設備」都是電腦系統的結構組件,當與一台或多台電腦整合並由一台或多台電腦執行時,使該一台或多台電腦執行特定的操作角色。功能設備可以是軟體元素的一部分或整個都是軟體元素。例如,功能設備可以被實現為過程函數、或離散過程、或任何其他適當的處理單元。如果本文所述的技術實現為多個功能設備,則每個功能設備可以以其自己的方式實現;它們不需要以相同的方式實施。另外,這些功能設備可以酌情並行和/或串行執行,並且可以使用它們正在執行的計算機上的共享存儲器、使用消息協議或其他合適的方式傳遞信息。
一般而言,功能設備包括執行特定任務或實作特定抽象資料類型的例程、程式、對象、元件、資料結構等。通常,功能設備的功能可以根據需要組合或分佈在它們運行的系統中。在一些實施方式中,執行本文的技術的一個或多個功能設備可以一起形成完整的軟體包。 在替代實施例中,這些功能設備可以適合與其他不相關的功能設備和/或流程交互,以實現軟體程式應用。
本文已經描述了用於執行一項或多項任務的一些示例性功能設備。然而,應理解,所描述的功能設備和任務劃分僅僅是可以使用本文所描述的示例性技術來實現的功能設備的類型的說明,並且實施例不限於以任何特定數量、劃分或類型的功能設備來實現。在一些實作方式中,所有功能都可以在單一功能設備中實現。也應理解,在一些實施方式中,本文所描述的功能設備中的一些可以與其他功能設備一起實施或單獨實施(例如,作為單個單元或單獨的單元),或者可以不實施這些功能設備中的一些。
在一些實施例中,實現本文所述的技術的機器可執行指令(當實現為一個或多個功能設備或以任何其他方式實現時)可以被編碼在一個或多個電腦可讀媒體、機器可讀媒體等上,以提供媒體功能。電腦可讀媒體包括諸如硬碟之類的磁性媒體、諸如CD或DVD之類的光學媒體、持久性或非持久性固態記憶體(例如,快閃記憶體、磁性RAM等)或任何其他適當的儲存媒體。這樣的電腦可讀介質可以以任何合適的方式來實現。 如本文所使用的,術語「電腦可讀媒體」(也稱為「電腦可讀儲存媒體」)和「機器可讀媒體」(也稱為「機器可讀儲存媒體」)指的是有形儲存媒體。有形儲存媒體是非暫時性的,並且具有至少一個物理結構組件。 在本文中使用的「電腦可讀媒體」和「機器可讀媒體」中,至少一個物理結構組件具有至少一種物理特性,該物理特性可以在創建具有嵌入資訊的媒體的過程中以某種方式改變,在其上記錄資訊的過程,或用資訊對媒體進行編碼的任何其他過程。 例如,電腦可讀媒體、機器可讀媒體等的物理結構的一部分的磁化狀態可以在記錄過程期間改變。
此外,上述一些技術包括以某些方式儲存資訊(例如,資料和/或指令)以供這些技術使用的動作。在這些技術的一些實現方式中,諸如這些技術被實現為機器可執行指令的實現方式,資訊可以被編碼在電腦可讀儲存媒體上。在本文中將特定結構描述為儲存該資訊的有利格式的情況下,這些結構可以用於當在儲存媒體上編碼時賦予該資訊的實體組織。然後,這些有利的結構可以透過影響與資訊互動的一個或多個處理器的操作來向儲存媒體提供功能;例如,透過提高處理器執行的電腦操作的效率。
在某些但不是全部的實作中,這些技術可以被體現為機器可執行指令,這些指令可以在操作於任何合適的電腦和/或電子系統的一個或多個合適的計算設備和/或電子設備上執行,或可以被程式化來執行機器可執行指令的一個或多個計算設備(或一個或多個計算設備的一個或多個處理器)和/或一個或多個電子設備(或一個或多個電子設備的一個或多個處理器)上執行。當指令以計算設備、電子設備或處理器可訪問的方式存儲在諸如資料存儲(例如,片上高速緩存或指令寄存器、可經由匯流排訪問的電腦可讀儲存媒體和/或機器可讀儲存媒體、可經由一個或多個網路訪問的電腦可讀儲存媒體和/或機器可讀儲存媒體並可由裝置/處理器等訪問)上時 ,計算設備、電子設備或處理器(例如,處理器電路)可以被編程為執行指令。包括這些機器可執行指令的功能設備可以與單一多用途可編程數位計算設備、共享處理能力並聯合執行本文描述的技術的兩個或更多個多用途計算設備的協調系統、專用於執行本文所述的技術的單一計算設備或計算設備的協調系統(處於相同位置或在地裡位置上分佈開)、用於執行本文所述的技術的一個或多個FPGA、或任何其他合適的系統進行集成並指導它們操作。
已經描述了以電路和/或機器可執行指令實現本文的技術的實施例。應理解,一些實施例可以是方法的形式,已經提供了該方法的至少一個示例。作為該方法的一部分執行的動作可以以任何合適的方式排序。因此,即使在說明性實施例中被示為順序執行的動作,仍可以建構其中以與所示順序不同的順序執行動作的實施例,這些實施例可以包括同時執行一些動作。
上述實施例的各個方面可以單獨使用、組合使用、或者以在前面描述的實施例中未具體討論的各種佈置來使用,並且因此在應用中不限於前面的描述中闡述或在附圖中示出的組件組的細節和佈置。 例如,一個實施例中的方面可以以任何方式與其他實施例中的方面組合。
本文在說明書和申請專利範圍中使用的短語“和/或”應理解為表示如此結合的元件的“一者或兩者”,例如,在一些情況下結合存在的元件和在其他情況下分離地出現。 用“和/或”列出的多個元素應該以相同的方式解釋,例如,如此連接的“一個或多個”元素。 除了由「和/或」子句具體標識的元素之外,可以可選地存在其他元素,無論與具體標識的那些元素相關還是無關。因此,作為非限制性示例,當與諸如“包括”之類的開放式語言結合使用時,對“A和/或B”的引用在一個實施例中可以僅指A(可選地包括除B以外的元素 );在另一個實施例中,僅指B(選擇性地包括除A以外的元素);在另一實施例中,指A和B兩者(可選地包括其他元素)。
說明書和申請專利範圍書中使用的不定冠詞“一”和“一個”,除非明確相反地指示,否則應理解為表示“至少一個”。
如本文在說明書和申請專利範圍書中所使用的,涉及一個或多個元素的列表的短語「至少一個」應被理解為意指選自元素列表中的元素中任意一個或多個元素的至少一個元素,但不一定包括元素列表中具體列出的每個元素中的至少一個,並且不排除元素列表中的元素的任何組合。這個定義還允許除了短語「至少一個」所指的元素列表內具體標識的元素之外的無論與具體標識的那些元素相關還是不相關的元素可以可選地存在。 因此,作為非限制性示例,“A和B中的至少一者”(或等價地,“A或B中的至少一者”,或等價地,“A和/或B中的至少一者」)可以在一個實施例中,是指至少一個、可選地包括多於一個的A,不存在B(並且可選地包括除B之外的元素);在另一實施方案中,是指至少一個,選擇性地包括多於一個B,不存在A(並且可選地包括除A以外的元素);在又一實施例中,是指至少一個、選擇性地包括多於一個的A,以及可選地包括多於一個的B(並且可選地包括其他元素)。
在申請專利範圍中使用諸如「第一」、「第二」、「第三」等序數術語來修改申請專利範圍要素本身並不意味著一個申請專利範圍要素相對於另一個申請專利範圍要素的任何優先權、優先級或順序,或執行方法動作的時間順序,但僅用作標籤來區分具有特定名稱的一個申請專利範圍要素與具有相同名稱的另一要素(但使用序數術語)以區分申請專利範圍要素。
此外,本文中使用的措詞和術語是為了描述的目的並且不應被視為限制。本文所使用的「包括」、「包含」、「具有」、「涉及」及其變體意在涵蓋其後列出的項目及其等同物以及附加項目。
如本文所定義和使用的所有定義應被理解為基於字典定義、透過引用併入的文件中的定義和/或所定義術語的普通含義。
本文所使用的字詞「示例性的」意指充當範例、實例或說明。因此,除非另有說明,本文中描述為示例性的任何實施例、實施方式、過程、特徵等應當被理解為說明性的示例,而不應被理解為優選或有利示例。
已經描述了至少一個實施例的幾個方面,應當理解,所屬技術領域具有通常知識者將容易想到各種改變、修改和改進。這些改變、修改和改進旨在成為本揭露的一部分並且旨在處於本文描述的原理的精神和範圍內。因此,前述描述和附圖僅作為範例。
140:外部記憶體 100:系統 110:內部記憶體 120:處理器 130:其他記憶體 400,500:方法 401,402,404,406,408,410,412,414,416,501,502,504,506,508,510,512,514,516:步驟
圖1是根據某些實施例的可訪問外部記憶體140的示例的系統100的方塊圖。 圖2A根據某些實施例示出了一個示例性的記憶體傳輸方案。 圖2B根據某些實施例示出了圖2A中的示例性的記憶體傳輸方案所涉及的操作。 圖3A根據某些實施例示出了與從外部記憶體140複製資料到內部記憶體110和從內部記憶體110載入資料到處理器120相關的記憶體操作的示例。 圖3B根據某些實施例示出了與從處理器120存儲資料到內部記憶體110和從內部記憶體110複製資料到外部記憶體140相關的記憶體操作的示例。 圖4是根據一些實施例的控制與將資料從外部記憶體140複製到內部記憶體110以及由一個或多個處理器120從內部記憶體110獲取資料相關聯的記憶體操作的方法400的處理流程。 圖5是根據一些實施例的控制與將來自一個或多個處理器120的資料儲存在內部記憶體110中以及將資料從內部記憶體110複製到外部記憶體140相關聯的記憶體操作的方法500的處理流程。
400:方法 401,402,404,406,408,410,412,414,416:步驟

Claims (20)

  1. 一種管理通過第二記憶體訪問第一記憶體的方法,對該第一記憶體的訪問速度為第一速度,該第一記憶體包括第一組資料區塊,對該第二記憶體的訪問速度為與該第一速度不同的第二速度,且該第二記憶體包括第二組資料區塊,該方法包括:將資料從該第一記憶體中的該第一組資料區塊中的一個或多個資料區塊順序地自動複製到該第二記憶體中的該第二組資料區塊中對應的一個或多個資料區塊;接收對該第二記憶體的讀取命令;響應於接收到該讀取命令,獲取指示該第二記憶體中的一資料區塊的地址的一指針,該第二記憶體中的該資料區塊包含從該第一記憶體複製的第一個可被訪問的資料;以及根據該指針獲取該第二記憶體中的該資料區塊的該第一個可被訪問的該資料;其中該自動複製還包括通過以下方式確定是否停止該一次或多次迭代:確定該複製指針是否為一釋放指針所指示的一地址;響應於確定該複製指針為該釋放指針所指示的該地址,則停止該一次或多次迭代;響應於確定該複製指針並非該釋放指針所指示的該地址,則繼續該一次或多次迭代。
  2. 如請求項1所述的方法,其中該第二速度比該第一速度快。
  3. 如請求項1所述的方法,其中該第二記憶體是直接連接到一個或多個處理器的內部記憶體,而該第一記憶體是未直接連接到該一個或多個處理器的外部記憶體。
  4. 如請求項1所述的方法,其中該自動複製還包括通過以下方式確定是否停止該一次或多次迭代:確定該複製指針是否為一釋放指針所指示的一地址;響應於確定該複製指針為該釋放指針所指示的該地址,則停止該一次或多次迭代;響應於確定該複製指針並非該釋放指針所指示的該地址,則繼續該一次或多次迭代。
  5. 如請求項4所述的方法,進一步包括:響應於接收到釋放該第二記憶體的命令,增加該釋放指針。
  6. 如請求項5所述的方法,進一步包括:通過將該指針、該複製指針和該釋放指針設置為該第二記憶體中的初始位置來初始化該第二記憶體。
  7. 如請求項6所述的方法,其中該初始化該第二記憶體還包括觸發該自動複製,並且該第二記憶體包括第一個資料區塊和最後一個資料區塊,當該指針、該複製指針和該釋放指針的增加超過該第二記憶體的該最後一個資料區塊時,將前進到該第二記憶體的該第一個資料區塊。
  8. 如請求項5所述的方法,進一步包括:根據該複製指針和該釋放指針確定是否滿足自動複製的條件;以及在確定滿足該自動複製的條件後,觸發該自動複製。
  9. 如請求項1所述的方法,進一步包括:響應於接收到等待命令,確定是否完成了一事件;在確定該事件已完成後,終止該自動複製。
  10. 如請求項1所述的方法,進一步包括:將該第二記憶體中的一個或多個資料區塊自動複製到該第一記憶體中的對 應資料區塊;接收寫入資料到該第二記憶體的命令;響應於接收到寫入資料到該第二記憶體的該命令後,獲取指示該第二記憶體中可用於存儲新資料的資料區塊的地址的指針;以及根據該第二記憶體中可用於存儲新資料的資料區塊的地址的該指針將該資料作為該新資料寫入該第二記憶體中可用於存儲新資料的該資料區塊。
  11. 一種管理通過內部記憶體訪問外部記憶體的系統,包括:內部記憶體;以及一個或多個處理器,配置為通過該內部記憶體訪問外部記憶體,以第一速度訪問該外部記憶體,該外部記憶體包括第一組資料區塊,以與該第一速度不同的第二速度訪問該內部記憶體,且該內部記憶體包括第二組資料區塊,該一個或多個處理器還配置為:將資料從該外部記憶體中的該第一組資料區塊中的一個或多個資料區塊順序地自動複製到該內部記憶體中的該第二組資料區塊中對應的一個或多個資料區塊;接收對該內部記憶體的讀取命令;響應於接收到對該內部記憶體的讀取命令,獲取指示該內部記憶體中的一資料區塊的地址的一指針,該資料區塊包含從該外部記憶體複製的第一個可被訪問的資料;以及根據該指針獲取該內部記憶體中的該資料區塊中的該第一個可被訪問的該資料;其中該一個或多個處理器配置為執行下述操作的一次或多次迭代:使用一複製指針,該複製指針指示該內部記憶體中可接收來自該外部記憶體的資料的下一個資料區塊的地址; 將資料從該該外部記憶體中的該第一組資料區塊中的一個資料區塊複製到該內部記憶體中的該下一個資料區塊;以及增加該複製指針的值。
  12. 如請求項11所述的系統,其中該第二速度比該第一速度快。
  13. 如請求項11所述的系統,其中該一個或多個處理器配置為通過以下方式確定是否停止該一次或多次迭代:確定該複製指針是否為一釋放指針所指示的一地址;響應於確定該複製指針為該釋放指針所指示的該地址,則停止該一次或多次迭代;響應於確定該複製指針並非該釋放指針所指示的該地址,則繼續該一次或多次迭代。
  14. 如請求項11所述的系統,其中該一個或多個處理器進一步配置為:接收一釋放記憶體的命令;響應於接收到該釋放記憶體的命令,增加釋放指針。
  15. 如請求項14所述的系統,其中該一個或多個處理器進一步配置為通過將該指針、該複製指針和該釋放指針設置為該內部記憶體中的初始位置來觸發該自動複製。
  16. 如請求項15所述的系統,其中該內部記憶體中的多個資料區塊以資料結構排列,使得該多個資料區塊中的第一個資料區塊附加到該內部記憶體中的最後一個資料區塊,並且當該一個或多個處理器的該指針、該複製指針和該釋放指針的增加超過該內部記憶體的該最後一個資料區塊時,該指針、該複製指針和該釋放指針的任何一個前進到該內部記憶體的該第一個資料區塊。
  17. 如請求項14所述的系統,其中該一個或多個處理器進一步配 置偽,在確定該複製指針達到自動複製的條件時,觸發該自動複製。
  18. 如請求項11所述的系統,其中該一個或多個處理器進一步配置為:將該內部記憶體中的一個或多個資料區塊自動複製到該外部記憶體中的對應資料區塊;接收寫入資料到該內部記憶體的命令;響應於接收到寫入資料到該內部記憶體的該命令後,獲取指示該內部記憶體中可用於存儲新資料的資料區塊的地址指針;以及根據該內部記憶體中可用於存儲新資料的資料區塊的地址該指針將該資料作為該新資料寫入該內部記憶體中可用於存儲新資料的該資料區塊。
  19. 如請求項11所述的系統,其中該一個或多個處理器配置為維護指示該內部記憶體中包括有從該外部記憶體複製的可供訪問的資料的一資料區塊的一地址的指針,維護指示該內部記憶體中下一個可接收來自該外部記憶體資料的資料區塊的地址的一複製指針,以及指示該內部記憶體中最後一個可接收來自該外部記憶體資料的資料區塊的地址的一個釋放指針。
  20. 如請求項19所述的系統,其中該內部記憶體中的多個資料區塊邏輯上按順序排列,其中該內部記憶體中的最後一個資料區塊引用該內部記憶體中的第一個資料區塊,使得指示該內部記憶體中的最後一個資料區塊的指針的增加,導致該增加後的指針指示該內部記憶體中的第一個資料區塊。
TW113107739A 2023-03-24 2024-03-04 管理通過第二記憶體訪問第一記憶體的方法及系統 TWI859085B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202363491965P 2023-03-24 2023-03-24
US63/491,965 2023-03-24
US18/407,990 US20240319904A1 (en) 2023-03-24 2024-01-09 Autonomous copy between external memory and internal memory
US18/407,990 2024-01-09

Publications (2)

Publication Number Publication Date
TW202439119A TW202439119A (zh) 2024-10-01
TWI859085B true TWI859085B (zh) 2024-10-11

Family

ID=90366597

Family Applications (1)

Application Number Title Priority Date Filing Date
TW113107739A TWI859085B (zh) 2023-03-24 2024-03-04 管理通過第二記憶體訪問第一記憶體的方法及系統

Country Status (3)

Country Link
US (1) US20240319904A1 (zh)
EP (1) EP4435613A1 (zh)
TW (1) TWI859085B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110208892A1 (en) * 2010-02-25 2011-08-25 Fresco Logic, Inc. Method and apparatus for scheduling transactions in a multi-speed bus environment
TW202101228A (zh) * 2019-06-19 2021-01-01 宏碁股份有限公司 電腦系統、儲存器及資料存取方法
TWI768799B (zh) * 2021-03-30 2022-06-21 宏碁股份有限公司 資料讀取方法及電子系統

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017113211A1 (zh) * 2015-12-30 2017-07-06 华为技术有限公司 访问请求处理方法、装置及计算机系统
US11640253B2 (en) * 2021-06-01 2023-05-02 Western Digital Technologies, Inc. Method to use flat relink table in HMB

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110208892A1 (en) * 2010-02-25 2011-08-25 Fresco Logic, Inc. Method and apparatus for scheduling transactions in a multi-speed bus environment
TW202101228A (zh) * 2019-06-19 2021-01-01 宏碁股份有限公司 電腦系統、儲存器及資料存取方法
TWI768799B (zh) * 2021-03-30 2022-06-21 宏碁股份有限公司 資料讀取方法及電子系統

Also Published As

Publication number Publication date
EP4435613A1 (en) 2024-09-25
US20240319904A1 (en) 2024-09-26
TW202439119A (zh) 2024-10-01

Similar Documents

Publication Publication Date Title
CN112204513B (zh) 多租户存储系统中的基于组的数据复制
US10019196B2 (en) Efficient enforcement of command execution order in solid state drives
US10235298B2 (en) Shared data cache for kernel bypass applications
US9268698B1 (en) Method and system for maintaining context event logs without locking in virtual machine
US8949549B2 (en) Management of ownership control and data movement in shared-memory systems
US7457921B2 (en) Write barrier for data storage integrity
CN114365109B (zh) 启用rdma的键-值存储库
US8930596B2 (en) Concurrent array-based queue
US20250278364A1 (en) Method and system for efficient communication and command system for deferred operation
US10152278B2 (en) Logical to physical sector size adapter
CN104685443A (zh) 锁定引导数据用以更快引导
TWI859085B (zh) 管理通過第二記憶體訪問第一記憶體的方法及系統
WO2023169164A1 (zh) 应用程序的修复方法、装置、计算机设备以及存储介质
US11526474B2 (en) Reducing requests using probabilistic data structures
US9417805B2 (en) Exporting computational capabilities into a block-oriented disk memory
CN118689385A (zh) 管理通过第二存储器访问第一存储器的方法及系统
US12380081B2 (en) Reducing requests using probabilistic data structures
US11755226B2 (en) Tracking changes of storage volumes during data transfers
CN111813501B (zh) 一种数据删除方法、装置、设备及存储介质
US9383941B2 (en) Migrating and retrieving queued data in byte-addressable storage
EP4227790B1 (en) Systems, methods, and apparatus for copy destination atomicity in devices
WO2024217332A1 (zh) 任务窃取方法、装置、芯片及计算机设备
JPH07253924A (ja) 情報処理装置