CN114063887A - 写入及读取方法、处理器芯片、存储介质和电子设备 - Google Patents
写入及读取方法、处理器芯片、存储介质和电子设备 Download PDFInfo
- Publication number
- CN114063887A CN114063887A CN202010762798.9A CN202010762798A CN114063887A CN 114063887 A CN114063887 A CN 114063887A CN 202010762798 A CN202010762798 A CN 202010762798A CN 114063887 A CN114063887 A CN 114063887A
- Authority
- CN
- China
- Prior art keywords
- storage module
- auxiliary
- modules
- main storage
- table data
- Prior art date
- Legal status (The legal status 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 status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 79
- 238000003491 array Methods 0.000 claims 2
- 238000004364 calculation method Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 6
- 101001122448 Rattus norvegicus Nociceptin receptor Proteins 0.000 description 5
- 101100328887 Caenorhabditis elegans col-34 gene Proteins 0.000 description 4
- 102100031584 Cell division cycle-associated 7-like protein Human genes 0.000 description 2
- 101000777638 Homo sapiens Cell division cycle-associated 7-like protein Proteins 0.000 description 2
- -1 RAM3 Proteins 0.000 description 2
- RRLHMJHRFMHVNM-BQVXCWBNSA-N [(2s,3r,6r)-6-[5-[5-hydroxy-3-(4-hydroxyphenyl)-4-oxochromen-7-yl]oxypentoxy]-2-methyl-3,6-dihydro-2h-pyran-3-yl] acetate Chemical compound C1=C[C@@H](OC(C)=O)[C@H](C)O[C@H]1OCCCCCOC1=CC(O)=C2C(=O)C(C=3C=CC(O)=CC=3)=COC2=C1 RRLHMJHRFMHVNM-BQVXCWBNSA-N 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 230000002452 interceptive effect Effects 0.000 description 2
- 230000002349 favourable effect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1075—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers for multiport memories each having random access ports and serial ports, e.g. video RAM
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0626—Reducing size or complexity of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/22—Read-write [R-W] timing or clocking circuits; Read-write [R-W] control signal generators or management
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C2207/00—Indexing scheme relating to arrangements for writing information into, or reading information out from, a digital store
- G11C2207/22—Control and timing of internal memory operations
- G11C2207/2236—Copy
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1006—Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C8/00—Arrangements for selecting an address in a digital store
- G11C8/10—Decoders
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C8/00—Arrangements for selecting an address in a digital store
- G11C8/12—Group selection circuits, e.g. for memory block selection, chip selection, array selection
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C8/00—Arrangements for selecting an address in a digital store
- G11C8/16—Multiple access memory array, e.g. addressing one storage element via at least two independent addressing line groups
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)
- Quality & Reliability (AREA)
- Multimedia (AREA)
- Memory System (AREA)
Abstract
本公开提供一种向存储装置中写入数据的写入方法,所述方法包括:将待写入的写表数据写入相应的主存储模块中;利用第一预定算法对各个所述目标主存储模块中的写表数据进行运算,以获得辅助值,其中,对任意一个目标主存储模块进行运算时,利用所述第一预定算法对该目标主存储模块中存储的写表数据以及该目标主存储模块之外的其他主存储模块中的至少一者中存储的相应写表数据进行运算,利用所述第一预定算法的逆运算对任意辅助值进行运算,能够得出参与运算的写表数据;将所述辅助值存入相应的辅助存储模块中。本公开还提供一种读取方法、一种计算机可读存储介质、一种处理芯片和一种电子设备。
Description
技术领域
本发明涉及存储设备领域,具体地,涉及一种向存储装置中写入数据的写入方法、一种从存储装置中读取数据的读取方法、一种处理器芯片、一种计算机可读存储介质和一种电子设备。
背景技术
随着社会对信息交互时交互数据的数量、以及交互速度的要求逐渐提高,小体积、高性能成为衡量网络设备的重要指标。相应地,网络设备中处理器的处理芯片也在追求小体积和高性能。
以处理芯片中的随机存储器(RAM,Rand-Assess Memory)为例,受RAM带宽的限制,在RAM只有一个读口的情况下,查表性能仅能达到1次线速,即,一个时钟周期内仅能读取一个地址上存储的存储值,限制了处理芯片的性能。
因此,如何提高处理芯片的性能成为本领域亟待解决的技术问题。
发明内容
本公开提供一种向存储装置中写入数据的写入方法、一种从存储装置中读取数据的读取方法、一种存储装置、一种计算机可读存储介质和一种电子设备。
作为本公开的一个方面,提供一种向存储装置中写入数据的写入方法,所述存储装置包括多个存储模块,多个所述存储模块包括多个主存储模块和至少一个辅助存储模块,多个所述主存储模块包括至少一个目标主存储模块,每个所述目标主存储模块都对应有辅助存储模块,所述方法包括:
将待写入的写表数据写入相应的主存储模块中;
利用第一预定算法对各个所述目标主存储模块中的写表数据进行运算,以获得辅助值,其中,对任意一个目标主存储模块进行运算时,利用所述第一预定算法对该目标主存储模块中存储的写表数据以及该目标主存储模块之外的其他主存储模块中的至少一者中存储的相应写表数据进行运算,利用所述第一预定算法的逆运算对任意辅助值进行运算,能够得出参与运算的写表数据;
将所述辅助值存入相应的辅助存储模块中。
可选地,根据权利要去1所述的写入方法,其中,对所有目标主存储模块都进行了利用第一预定算法的运算后,所有主存储模块中存储的数据均参与了运算。
可选地,多个所述存储模块形成为N*N阵列的多个存储模块,在前(N-1)行存储模块中,每一行存储模块都包括N个所述主存储模块和一个所述辅助存储模块,第N行所述存储模块包括N个所述辅助存储模块,N为不小于3的正整数,所述辅助值包括第一辅助值、第二辅助值和第三辅助值,
在利用第一预定算法对各个所述目标主存储模块中的写表数据进行运算,以获得辅助值的步骤中,对于任意一个所述目标主存储模块的任意一个地址中存储的写表数据,获得辅助值的步骤都包括:
利用所述第一预定算法对当前目标主存储模块的当前地址中存储的写表数据与和该目标主存储模块位于同一行的其他所有主存储模块的相应地址存储的写表数据进行运算,以获得第一辅助值;
利用所述第一预定算法对当前目标主存储模块的当前地址中存储的写表数据与和当前目标主存储模块位于同一列的其他所有主存储模块的相应地址存储的写表数值进行运算,以获得第二辅助值;
利用所述第一预定算法对当前目标主存储模块的该地址中存储的写表数据与和除所有目标主存储模块之外所有主存储模块的相应地址存储的写表数据、以及除了与当前目标主存储模块对应的辅助存储模块之外的所有辅助存储模块的相应地址存储的数据进行运算,以获得第三辅助值;
并且,所述第一辅助值存储在与所述目标主存储模块位于同一行的辅助存储模块中,所述第二辅助值存储在与所述目标主存储模块位于同一列的辅助存储模块中,所述第三辅助值存储在第N行第N列存储模块中。
可选地,在所述阵列中,第一行中的所有主存储模块均为所述目标主存储模块,第一列中的所有主存储模块均为所述目标主存储模块。
可选地,多个所述存储模块包括形成为M*M*M阵列的三维立方体的多个主存储模块和三个平面正向的3*M2个辅助存储模块,从每个坐标系平面的角度来看,在XY平面上,每一行存储模块都包括M个所述主存储模块和一个所述辅助存储模块,在XZ平面上,每一行存储模块都包括M个所述主存储模块和一个所述辅助存储模块,在YZ平面上,每一行存储模块都包括M个所述主存储模块和一个所述辅助存储模块,M为不小于1的正整数,所述辅助值包括第一辅助值、第二辅助值和第三辅助值,
在利用第一预定算法对各个所述目标主存储模块中的写表数据进行运算,以获得辅助值的步骤中,对于任意一个所述目标主存储模块的任意一个地址中存储的写表数据,获得辅助值的步骤都包括:
利用所述第一预定算法对当前目标主存储模块的当前地址中存储的写表数据与和该目标主存储模块位于XY平面同一行的其他所有主存储模块的相应地址存储的写表数据进行运算,以获得第一辅助值;
利用所述第一预定算法对当前目标主存储模块的当前地址中存储的写表数据与和该目标主存储模块位于XZ平面同一行的其他所有主存储模块的相应地址存储的写表数值进行运算,以获得第二辅助值;
利用所述第一预定算法对当前目标主存储模块的当前地址中存储的写表数据与和该目标主存储模块位于YZ平面同一行的其他所有主存储模块的相应地址存储的写表数值进行运算,以获得第三辅助值;
并且,所述第一辅助值存储在与所述目标主存储模块位于XY平面同一行的辅助存储模块中,所述第二辅助值存储在与所述目标主存储模块位于XZ平面同一行的辅助存储模块中,所述第三辅助值存储在与所述目标主存储模块位于YZ平面同一行的辅助存储模块中。
可选地,参与同一次利用第一预定算法的运算的所有写表数据各自对应的地址标识信息相同。
可选地,所述第一预定算法为异或运算。
可选地,当参与预算的主存储模块中存储的写表数据发生变化时,所述写入方法还包括:
用变化后的写表数据参与运算,以获得相应的辅助值;
利用重新计算获得的辅助值替换相应地址中已存储的辅助值。
作为本公开的第二个方面,提供一种从存储装置中读取数据的读取方法,所述存储装置包括多个存储模块,多个所述存储模块包括多个主存储模块和至少一个辅助存储模块,多个所述主存储模块包括至少一个目标主存储模块,每个所述目标主存储模块都对应有辅助存储模块,所述存储装置中存储有根据本公开第一个方面所提供的写入方法所写入的数据,所述读取方法包括:
接收至少一个读取指令;
根据所述读取指令确定待读取的写表数据的位置;
当至少两个读取指令待读取的数据存储在同一个主存储模块、且所述读取指令所指向的地址对应有辅助值时,对于所述至少两个读取指令,所述读取方法还包括:
对于所述至少两个指令中的其中一个读取指令,直接从所述主存储模块中读取相应的写表数据;
对于所述至少两个指令中的其他指令,分别读取与所述主存储模块对应的辅助存储模块的相应地址中存储的辅助值、以及参与所述辅助值运算的主存储模块中相应地址中的写表数据;
利用第二预定算法、各个所述写表数据对各个所述辅助值进行运算,以获得存储在所述主存储模块中的、与所述其他指令对应的地址中存储的写表数据,所述第二预定该算法为所述第一预定算法的逆运算。
可选地,所述第一预定算法为异或运算,所述第二预定算法为异或运算。
作为本公开的第三个方面,提供一种计算机可读存储介质,所述计算机可读存储介质上存储有可执行程序,当所述可执行程序被调用时,能够实现本公开第一个方面所提供的写入方法和/或本公开第二个方面所提供的读取方法。
作为本公开的第三个方面,提供一种处理器芯片,包括具有至少一个写入端口和多个读取端口的存储装置和运算模块,
所述存储装置包括多个存储模块,多个所述存储模块包括第一写入端口、多个第一读取端口、多个主存储模块和至少一个辅助存储模块,每个所述辅助存储模块对应预定数量个主存储模块,并且,每个所述主存储模块对应至少一个所述辅助存储模块,并且,每个存储模块都具有一个读取端口和一个写入端口;
所述运算模块包括存储单元和处理单元,所述存储单元上存储有可执行程序,当所述可执行程序被所述处理单元调用时,能够实现本公开第一个方面所提供的写入方法和本公开第二个方面所提供的读取方法。
可选地,所述主存储模块的存储深度与所述辅助存储模块的存储深度相同。
可选地,多个所述存储模块形成为N*N阵列的多个存储模块,在前(N-1)行存储模块中,每一行存储模块都包括N个所述主存储模块和一个所述辅助存储模块,第N行所述存储模块包括N个所述辅助存储模块。
可选地,N为5,所述存储装置具有四个读取端口,每个所述主存储模块的存储深度为所有主存储模块的总存储深度的1/16。
可选地,多个所述存储模块包括形成为M*M*M阵列的三维立方体的多个主存储模块和三个平面正向的3*M2个辅助存储模块,从每个坐标系平面的角度来看,在XY平面上,每一行存储模块都包括M个所述主存储模块和一个所述辅助存储模块,在XZ平面上,每一行存储模块都包括M个所述主存储模块和一个所述辅助存储模块,在YZ平面上,每一行存储模块都包括M个所述主存储模块和一个所述辅助存储模块,M为不小于1的正整数。
作为本公开的第五个方面,提供一种电子设备,所述电子设备包括本公开所提供的上述处理器芯片。
在本公开中,对于写入主存储模块中的每一个写表数据而言,该写表数据不仅直接存入了目标主存储模块的目标地址中,还以另一种形式(即,经过第一预定算法的运算后获得的结果)存储到了辅助存储模块中。如果同时接收到多个对同一个主存储模块进行读取的读指令,可以控制其中一个读取指令直接读取辅助存储模块中的相关数据、再利用参与运算的、除了读取指令对应的主存储模块中存储的写表数据之外的写表数据进行第一预定算法的逆运算,即可获得该读指令所要求读取的数据。由此可知,利用本公开所提供的写入方法、配合相应的读取方法,可以实现多线速读取存储装置中的数据。
而在本公开中,为了实现多次查表线速,并非直接将写表数据同时存储在辅助存储模块中,而是将其经过第一运算后再存入所述辅助存储模块中。每个运算结果都与多个主存储模块中的数据相关,通过存储一个辅助值,变向实现了在一个地址中存储多个地址的数据,从而减小了备份存储多个地址中数据所需要的存储空间。显然,本公开所提供的写入方法中,为了实现多线速读取,所用到的存储空间更少,有利于实现存储装置、以及包括所述存储装置的芯片的小型化、集成化。
附图说明
图1是本公开第一个方面所提供的写入方法的一种实施方式的流程图;
图2是步骤S120的一种实施方式的流程图;
图3是存储装置的一种实施方式的示意图;
图4是存储装置的另一种实施方式的示意图;
图5是本公开第二个方面所提供的读取方法的一种实施方式的流程图;
图6是本公开所提供的具体实施方式中,得出RAM0的1号地址存储的数据的值时的逻辑图;
图7是本公开所提供的具体实施方式中,得出RAM0的2号地址存储的数据的值时的逻辑图;
图8是本公开所提供的具体实施方式中,得出RAM0的2号地址存储的数据的值时的逻辑图。
具体实施方式
为使本领域的技术人员更好地理解本公开的技术方案,下面结合附图对本公开提供的向存储装置中写入数据的写入方法、从存储装置中读取数据的读取方法、存储装置、计算机可读存储介质和电子设备进行详细描述。
在下文中将参考附图更充分地描述示例实施例,但是所述示例实施例可以以不同形式来体现且不应当被解释为限于本文阐述的实施例。反之,提供这些实施例的目的在于使本公开透彻和完整,并将使本领域技术人员充分理解本公开的范围。
在不冲突的情况下,本公开各实施例及实施例中的各特征可相互组合。
如本文所使用的,术语“和/或”包括一个或多个相关列举条目的任何和所有组合。
本文所使用的术语仅用于描述特定实施例,且不意欲限制本公开。如本文所使用的,单数形式“一个”和“该”也意欲包括复数形式,除非上下文另外清楚指出。还将理解的是,当本说明书中使用术语“包括”和/或“由……制成”时,指定存在所述特征、整体、步骤、操作、元件和/或组件,但不排除存在或添加一个或多个其它特征、整体、步骤、操作、元件、组件和/或其群组。
除非另外限定,否则本文所用的所有术语(包括技术和科学术语)的含义与本领域普通技术人员通常理解的含义相同。还将理解,诸如那些在常用字典中限定的那些术语应当被解释为具有与其在相关技术以及本公开的背景下的含义一致的含义,且将不解释为具有理想化或过度形式上的含义,除非本文明确如此限定。
本公开所涉及的存储装置包括多个存储模块,这多个存储模块又包括至少两种存储模块,分别为主存储模块和辅助存储模块。每个辅助存储模块对应预定数量个主存储模块,并且,每个主存储模块都对应至少一个辅助存储模块。
作为本公开的第一个方面,提供一种向存储装置中写入数据的写入方法,如图1所示,所述方法包括:
在步骤S110中,将待写入的写表数据写入相应的主存储模块中;
在步骤S120中,利用第一预定算法对各个所述目标主存储模块中的写表数据进行运算,以获得辅助值,其中,对任意一个目标主存储模块进行运算时,利用所述第一预定算法对该目标主存储模块中存储的写表数据以及该目标主存储模块之外的其他主存储模块中的至少一者中存储的相应写表数据进行运算,利用所述第一预定算法的逆运算对任意辅助值进行运算,能够得出参与运算的写表数据;
在步骤S130中,将所述辅助值存入相应的辅助存储模块中。
需要指出的是,在本公开中,主存储模块用于存储写表数据,而辅助存储模块则是用于存储辅助值。
在本公开中,对于写入主存储模块中的每一个写表数据而言,该写表数据不仅直接存入了目标主存储模块的目标地址中,还以另一种形式(即,经过第一预定算法的运算后获得的结果)存储到了辅助存储模块中。如果同时接收到多个对同一个主存储模块进行读取的读指令,可以控制其中一个读取指令直接读取辅助存储模块中的相关数据、再利用参与运算的、除了读取指令对应的主存储模块中存储的写表数据之外的写表数据进行第一预定算法的逆运算,即可获得该读指令所要求读取的数据。由此可知,利用本公开所提供的写入方法、配合相应的读取方法,可以实现多线速读取存储装置中的数据。
需要指出的是,对于任意一个存储模块而言,同一个时钟周期内只能被一个读指令访问,而对于所述存储装置而言,同一个时钟周期内,可以允许多个读指令分别访问不同的存储模块。
在本公开中,对“相应写表数据”不做特殊的限定,只要能够在后续读取主存储模块中存储的待读取写表数据时定参与计算该待读取写表数据对应的辅助值是哪个地址中的写表数据即可。例如,所述“相应写表数据”在其所属的主存储模块中存储的地址与“待写入的写表数据”即将写入的地址相同。
在本公开中,每个辅助值都是多个已经存储在所述存储装置中的写表数据进行第一预定算法的运算后的运算结果。因此,对于任意一个写表数据(为了便于描述,可以将其称为写表数据A)而言,在已知第一运算的逆运算的运算方式、和该写表数据A一起参与运算的其他写表数据的前提下,通过第一运算的逆运算可以获得上述写表数据A。
因此,在接收到两个分别读取同一主存储模块中不同地址的数据的读指令的前提下,可以直接在该主存储模块中读取一个读指令所对应的该存储模块中相应的写表数据,并且,可以通过读取辅助存储模块中存储的另一个读取指令所指向的地址所对应的辅助值、以及和参与该辅助值运算的其他主存储模块中的数据,利用第一运算的逆运算可以获得所述另一个读指令所要求的写表数据。
例如,接收到两个访问编号为0的主存储模块的读请求,其中一个读请求要读取编号为0的主存储模块中1号地址存储的数据,另一个读请求要读取编号为0的主存储模块中2号地址存储的地址。
那么,控制一个读请求直接读取编号为0的主存储模块的1号地址中存储的数据、另一个读请求去读取与编号为0的主存储模块对应的辅助存储模块中、与2号地址对应的地址中存储的辅助值、读取参与该辅助值运算的其他主存储模块中相应地址所存储的数据,再对所述辅助值进、以及得到所述辅助值所用到的数据进行第一预定算法的逆运算,即可获得编号为0的主存储模块中2号地址中所存储的地址。
在相关技术中,为了提高读取数据的速度,会采用在处理器芯片原有的存储模块的基础上额外增加存储模块的方式来实现。但是,这种方式往往会增加处理器芯片中存储装置所占的面积,进而增加处理器芯片的体积,不利于实现处理器芯片的小型化。例如,为了使得处理器芯片的RAM满足4次查表线速,需要在原有RAM的基础上,再增加3个与原有RAM存储深度相同的RAM,在写入数据时,同一个数据分别写入4个RAM中(即,一个数据复制4次)。每个RAM都对应一个读端口(即,每个RAM都是1r1w的RAM),这样包括4个RAM的存储装置可以实现4次查表线速。
而在本公开中,为了实现多次查表线速,并非直接将写表数据同时存储在辅助存储模块中,而是将其经过第一运算后再存入所述辅助存储模块中。每个运算结果都与多个主存储模块中的数据相关,通过存储一个辅助值,变向实现了在一个地址中存储多个地址的数据,从而减小了备份存储多个地址中数据所需要的存储空间。显然,本公开所提供的写入方法中,为了实现多线速读取,所用到的存储空间更少,有利于实现存储装置、以及包括所述存储装置的芯片的小型化、集成化。
例如,一个辅助值可能与4个写表数据相关,相当于利用辅助存储模块的一个地址可以存储4个写表数据。而在相关技术的方案中,只能将备份的4个写表数据写入4个地址中。
在本公开中,对参与运算的主存储模块的数量并不做特殊的限定,只要能够对至少部分存储模块中存储的数据实现多线速访问即可。
为了提高包括所述存储装置的处理器的处理能力,可选地,对所有目标主存储模块都进行了利用第一预定算法的运算后,所有主存储模块中存储的数据均参与了运算。也就是说,所有辅助值涉及了所有主存储模块中存储的数据,因此,对于所有存储模块而言,都可以实现多线速访问。
在本公开中,对同时访问同一个主存储模块的多个读取指令中哪一个读取指令直接读取该主存储模块中的数据不做特殊的限定。例如,可以将指向地址编号最小的一个读取指令直接读取主存储模块中存储的数据。例如,两个读取指令同时访问主存储模块1,一个读取指令读取1号地址中的数据,另一个读取指令读取2号地址中的数据,那么,读取1号地址中数据的读取指令直接读取主存储模块中存储的数据。当然,本公开并不限于此,也可以在多个读取指令中随机选择一个读取指令进行数据的直接读取。
每个非目标主存储模块的主存储模块(为了便于描述,可以将其称为目标外主存储模块)中所存储的数据都参与了辅助值的运算。因此,在多个读取指令同时读取一个目标外主存储模块中的不同地址中所存储的数据时,可以使得一个读取指令先读取该目标外主存储模块中的数据,然后再读取另一个读取指令所指向的地址中存储的数据所参与计算的辅助值、以及参与该辅助值计算的目标主存储模块中的数据、以及其他参与该辅助值计算的、非当前目标外主存储模块中存储的数据,并利用辅助值、以及这些数据进行第一运算的逆运算,从而可以获得所述另一个读取指令所指向的地址中所存储的数据。
在本公开中,对存储装置的具体形式以及具体结构不做特殊的限定。作为一种可选实施方式,多个所述存储模块形成为N*N阵列的多个存储模块,在前(N-1)行存储模块中,每一行存储模块都包括N个所述主存储模块和一个所述辅助存储模块,第N行所述存储模块包括N个所述辅助存储模块,N为不小于3的正整数。相应地,所述辅助值包括第一辅助值、第二辅助值和第三辅助值。
在利用第一预定算法对各个所述目标主存储模块中的写表数据进行运算,以获得辅助值的步骤S120中,如图2所示,对于任意一个所述目标主存储模块(下文中被称为当前目标主存储模块)的任意一个地址(下文中被称为当前地址)中存储的写表数据,获得辅助值的步骤都包括:
在步骤S121中,利用所述第一预定算法对当前目标主存储模块的当前地址中存储的写表数据与和当前目标主存储模块位于同一行的其他所有主存储模块的相应地址存储的写表数据进行运算,以获得第一辅助值;
在步骤S122中,利用所述第一预定算法对当前目标主存储模块的该地址中存储的写表数据与和当前目标主存储模块位于同一列的其他所有主存储模块的相应地址存储的写表数值进行运算,以获得第二辅助值;
在步骤S123中,利用所述第一预定算法对当前目标主存储模块的当前地址中存储的写表数据与除所有目标主存储模块之外所有主存储模块的相应地址存储的写表数据、以及除了与当前目标主存储模块位于同一行的辅助存储模块、以及第N行第N列存储模块之外的所有辅助存储模块的相应地址存储的数据进行运算,以获得第三辅助值。
并且,所述第一辅助值存储在与所述目标主存储模块位于同一行的辅助存储模块中,所述第二辅助值存储在与所述目标主存储模块位于同一列的辅助存储模块中,所述第三辅助值存储在第N行第N列存储模块(容易理解的是,该存储模块为辅助存储模块)中。
上述实施方式支持4个访问指令同时访问同一个主存储模块的情况。即,四个访问指令中的一个直接访问相应的主存储模块,为了获得其余三个访问指令所需要的数据,可以分别读取相应的第一辅助值、参与该第一辅助值运算的其他主存储模块的写表数据、相应的第二辅助值、参与该第二辅助值运算的其他主存储模块的写表数据、相应的第三辅助值、参与该第三辅助值运算的其他主存储模块的写表数据、以及参与该第三辅助值运算的辅助存储模块中存储的数据。然后进行相应的逆运算,即可获得其余三个访问指令所需要的数据。
在本公开中,对目标主存储模块在存储装置中的位置不做特殊的限定。为了便于计算,可选地,可以将N*N阵列中,第一行的前N-1个主存储模块作为所述目标主存储模块,以及第一列的前N-1个主存储模块作为所述目标主存储模块。
在本公开中,对“相应地址”不做特殊的限定。作为一种可选实施方式,所述“相应地址”可以为与待计算的写表数据所存储的地址之间满足特定映射关系的地址,也可以是标识信息与是待计算的写表数据相同的地址。作为一种可选实施方式,所述地址的“标识信息”可以为该地址在相应的存储模块中的编号。
为了便于计算,可选地,参与同一次利用第一预定算法的运算的所有写表数据各自对应的地址标识信息相同。
在本公开中,对N的具体数值不做特殊的限定。作为一种可选实施方式,N可以为5。下面以N为5为例,对本公开所提供的写入方法进行详细的介绍。
如图3中所示,所述存储装置包括16个主存储模块和9个辅助存储模块,排列为5*5的阵列。16个主存储模块分别为主存储模块0、主存储模块1、主存储模块2、主存储模块3、主存储模块4、主存储模块5、主存储模块6、主存储模块7、主存储模块8、主存储模块9、主存储模块10、主存储模块11、主存储模块12、主存储模块13、主存储模块14、主存储模块15。9个辅助存储模块分别为辅助存储模块XOR0、辅助存储模块XOR1、辅助存储模块XOR2、辅助存储模块XOR3、辅助存储模块XOR4、辅助存储模块XOR5、辅助存储模块XOR6、辅助存储模块XOR7、辅助存储模块XOR8。
在所述阵列中,主存储模块0、主存储模块1、主存储模块2、主存储模块3、以及辅助存储模块XOR0位于第一行,主存储模块4、主存储模块5、主存储模块6、主存储模块7以及辅助存储模块XOR1位于第二行,主存储模块8、主存储模块9、主存储模块10、主存储模块11、以及辅助存储模块XOR2位于第三行,主存储模块12、主存储模块13、主存储模块14、主存储模块15、以及辅助存储模块XOR3位于第四行,辅助存储模块XOR4、辅助存储模块XOR5、辅助存储模块XOR6、辅助存储模块XOR7、辅助存储模块XOR8位于第五行。
作为一种可选实施方式,主存储模块、辅助存储模块可以都为RAM。当然,所述主存储模块、所述辅助存储模块也可以是其他形式的存储装置。
在所述实施方式中,第一行中的主存储模块(包括主存储模块0、主存储模块1、主存储模块2、主存储模块3)以及第一列中的主存储模块(包括主存储模块0、主存储模块4、主存储模块8、主存储模块12)为目标主存储模块。
在所述写入方法中,包括写表数据写入阶段(对应步骤S110)、辅助值运算阶段(对应步骤S120)、以及辅助值写入阶段(对应步骤S130)这三个阶段。
在写表数据写入阶段中,将待写入的数据写入相应的主存储模块(可以是目标主存储模块,也可以不是目标主存储模块)中的相应地址中。
以用各存储模块的0#地址对应的第一辅助值为例,介绍辅助值运算阶段和辅助值写入阶段:
利用第一预定算法将主存储模块0的0#地址中的写表数据与和主存储模块0位于同一行的其他主存储模块的0#地址(包括主存储模块1的0#地址、主存储模块2的0#地址、主存储模块3的0#地址)中的写表数据进行运算,得到0#地址对应的第一辅助值,将该第一辅助值存储到辅助存储模块XOR0的0#地址中。
利用第一预定算法将主存储模块1的0#地址中的写表数据与和主存储模块1位于同一行的其他主存储模块的0#地址(包括主存储模块0的0#地址、主存储模块2的0#地址、主存储模块3的0#地址)中的写表数据进行运算,得到0#地址对应的第一辅助值,将该第一辅助值存储到辅助存储模块XOR1的0#地址中。
利用第一预定算法将主存储模块2的0#地址中的写表数据与和主存储模块2位于同一行的其他主存储模块的0#地址(包括主存储模块1的0#地址、主存储模块2的0#地址、主存储模块3的0#地址)中的写表数据进行运算,得到0#地址对应的第一辅助值,将该第一辅助值存储到辅助存储模块XOR2的0#地址中。
利用第一预定算法将主存储模块3的0#地址中的写表数据与和主存储模块3位于同一行的其他主存储模块的0#地址包括主存储模块0的0#地址、主存储模块1的0#地址、主存储模块2的0#地址)中的写表数据(进行运算,得到0#地址对应的第一辅助值,将该第一辅助值存储到辅助存储模块XOR3的0#地址中。
以各存储模块的0#地址对应的第二辅助值为例,介绍辅助值运算阶段和辅助值接入阶段:
利用第一预定算法将主存储模块0的0#地址(包括主存储模块4的0#地址、主存储模块8的0#地址、主存储模块12的0#地址)中的写表数据与和主存储模块0位于同一列的其他主存储模块的0#地址中的写表数据进行运算,得到0#地址对应的第二辅助值,将该第二辅助值存储到辅助存储模块XOR4的0#地址中。
利用第一预定算法将主存储模块4的0#地址中的写表数据与和主存储模块0位于同一列的其他主存储模块的0#地址包括主存储模块0的0#地址、主存储模块8的0#地址、主存储模块12的0#地址)中的写表数据(进行运算,得到0#地址对应的第二辅助值,将该第二辅助值存储到辅助存储模块XOR5的0#地址中。
利用第一预定算法将主存储模块8的0#地址中的写表数据与和主存储模块0位于同一列的其他主存储模块的0#地址(包括主存储模块0的0#地址、主存储模块4的0#地址、主存储模块12的0#地址)中的写表数据进行运算,得到0#地址对应的第二辅助值,将该第二辅助值存储到辅助存储模块XOR6的0#地址中。
利用第一预定算法将主存储模块12的0#地址中的写表数据与和主存储模块0位于同一列的其他主存储模块的0#地址(包括主存储模块0的0#地址、主存储模块4的0#地址、主存储模块8的0#地址)中的写表数据进行运算,得到0#地址对应的第二辅助值,将该第二辅助值存储到辅助存储模块XOR7的0#地址中。
下面以各存储模块的0#地址对应的第三辅助值为例,介绍辅助值运算阶段和辅助值接入阶段:
利用第一预定算法将主存储模块0的0#地址中的写表数据与除所有目标主存储模块之外所有主存储模块的相应地址(包括主存储模块5的0#地址、主存储模块6的0#地址、主存储模块7的0#地址、主存储模块9的0#地址、主存储模块10的0#地址、主存储模块11的0#地址、主存储模块13的0#地址、主存储模块14的0#地址、主存储模块15的0#地址)存储的写表数据、以及除了与当前目标主存储模块对应的辅助存储模块之外的所有辅助存储模块的相应地址(包括辅助存储模块1的0#地址、辅助存储模块2的0#地址、辅助存储模块3的0#地址、辅助存储模块5的0#地址、辅助存储模块6的0#地址、辅助存储模块7的0#地址)存储的数据进行运算,得到0#地址对应的第三辅助值,将该第三辅助值存储到辅助存储模块XOR8的0#地址中。
其他主存储模块的地址对应的第三辅助值计算方法与上述主存储模块0的0#地址对应的第三辅助值计算方法类似,这里不再赘述。
并且,其他地址对应的辅助值的计算方法与0#地址对应的辅助值的计算方法类似,这里也不再赘述。
上文中涉及到的写入方法中,存储装置的多个存储模块形成的为二维阵列,作为本公开的另一种实施方式,存储装置的多个存储模块还可以形成为三维阵列。
具体地,如图4所示,多个所述存储模块形成为M*M*M阵列的多个主存储模块和3*M2个辅助存储模块,从每个坐标系平面的角度来看,在XY平面上,每一行存储模块都包括M个所述主存储模块和一个所述辅助存储模块,在XZ平面上,每一行存储模块都包括M个所述主存储模块和一个所述辅助存储模块,在YZ平面上,每一行存储模块都包括M个所述主存储模块和一个所述辅助存储模块,M为不小于1的正整数,所述辅助值包括第一辅助值、第二辅助值和第三辅助值,
在利用第一预定算法对各个所述目标主存储模块中的写表数据进行运算,以获得辅助值的步骤中,对于任意一个所述目标主存储模块的任意一个地址中存储的写表数据,获得辅助值的步骤都包括:
利用所述第一预定算法对当前目标主存储模块的当前地址中存储的写表数据与和该目标主存储模块位于XY平面同一行的其他所有主存储模块的相应地址存储的写表数据进行运算,以获得第一辅助值;
利用所述第一预定算法对当前目标主存储模块的当前地址中存储的写表数据与和该目标主存储模块位于XZ平面同一行的其他所有主存储模块的相应地址存储的写表数值进行运算,以获得第二辅助值;
利用所述第一预定算法对当前目标主存储模块的当前地址中存储的写表数据与和该目标主存储模块位于YZ平面同一行的其他所有主存储模块的相应地址存储的写表数值进行运算,以获得第三辅助值;
并且,所述第一辅助值存储在与所述目标主存储模块位于XY平面同一行的辅助存储模块中,所述第二辅助值存储在与所述目标主存储模块位于XZ平面同一行的辅助存储模块中,所述第三辅助值存储在与所述目标主存储模块位于YZ平面同一行的辅助存储模块中。
在图4中所示的实施方式中,M为2,所述存储装置包括8个主存储模块和12个辅助存储模块。8个主存储模块排列为2*2*2的三维阵列,且8个主存储模块分别为主存储模块0、主存储模块1、主存储模块2、主存储模块3、主存储模块4、主存储模块5、主存储模块6、主存储模块7、辅助存储模块XOR0、辅助存储模块XOR1、辅助存储模块XOR2、辅助存储模块XOR3、辅助存储模块XOR4、辅助存储模块XOR5、辅助存储模块XOR6、辅助存储模块XOR7、辅助存储模块XOR8、辅助存储模块XOR9、辅助存储模块XOR10、辅助存储模块XOR11。
在本公开中,对所述第一预定算法不做特殊的限定,只要该第一预定算法具有逆运算即可。为了简化计算步骤,可选地,所述第一预定算法为异或运算。并且,异或运算的逆运算仍然为异或运算。
需要指出的是,异或运算的逆运算仍然为异或运算。例如,利用A和B进行异或运算得到C,利用B和C进行异或运算可以得到A,利用A和C进行异或运算可以得到B。
由此可知,利用L个写表数据进行异或运算,得到辅助值,在知道L-1个写表数据、以及所述辅助值的情况下,利用L-1个写表数据与所述辅助值进行异或运算,可以确定剩余一个未知的写表数据的数值。
作为本公开的第二个方面,提供一种从存储装置中读取数据的读取方法,所述存储装置包括多个存储模块,多个所述存储模块包括多个主存储模块和至少一个辅助存储模块,多个所述主存储模块包括至少一个目标主存储模块,每个所述目标主存储模块都对应有辅助存储模块,所述存储装置中存储有根据本公开第一方面所提供的写入方法所写入的数据,所述读取方法包括:
在步骤S210中,接收至少一个读取指令;
在步骤S220中,根据所述读取指令确定待读取的数据的位置;
当至少两个读取指令待读取的数据存储在同一个主存储模块、且所述读取指令所指向的地址对应有辅助值时,对于所述至少两个读取指令,所述读取方法还包括:
在步骤S230中,对于所述至少两个指令中的其中一个读取指令,直接从所述主存储模块中读取相应的数据;
在步骤S240中,对于所述至少两个指令中的其他指令,分别读取与所述主存储模块对应的辅助存储模块的相应地址中存储的辅助值、以及参与所述辅助值运算的主存储模块中相应地址中的数据;
在步骤S250中,利用第二预定算法、各个所述写表数据对各个所述辅助值进行运算,以获得存储在所述主存储模块中的、与所述其他指令对应的地址中存储的数据,所述第二预定该算法为所述第一预定算法的逆运算。
在一个时钟周期内,虽然不允许两条读取指令访问同一个主存储模块,但是,允许多个读取指令访问多个不同的主存储模块。本公开第二个方面所提供的读取方法的执行基础是:所述存储装置中存储的写表数据为利用本公开第一个方面所提供的写入方法写入至所述存储装置中的。
由于在写入所述写表数据时,不仅将写表数据写入至主存储模块的对应地址中,还将写表数据与其他主存储模块的对应地址进行运算获得的辅助值写入了辅助存储模块中,从而允许所述写表数据以辅助值的形态存储在除了上述“主存储模块的对应地址中”之外的其他存储模块的对应地址中。
在本公开第二个方面所提供的读取方法中,接收到访问同一个主存储模块的不同地址的多个读取指令后,可以根据各个读取指令所要读取的地址确定该地址中的辅助值所涉及的数据的存储地址,然后访问访问相应的地址,捷克获得参与辅助值运算的数据。通过第二预定算法对所述辅助值、以及上述参与辅助值运算的数据进行运算,可以蝴蝶所述读取指令所要读取的地址中存储的数据,进而实现了快速读取数据(或者可以成为快速查表)。
作为本公开的一种实施方式,所述第一预定算法为异或运算,所述第二预定算法为异或运算的逆运算。
需要指出的是,异或运算的逆运算仍然为异或运算。例如,利用A和B进行异或运算得到C,利用B和C进行异或运算可以得到A,利用A和C进行异或运算可以得到B。
下面介绍当所述写入方法包括步骤S121至步骤S122时,所述读取方法的步骤S230至步骤S250的具体实施方式。
当四个读取指令(为了便于描述,分别将这是个读取指令表示为第一读取指令、第二读取指令、第三读取指令和第四读取指令,需要指出的是,此处的“第一”、“第二”、“第三”、“第四”仅用于对是个读取指令进行区分,而非对是个读取指令的先后顺序、或者优先级进行限定)同时访问同一个主存储模块时:
步骤S230可以包括:对于第一读取指令,直接从主存储模块的所述第一读取指令所指向的地址中读取数据;
步骤S240可以包括:对于第二读取指令,读取所述主存储模块对应的辅助存储模块的相应地址(即,编号与第二读取指令所指向的地址的编号相同的地址)中存储的第一辅助值、以及参与该第一辅助值运算的主存储模块的相应地址中的数据;对于第三读取指令,读取所述主存储模块对应的辅助存储模块的相应地址(即,编号与第三读取指令所指向的地址的编号相同的地址)中存储的第二辅助值、以及参与该第二辅助值运算的主存储模块的相应地址中的数据;对于第四读取指令,读取所述主存储模块对应的辅助存储模块的相应地址(即,编号与第四读取指令所指向的地址的编号相同的地址)中存储的第三辅助值、以及参与该第三辅助值运算的主存储模块的相应地址中的数据;
步骤S250可以包括:利用第二预定算法对所述第一辅助值、以及参与该第一辅助值运算的主存储模块的相应地址中的数据进行运算,得到的数值即为与所述第二读取指令所指向的地址中存储的数据;利用第二预定算法对所述第二辅助值、以及参与该第二辅助值运算的主存储模块的相应地址中的数据进行运算,得到的数值即为与所述第三读取指令所指向的地址中存储的数据;利用第二预定算法对所述第三辅助值、以及参与该第三辅助值运算的主存储模块的相应地址中的数据进行运算,得到的数值即为与所述第四读取指令所指向的地址中存储的数据。
下面以一个深度为2048,位宽为128bit的RAM为具体实例,同时考虑最极限的RAM读冲突情况,即4个查表读请求地址均在同一块1r1w RAM上的情形,因此此处设定有4个查表读请求,分别要读RAM0中的0、1、126、127号地址上的值。RAM0至RAM15每个1r1w RAM的深度为2048/16=128,再放置9块深度为128的1r1w RAM作为XOR0到XOR8,整个查表读值的过程如下所示:
(1)如图6所示,来自端口Port0的读请求要读RAM0的0号地址的值,直接读出返回即可。
(2)如图6所示,来自端口Port1的读请求要读RAM0的1号地址的值。如果直接去读RAM0内的1号地址,与步骤(1)有读冲突,会导致返回延时很大。因此可以去读RAM2、RAM3、RAM4、XOR0的1号地址的值(即,生成四个raddr=1的指令发,分别送至RAM2、RAM3、RAM4、XOR0),将读出的值做异或运算,即可得到RAM0的1号地址的值并返回。
(3)如图7所示,来自端口Port2的读请求要读RAM0的126号地址。同样,如果此时直接去读RAM0内的126号地址,与步骤(1)有读冲突,会导致返回延时很大。因此可以去读RAM4、RAM8、RAM12、XOR4的126号地址(即,生成4个raddr=126的指令,分别发送至RAM4、RAM8、RAM12、XOR4),将读出的值做异或运算,即可得到RAM0的126号地址的值并返回。
(4)如图8所示,来自端口Port3的读请求要读RAM0的127号地址的值。与上述原因一样,在不能直接读RAM0的127号地址的情况下,将剩余的15块RAM的127号地址的值读出,即RAM5、RAM6、RAM7、RAM9、RAM10、RAM11、RAM13、RAM14、RAM15、XOR1、XOR2、XOR3、XOR5、XOR6、XOR7(即,生成15个raddr=127的指令,分别发送至RAM5、RAM6、RAM7、RAM9、RAM10、RAM11、RAM13、RAM14、RAM15、XOR1、XOR2、XOR3、XOR5、XOR6、XOR7),将读读出的值一起做异或运算后,即可得RAM0中第127号地址的值并返回。
作为本公开的第三个方面,提供一种计算机可读存储介质,所述计算机可读存储介质上存储有可执行程序,当所述可执行程序被调用时,能够实现本公开第一个方面所提供的写入方法和/或本公开第二个方面所提供的读取方法。
作为本公开的第四个方面,提供一种处理器芯片,包括存储装置和运算模块。
所述存储装置包括多个存储模块,多个所述存储模块包括多个主存储模块和至少一个辅助存储模块,每个所述辅助存储模块对应预定数量个主存储模块,并且,每个所述主存储模块对应至少一个所述辅助存储模块。
所述运算模块包括存储单元和处理单元,所述存储单元上存储有可执行程序,当所述可执行程序被处理单元调用时,能够实现本公开第一个方面所提供的写入方法和本公开第二个方面所提供的读取方法。
所述存储装置具有至少一个写入端口和多个读取端口,每个存储模块都具有1个读取端口和1个写入端口。
因此,所述存储装置可以同时接收多个读取指令。
在本公开中,每个存储模块都可以为RAM。
图3中所示的是一种处理器芯片的示意图,处理单元包括写入单元、读取控制单元、和输出控制单元。其中,写入单元用于根据本公开所提供的写入方法将数据写入各个存储模块中。其中,读取控制单元用图3中的read contrl来表示,该读取单元用于对接收到的多个读取指令进行分配、以根据本公开所提供的读取方法获得数据。即,确定哪个读取指令去直接读取相应地址里存储的数据、哪个指令去读取相应的辅助值、以及与辅助值关联的数据。图3中rd0、rd1、rd2、rd3分别表示四个不同的读取指令。
输出控制单元用图3中的output contrl来表示,用于控制各个读取指令所得到的数据的输出。在图3中rdata0、rdata1、rdata2、rdata3分别为对应于rd0、rd1、rd2、rd3的输出指令。
可选地,所述主存储模块的存储深度与所述辅助存储模块的存储深度相同。
可选地,多个所述存储模块形成为N*N阵列的多个存储模块,在前(N-1)行存储模块中,每一行存储模块都包括N个所述主存储模块和一个所述辅助存储模块,第N行所述存储模块包括N个所述辅助存储模块。
可选地,N为5,每个所述主存储模块的存储深度为所有主存储模块的总存储深度的1/16。
在本公开中,多个主存储模块可以为现有的RAM划分成16分后获得的。因此,本公开所提供的存储装置的存储空间仅为相关技术中的RAM增加了1.526倍。本公开所提供的存储装置中,辅助存储模块的存储空间较小,所占面积也较小。
当然,本公开并不限于此,多个主存储模块还可以形成的三维阵列。具体地,多个所述存储模块包括形成为M*M*M阵列的三维立方体的多个主存储模块和三个平面正向的3*M2个辅助存储模块,从每个坐标系平面的角度来看,在XY平面上,每一行存储模块都包括M个所述主存储模块和一个所述辅助存储模块,在XZ平面上,每一行存储模块都包括M个所述主存储模块和一个所述辅助存储模块,在YZ平面上,每一行存储模块都包括M个所述主存储模块和一个所述辅助存储模块,M为不小于1的正整数。
作为本公开的第五个方面,提供一种电子设备,所述电子设备包括本公开第四个方面所提供的处理器芯片。
上文中已经详细描述了所述读取方法和所述写入方法的优点和有益效果,这里不再赘述。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其它数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光盘存储、磁盒、磁带、磁盘存储或其它磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其它的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其它传输机制之类的调制数据信号中的其它数据,并且可包括任何信息递送介质。
本文已经公开了示例实施例,并且虽然采用了具体术语,但它们仅用于并仅应当被解释为一般说明性含义,并且不用于限制的目的。在一些实例中,对本领域技术人员显而易见的是,除非另外明确指出,否则可单独使用与特定实施例相结合描述的特征、特性和/或元素,或可与其它实施例相结合描述的特征、特性和/或元件组合使用。因此,本领域技术人员将理解,在不脱离由所附的权利要求阐明的本公开的范围的情况下,可进行各种形式和细节上的改变。
Claims (17)
1.一种向存储装置中写入数据的写入方法,所述存储装置包括多个存储模块,多个所述存储模块包括多个主存储模块和至少一个辅助存储模块,多个所述主存储模块包括至少一个目标主存储模块,每个所述目标主存储模块都对应有辅助存储模块,所述方法包括:
将待写入的写表数据写入相应的主存储模块中;
利用第一预定算法对各个所述目标主存储模块中的写表数据进行运算,以获得辅助值,其中,对任意一个目标主存储模块进行运算时,利用所述第一预定算法对该目标主存储模块中存储的写表数据以及该目标主存储模块之外的其他主存储模块中的至少一者中存储的相应写表数据进行运算,利用所述第一预定算法的逆运算对任意辅助值进行运算,能够得出参与运算的写表数据;
将所述辅助值存入相应的辅助存储模块中。
2.根据权利要去1所述的写入方法,其中,对所有目标主存储模块都进行了利用第一预定算法的运算后,所有主存储模块中存储的数据均参与了运算。
3.根据权利要求2所述的写入方法,其中,多个所述存储模块形成为N*N阵列的多个存储模块,在前(N-1)行存储模块中,每一行存储模块都包括N个所述主存储模块和一个所述辅助存储模块,第N行所述存储模块包括N个所述辅助存储模块,N为不小于3的正整数,所述辅助值包括第一辅助值、第二辅助值和第三辅助值,
在利用第一预定算法对各个所述目标主存储模块中的写表数据进行运算,以获得辅助值的步骤中,对于任意一个所述目标主存储模块的任意一个地址中存储的写表数据,获得辅助值的步骤都包括:
利用所述第一预定算法对当前目标主存储模块的当前地址中存储的写表数据与和该目标主存储模块位于同一行的其他所有主存储模块的相应地址存储的写表数据进行运算,以获得第一辅助值;
利用所述第一预定算法对当前目标主存储模块的当前地址中存储的写表数据与和当前目标主存储模块位于同一列的其他所有主存储模块的相应地址存储的写表数值进行运算,以获得第二辅助值;
利用所述第一预定算法对当前目标主存储模块的该地址中存储的写表数据与和除所有目标主存储模块之外所有主存储模块的相应地址存储的写表数据、以及除了与当前目标主存储模块对应的辅助存储模块之外的所有辅助存储模块的相应地址存储的数据进行运算,以获得第三辅助值;
并且,所述第一辅助值存储在与所述目标主存储模块位于同一行的辅助存储模块中,所述第二辅助值存储在与所述目标主存储模块位于同一列的辅助存储模块中,所述第三辅助值存储在第N行第N列存储模块中。
4.根据权利要求3所述的写入方法,其中,在所述阵列中,第一行中的所有主存储模块均为所述目标主存储模块,第一列中的所有主存储模块均为所述目标主存储模块。
5.根据权利要求2所述的写入方法,其中,多个所述存储模块包括形成为M*M*M阵列的三维立方体的多个主存储模块和三个平面正向的3*M2个辅助存储模块,从每个坐标系平面的角度来看,在XY平面上,每一行存储模块都包括M个所述主存储模块和一个所述辅助存储模块,在XZ平面上,每一行存储模块都包括M个所述主存储模块和一个所述辅助存储模块,在YZ平面上,每一行存储模块都包括M个所述主存储模块和一个所述辅助存储模块,M为不小于1的正整数,所述辅助值包括第一辅助值、第二辅助值和第三辅助值,
在利用第一预定算法对各个所述目标主存储模块中的写表数据进行运算,以获得辅助值的步骤中,对于任意一个所述目标主存储模块的任意一个地址中存储的写表数据,获得辅助值的步骤都包括:
利用所述第一预定算法对当前目标主存储模块的当前地址中存储的写表数据与和该目标主存储模块位于XY平面同一行的其他所有主存储模块的相应地址存储的写表数据进行运算,以获得第一辅助值;
利用所述第一预定算法对当前目标主存储模块的当前地址中存储的写表数据与和该目标主存储模块位于XZ平面同一行的其他所有主存储模块的相应地址存储的写表数值进行运算,以获得第二辅助值;
利用所述第一预定算法对当前目标主存储模块的当前地址中存储的写表数据与和该目标主存储模块位于YZ平面同一行的其他所有主存储模块的相应地址存储的写表数值进行运算,以获得第三辅助值;
并且,所述第一辅助值存储在与所述目标主存储模块位于XY平面同一行的辅助存储模块中,所述第二辅助值存储在与所述目标主存储模块位于XZ平面同一行的辅助存储模块中,所述第三辅助值存储在与所述目标主存储模块位于YZ平面同一行的辅助存储模块中。
6.根据权利要求1至5中任意一项所述的写入方法,其中,参与同一次利用第一预定算法的运算的所有写表数据各自对应的地址标识信息相同。
7.根据权利要求1至5中任意一项所述的写入方法,其中,所述第一预定算法为异或运算。
8.根据权利要求1至5中任意一项所述的写入方法,其中,当参与运算的主存储模块中存储的写表数据发生变化时,所述写入方法还包括:
用变化后的写表数据参与运算,以获得相应的辅助值;
利用重新计算获得的辅助值替换相应地址中已存储的辅助值。
9.一种从存储装置中读取数据的读取方法,所述存储装置包括多个存储模块,多个所述存储模块包括多个主存储模块和至少一个辅助存储模块,多个所述主存储模块包括至少一个目标主存储模块,每个所述目标主存储模块都对应有辅助存储模块,所述存储装置中存储有根据权利要求1至8中任意一项所述的写入方法所写入的数据,所述读取方法包括:
接收至少一个读取指令;
根据所述读取指令确定待读取的写表数据的位置;
当至少两个读取指令待读取的数据存储在同一个主存储模块、且所述读取指令所指向的地址对应有辅助值时,对于所述至少两个读取指令,所述读取方法还包括:
对于所述至少两个指令中的其中一个读取指令,直接从所述主存储模块中读取相应的写表数据;
对于所述至少两个指令中的其他指令,分别读取与所述主存储模块对应的辅助存储模块的相应地址中存储的辅助值、以及参与所述辅助值运算的主存储模块中相应地址中的写表数据;
利用第二预定算法、各个所述写表数据对各个所述辅助值进行运算,以获得存储在所述主存储模块中的、与所述其他指令对应的地址中存储的写表数据,所述第二预定该算法为所述第一预定算法的逆运算。
10.根据权利要求9所述的读取方法,其中,所述第一预定算法为异或运算,所述第二预定算法为异或运算。
11.一种计算机可读存储介质,所述计算机可读存储介质上存储有可执行程序,当所述可执行程序被调用时,能够实现权利要求1至8中任意一项所述的写入方法和/或权利要求9或10所述的读取方法。
12.一种处理器芯片,包括具有至少一个写入端口和多个读取端口的存储装置和运算模块,
所述存储装置包括多个存储模块,多个所述存储模块包括第一写入端口、多个第一读取端口、多个主存储模块和至少一个辅助存储模块,每个所述辅助存储模块对应预定数量个主存储模块,并且,每个所述主存储模块对应至少一个所述辅助存储模块,并且,每个存储模块都具有一个读取端口和一个写入端口;
所述运算模块包括存储单元和处理单元,所述存储单元上存储有可执行程序,当所述可执行程序被所述处理单元调用时,能够实现权利要求1至8中任意一项所述的写入方法和权利要求9或10所述的读取方法。
13.根据权利要求12所述的处理器芯片,其中,所述主存储模块的存储深度与所述辅助存储模块的存储深度相同。
14.根据权利要求12或13所述的处理器芯片,其中,多个所述存储模块形成为N*N阵列的多个存储模块,在前(N-1)行存储模块中,每一行存储模块都包括N个所述主存储模块和一个所述辅助存储模块,第N行所述存储模块包括N个所述辅助存储模块。
15.根据权利要求14所述的处理器芯片,其中,N为5,所述存储装置具有四个读取端口,每个所述主存储模块的存储深度为所有主存储模块的总存储深度的1/16。
16.根据权利要求12或13所述的处理器芯片,其中,多个所述存储模块包括形成为M*M*M阵列的三维立方体的多个主存储模块和三个平面正向的3*M2个辅助存储模块,从每个坐标系平面的角度来看,在XY平面上,每一行存储模块都包括M个所述主存储模块和一个所述辅助存储模块,在XZ平面上,每一行存储模块都包括M个所述主存储模块和一个所述辅助存储模块,在YZ平面上,每一行存储模块都包括M个所述主存储模块和一个所述辅助存储模块,M为不小于1的正整数。
17.一种电子设备,所述电子设备包括权利要求12至16中任意一项所述的处理器芯片。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010762798.9A CN114063887A (zh) | 2020-07-31 | 2020-07-31 | 写入及读取方法、处理器芯片、存储介质和电子设备 |
US18/018,566 US20230305710A1 (en) | 2020-07-31 | 2021-07-05 | Writing and reading method, processor chip, storage medium and electronic device |
EP21850967.7A EP4184305A1 (en) | 2020-07-31 | 2021-07-05 | Writing method, reading method, processor chip, storage medium and electronic device |
PCT/CN2021/104489 WO2022022231A1 (zh) | 2020-07-31 | 2021-07-05 | 写入及读取方法、处理器芯片、存储介质和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010762798.9A CN114063887A (zh) | 2020-07-31 | 2020-07-31 | 写入及读取方法、处理器芯片、存储介质和电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114063887A true CN114063887A (zh) | 2022-02-18 |
Family
ID=80037498
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010762798.9A Pending CN114063887A (zh) | 2020-07-31 | 2020-07-31 | 写入及读取方法、处理器芯片、存储介质和电子设备 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20230305710A1 (zh) |
EP (1) | EP4184305A1 (zh) |
CN (1) | CN114063887A (zh) |
WO (1) | WO2022022231A1 (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110302376A1 (en) * | 2010-06-04 | 2011-12-08 | Lsi Corporation | Two-port memory capable of simultaneous read and write |
CN106250321A (zh) * | 2016-07-28 | 2016-12-21 | 盛科网络(苏州)有限公司 | 2r1w存储器的数据处理方法及数据处理系统 |
US20190146717A1 (en) * | 2019-01-17 | 2019-05-16 | Intel Corporation | Technologies for efficiently accessing data columns and rows in a memory |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102193021B1 (ko) * | 2014-04-21 | 2020-12-18 | 삼성전자주식회사 | 영상처리장치, 영상처리방법 및 컴퓨터 판독가능 기록매체 |
CN105808452B (zh) * | 2014-12-29 | 2019-04-26 | 北京兆易创新科技股份有限公司 | 微控制单元mcu的数据分级处理方法和系统 |
JP6838410B2 (ja) * | 2017-02-03 | 2021-03-03 | 富士通株式会社 | 情報処理装置、情報処理方法および情報処理プログラム |
CN109426636B (zh) * | 2017-08-22 | 2021-10-01 | 深圳市中兴微电子技术有限公司 | 一种fpga片间高位宽数据传输的方法及装置 |
-
2020
- 2020-07-31 CN CN202010762798.9A patent/CN114063887A/zh active Pending
-
2021
- 2021-07-05 US US18/018,566 patent/US20230305710A1/en active Pending
- 2021-07-05 WO PCT/CN2021/104489 patent/WO2022022231A1/zh unknown
- 2021-07-05 EP EP21850967.7A patent/EP4184305A1/en active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110302376A1 (en) * | 2010-06-04 | 2011-12-08 | Lsi Corporation | Two-port memory capable of simultaneous read and write |
CN106250321A (zh) * | 2016-07-28 | 2016-12-21 | 盛科网络(苏州)有限公司 | 2r1w存储器的数据处理方法及数据处理系统 |
US20190146717A1 (en) * | 2019-01-17 | 2019-05-16 | Intel Corporation | Technologies for efficiently accessing data columns and rows in a memory |
Also Published As
Publication number | Publication date |
---|---|
US20230305710A1 (en) | 2023-09-28 |
EP4184305A1 (en) | 2023-05-24 |
WO2022022231A1 (zh) | 2022-02-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10255547B2 (en) | Indirectly accessing sample data to perform multi-convolution operations in a parallel processing system | |
CN112602066A (zh) | 正向高速缓存存储器系统和方法 | |
KR20200108774A (ko) | 순환 큐 기반의 명령어 메모리를 포함하는 메모리 장치 및 그 동작방법 | |
CN113767371B (zh) | 用于高性能向量处理的地址生成的方法 | |
CN114942831A (zh) | 处理器、芯片、电子设备及数据处理方法 | |
CN114565501B (zh) | 用于卷积运算的数据加载方法及其装置 | |
CN105718385A (zh) | 数据存储装置及其操作方法与数据处理系统 | |
US11397791B2 (en) | Method, circuit, and SOC for performing matrix multiplication operation | |
CN115422098A (zh) | 基于扩展页表的gpu访存自适应优化方法及装置 | |
CN113032007A (zh) | 一种数据处理方法及装置 | |
CN111984204A (zh) | 一种数据读写方法、装置及电子设备和存储介质 | |
US20200293452A1 (en) | Memory device and method including circular instruction memory queue | |
CN111047037B (zh) | 数据处理方法、装置、设备及存储介质 | |
CN114063887A (zh) | 写入及读取方法、处理器芯片、存储介质和电子设备 | |
US11625225B2 (en) | Applications of and techniques for quickly computing a modulo operation by a Mersenne or a Fermat number | |
CN116051345A (zh) | 图像数据处理方法、装置、计算机设备及可读存储介质 | |
US20220058126A1 (en) | Addressing scheme for local memory organization | |
CN116360672A (zh) | 访问存储器的方法、装置和电子设备 | |
CN113168376A (zh) | 非二的幂存储器配置 | |
CN113312277B (zh) | 存储体地址映射装置、方法及电子设备 | |
US9110782B2 (en) | Emulated electrically erasable memory parallel record management | |
CN115599442B (zh) | 一种ai芯片、电子设备及张量处理方法 | |
CN117149671B (zh) | 缓存实现方法、系统、介质及电子设备 | |
US11429523B2 (en) | Two-way interleaving in a three-rank environment | |
KR20220129106A (ko) | 비트 스트링 축적 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |