TW202145010A - 數據儲存方法、電子設備及儲存媒體 - Google Patents

數據儲存方法、電子設備及儲存媒體 Download PDF

Info

Publication number
TW202145010A
TW202145010A TW109146150A TW109146150A TW202145010A TW 202145010 A TW202145010 A TW 202145010A TW 109146150 A TW109146150 A TW 109146150A TW 109146150 A TW109146150 A TW 109146150A TW 202145010 A TW202145010 A TW 202145010A
Authority
TW
Taiwan
Prior art keywords
data
candidate storage
stored
storage
candidate
Prior art date
Application number
TW109146150A
Other languages
English (en)
Other versions
TWI779438B (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 TW202145010A publication Critical patent/TW202145010A/zh
Application granted granted Critical
Publication of TWI779438B publication Critical patent/TWI779438B/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/0647Migration mechanisms
    • G06F3/0649Lifecycle management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/0871Allocation or management of cache space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/0626Reducing size or complexity of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means

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)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Computing Systems (AREA)
  • Neurology (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Artificial Intelligence (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Indexing, Searching, Synchronizing, And The Amount Of Synchronization Travel Of Record Carriers (AREA)
  • Memory System (AREA)

Abstract

本申請實施例公開了數據儲存方法、電子設備及儲存媒體,該方法包括:基於待儲存數據所需的儲存空間大小,確定目標記憶體中的至少兩個候選儲存空間;基於所述待儲存數據的第一數據釋放時間和生命週期中的至少一項,確定將所述待儲存數據儲存至所述至少兩個候選儲存空間的多種候選儲存方案中每種候選儲存方案的目標權重,其中,每個候選儲存空間對應於至少一種候選儲存方案;基於所述多種候選儲存方案中每種候選儲存方案的目標權重,確定所述待儲存數據的目標儲存方案。

Description

數據儲存方法、電子設備及儲存媒體
本申請涉及計算機領域,尤其涉及數據儲存方法和相關產品。
人工智慧(artificial intelligence,AI)晶片一般是由多個不同功能的計算單元、空間有限的高速共享快取記憶體和雙倍速率同步動態隨機記憶體(Double Data Rate Synchronous Dynamic Random Access Memory,DDR SDRAM,簡稱DDR)組成。
本申請實施例公開了數據儲存方法和相關產品。
第一方面,本申請實施例提供了一種數據儲存方法,該方法包括:基於待儲存數據所需的儲存空間大小,確定目標記憶體中的至少兩個候選儲存空間;基於所述待儲存數據的第一數據釋放時間和生命週期中的至少一項,確定將所述待儲存數據儲存至所述至少兩個候選儲存空間的多種候選儲存方案中每種候選儲存方案的目標權重,其中,每個候選儲存空間對應於至少一種候選儲存方案;基於所述多種候選儲存方案中每種候選儲存方案的目標權重,確定所述待儲存數據的目標儲存方案。
第二方面,本申請實施例提供了一種數據處理裝置,該裝置包括:第一確定單元,用於基於待儲存數據所需的儲存空間大小,確定目標記憶體中的至少兩個候選儲存空間;第二確定單元,用於基於所述待儲存數據的第一數據釋放時間和生命週期中的至少一項,確定將所述待儲存數據儲存至所述至少兩個候選儲存空間的多種候選儲存方案中每種候選儲存方案的目標權重,其中,每個候選儲存空間對應於至少一種候選儲存方案;第三確定單元,用於基於所述多種候選儲存方案中每種候選儲存方案的目標權重,確定所述待儲存數據的目標儲存方案。
第三方面,本申請實施例提供了一種電子設備,該電子設備包括:儲存有處理器可執行指令的記憶體、目標記憶體和處理器,其中,所述處理器在執行所述指令時,實現如上述第一方面以及任一種可選的實現方式的方法。
第四方面,本申請實施例提供了一種晶片,該晶片包括處理器、數據介面以及上述第一方面所述的目標記憶體,其中,處理器用於執行第一方面或第一方面的任意可能實現方式中的方法。
第五方面,本申請實施例提供了一種計算機可讀儲存媒體,該計算機儲存媒體儲存有計算機程式,該計算機程式包括程式指令,該程式指令當被電子設備的處理器執行時使該處理器執行上述第一方面以及任一種可選的實現方式的方法。
第六方面,本申請實施例提供了一種計算機程式產品,該計算機程式產品包括程式指令,所述程式指令當被處理器執行時使所述處理器執行上述第一方面以及任一種可選的實現方式的方法。
本申請實施例中,基於所述待儲存數據的第一數據釋放時間和生命週期中的至少一項,確定將所述待儲存數據儲存至所述至少兩個候選儲存空間的多種候選儲存方案中每種候選儲存方案的目標權重,可以從多種候選儲存方案中確定一種能夠有效減少隨機存取記憶體碎片的儲存方案。
本申請的說明書實施例和權利要求書及上述附圖中的術語“第一”、“第二”、和“第三”等是用於區別類似的對象,而不必用於描述特定的順序或先後次序。此外,術語“包括”和“具有”以及他們的任何變形,意圖在於覆蓋不排他的包含,例如,包含了一系列步驟或單元。方法、系統、產品或設備不必限於清楚地列出的那些步驟或單元,而是可包括沒有清楚地列出的或對於這些過程、方法、產品或設備固有的其它步驟或單元。
AI晶片的高速共享快取記憶體的大小一般為幾MB,目前常見的為8 MB或12 MB。由於AI晶片的指令和中央處理器(Central Processing Unit,CPU)指令不同,CPU的暫存器是固定大小的,比如32位CPU的暫存器是固定32位的。然而AI晶片中沒有暫存器,並且神經網路的張量(tensor)大小不是固定的,無法分配固定的儲存空間給tensor。鑒於共享快取記憶體空間有限,且待分配tensor大小不定,如果分配策略效果不佳,很容易產生隨機存取記憶體碎片,這些隨機存取記憶體碎片以小且不連續方式出現在不同的位置,導致這些空閒的隨機存取記憶體無法使用,不能夠充分發揮高速共享快取記憶體的作用。實際上這些空閒隨機存取記憶體碎片存在的方式有兩種:內部碎片和外部碎片。
內部碎片的產生:因為所有的隨機存取記憶體分配必須起始於可被4、8或16整除(視處理器體系結構而定)的位址或者因為隨機存取記憶體管理單元(memory management unit,MMU)的分頁機制的限制,決定隨機存取記憶體分配算法僅能把預定大小的隨機存取記憶體塊分配給數據。假設當儲存某個數據需要佔用一個43位元組的隨機存取記憶體塊時,因為沒有適合大小的隨機存取記憶體,所以它可能會獲得44位元組、48位元組等稍大一點的位元組,因此由所需大小向上取整而產生的多餘空間就叫內部碎片。
外部碎片的產生:頻繁的分配與回收物理頁面會導致大量的、連續且小的頁面塊夾雜在已分配的頁面中間,就會產生外部碎片。假設有一塊一共有100個單位(例如一個位址)的連續空閒的隨機存取記憶體空間,範圍是0~99。如果從中申請一塊隨機存取記憶體,如10個單位,那麼申請出來的隨機存取記憶體塊可以佔用0~9區間。這時候如果繼續申請一塊隨機存取記憶體,比如說5個單位大,第二塊申請到的隨機存取記憶體塊可以佔用10~14區間。如果把第一塊隨機存取記憶體塊釋放,然後再申請一塊大於10個單位的隨機存取記憶體塊,比如說20個單位。因為剛被釋放的隨機存取記憶體塊不能滿足新的請求,所以只能從15開始分配出20個單位的隨機存取記憶體塊。現在整個隨機存取記憶體空間的狀態是0~9空閒,10~14被佔用,15~24被佔用,25~99空閒。其中0~9就是一個隨機存取記憶體碎片了。如果10~14一直被佔用,而以後申請的空間都大於10個單位,無法使用0~9的區間,則0~9區間變成外部碎片。
為充分發揮高速共享快取記憶體的作用,本申請實施例提供了能夠減少碎片的數據儲存方法。
本申請實施例提供的數據儲存方法主要應用於AI晶片中共享快取記憶體的分配場景。應理解,AI晶片執行數據處理任務,例如文本識別、圖像識別、圖像超分辨率處理、語音識別、文本翻譯等,均需要佔用共享快取記憶體。也就是說,本申請實施例提供的數據儲存方法主要應用於AI晶片執行數據處理任務的場景,但本公開實施例提供的用於儲存的方法也可以應用於其他隨機存取記憶體或快取記憶體分配場景,本公開實施例對此不做限定。
本申請實施例提供的數據儲存方法還能夠應用於AI模型的編譯場景,即將AI模型利用編譯軟體編譯為AI晶片可執行的指令序列的場景。在AI模型的編譯場景中,數據處理裝置可執行本申請實施例提供的數據儲存方法來模擬AI模型執行處理操作時共享快取記憶體的分配,進而對AI模型編譯得到能指示共享快取記憶體的隨機存取記憶體分配和釋放的指令序列。AI晶片執行編譯AI模型得到的指令序列時,共享快取記憶體的隨機存取記憶體分配和釋放流程與執行本申請實施例提供的數據儲存方法得到的隨機存取記憶體分配和釋放流程相同。在這種場景中,AI晶片在執行數據處理任務不需要實時執行本申請實施例提供的數據儲存方法,僅需執行指令序列,花費時間更短。
在上述場景中,數據處理裝置中的AI晶片在執行數據處理任務時,可以減少隨機存取記憶體碎片的產生,提高快取記憶體分配的成功率。
下面先介紹本公開實施例中出現的一些術語的含義。
AI晶片的共享快取記憶體是在數據處理裝置的程式運行時動態分配的,其中,共享快取記憶體可以劃分成多個儲存空間,如快取記憶體塊,不同快取記憶體塊的大小可以相同或不同,可以基於快取記憶體數據的需求來決定。在本公開實施例中,可以對快取記憶體塊的狀態進行標記,例如,已分配的塊可以被標記為used_item,未分配的塊可以被標記為free_item,初始狀態是整個共享快取記憶體為一個free_item,經過一定次數的隨機存取記憶體分配和釋放後,可能有多個used_item,這些used_item之間可能有1個或0個free_item。已分配的塊是指被佔用的儲存空間,未分配的塊是指未被佔用的儲存空間。
在一些實施例中,編譯器產生指令序列給AI晶片,每個指令在指令序列中的序號稱為指令序號。編譯器為數據處理裝置運行的一個軟體或一段程式代碼。每個tensor(可以理解為數據)可能會被多條指令使用(作為指令的輸出或者作為指令的輸入),這些指令中最小的序號可被稱作tensor的起始序號(start program counter,簡稱為start_pc),最大的序號可被稱作tensor的結束序號(end program counter, 簡稱為end_pc),end_pc和start_pc的差值可被稱作tensor的生命週期。數據的數據釋放時間是指該數據佔用的位址被釋放的時間,即數據被釋放的時間。
圖1為本申請實施例提供的一種數據儲存方法的流程圖。
101、數據處理裝置基於待儲存數據所需的儲存空間大小,確定目標記憶體中的至少兩個候選儲存空間。
可選地,待儲存數據可以為輸入圖片數據,或者是通過神經網路對輸入圖片進行處理所產生的中間結果和/或最終結果,例如,待儲存數據可以為特徵圖的至少一部分,或者,待儲存數據也可以為模型數據,例如模型的權重,等等,但本公開實施例對此不做限定。
每個候選儲存空間(對應於free_item)的大小大於或等於儲存上述待儲存數據所需佔用的儲存空間的大小。數據處理裝置可以是伺服器、桌上型電腦、筆記型電腦、手機、平板電腦等可執行數據處理操作的設備。可選的,上述目標記憶體為人工智慧AI晶片中的共享快取記憶體。
數據處理裝置可以從上述目標記憶體未分配的多個離散儲存空間(即free_item)中,確定可儲存上述待儲存數據的兩個或兩個以上候選儲存空間。在實際應用中,數據處理裝置中的處理器可以線性掃描共享快取記憶體的所有儲存空間(即item),將大於或者等於待儲存數據(如tensor)所需佔用的儲存空間的free_item作為候選儲存空間,得到上述至少兩個候選儲存空間。
102、基於上述待儲存數據的第一數據釋放時間和生命週期中的至少一項,確定將上述待儲存數據儲存至上述至少兩個候選儲存空間的多種候選儲存方案中每種候選儲存方案的目標權重。
其中,每個候選儲存空間對應於至少一種候選儲存方案。上述待儲存數據的第一數據釋放時間可以是上述待儲存數據被釋放的時間,即上述待儲存數據佔用的儲存空間被釋放的時間。上述待儲存數據的生命週期可以是上述待儲存數據被釋放的時間與上述待儲存數據被儲存的時間的間隔。示例性的,每個候選儲存方案的目標權重與上述待儲存數據的第一數據釋放時間和第二數據釋放時間之間的間隔負相關,其中,上述第二數據釋放時間為與上述待儲存數據在上述候選儲存方案中的儲存位置相鄰的儲存空間所儲存數據的數據釋放時間。後續再詳述步驟102的實現方式。
103、基於上述多種候選儲存方案中每種候選儲存方案的目標權重,確定上述待儲存數據的目標儲存方案。
基於上述多種候選儲存方案中每種候選儲存方案的目標權重,確定上述待儲存數據的目標儲存方案可以是數據處理裝置在上述多種候選儲存方案各自的目標權重中,將最大的一個目標權重對應的候選儲存方案確定為上述待儲存數據的目標儲存方案;也可以是數據處理裝置在上述多種候選儲存方案各自的目標權重中,將超過預設權重閾值的任一個目標權重對應的候選儲存方案確定為上述待儲存數據的目標儲存方案;其中,上述權重閾值可以是0.6、0.75、0.8等。
可選的,數據處理裝置執行步驟103之後,還可以執行如下操作:將上述待儲存數據儲存至上述目標儲存方案對應的候選儲存空間的第一位址至第二位址;將上述第一位址至上述第二位址對應的儲存空間設置為已分配的儲存空間(即used_item)。可選的,上述第一位址和上述第二位址中的一個為上述目標儲存方案對應的候選儲存空間的起始位址,或者,上述第一位址和上述第二位址中的一個為上述目標儲存方案對應的候選儲存空間的結束位址。在一些實施例中,數據處理裝置在上述待儲存數據對應的第一數據釋放時間到達之後,還可以執行如下操作:釋放上述第一位址至上述第二位址對應的儲存空間;將上述第一位址至上述第二位址對應的儲存空間設置為未分配的儲存空間(即free_item)。在一些實施例中,數據處理裝置運行的某個隨機存取記憶體管理軟體來執行圖1的方法流程。
在一些實施例中,若目標儲存方案對應的候選儲存空間大於待儲存數據所需的儲存空間,則在將待儲存數據儲存至上述第一位址至第二位址後,將目標儲存方案對應的候選儲存空間中未儲存待儲存數據的空間仍設置為未分配的儲存空間(即free_item)。例如,假設第一位址為目標儲存方案對應的候選儲存空間的起始位址,則將第二位址的下一個位址到目標儲存方案對應的候選儲存空間的結束位址之間的儲存空間設置為未分配的儲存空間。又例如,假設第二位址為目標儲存方案對應的候選儲存空間的結束位址,則將目標儲存方案對應的候選儲存空間的起始位址到第一位址的上一個位址之間的儲存空間設置為未分配的儲存空間。
本申請實施例中,基於上述待儲存數據的第一數據釋放時間和生命週期中的至少一項,確定將上述待儲存數據儲存至上述至少兩個候選儲存空間的多種候選儲存方案中每種候選儲存方案的目標權重,根據多個目標權重,可以從多種候選儲存方案中確定一種能夠有效減少隨機存取記憶體碎片的儲存方案。
在一些實施例中,每個候選儲存空間對應的候選儲存方案包括第一候選儲存方案和第二候選儲存方案中的至少一種,其中,上述第一候選儲存方案中的起始儲存位址為上述候選儲存空間的起始位址,上述第二候選儲存方案中的結束儲存位址為上述候選儲存空間的結束位址。也就是說,每個候選儲存空間對應1種或2種分配方法,即靠左分配(對應於第一候選儲存方案)和靠右分配(對應於第二候選儲存方案),可以分別計算這兩種分配方法的目標權重。靠左分配是指將待儲存數據儲存至某個候選儲存空間的起始位址至某個位址,即為該待儲存數據分配該候選儲存空間的起始位址至後面連續多個位址。靠右分配是指將待儲存數據儲存至某個候選儲存空間的某個位址至結束位址,即為該待儲存數據分配該儲存空間的結束位址以及該結束位址前面連續的多個位址。當某個候選儲存空間的大小大於儲存待儲存數據所需的儲存空間的大小時,該候選儲存空間有兩種分配方法(即靠左分配和靠右分配不同);當某個候選儲存空間的大小等於儲存待儲存數據所需的儲存空間的大小時,該候選儲存空間只有1種分配方法(即靠左分配和靠右分配相同)。舉例來說,有10個候選儲存空間的大小大於儲存待儲存數據所需的儲存空間的大小,則數據處理裝置執行20輪目標權重計算,即計算每個候選儲存空間採用靠左分配方式對應的目標權重和採用靠右分配方式對應的目標權重。
在該實現方式中,採用第一候選儲存方案或第二候選儲存方案儲存待儲存數據之後,在該待儲存數據佔用的儲存空間被釋放之後能夠與其相鄰的儲存空間合併為一個更大的儲存空間,以減少隨機存取記憶體碎片。
圖2為本申請實施例提供的一種計算候選儲存方案的目標權重的過程示意圖。如圖2所示,如211-216所示的黑色的矩形區域表示目標記憶體中已分配的儲存空間(即used_item),如201-205所示的白色的矩形區域表示該目標記憶體中未分配的儲存空間(即free_item),假設儲存空間201、儲存空間203、儲存空間205均可儲存待儲存數據,儲存空間201和儲存空間203的大小大於儲存待儲存數據所需的儲存空間的大小,儲存空間205的大小等於儲存待儲存數據所需的儲存空間的大小。如圖2所示,在權重計算中,圖中黑色矩形區域表示儲存空間被佔用的部分,白色矩形區域表示儲存空間未被佔用的部分,矩形區域的上沿表示對應的儲存空間的起始位址,矩形區域的下沿表示對應的儲存空間的結束位址。在第1輪目標權重計算中,計算將待儲存數據儲存至儲存空間201的起始位址至某個位址(靠左分配)時的目標權重。在第2輪目標權重計算中,計算將待儲存數據儲存至儲存空間201的某個位址至結束位址(即靠右分配)時的目標權重。在第3輪目標權重計算中,計算將待儲存數據儲存至儲存空間203的起始位址至某個位址(靠左分配)時的目標權重。在第4輪目標權重計算中,計算將待儲存數據儲存至儲存空間203的某個位址至結束位址(靠右分配)時的目標權重。在第5輪目標權重計算中,計算將待儲存數據儲存至儲存空間205的起始位址至結束位址(即靠左分配和靠右分配相同)時的目標權重;以此類推。
在一些實施例中,數據處理裝置在第N輪目標權重計算中,計算將上述待儲存數據儲存至某個候選儲存空間的目標權重,可以將該目標權重作為第一目標權重,之後還可執行如下操作:在當前最大目標權重小於上述第一目標權重的情況下,將上述當前最大目標權重更新為上述第一目標權重。可選的,數據處理裝置執行第1輪的目標權重計算得到一個目標權重之後,將該目標權重作為當前最大目標權重並保存;將第i輪目標權重計算得到的目標權重與保存的當前最大目標權重進行比較,如果新計算得到的目標權重大於當前最大目標權重,則將當前最大目標權重更新為新計算得到的目標權重,否則,保持當前最大目標權重不變,其中i為大於1的正整數。
前述實施例未詳述確定將待儲存數據儲存到至少兩個候選儲存空間的多種候選儲存方案中每種候選儲存方案的目標權重的實現方式,下面以計算參考候選儲存方案的目標權重為例介紹一些計算目標權重可選的實現方式。上述參考候選儲存方案為上述至少兩個候選儲存空間中任一種候選儲存方案。
在一個可選的實現方式中,基於待儲存數據的第一數據釋放時間和第二數據釋放時間之間的時間間隔,可以確定候選儲存方案的目標權重。參考候選儲存方案對應的目標權重與上述待儲存數據的第一數據釋放時間和第二數據釋放時間之間的時間間隔負相關,其中,上述第二數據釋放時間為與上述待儲存數據在上述參考候選儲存方案中的儲存位置相鄰的儲存空間所儲存數據的數據釋放時間。示例性的,參考候選儲存方案對應的目標權重為上述待儲存數據的第一數據釋放時間和第二數據釋放時間之間的間隔的倒數。舉例來說,第一數據釋放時間為t1,第二數據釋放時間為t2,參考候選儲存方案對應的目標權重為
Figure 02_image001
以圖2為例,對於儲存空間201,其相鄰的儲存空間為211或212。在第1輪權重計算時,由於為靠左分配,儲存空間201的相鄰的儲存空間為211,在第2輪權重計算時,由於為靠右分配,儲存空間201的相鄰的儲存空間為212。對於儲存空間205,其相鄰的儲存空間可以為215,也可以為216。
在一個可選的實現方式中,上述基於上述待儲存數據對應的第一數據釋放時間和生命週期中的至少一項,確定將上述待儲存數據儲存至上述至少兩個候選儲存空間的多種候選儲存方案中每種候選儲存方案的目標權重,包括:基於上述待儲存數據的生命週期和上述候選儲存方案對應的候選儲存空間的起始位址,確定上述候選儲存方案的目標權重。可選的,上述目標儲存方案的確定使得上述目標記憶體中儲存的數據的生命週期隨著儲存位址遞增或遞減。可以理解,數據處理裝置執行本申請實施例提供的數據儲存方法可以使得上述目標記憶體中儲存的數據的生命週期隨著儲存位址遞增或遞減。也就是說,儘量將生命週期小的待儲存數據儲存在儲存空間的一側(如靠左側儲存),將生命週期長的待儲存數據儲存在儲存空間的另一側(如靠右側儲存)。在一些實施例中,上述基於上述待儲存數據的第一數據釋放時間和生命週期中的至少一項,確定將上述待儲存數據儲存至上述至少兩個候選儲存空間的多種候選儲存方案中每種候選儲存方案的目標權重,包括:確定上述待儲存數據對應的最大生命週期;確定上述待儲存數據的生命週期與上述最大生命週期之間的第一比值;確定上述候選儲存方案對應的候選儲存空間的起始位址與上述目標記憶體的結束位址之間的第二比值;基於第一比值和第二比值,確定上述候選儲存方案的目標權重。示例性的,上述候選儲存方案的目標權重與上述第一比值和上述第二比值之差的絕對值負相關。待儲存數據對應的最大生命週期可以是指令序列中各指令分別對應的數據的生命週期中最大的生命週期,即與待儲存數據相關的數據佔用目標記憶體的最大時長。示例性的,待儲存數據對應的最大生命週期為本次圖像處理過程中產生的所有需要儲存的數據的生命週期的最大值,包括已分配隨機存取記憶體和尚未分配隨機存取記憶體的所有數據的生命週期的最大值,但本公開實施例對此不限於此。
在一些實施例中,候選儲存空間的起始位址可以表示為候選儲存空間的起始位址相對於目標記憶體的起始位址的偏移值,目標記憶體的結束位址可以表示為目標記憶體的結束位址相對於目標記憶體的起始位址的偏移值。
在一個可選的實現方式中,可以確定候選儲存空間的起始位址與目標記憶體的總儲存空間大小之間的第二比值,並將該第二比值作為該候選儲存空間對應的至少一種候選儲存方案的第二比值,但本公開實施例不限於此。
在一個可選的實現方式中,上述基於上述待儲存數據對應的第一數據釋放時間和生命週期中的至少一項,確定將上述待儲存數據儲存至上述至少兩個候選儲存空間的多種候選儲存方案中每種候選儲存方案的目標權重,包括:基於上述待儲存數據對應的第一數據釋放時間和與上述候選儲存方案對應的儲存位置相鄰的儲存空間所儲存數據的第二數據釋放時間,確定上述候選儲存方案的第一權重;基於上述待儲存數據的生命週期和上述候選儲存方案對應的候選儲存空間的起始位址,確定上述候選儲存方案的第二權重;基於上述第一權重和上述第二權重的加權和,得到上述候選儲存方案的目標權重。
在該實現方式中,綜合考慮待儲存數據的第一數據釋放時間和生命週期,能夠更有效的減少隨機存取記憶體碎片。
在一個可選的實現方式中,上述基於上述待儲存數據的第一數據釋放時間和生命週期中的至少一項,確定將上述待儲存數據儲存至上述至少兩個候選儲存空間的多種候選儲存方案中每種候選儲存方案的目標權重,包括:基於上述待儲存數據的第一數據釋放時間、生命週期和多種候選儲存方案中每種候選儲存方案對應的儲存空間大小,確定所述每種候選儲存方案的目標權重。其中,候選儲存方案對應的儲存空間大小可以是該候選儲存方案對應的候選儲存空間的大小。
在一些實施例中,上述候選儲存方案對應的目標權重包括第一指標、第二指標以及第三指標的加權和。其中,上述第一指標由上述待儲存數據的第一數據釋放時間和第二數據釋放時間之間的間隔確定,上述第二數據釋放時間為與上述待儲存數據在上述候選儲存方案中的儲存位置相鄰的儲存空間所儲存數據的數據釋放時間;上述第二指標由第一比值和第二比值之間的差值確定,上述第一比值為上述待儲存數據的生命週期與上述待儲存數據對應的最大生命週期之間的比值,上述第二比值為上述候選儲存方案對應的候選儲存空間的起始位址與上述目標記憶體的結束位址之間的比值;上述第三指標由上述候選儲存方案對應的儲存空間與上述目標記憶體的總儲存空間的比值確定。
在該實現方式中,綜合考慮待儲存數據的第一數據釋放時間、生命週期和所需的儲存空間大小,以便於確定的目標儲存方案能更有效的減少隨機存取記憶體碎片,並減少佔用的儲存空間。
可選的,上述候選儲存方案對應的目標權重滿足如下公式(1):
Figure 02_image003
(1); 其中,
Figure 02_image005
Figure 02_image007
Figure 02_image009
均為不小於0的目標權重係數,且
Figure 02_image011
Figure 02_image013
表示上述候選儲存方案對應的目標權重,w1表示第一指標,w2表示第二指標,w3表示第三指標。可選的,cost1=abs(e-e1),w1=1/cost1,e表示上述第一數據釋放時間,e1表示上述第二數據釋放時間,abs(e-e1)表示e和e1的差值的絕對值。可選的,cost2=abs((c/c_max)-(start/mem_size)),
Figure 02_image015
=1-cost2,c表示上述待儲存數據的生命週期,c_max表示上述待儲存數據對應的最大生命週期,start表示上述候選儲存方案對應的候選儲存空間的起始位址,mem_size表示目標記憶體的總儲存空間的大小,可以表示為目標記憶體的結束位址。可選的,
Figure 02_image017
Figure 02_image019
表示候選儲存方案對應的候選儲存空間的大小,mem_size表示上述目標記憶體的總儲存空間的大小。
在該實現方式中,目標權重係數α、β和γ是通過測試得到的結果。可以按一定的步進改變α、β和γ的值,並保證
Figure 02_image011
,這樣可以得到多組不同的參數組合方式,運行一組測試集合,並保存每組參數組合方式在該測試集合下的結果。從而最終選擇一組性能優越的參數組合方式。
在該實現方式中,計算候選儲存方案的目標權重的方式為三種分配原則的綜合結果。
Figure 02_image021
對應第一種分配原則,該原則是儘量分配在end_pc相近的位置,使得相鄰儲存空間釋放時間相近,有利於合併成大的空閒儲存空間,從而減少隨機存取記憶體碎片。每個數據對應一個end_pc,每個數據對應的end_pc表示該數據佔用的儲存空間被釋放的時間點。儘量分配在end_pc相近的位置可以將儘量將待儲存數據分配在對應的end_pc與該待儲存數據對應的end_pc較接近的數據相鄰的位置。舉例來說,目標記憶體中某個儲存空間儲存的數據對應的end_pc與該待儲存數據對應的end_pc較接近,則將該待儲存數據分配在於該儲存空間相鄰的空間儲存空間。
Figure 02_image015
對應第二種分配原則,該原則是將生命週期短的數據(分配釋放頻繁的)與生命週期長的數據分段分配,將分配和釋放頻繁的數據所設置的位置儘量接近,也可減少隨機存取記憶體碎片。
Figure 02_image023
對應第三種分配原則,該原則是把既能滿足需求,又是最小的空閒儲存空間分配給待儲存數據。在該實現方式中,結合多種分配原則來為待分配數據分配位址,可以有效減少隨機存取記憶體碎片。
應理解,數據處理裝置可以結合這三種分配原則中任意兩種來計算目標權重,也可以僅採用根據第一種原則或者第二種原則來計算目標權重。舉例來說,上述候選儲存方案對應的目標權重滿足如下公式(2):
Figure 02_image025
(2); 其中,式(2)中的
Figure 02_image021
Figure 02_image015
分別與式(1)中
Figure 02_image021
Figure 02_image015
相同,
Figure 02_image005
Figure 02_image007
均為大於0的權重係數,且
Figure 02_image027
又舉例來說,上述候選儲存方案對應的目標權重滿足如下公式(3):
Figure 02_image029
(3); 其中,式(3)中的
Figure 02_image021
Figure 02_image023
分別與式(1)中
Figure 02_image021
Figure 02_image023
相同,
Figure 02_image005
Figure 02_image009
均為大於0的權重係數,且
Figure 02_image031
又舉例來說,上述候選儲存方案對應的目標權重滿足如下公式(4):
Figure 02_image033
(4); 其中,式(4)中的
Figure 02_image015
Figure 02_image023
分別與式(1)中
Figure 02_image015
Figure 02_image023
相同,
Figure 02_image007
Figure 02_image009
均為大於0的目標權重係數,且
Figure 02_image035
又舉例來說,上述候選儲存方案對應的目標權重滿足如下公式(5):
Figure 02_image037
(5);
又舉例來說,上述候選儲存方案對應的目標權重滿足如下公式(6):
Figure 02_image039
(6);
在該實現方式中,結合多種分配原則來為待分配數據分配位址,可以有效減少隨機存取記憶體碎片。
圖3為本申請實施例提供的另一種數據儲存方法的流程圖。如圖3所示,該方法可包括以下步驟。
301、數據處理裝置從目標記憶體未分配的多個離散儲存空間中,確定可儲存待儲存數據的兩個或兩個以上候選儲存空間。
302、在第N輪目標權重計算中,基於待儲存數據的第一數據釋放時間和生命週期中的至少一項,計算將待儲存數據儲存至第一候選儲存空間的第一目標權重。
可選的,上述第一候選儲存空間為上述兩個或兩個以上候選儲存空間中任一候選儲存空間,計算將待儲存數據儲存至第一候選儲存空間的第一目標權重可以是採用式(1)至式(6)中的任一個來計算目標權重。可以理解,數據處理裝置是計算假定將待儲存數據儲存至第一候選儲存空間時的目標權重,並不執行將待儲存數據儲存至第一候選儲存空間的操作。上述N為大於0的整數。在實際應用中,數據處理裝置可以計算每個候選儲存空間儲存待儲存數據對應的一個目標權重或者兩個目標權重,每輪目標權重計算可計算得到一個目標權重。
303、更新當前最大目標權重。
在一些實施例中,當N=1時,更新當前最大目標權重可以是將第1輪計算得到的目標權重保存為當前最大目標權重。當N>1時,更新當前最大目標權重可以是在第N輪計算得到的目標權重大於當前保存的當前最大目標權重的情況下,將當前最大目標權重更新為在第N輪計算得到的目標權重;在第N輪計算得到的目標權重不大於當前保存的當前最大目標權重的情況下,保持當前最大目標權重不變。
304、判斷是否停止下一輪目標權重的計算。
在一些實施例中,判斷是否停止下一輪目標權重的計算可以是在當前計算得到每種候選儲存方案的目標權重的情況下,判斷停止下一輪目標權重的計算;在當前未計算得到每種候選儲存方案的目標權重的情況下,判斷繼續下一輪目標權重的計算。若不停止下一輪目標權重計算,則N+1,並執行步驟302;若停止下一輪目標權重計算,執行步驟305。
305、將當前最大目標權重對應的候選儲存方案作為目標儲存方案,並將待儲存數據儲存至目標儲存方案對應的候選儲存空間的第一位址至第二位址。
306、將上述第一位址至上述第二位址對應的儲存空間設置為已分配的儲存空間。
307、在第一數據釋放時間到達後,釋放上述第一位址至上述第二位址。
在一些實施例中,可以將上述第一位址至上述第二位址對應的儲存空間設置為未分配的儲存空間。
308、若第二位址為候選儲存空間的結束位址,則在上述第二位址的下一位址至第三位址(第三位址位於第二位址的右側)均未儲存數據的情況下,將上述第一位址至上述第三位址設置為一個未分配的離散儲存空間。其中,以第三位址的下一位址為起始位址的儲存空間為已分配的儲存空間(used_item)。
步驟308可以替換為:若第一位址為候選儲存空間的起始位址,則在上述目標記憶體的第四位址(第四位址位於第一位址的左側)至上述第一位址的上一位址均未儲存數據的情況下,將上述第四位址至上述第二位址設置為一個未分配的離散儲存空間。其中,以第四位址的上一位址為結束位址的儲存空間為已分配的儲存空間(used_item)。
這樣,可以快速地將相鄰的兩個未分配的儲存空間設置為一個較大的未分配的儲存空間。
本申請實施例提供的方法,能夠有效減少隨機存取記憶體碎片。
前述實施例描述的數據儲存方法可以應用於數據處理裝置通過AI晶片執行數據處理任務的場景,即時管理共享快取記憶體的位址分配和釋放;也可以應用於AI模型的編譯場景。在AI模型的編譯場景中,數據處理裝置可執行本申請實施例提供的數據儲存方法來模擬AI模型執行處理操作時共享快取記憶體的分配,進而對AI模型編譯得到能指示共享快取記憶體的隨機存取記憶體分配和釋放的指令序列。數據處理裝置中的AI晶片可執行指令序列來執行數據處理任務。AI晶片在執行指令序列來執行數據處理任務的過程中,按照指令序列中的指令將數據儲存至共享快取記憶體以及釋放共享快取記憶體中的數據,可以提供共享快取記憶體的利用率。
圖4為本申請實施例提供的一種數據處理裝置的結構示意圖,如圖4所示,該裝置包括第一確定單元401、第二確定單元402和第三確定單元403。
第一確定單元401,用於基於待儲存數據所需的儲存空間大小,確定目標記憶體中的至少兩個候選儲存空間。
第二確定單元402,用於基於上述待儲存數據的第一數據釋放時間和生命週期中的至少一項,確定將上述待儲存數據儲存至上述至少兩個候選儲存空間的多種候選儲存方案中每種候選儲存方案的目標權重,其中,每個候選儲存空間對應於至少一種候選儲存方案。
第三確定單元403,用於基於上述多種候選儲存方案中每種候選儲存方案的目標權重,確定上述待儲存數據的目標儲存方案。
在一個可選的實現方式中,上述候選儲存空間對應的候選儲存方案包括第一候選儲存方案和第二候選儲存方案中的至少一種,其中,上述第一候選儲存方案中的起始儲存位址為上述候選儲存空間的起始位址,上述第二候選儲存方案中的結束儲存位址為上述候選儲存空間的結束位址。
在一個可選的實現方式中,第二確定單元401還用於對於每種候選儲存方案,基於所述待儲存數據的第一數據釋放時間和第二數據釋放時間,確定該候選儲存方案的目標權重,其中,所述第二數據釋放時間為與所述待儲存數據在所述候選儲存方案中的儲存位置相鄰的儲存空間所儲存數據的數據釋放時間。
在一個可選的實現方式中,上述候選儲存方案對應的目標權重與上述待儲存數據的第一數據釋放時間和第二數據釋放時間之間的間隔負相關。
在一個可選的實現方式中,第二確定單元402,還用於對於每種候選儲存方案,基於上述待儲存數據的生命週期和上述候選儲存方案對應的候選儲存空間的起始位址,確定上述候選儲存方案的目標權重。
在一個可選的實現方式中,第二確定單元402,還用於確定所述待儲存數據對應的最大生命週期;確定上述待儲存數據的生命週期與上述最大生命週期之間的第一比值;確定上述候選儲存方案對應的候選儲存空間的起始位址與上述目標記憶體的結束位址之間的第二比值;基於第一比值和第二比值,確定上述候選儲存方案的目標權重。
在一個可選的實現方式中,上述候選儲存方案的目標權重與上述第一比值和上述第二比值之差的絕對值負相關。
在一個可選的實現方式中,第二確定單元402,還用於對於每種候選儲存方案,基於上述待儲存數據對應的第一數據釋放時間和第二數據釋放時間,確定上述候選儲存方案的第一權重,其中,第二數據釋放時間為與待儲存數據在該候選儲存方案中的儲存位置相鄰的儲存空間所儲存數據的數據釋放時間;基於上述待儲存數據的生命週期和上述候選儲存方案對應的候選儲存空間的起始位址,確定上述候選儲存方案的第二權重;基於上述第一權重和上述第二權重的加權和,得到上述候選儲存方案的目標權重。
在一個可選的實現方式中,第二確定單元402,還用於對於每種候選儲存方案,基於上述待儲存數據的第一數據釋放時間、生命週期和該候選儲存方案對應的儲存空間大小,確定該候選儲存方案的目標權重。
在一個可選的實現方式中,第二確定單元402,還用於基於所述待儲存數據對應的第一數據釋放時間和與第二數據釋放時間,確定該候選儲存方案的第一權重,其中,所述第二數據釋放時間為與所述待儲存數據在該候選儲存方案中的儲存位置相鄰的儲存空間所儲存數據的數據釋放時間;基於所述待儲存數據的生命週期和該候選儲存方案對應的候選儲存空間的起始位址,確定該候選儲存方案的第二權重;基於所述候選儲存方案對應的候選儲存空間的大小和所述目標記憶體的總儲存空間的大小,確定該候選儲存方案的第三權重;基於所述第一權重、所述第二權重和所述第三權重的加權和,得到該候選儲存方案的所述目標權重。
在一個可選的實現方式中,第二確定單元402,還用於對於每種候選儲存方案,基於所述待儲存數據的第一數據釋放時間和該候選儲存方案對應的儲存空間大小,確定該候選儲存方案的目標權重。
在一個可選的實現方式中,第二確定單元402,還用於對於每種候選儲存方案,基於所述待儲存數據的生命週期和該候選儲存方案對應的儲存空間大小,確定該候選儲存方案的目標權重。
在一個可選的實現方式中,所述裝置還包括設置單元404,用於將所述待儲存數據儲存至所述目標儲存方案對應的候選儲存空間的第一位址至第二位址;並將所述第一位址至所述第二位址對應的儲存空間設為已分配的儲存空間;其中,所述第一位址和所述第二位址中的一個為所述目標儲存方案對應的候選儲存空間的起始位址,或者,所述第一位址和所述第二位址中的一個為所述目標儲存方案對應的候選儲存空間的結束位址。
在一個可選的實現方式中,所述裝置還包括釋放單元405,用於在所述待儲存數據對應的第一數據釋放時間到達之後,釋放所述第一位址至所述第二位址對應的儲存空間;設置單元404還用於將所述第一位址至所述第二位址對應的儲存空間設置為未分配的儲存空間。
在一個可選的實現方式中,第三確定單元403,還用於在所述多種候選儲存方案各自的目標權重中,將最大的一個目標權重對應的候選儲存方案確定為所述待儲存數據的所述目標儲存方案;或所述多種候選儲存方案各自的目標權重中,將超過預設權重閾值的任一個目標權重對應的候選儲存方案確定為所述目標儲存方案。
在一個可選的實現方式中,上述目標記憶體為人工智慧AI晶片中的共享快取記憶體。
在一個可選的實現方式中,第一確定單元401,還用於從上述目標記憶體未分配的多個離散儲存空間中,確定可儲存上述待儲存數據的上述至少兩個候選儲存空間,其中所述候選儲存空間的大小大於或等於待儲存數據佔用的儲存空間。
在一個可選的實現方式中,設置單元404,還用於若第二位址為候選儲存空間的結束位址,在上述第二位址的下一位址至第三位址均未儲存數據的情況下,將上述第一位址至上述第三位址設置為一個未分配的離散儲存空間。其中,以第三位址的下一位址為起始位址的儲存空間為已分配的儲存空間。
在一個可選的實現方式中,設置單元404,還用於若第一位址為候選儲存空間的起始位址,在上述目標記憶體的第四位址至上述第一位址的上一位址均未儲存數據的情況下,將上述第四位址至上述第二位址設置為一個未分配的離散儲存空間。其中,以第四位址的上一位址為結束位址的儲存空間為已分配的儲存空間。
圖5是本申請實施例提供的一種數據處理裝置的結構示意圖。如圖5所示,數據處理裝置包括AI晶片510和記憶體520,AI晶片510可從記憶體520獲取數據和指令,並將最終的處理結果輸出至記憶體520,AI晶片510中的計算單元501執行處理任務,計算單元501在處理數據的過程中將數據儲存至共享快取記憶體502(即目標記憶體)以及從該共享快取記憶體502獲取數據。共享快取記憶體502的位址分配和釋放可採用前述實施例中的數據儲存方法。在一些實施例中,記憶體520可能位於AI晶片510內部。在一些實施例中,在AI晶片執行某種數據處理任務時,數據處理裝置運行的某個隨機存取記憶體管理軟體執行前述實施例中的數據儲存方法來管理共享快取記憶體的位址分配和釋放。在一些實施例中,在AI晶片執行某種數據處理任務時,執行從記憶體讀取的指令來實現數據處理任務,在實現數據處理任務的過程中從記憶體讀取的指令指示了共享快取記憶體的位址分配和釋放。也就是說,AI晶片執行從記憶體讀取的指令就可實現與前述實施例相同的隨機存取記憶體分配和釋放流程。
圖6是本申請實施例提供的一種電子設備的結構示意圖,該電子設備600可因配置或性能不同而產生比較大的差異,可以包括一個或多個中央處理器(central processing units,CPU)622(例如,一個或多個處理器)和記憶體632,一個或多個儲存應用程式642或數據644的儲存媒體630(例如一個或多個海量儲存設備),一個或多個AI晶片624。其中,記憶體632和儲存媒體630可以是短暫儲存或持久儲存。儲存在儲存媒體630的程式可以包括一個或多個模組(圖示沒標出),每個模組可以包括對電子設備中的一系列指令操作。更進一步地,中央處理器622可以設置為與儲存媒體630通信,在電子設備600上執行儲存媒體630中的一系列指令操作。AI晶片624可執行CPU 622分配的各種數據處理任務。電子設備600可以為本申請提供的數據處理裝置。
電子設備600還可以包括一個或多個電源626,一個或多個有線或無線網路介面650,一個或多個輸入輸出介面658,和/或,一個或多個作業系統641,例如Windows ServerTM,Mac OS XTM,UnixTM, LinuxTM,FreeBSDTM等等。
上述實施例中由數據處理裝置所執行的步驟可以基於該圖6所示的電子設備結構。具體的,中央處理器622可實現圖4中各單元的功能。
本申請實施例提供了一種計算機可讀儲存媒體,上述計算機可讀儲存媒體儲存有計算機程式,所述計算機程式包括程式指令,上述計算機程式被處理器執行時實現:基於待儲存數據所需的儲存空間大小,確定目標記憶體中的至少兩個候選儲存空間;基於上述待儲存數據的第一數據釋放時間和生命週期中的至少一項,確定將上述待儲存數據儲存至上述至少兩個候選儲存空間的多種候選儲存方案中每種候選儲存方案的目標權重,其中,每個候選儲存空間對應於至少一種候選儲存方案;基於上述多種候選儲存方案中每種候選儲存方案的目標權重,確定上述待儲存數據的目標儲存方案。該計算機可讀儲存媒體可以是非揮發性的儲存媒體。
本申請實施例提供了一種包含指令的計算機程式產品,當其在計算機上運行時,使得計算機執行前述實施例所提供的數據儲存方法。
以上所述,僅為本申請的具體實施方式,但本申請的保護範圍並不局限於此,任何熟悉本技術領域的技術人員在本申請揭露的技術範圍內,可輕易想到各種等效的修改或替換,這些修改或替換都應涵蓋在本申請的保護範圍之內。因此,本申請的保護範圍應以請求項的保護範圍為准。
101:數據處理裝置基於待儲存數據所需的儲存空間大小,確定目標記憶體中的至少兩個候選儲存空間的步驟 102:基於上述待儲存數據的第一數據釋放時間和生命週期中的至少一項,確定將上述待儲存數據儲存至上述至少兩個候選儲存空間的多種候選儲存方案中每種候選儲存方案的目標權重的步驟 103:基於上述多種候選儲存方案中每種候選儲存方案的目標權重,確定上述待儲存數據的目標儲存方案的步驟 201、202、203、204、205、211、212、213、214、215、216:儲存空間 301:數據處理裝置從目標記憶體未分配的多個離散儲存空間中,確定可儲存待儲存數據的兩個或兩個以上候選儲存空間的步驟 302:在第N輪目標權重計算中,基於待儲存數據的第一數據釋放時間和生命週期中的至少一項,計算將待儲存數據儲存至第一候選儲存空間的第一目標權重的步驟 303:更新當前最大目標權重的步驟 304:判斷是否停止下一輪目標權重的計算的步驟 305:將當前最大目標權重對應的候選儲存方案作為目標儲存方案,並將待儲存數據儲存至目標儲存方案對應的候選儲存空間的第一位址至第二位址的步驟 306:將上述第一位址至上述第二位址對應的儲存空間設置為已分配的儲存空間的步驟 307:在第一數據釋放時間到達後,釋放上述第一位址至上述第二位址的步驟 308:若第二位址為候選儲存空間的結束位址,則在上述第二位址的下一位址至第三位址均未儲存數據的情況下,將上述第一位址至上述第三位址設置為一個未分配的儲存空間的步驟 401:第一確定單元 402:第二確定單元 403:第三確定單元 404:設置單元 405:釋放單元 510:AI晶片 501:計算單元 502:共享快取記憶體 520:記憶體 600:伺服器 624:AI晶片 622:中央處理器 626:電源 641:作業系統 644:數據 642:應用程式 630:儲存媒體 632:記憶體 650:有線或無線網路介面 658:輸入輸出介面
圖1為本申請實施例提供的一種數據儲存方法的流程圖。 圖2為本申請實施例提供的一種計算目標權重的過程示意圖。 圖3為本申請實施例提供的另一種數據儲存方法的流程圖。 圖4為本申請實施例提供的一種數據處理裝置結構示意圖。 圖5為本申請實施例提供的另一種數據處理裝置結構示意圖。 圖6是本申請實施例提供的一種電子設備的結構示意圖。
101:數據處理裝置基於待儲存數據所需的儲存空間大小,確定目標記憶體中的至少兩個候選儲存空間的步驟
102:基於上述待儲存數據的第一數據釋放時間和生命週期中的至少一項,確定將上述待儲存數據儲存至上述至少兩個候選儲存空間的多種候選儲存方案中每種候選儲存方案的目標權重的步驟
103:基於上述多種候選儲存方案中每種候選儲存方案的目標權重,確定上述待儲存數據的目標儲存方案的步驟

Claims (15)

  1. 一種數據儲存方法,包括: 基於待儲存數據所需的儲存空間大小,確定目標記憶體中的至少兩個候選儲存空間; 基於所述待儲存數據的第一數據釋放時間和生命週期中的至少一項,確定將所述待儲存數據儲存至所述至少兩個候選儲存空間的多種候選儲存方案中每種候選儲存方案的目標權重,其中,每個候選儲存空間對應於至少一種候選儲存方案; 基於所述多種候選儲存方案中每種候選儲存方案的目標權重,確定所述待儲存數據的目標儲存方案。
  2. 如請求項1所述的數據儲存方法,其中,所述候選儲存空間對應的候選儲存方案包括第一候選儲存方案和第二候選儲存方案中的至少一種,所述第一候選儲存方案中的起始儲存位址為所述候選儲存空間的起始位址,所述第二候選儲存方案中的結束儲存位址為所述候選儲存空間的結束位址。
  3. 如請求項1或2所述的數據儲存方法,其中,所述基於所述待儲存數據對應的第一數據釋放時間和生命週期中的至少一項,確定將所述待儲存數據儲存至所述至少兩個候選儲存空間的多種候選儲存方案中每種候選儲存方案的目標權重,包括: 對於每種候選儲存方案,基於所述待儲存數據的第一數據釋放時間和第二數據釋放時間,確定該候選儲存方案的目標權重,其中,所述第二數據釋放時間為與所述待儲存數據在所述候選儲存方案中的儲存位置相鄰的儲存空間所儲存數據的數據釋放時間。
  4. 如請求項3所述的數據儲存方法,其中,該候選儲存方案的所述目標權重與所述第一數據釋放時間和所述第二數據釋放時間之間的時間間隔負相關。
  5. 如請求項1或2所述的數據儲存方法,其中,所述基於所述待儲存數據對應的第一數據釋放時間和生命週期中的至少一項,確定將所述待儲存數據儲存至所述至少兩個候選儲存空間的多種候選儲存方案中每種候選儲存方案的目標權重,包括: 對於每種候選儲存方案,基於所述待儲存數據的生命週期和所述候選儲存方案對應的候選儲存空間的起始位址,確定該候選儲存方案的目標權重。
  6. 如請求項5中所述的數據儲存方法,其中,所述對於每種候選儲存方案,基於所述待儲存數據的生命週期和該候選儲存方案對應的候選儲存空間的起始位址,確定該候選儲存方案的目標權重,包括: 確定所述待儲存數據對應的最大生命週期; 確定所述待儲存數據的生命週期與所述最大生命週期之間的第一比值; 確定該候選儲存方案對應的候選儲存空間的起始位址與所述目標記憶體的結束位址之間的第二比值; 基於所述第一比值和所述第二比值,確定該候選儲存方案的所述目標權重。
  7. 如請求項6所述的數據儲存方法,其中,所述候選儲存方案的所述目標權重與所述第一比值和所述第二比值之差的絕對值負相關。
  8. 如請求項1或2所述的數據儲存方法,其特徵在於,所述基於所述待儲存數據對應的第一數據釋放時間和生命週期中的至少一項,確定將所述待儲存數據儲存至所述至少兩個候選儲存空間的多種候選儲存方案中每種候選儲存方案的目標權重,包括: 對於每種候選儲存方案, 基於所述待儲存數據對應的第一數據釋放時間和與第二數據釋放時間,確定該候選儲存方案的第一權重,其中,所述第二數據釋放時間為與所述待儲存數據在該候選儲存方案中的儲存位置相鄰的儲存空間所儲存數據的數據釋放時間; 基於所述待儲存數據的生命週期和該候選儲存方案對應的候選儲存空間的起始位址,確定該候選儲存方案的第二權重;以及 基於所述第一權重和所述第二權重的加權和,得到該候選儲存方案的目標權重; 或者 對於每種候選儲存方案,基於所述待儲存數據的第一數據釋放時間、生命週期和該候選儲存方案對應的儲存空間大小,確定該候選儲存方案的目標權重。
  9. 如請求項8所述的數據儲存方法,其中,所述對於每種候選儲存方案,基於所述待儲存數據的第一數據釋放時間、生命週期和該候選儲存方案對應的儲存空間大小,確定該候選儲存方案的目標權重,包括: 基於所述待儲存數據對應的第一數據釋放時間和與第二數據釋放時間,確定該候選儲存方案的第一權重,其中,所述第二數據釋放時間為與所述待儲存數據在該候選儲存方案中的儲存位置相鄰的儲存空間所儲存數據的數據釋放時間; 基於所述待儲存數據的生命週期和該候選儲存方案對應的候選儲存空間的起始位址,確定該候選儲存方案的第二權重; 基於所述候選儲存方案對應的候選儲存空間的大小和所述目標記憶體的總儲存空間的大小,確定該候選儲存方案的第三權重; 基於所述第一權重、所述第二權重和所述第三權重的加權和,得到該候選儲存方案的所述目標權重。
  10. 如請求項1或2所述的數據儲存方法,其中,所述基於所述待儲存數據的第一數據釋放時間和生命週期中的至少一項,確定將所述待儲存數據儲存至所述至少兩個候選儲存空間的多種候選儲存方案中每種候選儲存方案的目標權重,包括: 對於每種候選儲存方案,基於所述待儲存數據的第一數據釋放時間和該候選儲存方案對應的儲存空間大小,確定該候選儲存方案的目標權重;或者 對於每種候選儲存方案,基於所述待儲存數據的生命週期和該候選儲存方案對應的儲存空間大小,確定該候選儲存方案的目標權重。
  11. 如請求項1至10任一項所述的數據儲存方法,其中,所述方法還包括: 將所述待儲存數據儲存至所述目標儲存方案對應的候選儲存空間的第一位址至第二位址; 將所述第一位址至所述第二位址對應的儲存空間設置為已分配的儲存空間; 其中,所述第一位址和所述第二位址中的一個為所述目標儲存方案對應的候選儲存空間的起始位址,或者,所述第一位址和所述第二位址中的一個為所述目標儲存方案對應的候選儲存空間的結束位址。
  12. 如請求項11所述的數據儲存方法,其中,所述方法還包括: 在所述待儲存數據對應的第一數據釋放時間到達之後,釋放所述第一位址至所述第二位址對應的儲存空間;並將所述第一位址至所述第二位址對應的儲存空間設置為未分配的儲存空間。
  13. 如請求項1至12任一項所述的數據儲存方法,其中,所述基於所述多種候選儲存方案中每種候選儲存方案的目標權重,確定所述待儲存數據的目標儲存方案,包括: 在所述多種候選儲存方案各自的目標權重中,將最大的一個目標權重對應的候選儲存方案確定為所述待儲存數據的所述目標儲存方案;或 在所述多種候選儲存方案各自的目標權重中,將超過預設權重閾值的任一個目標權重對應的候選儲存方案確定為所述目標儲存方案。
  14. 一種計算機可讀儲存媒體,其中,所述計算機可讀儲存媒體中儲存有計算機程式,所述計算機程式包括程式指令,所述程式指令當被電子設備的處理器執行時,使所述處理器執行請求項1至13鍾任一項所述的方法。
  15. 一種電子設備,其特徵在於,包括儲存有處理器可執行指令的記憶體、目標記憶體和處理器,其中,所述處理器,在執行所述指令時用於實現如請求項1至13鍾任一項所述的方法。
TW109146150A 2020-05-18 2020-12-25 數據儲存方法、電子設備及儲存媒體 TWI779438B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202010420206.5 2020-05-18
CN202010420206.5A CN113688062B (zh) 2020-05-18 2020-05-18 用于存储数据的方法和相关产品

Publications (2)

Publication Number Publication Date
TW202145010A true TW202145010A (zh) 2021-12-01
TWI779438B TWI779438B (zh) 2022-10-01

Family

ID=78575569

Family Applications (1)

Application Number Title Priority Date Filing Date
TW109146150A TWI779438B (zh) 2020-05-18 2020-12-25 數據儲存方法、電子設備及儲存媒體

Country Status (5)

Country Link
JP (1) JP7164733B2 (zh)
KR (1) KR20210144730A (zh)
CN (1) CN113688062B (zh)
TW (1) TWI779438B (zh)
WO (1) WO2021232769A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114442927B (zh) * 2021-12-22 2023-11-03 天翼云科技有限公司 一种数据存储空间的管理方法及装置
CN115509463B (zh) * 2022-11-15 2023-04-11 北京云成金融信息服务有限公司 一种基于数据中台的均衡化数据存储方法及系统
CN116909489B (zh) * 2023-09-11 2024-02-27 北京紫光芯能科技有限公司 一种数据的管理方法、装置、电子设备及存储介质

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09198299A (ja) * 1996-01-23 1997-07-31 Nec Corp メモリブロック確保解放装置
CN1271524C (zh) * 2003-03-19 2006-08-23 华为技术有限公司 一种静态内存管理方法
JP4129693B2 (ja) 2006-05-18 2008-08-06 コニカミノルタビジネステクノロジーズ株式会社 メモリ管理方法
CN101320351A (zh) * 2008-06-27 2008-12-10 华中科技大学 内存的分配、清理和释放方法及内存管理的装置
KR20120109197A (ko) * 2011-03-28 2012-10-08 삼성전자주식회사 휴대용 장치 상의 데이터 스트림 관리 시스템에서 메모리를 관리하는 방법 및 이를 위한 휴대용 장치
US9361224B2 (en) * 2013-09-04 2016-06-07 Red Hat, Inc. Non-intrusive storage of garbage collector-specific management data
CN104090848B (zh) * 2014-07-16 2017-03-08 云南大学 一种周期性大数据处理的内存管理方法及装置
CN105278873B (zh) * 2015-09-14 2018-10-19 浪潮(北京)电子信息产业有限公司 一种磁盘块的分配方法及装置
WO2017107015A1 (zh) * 2015-12-21 2017-06-29 华为技术有限公司 存储空间的分配方法及存储设备
FR3050844B1 (fr) * 2016-04-27 2018-11-23 Morpho Procede d'allocation d'espace memoire
CN106569742B (zh) * 2016-10-20 2019-07-23 华为技术有限公司 存储管理方法及存储设备
WO2019038859A1 (ja) 2017-08-23 2019-02-28 株式会社日立製作所 不揮発メモリデバイスを有するストレージシステム
CN108287666B (zh) * 2018-01-16 2021-01-26 中国人民公安大学 用于云存储环境的数据存储方法及装置
CN110058786B (zh) * 2018-01-18 2022-12-02 伊姆西Ip控股有限责任公司 用于控制存储系统中的写请求的方法、装置和计算机程序产品
US11288180B2 (en) * 2018-01-19 2022-03-29 Micron Technology, Inc. Management of storage resources allocated from non-volatile memory devices to users
US10782897B2 (en) * 2018-04-02 2020-09-22 International Business Machines Corporation Memory reduction for neural networks with fixed structures
CN110555890B (zh) * 2018-05-30 2023-10-20 珠海全志科技股份有限公司 一种内存管理方法及系统
CN109117273B (zh) * 2018-08-17 2021-09-07 腾讯科技(深圳)有限公司 数据存储方法、装置及设备
CN109857678A (zh) * 2019-01-31 2019-06-07 深兰科技(上海)有限公司 一种嵌入式系统内存管理方法及装置
CN110427394B (zh) * 2019-08-08 2022-02-25 北京字节跳动网络技术有限公司 数据操作方法及装置
CN111078585B (zh) * 2019-11-29 2022-03-29 智器云南京信息科技有限公司 一种内存缓存管理方法、系统、存储介质及电子设备

Also Published As

Publication number Publication date
JP7164733B2 (ja) 2022-11-01
CN113688062B (zh) 2022-08-26
TWI779438B (zh) 2022-10-01
JP2022537007A (ja) 2022-08-23
WO2021232769A1 (zh) 2021-11-25
CN113688062A (zh) 2021-11-23
KR20210144730A (ko) 2021-11-30

Similar Documents

Publication Publication Date Title
TWI779438B (zh) 數據儲存方法、電子設備及儲存媒體
US7496711B2 (en) Multi-level memory architecture with data prioritization
US9098417B2 (en) Partitioning caches for sub-entities in computing devices
KR20180027327A (ko) 동적으로 입도를 업데이트하는 적응적 캐시 대체 매니저 및 공유 플래시-기반 스토리지 시스템의 파티셔닝 방법
US20080086599A1 (en) Method to retain critical data in a cache in order to increase application performance
Choukse et al. Buddy compression: Enabling larger memory for deep learning and hpc workloads on gpus
CN111143243B (zh) 一种基于nvm混合内存的缓存预取方法及系统
US20110153978A1 (en) Predictive Page Allocation for Virtual Memory System
US20080086598A1 (en) System and method for establishing cache priority for critical data structures of an application
JP2009503627A (ja) コンピュータ装置におけるメモリ管理
US9569381B2 (en) Scheduler for memory
JP7311981B2 (ja) 機械学習訓練のためのスラブ基盤のメモリ管理
JP6042170B2 (ja) キャッシュ制御装置及びキャッシュ制御方法
US11893266B2 (en) Method and apparatus for adaptive page migration and pinning for oversubscribed irregular applications
CN116501249A (zh) 一种减少gpu内存重复数据读写的方法及相关设备
Zhang et al. Crftl: cache reallocation-based page-level flash translation layer for smartphones
Chen et al. Refinery swap: An efficient swap mechanism for hybrid DRAM–NVM systems
Nikas et al. An adaptive bloom filter cache partitioning scheme for multicore architectures
TW201941087A (zh) 具有旋轉布隆過濾器之資料結構
CN113010453A (zh) 一种内存管理的方法、系统、设备及可读存储介质
KR102356704B1 (ko) 컴퓨팅 장치 및 컴퓨팅 장치에서 연산들을 처리하는 방법
Kim et al. Explicit non-reusable page cache management to minimize last level cache pollution
Ahmad et al. Software-hardware managed last-level cache allocation scheme for large-scale nvram-based multicores executing parallel data analytics applications
KR20190138365A (ko) 멀티 프로세서 시스템 및 그 구동 방법
Li et al. REMOC: efficient request managements for on-chip memories of GPUs

Legal Events

Date Code Title Description
GD4A Issue of patent certificate for granted invention patent