System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內的位置。 參數名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術實現步驟摘要】
本專利技術涉及計算機,特別是涉及一種數據存儲方法、一種數據讀取方法、一種數據存儲裝置、一種數據讀取裝置、一種電子設備以及一種可讀存儲介質。
技術介紹
1、字節(byte)是計算機數據存儲的基本單位,其由8個位(bit)組成,每bit代表一個0或1(二進制),bit是最小一級的信息單位,如圖1所示。
2、在常見的編程語言中,不同的數據類型占用不同的字節數量,也即占用不同大小的存儲空間。例如8位定點(int8)占用一個字節;16位定點(int8)或半精度浮點(float16)占用2個字節;32位定點(int32)或單精度浮點(float32)占用4個字節等,如圖2所示。不同數據類型所對應的bit數量稱之為“位寬”(bit?width)。傳統數據類型的位寬均為2的冪次方,也即:bitwidth=2n。
3、近年來,隨著人工智能應用的快速爆發與深度學習量化技術的發展,出現了一些新型數據類型,例如7位浮點(fp7),4位定點(int4),3位定點(int3),2位定點(int2)等;其中,fp7、int3均不滿足上述位寬為2的冪次方的特點。圖2展示了幾種典型的數據類型的位寬示意。
4、內存地址(address)是用于表示數據存儲位置的概念,可通過內存地址訪問存儲器中的數據,其基本單位為字節。圖3展示了一個多byte存儲器的地址與數據的對應關系示意。
5、對于數據類型而言,若其位寬滿足bitwidth=2n,則其存儲與尋址方式較簡單。圖4展示了int4數據的例子,可見兩個4bit數據可緊致存儲
6、然而,對于任意位寬,例如非2次冪數據位寬的數據類型而言,其存儲與尋址方式較復雜。例如,對于int3數據而言,如圖5所示,其無法緊致存儲為一個字節,從而帶來了存儲效率與尋址難度的矛盾。
7、圖6中(a)和(b)分別展示了兩種傳統的非2次冪數據位寬的存儲方法(以int3數據為例)。圖6(a)方案每字節存儲兩個int3數據,也即每8bit浪費2bit存儲空間,但好處為尋址簡單,與前述int4數據的尋址方式相似。圖6(b)將int3數據緊致存儲,8個int3數據正好可以占滿3個字節,無空間浪費,但尋址機制復雜,例如第三個int3數據的部分數據存儲于第一個字節,部分數據存儲于第二個字節,地址與bit存儲規律復雜。此外,當數據位寬不同時,例如數據類型為int5,則其bit存儲規律與int3完全不同。
技術實現思路
1、本專利技術實施例所要解決的技術問題是提供一種數據存儲方法、一種數據讀取方法、裝置、電子設備及可讀存儲介質,以便解決非2次冪數據位寬的數據類型的存儲效率與尋址難度的矛盾的問題。
2、為了解決上述問題,本專利技術提供了一種數據存儲方法,所述方法包括:
3、將n個位寬為m的數據進行存儲重排,得到數據組;其中,所述n等于存儲器中存儲單元的存儲長度,所述數據組包括m個數據子組,每個數據子組中依次排列n個所述數據的一個子數據,且同一所述數據的子數據在不同數據子組中所在的位序相同;
4、將所述數據組中的子數據依次存儲到所述存儲器中的m個存儲單元。
5、可選地,所述將n個位寬為m的數據進行存儲重排,得到數據組,包括:
6、從x等于1開始,將n個所述數據中的第x個子數據依次排列,直至x等于m,從而得到所述數據組。
7、可選地,在所述將n個位寬為m的數據進行存儲重排,得到數據組之前,所述方法還包括:
8、接收通用處理器或專用加速器產生的一系列位寬為m的數據。
9、可選地,在所述將所述數據組中的子數據依次存儲到所述存儲器中的m個存儲單元之后,所述方法還包括:
10、從所述存儲器中的m個存儲單元中讀取所述數據組中的子數據;
11、將讀取到的所述數據組中的子數據進行讀取重排,得到所述n個位寬為m的數據。
12、可選地,在所述從所述存儲器中的m個存儲單元中讀取所述數據組中的子數據之前,所述方法還包括:
13、針對要讀取第k個位寬為m的目標數據,根據所述k、所述n和所述m,確定所述目標數據所屬的數據組在所述存儲器中的首地址;
14、所述從所述存儲器中的m個存儲單元中讀取所述數據組中的子數據,包括:
15、根據所述首地址,從所述存儲器中的m個存儲單元中讀取所述數據組中的子數據。
16、可選地,在所述將讀取到的所述數據組中的子數據進行讀取重排,得到所述n個位寬為m的數據之后,所述方法還包括:
17、根據所述k和所述n,在所述n個位寬為m的數據中,提取所述第k個位寬為m的目標數據。
18、本專利技術還提供了一種數據讀取方法,所述裝置包括:
19、從存儲器中的m個存儲單元中讀取數據組中的子數據;其中,所述數據組包括m個數據子組,每個數據子組中依次排列n個位寬為m的數據的子數據,且同一所述數據的子數據在不同數據子組中所在的位序相同,所述n等于所述存儲單元的存儲長度;
20、將讀取到的所述數據組中的子數據進行讀取重排,得到所述n個位寬為m的數據。
21、本專利技術還提供了一種數據存儲裝置,所述裝置包括:
22、存儲重排模塊,用于將n個位寬為m的數據進行存儲重排,得到數據組;其中,所述n等于存儲器中存儲單元的存儲長度,所述數據組包括m個數據子組,每個數據子組中依次排列n個所述數據的一個子數據,且同一所述數據的子數據在不同數據子組中所在的位序相同;
23、存儲模塊,用于將所述數據組中的子數據依次存儲到所述存儲器中的m個存儲單元。
24、可選地,所述存儲重排模塊,包括:
25、排列子模塊,用于從x等于1開始,將n個所述數據中的第x個子數據依次排列,直至x等于m,從而得到所述數據組。
26、可選地,所述裝置還包括:
27、數據接收模塊,用于在所述將n個位寬為m的數據進行存儲重排,得到數據組之前,接收通用處理器或專用加速器產生的一系列位寬為m的數據。
28、可選地,所述裝置還包括:
29、讀取模塊,用于在所述將所述數據組中的子數據依次存儲到所述存儲器中的m個存儲單元之后,從所述存儲器中的m個存儲單元中讀取所述數據組中的子數據;
30、讀取重排模塊,用于將讀取到的所述數據組中的子數據進行讀取重排,得到所述n個位寬為m的數據。
31、可選地,所述裝置還包括:
32、首地址確定模塊,用于在所述從所述存儲器中的m個存儲單元中讀取所述數據組中的子數據之前,針對要讀取第k個位寬為m的目標數據,根據所述k、所述n和所述m本文檔來自技高網...
【技術保護點】
1.一種數據存儲方法,其特征在于,包括:
2.根據權利要求1所述的方法,其特征在于,所述將n個位寬為m的數據進行存儲重排,得到數據組,包括:
3.根據權利要求1所述的方法,其特征在于,在所述將n個位寬為m的數據進行存儲重排,得到數據組之前,所述方法還包括:
4.根據權利要求1所述的方法,其特征在于,在所述將所述數據組中的子數據依次存儲到所述存儲器中的m個存儲單元之后,所述方法還包括:
5.根據權利要求4所述的方法,其特征在于,在所述從所述存儲器中的m個存儲單元中讀取所述數據組中的子數據之前,所述方法還包括:
6.根據權利要求5所述的方法,其特征在于,在所述將讀取到的所述數據組中的子數據進行讀取重排,得到所述n個位寬為m的數據之后,所述方法還包括:
7.一種數據讀取方法,其特征在于,包括:
8.一種數據存儲裝置,其特征在于,包括:
9.一種數據讀取裝置,其特征在于,包括:
10.一種電子設備,其特征在于,包括處理器、通信接口、存儲器和通信總線,其中,處理器,通信接口,存儲器通
11.一種可讀存儲介質,其特征在于,當所述存儲介質中的指令由電子設備的處理器執行時,使得電子設備能夠執行如方法權利要求1-7中任一所述的方法。
...【技術特征摘要】
1.一種數據存儲方法,其特征在于,包括:
2.根據權利要求1所述的方法,其特征在于,所述將n個位寬為m的數據進行存儲重排,得到數據組,包括:
3.根據權利要求1所述的方法,其特征在于,在所述將n個位寬為m的數據進行存儲重排,得到數據組之前,所述方法還包括:
4.根據權利要求1所述的方法,其特征在于,在所述將所述數據組中的子數據依次存儲到所述存儲器中的m個存儲單元之后,所述方法還包括:
5.根據權利要求4所述的方法,其特征在于,在所述從所述存儲器中的m個存儲單元中讀取所述數據組中的子數據之前,所述方法還包括:
6.根據權利要求...
【專利技術屬性】
技術研發人員:方紹峽,原鋼,
申請(專利權)人:原粒北京半導體技術有限公司,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。