CN116136828A - 一种多口存储设备、读写方法、装置 - Google Patents
一种多口存储设备、读写方法、装置 Download PDFInfo
- Publication number
- CN116136828A CN116136828A CN202111364202.0A CN202111364202A CN116136828A CN 116136828 A CN116136828 A CN 116136828A CN 202111364202 A CN202111364202 A CN 202111364202A CN 116136828 A CN116136828 A CN 116136828A
- Authority
- CN
- China
- Prior art keywords
- read
- port
- memory
- pseudo
- mapping table
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
- G06F12/0692—Multiconfiguration, e.g. local and global addressing
-
- 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
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1012—Design facilitation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1028—Power efficiency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Static Random-Access Memory (AREA)
Abstract
本发明公开了一种多口存储设备、读写方法、装置,所述设备,包括:CEILING(M/2)*(N+1)‑1个伪双口两读存储器、写操作控制单元、读操作控制单元和存储映射表;所述M为读端口的数量;所述N为写端口的数量;所述伪双口两读存储器具有第一端口和第二端口;所述第一端口为读端口;所述第二端口为读端口或写端口;所述伪双口两读存储器,用于执行读操作、写操作、读写操作中的至少一种;所述CEILING表示向上取整;所述存储映射表,用于指示每一个地址的有效数据所存储的伪双口两读存储器;所述写操作控制单元,用于对针对伪双口两读存储器的写操作进行控制管理;所述读操作控制单元,用于对针对伪双口两读存储器的读操作进行控制管理。
Description
技术领域
本发明涉及芯片设计技术,尤其涉及一种多口存储设备、读写方法、装置。
背景技术
在ASIC(Application Specific Integrated Circuit,专用集成电路)设计中,常用到存储器,如SRAM(Static Random Access Memory,静态随机存储器),eDRAM(EnhancedDynamic Random Access Memory,增强动态随机存取存储器)等,而对于有些领域的专用芯片,如网络交换领域,存储器的总面积要达到甚至超过芯片总面积的一半,可见存储器的设计优劣对于芯片的总面积有着举足轻重的影响。根据访问端口的不同,存储器可分为单口存储器,伪双口/双口存储器以及多口存储器。对于多口存储器,当其容量很小时,可直接由寄存器单元实现,但当容量很大时,仍采用寄存器实现会导致一系列问题,比如面积和功耗很大,逻辑单元数量特别多以及有严重的绕线拥塞等,最后导致实现结果难以达到预期指标或根本无法实现。对于大容量多口存储器,另一种实现方式是通过伪双口静态存储器实现,采用伪双口存储器实现可以有效减小面积,功耗,大幅减小逻辑单元数量以及绕线拥塞度,从而使得多口存储器的设计最后达到预期的指标要求。
现有技术提供的方案中,使用的伪双口存储器单元太多,导致实现出来多口存储器面积大,功耗高。
发明内容
为解决现有存在的技术问题,本发明实施例提供一种多口存储设备、读写方法、装置。
本发明的技术方案是这样实现的:
本发明实施例提供了一种多口存储设备,所述设备,包括:CEILING(M/2)*(N+1)-1个伪双口两读存储器、写操作控制单元、读操作控制单元和存储映射表;所述M为读端口的数量;所述N为写端口的数量;所述CEILING表示向上取整;
所述伪双口两读存储器,用于执行读操作、写操作、读写操作中的至少一种;
所述存储映射表,用于指示每一个地址的有效数据所存储的伪双口两读存储器;
所述写操作控制单元,用于对针对伪双口两读存储器的写操作进行控制管理;
所述读操作控制单元,用于对针对伪双口两读存储器的读操作进行控制管理。
上述方案中,所述伪双口两读存储器具有第一端口和第二端口;所述第一端口为读端口;所述第二端口为读端口或写端口。
上述方案中,所述存储映射表的容量为W*(CEILING(LOG2(CEILING(M/2)*(N+1)-1)))比特;
其中,所述W为单个伪双口两读存储器的深度。
本发明实施例提供了一种多口存储设备的读写方法,应用于以上任一项所述的多口存储设备;所述方法包括:
接收目标操作;
根据所述存储映射表确定执行所述目标操作的伪双口两读存储器;
通过确定的伪双口两读存储器执行目标操作,并更新所述存储映射表。
上述方案中,所述目标操作为写操作时;所述根据所述存储映射表确定执行所述目标操作的伪双口两读存储器,包括:
根据所述写操作的信息和所述存储映射表,确定可执行写操作的伪双口两读存储器;根据所述可执行写操作的伪双口两读存储器,确定执行写操作的伪双口两读存储器;
所述更新所述存储映射表,包括:
将确定的执行写操作的伪双口两读存储器的编号列表,写入所述存储映射表。
上述方案中,所述目标操作为读操作时;所述根据所述存储映射表确定执行所述目标操作的伪双口两读存储器,包括:
根据所述读操作所对应的读地址查询所述存储映射表,确定对应的存储标志位信息;
根据所述存储标志位信息确定所涉及的一个或多个伪双口两读存储器。
上述方案中,所述目标操作为同时读写操作时;所述根据所述存储映射表确定执行所述目标操作的伪双口两读存储器,包括:
针对所述同时读写操作的读操作,根据所述读操作所对应的读地址查询所述存储映射表,确定对应的存储标志位信息;根据所述存储标志位信息确定所涉及的一个或多个伪双口两读存储器;
针对所述同时读写操作的写操作,根据所述写操作的信息和所述存储映射表,确定可执行写操作的伪双口两读存储器;根据所述可执行写操作的伪双口两读存储器,确定执行写操作的伪双口两读存储器;
所述更新所述存储映射表,包括:
将确定的执行写操作的伪双口两读存储器的编号列表,写入所述存储映射表。
上述方案中,所述执行写操作的伪双口两读存储器为一个或连续的多个伪双口两读存储器;
所述将确定的执行写操作的伪双口两读存储器的编号列表,写入所述存储映射表,包括:
将确定的所述执行写操作的伪双口两读存储器的起始伪双口两读存储器的编号,写入所述存储映射表;
所述起始伪双口两读存储器的编号对应标记所述写操作的信息,所述写操作的信息,至少包括:读端口个数和写端口个数。
上述方案中,对于所有读操作,所述根据所述存储标志位信息确定所涉及的一个或多个伪双口两读存储器,还包括:
确定执行两个读操作的伪双口两读存储器;
所述更新所述存储映射表,还包括:
将同时进行两个读操作的伪双口两读存储器,标记为写操作非法存储器。
上述方案中,相应于存在写操作非法存储器的情况,所述根据所述存储映射表确定执行所述目标操作的伪双口两读存储器之前,所述方法还包括:
确定存在的写操作非法存储器,根据所述写操作非法存储器确定可写存储器列表;所述可写存储列表包括:除所述写操作非法存储器外的其他伪双口两读存储器;
相应的,所述根据所述存储映射表确定执行所述目标操作的伪双口两读存储器,包括:
根据所述可写存储器列表为任一写操作分配若干连续的伪双口两读存储器。
本发明实施例还提供了一种多口存储设备的读写装置,所述多口存储设备为以上任一项所述的多口存储设备,所述装置包括:
接收模块,用于接收目标操作;
处理模块,用于根据存储映射表确定执行所述目标操作的伪双口两读存储器;
通过确定的伪双口两读存储器执行目标操作,并更新所述存储映射表。
本发明实施例所提供的多口存储设备、读写方法、装置,所述设备,包括:CEILING(M/2)*(N+1)-1个伪双口两读存储器、写操作控制单元、读操作控制单元和存储映射表;所述M为读端口的数量;所述N为写端口的数量;所述CEILING表示向上取整;所述伪双口两读存储器,用于执行读操作、写操作、读写操作中的至少一种;所述存储映射表,用于指示每一个地址的有效数据所存储的伪双口两读存储器;所述写操作控制单元,用于对针对伪双口两读存储器的写操作进行控制管理;所述读操作控制单元,用于对针对伪双口两读存储器的读操作进行控制管理。如此,可以提高伪双口两读存储器端口利用率,从而进一步减小存储器面积。
附图说明
图1为一种伪双口存储器的示意图;
图2为一种伪双口存储器的实现方式的示意图;
图3为本发明实施例提供的一种伪双口两读存储器模型的示意图;
图4为本发明实施例提供的一种基于伪双口两读存储器实现奇数个读端口的多口存储器的架构图;
图5为本发明实施例提供的一种多口存储设备的读写方法的流程示意图;
图6为本发明实施例提供的多口存储设备读写操作的流程图;
图7为本发明实施例提供的多口存储设备只有读操作的流程图;
图8为本发明实施例提供的多口存储设备只有写操作的流程图;
图9为本发明实施例提供的多口存储设备同时读写时读操作的流程图;
图10为本发明实施例提供的多口存储设备同时读写时写操作的流程图;
图11为本发明实施例提供的基于伪双口两读存储器实现三读三写存储设备的设计架构图;
图12为本发明实施例提供的伪双口两读存储器和普通伪双口存储器实现奇数读端口的多口存储设备的面积对比示意图。
具体实施方式
下面在结合实施例对本发明再作进一步详细的说明之前,先对相关技术进行说明。
相关技术中,提供一种伪双口存储器,如图1所示,图1为常规的伪双口存储器的模型,该存储器模型最多同时支持两个端口的读写操作,其中端口1固定为读端口,端口2固定为写端口。
图2为常规的伪双口存储器的具体实现方式,方案如下:对于M个读端口、N个写端口的容量为W*B的多口存储器,可以通过M*N个容量为W*B的普通伪双口存储器实现,另外需要一个容量为W*(CEILING(LOG2N))的存储映射表;CEILING表示向上舍入。然而,上述方案使用的伪双口存储器单元太多,导致实现出来多口存储器面积大,功耗高。
ASIC设计需要用到的大容量的多读多写存储器,若采用上述方案来实现,其面积和功耗仍然偏大。基于此,本发明实施例提供一种新型伪双口两读存储器来实现多口存储器,相比原来现有技术的方案,可以显著减小面积,降低功耗。新型伪双口两读存储器和普通伪双口存储器的端口数量相同,密度和性能也相似,但伪双口两读存储器的端口使用更加灵活。
下面结合实施例对本发明再作进一步详细的说明。
图3为本发明实施例提供的一种伪双口两读存储器模型的示意图,如图3所示,所述伪双口两读存储器的端口1固定为读端口,端口2则可以选择用作读端口,也可以选择用作写端口(如图3中读写使能2所示),可以根据需求二选一。
基于新型伪双口两读存储器实现的多口存储器在达到相同带宽的情况下,使用更少的存储器数量,从而减小面积。在基于伪双口两读存储器实现偶数个读端口的多口存储器时,这时所有的读端口都有利用上,而基于伪双口两读存储器实现奇数个读端口的多口存储器时,并不是所有的伪双口存储器的读端口都能利用上,本发明实施例提出一种可以提高伪双口两读存储器端口利用率的奇数个读端口的多口存储器实现方法,从而进一步减小存储器面积。
若要实现的多口存储器的深度为W,宽度为B,读端口数量为M,写端口数量为N,其中M为奇数,则需要的伪双口两读存储器总个数为CEILING(M/2)*(N+1)-1个(CEILING表示向上取整),单个伪双口两读存储器的深度为W,宽度为B;对CEILING(M/2)*(N+1)-1个伪双口两读存储器依次编号为#0,#1,…#CEILING(M/2)*(N+1)-2。
另外,还需要一个存储映射表(SMT,Storage Mapping Table),用于指示每一个地址的有效数据存储在哪一个存储器,存储映射表的容量为W*(CEILING(LOG2(CEILING(M/2)*(N+1)-1)))比特(LOG2表示以2为底取对数)。
图4为本发明实施例提供的一种基于伪双口两读存储器实现奇数个读端口的多口存储器的架构图;如图4所示,所述多口存储器包括:
CEILING(M/2)*(N+1)-1个伪双口两读存储器、写操作控制单元、读操作控制单元和存储映射表。
其中,所述M为读端口的数量;所述N为写端口的数量;所述CEILING表示向上取整;
所述伪双口两读存储器,用于执行读操作、写操作、读写操作中的至少一种;
所述存储映射表,用于指示每一个地址的有效数据所存储的伪双口两读存储器;
所述写操作控制单元,用于对针对伪双口两读存储器的写操作进行控制管理;
所述读操作控制单元,用于对针对伪双口两读存储器的读操作进行控制管理。
其中,所述伪双口两读存储器具有第一端口和第二端口;所述第一端口为读端口;所述第二端口为读端口或写端口。
所述存储映射表的容量为W*(CEILING(LOG2(CEILING(M/2)*(N+1)-1)))比特;其中,所述W为单个伪双口两读存储器的深度。
这里,所述存储映射表还包括有地址空间,该地址空间与伪双口两读存储器的地址空间相关,例如伪双口两读存储器的地址空间为1000个地址或2000个地址;则,存储映射表的地址空间相应为1000个地址或2000个地址。
实际应用时,对于读、写操作,分配相应伪双口两读存储器外,还将具体的地址记录,记录方式可以为:确定分配的伪双口两读存储器(记做存储器A)后,同时确定针对该双口两读存储器的地址(记做地址B),在存储映射表的相应地址空间中的地址B对应记录分配的存储器A。
本发明实施例还提供了一种多口存储设备的读写方法,应用于上述多口存储设备;如图5所示,所述方法包括:
步骤501、接收目标操作;
步骤502、根据所述存储映射表确定执行所述目标操作的伪双口两读存储器;
步骤503、通过确定的伪双口两读存储器执行目标操作。
在一实施例中,所述目标操作为写操作时;所述根据所述存储映射表确定执行所述目标操作的伪双口两读存储器,包括:
根据所述写操作的信息和所述存储映射表,确定可执行写操作的伪双口两读存储器;根据所述可执行写操作的伪双口两读存储器,确定执行写操作的伪双口两读存储器;
所述更新所述存储映射表,包括:
将确定的可执行写操作的伪双口两读存储器的编号列表,写入所述存储映射表。
所述写操作的信息,包括:写操作对应的地址。
在一实施例中,所述目标操作为读操作时;所述根据所述存储映射表确定执行所述目标操作的伪双口两读存储器,包括:
根据所述读操作所对应的读地址查询所述存储映射表,确定对应的存储标志位信息;
根据所述存储标志位信息确定所涉及的一个或多个伪双口两读存储器;。
在一实施例中,所述目标操作为同时读写操作时;所述根据所述存储映射表确定执行所述目标操作的伪双口两读存储器,包括:
针对所述同时读写操作的读操作,根据所述读操作所对应的读地址查询所述存储映射表,确定对应的存储标志位信息;根据所述存储标志位信息确定所涉及的一个或多个伪双口两读存储器;
针对所述同时读写操作的写操作,根据所述写操作的信息和所述存储映射表,确定可执行写操作的伪双口两读存储器;根据所述可执行写操作的伪双口两读存储器,确定执行写操作的伪双口两读存储器;
所述更新所述存储映射表,包括:
将确定的执行写操作的伪双口两读存储器的编号列表,写入所述存储映射表。
在一实施例中,所述执行写操作的伪双口两读存储器为一个或连续的多个伪双口两读存储器;
所述将确定的执行写操作的伪双口两读存储器的编号列表,写入所述存储映射表,包括:
将确定的所述执行写操作的伪双口两读存储器的起始伪双口两读存储器的编号,写入所述存储映射表;
所述起始伪双口两读存储器的编号对应标记所述写操作的信息,所述写操作的信息,至少包括:读端口个数和写端口个数。
也就是说,假设确定的执行写操作的伪双口两读存储器的编号(也可以理解为ID、或其他标识)包括:存储器2、存储器3、存储器4,将确定的执行写操作的伪双口两读存储器的编号列表,写入所述存储映射表,指,将编号、即存储器2的写入存储映射表;而为了便于之后的操作可以确定结束的存储器,编号、即存储器2,对应标记几读几写,如三读三写,如此,可以确定结束的存储器的编号。
在一实施例中,考虑到存在两个端口均进行读操作的伪双口两读存储器,相应的,其无法执行写操作;
基于此,对于读操作,所述根据所述存储标志位信息确定所涉及的一个或多个伪双口两读存储器,还包括:
确定执行两个读操作的伪双口两读存储器;
所述更新所述存储映射表,还包括:
将同时进行两个读操作的伪双口两读存储器,标记为写操作非法存储器。
标记为写操作非法存储器则无法执行写操作,需要等其执行完读操作后进行信息更新,标记为可执行写操作的存储器。
在一实施例中,相应于存在写操作非法存储器的情况,所述根据所述存储映射表确定执行所述目标操作的伪双口两读存储器之前,所述方法还包括:
确定存在的写操作非法存储器,根据所述写操作非法存储器确定可写存储器列表;所述可写存储列表包括:除所述写操作非法存储器外的其他伪双口两读存储器;
相应的,所述根据所述存储映射表确定执行所述目标操作的伪双口两读存储器,包括:
根据所述可写存储器列表为任一写操作分配若干连续的伪双口两读存储器。
直至写操作非法存储器完成读操作后,其再次作为可读可写的伪双口两读存储器。
这里,删除所述存储映射表中的写操作非法存储器标记需要在其完成读操作后执行。
以上对于存储映射表的更新由写操作控制单元执行、对于存储映射表的查询读操作控制单元执行。
即,由写操作控制单元实现针对伪双口两读存储器的写操作的控制管理,具体执行上述方法中写操作相关的步骤,这里不再赘述。
由读操作控制单元实现针对伪双口两读存储器的读操作的控制管理,具体执行上述方法中写操作相关的步骤,这里不再赘述。
为进一步对上述多口储存设备和相应方法进行说,以下分三种情况来说明多口存储设备的读写方式:
情况1、只有写操作时。如图7所示,
假设,同时有n个(n<=N)写端口进行写操作,则第i个(i=0,1,n-1)写操作写到第#i*CEILING(M/2)~#(i+1)*CEILING(M/2)-1个伪双口两读存储器(以下简称为存储器单元),同时更新存储映射表,将编号i*CEILING(M/2)写入到存储映射表。这里,所述i*CEILING(M/2)实际表示所涉及的存储器单元的起始编号,即存储映射表中i*CEILING(M/2),表示第#i*CEILING(M/2)~#(i+1)*CEILING(M/2)-1个存储器单元执行写操作。
情况2、只有读操作时。如图8所示,
假设,同时有m(m<=M)个读端口进行读操作,先根据每个读地址到存储映射表中查找对应的存储标志位信息。由情况1的描述可知,从存储映射表读到的存储标志位信息只是实际存储器单元的起始编号i*CEILING(M/2),以该编号为起始的CEILING(M/2)个存储器都是该地址对应的实际存储位置。
若i*CEILING(M/2)+j>CEILING(M/2)*(N+1)-2,其中,j=0,1,…CEILING(M/2)-1;则编号i*CEILING(M/2)+j应转换为实际存储器编号MOD(i*CEILING(M/2)+j,CEILING(M/2)*(N+1)-1)。
根据前述规则可以得到,每个读地址对应的有效数据所在存储器单元,并计算m个读操作涉及的不同存储器单元的个数p,将每个存储器单元要进行的读操作个数分别记录为X[0],X[1],...X[p-1],对X[0],X[1],…X[p-1],按从小到大排序;如果X[i]和X[i+1]的读操作个数相同(i+1<p-1),则按照X[i]和X[i+1]对应的存储器编号从小到大排序,如果X[i]对应的存储器编号更小,则Y[i]=X[i],Y[i+1]=X[i+1],反之,则Y[i]=X[i+1],Y[i+1]=X[i],按照上述规则得到Y[0],Y[1],…Y[p-1],根据m和p的大小分两种情况:
情况a)、如果p>=m(p表示读操作个数,m表示读端口个数),则不同的读操作一定可以到不同的存储器单元读取数据;从Y[0]开始判别不同的读操作分别到哪个存储器单元读取数据,对于某一个存储器单元k(k=0,1,…p-1),若Y[k]=1,则Y[k]对应读操作到Y[k]对应的存储器单元读取数据,并忽略其他存储器单元包含的该读操作;若Y[k]>1,则选取Y[k]中的其中一个读操作到Y[k]对应的存储器单元读取数据,直至所有的读操作都找到不同的存储器读取数据。
情况b)、如果p<m,则至少有一个存储器单元有两个读操作,m-p即代表要需要进行两个读操作的存储器单元个数;从Y[0]开始进行判别不同的读操作分别到哪个存储器单元读取数据,对于任一存储器单元k(k<p),若Y[k]=1,则读操作k到Y[k]对应的存储器单元读取数据,并忽略其他存储器单元包含的读操作k;若Y[k]>1,分两种情况:
情况i、若k<p-(m-p),则选取Y[k]中的其中一个读操作到该存储器单元读取数据,并忽略其他存储器单元包含的这个读操作;
情况ii、若k>=p-(m-p),则选取Y[k]中的其中两个读操作到该存储器单元读取数据,并将该存储器单元标记为写操作非法存储器单元,同时忽略其他存储器单元包含的这两个读操作;
情况3、同时有读写操作时。
假设,同时有m(m<=M)个读端口进行读操作和同时有n(n<=N)个写端口进行写操作,根据每个读地址到存储映射表中查找对应的存储映射信息,根据读到的存储映射信息计算得到第i个(i<=N+1)存储器单元分别有X[i]个读地址来读取数据。下面分别描述读操作和写操作:
a)、对于读操作,根据只有读操作的流程进行读操作,如图9所示。
b)、对于写操作,如图10所示,分两种情况:
i、如果不存在写操作非法存储器单元,则和只有写操作的方法相同。
ii、如果存在写操作非法存储器单元,把所有的存储器单元的编号记为序列O[x](x=0,1,…CEILING(M/2)*(N+1)-2))。对于最多M个读端口的存储器来说,当M为奇数时,易知写操作非法的存储器单元个数最多为INT(M/2),并且有CEILING(M/2)-INT(M/2)=1,则此时至少有可写存储器单元个数为CEILING(M/2)*(N+1)-1-INT(M/2)=CEILING(M/2)*N+CEILING(M/2)-1-INT(M/2)=CEILING(M/2)*N,即每个写操作至少有CEILING(M/2)个存储器单元可写入。假设,写操作非法存储器单元的最小编号单元为Imin,最大编号单元为Imax,由前述读操作流程可知,其他写操作非法存储器单元的编号一定在Imin和Imax之间。以MOD(Imax+1,CEILING(M/2)*(N+1)-1)为第一个可写存储器单元编号,得到删除写操作非法存储器单元之后的所有可写存储器单元编号P[x](x=0,1,…),其中,P[0]=MOD(Imax+1,CEILING(M/2)*(N+1)-1)。则第i个(i=0,1,n-1)写操作写到第P[i*CEILING(M/2)]~P[(i+1)*CEILING(M/2)-1]个存储器单元,同时更新存储映射表,编号P[i*CEILING(M/2)]写入到存储映射表中第i个写操作对应的写地址。
为对本发明实施例提供的多口两读存储器进一步说明,提供一种基于伪双口两读存储器实现三读三写存储器的方案。
图11为本发明实施例提供的一种基于伪双口两读存储器实现三读三写存储器的架构图;如图11所示,实现一个三读(M=3)三写(N=3),2048个深度(W=2048)和32比特宽度(B=32)的多口存储器为例具体阐述如何基于伪双口两读存储器实现多口存储器。
欲实现上述三读三写存储器,则需要的伪双口两读存储器个数为CEILING(M/2)*(N+1)-1=CEILING(3/2)*(3+1)-1=7,单个伪双口两读存储器的深度宽度和多口存储器的深度宽度一样,即单个伪双口两读存储器的深度为2048,宽度为32。将7块伪双口两读存储器分别编号为#0,#1…#6。存储映射表的比特数为W*(CEILING(LOG2(CEILING(M/2)*(N+1)-1)))=2048*CEILING(LOG27)=2048*3=6144,存储映射表(Storage Mapping Table,简写为SMT)的值初始化为全0。
1、同时写地址0,1,2:此时没有读操作,不存在写操作非法存储器单元,则写地址0对应的写数据写到存储器单元#0和#1,写地址1对应的写数据写到存储器单元#2和#3,写地址2对应的写数据写到存储器单元#4和#5,更新存储映射表,SMT[0]=3’h0,SMT[1]=3’h2,SMT[2]=3’h4。
2、读地址0,1,2,同时写地址3,4,5:根据读地址读取存储映射表,得到SMT[0]=3’h0,SMT[1]=3’h2,SMT[2]=3’h4,将上述存储器起始编号转化成有效数据实际存储位置信息为SMT_T[0]=7’b1100000,SMT_T[1]=7’b0011000,SMT_T[2]=7’b0000110,这样三个读操作(m=3)分别涉及的不同存储器单元为#0~#5共6个(p=6),由于p>m,此时不同的读操作可到不同的存储器单元读取数据,没有写操作无效存储器单元,因此写操作按照只有写操作的方法进行,读操作按照只有读操作方式进行。
具体的,读0操作访问存储器单元#0,读1操作访问存储器单元#2,读2操作访问存储器单元#4;地址3对应的写数据写到存储器单元#0和#1,地址4对应的写数据写到存储器单元#2和#3,地址5对应的写数据写到存储器单元#4和#5,SMT[3]=3’h0,SMT[4]=3’h2,SMT[5]=3’h4。
3、写地址6,地址7,地址8,操作过程和第1步类似。
4、读地址0,3,6,同时写地址1,4,7:下面先描述读操作过程,再描述写操作过程。
a)读操作过程:根据存储映射表,SMT[0]=SMT[3]=SMT[6]=3’h0,则SMT_T[0]=SMT_T[3]=SMT_T[6]=7’b1100000,即读操作数m=3,读操作涉及的不同存储器单元个数p=2(为存储器单元#0和#1),由于p<m,则有m-p=3-2=1个存储器单元有两个读操作,存储器单元#0的读操作个数X[0]=3,存储器单元#1的读操作个数X[1]=3,由于读操作数相同,则按照存储器编号从小到大排序后为Y[0]对应存储器单元#0,Y[1]对应存储器单元#1,且Y[0]=3,Y[1]=3;对于Y[0]对应的三个读操作,读地址0,读地址3和读地址6,根据前述规则,当i=0<(m-p)=1时,选其中一个读操作,如读地址0,其访问Y[0]对应的存储器#0;当i=(m-p)=1时,Y[1]对应的存储器单元应该要进行两个读操作,而Y[1]原本包含有三个读操作,读地址0,读地址3和读地址6,去掉要访问存储器#0的读地址0操作,则剩下两个读操作都访问Y[1]对应的存储器单元#1,即读地址3和读地址6,分别到存储器单元#1的两个读端口读取数据,并标记存储器单元#1为写操作非法存储器单元。
b)写操作过程:全部的存储器单元序列O[x]为#0,#1,…#6,写操作非法存储器单元为#1,则可写存储器单元的起始存储器编号为#(1+1)=#2,可写存储器单元编号序列P[x]为#2,#3,#4,#5,#6,#0;然后,将地址1对应的写数据写入存储器单元和#2和#3,更新SMT[1]=7’h2,地址4对应的数据写入存储器单元#4和#5,更新SMT[4]=7’h4,地址7对应的数据写入存储器单元#6和#0,更新SMT[7]=7’h6。
5、读地址0,3,7,同时写地址2,4,5:下面先描述读操作过程,再描述写操作过程。
a)读操作过程:根据存储映射表,SMT[0]=SMT[3]=3’h0,SMT[7]=3’h6,则SMT_T[0]=SMT_T[3]=7’b1100000,SMT_T[7]=7’b1000001,即读操作个数m=3,读操作涉及的不同存储器单元个数p=3,分别为存储器单元#0,#1,#6,由于p=m,则不同读操作分别操作不同的存储器单元,没有写操作非法存储器单元。存储器单元#0的读操作个数X[0]=3,存储器单元#1的读操作个数X[1]=2,存储器单元#1的读操作个数X[6]=1;根据前述排序规则,Y[0]=X[6]=1,Y[1]=X[1]=2,Y[2]=X[0]=3。由于Y[0]=X[6]=1,则X[6]对应的读操作读地址7到存储器单元6读取,Y[1]=2包含两个读操作读0和3,任意选择其中一个读操作,如地址0到存储器#1读取数据,Y[2]=3有三个读操作读0,3,7,去掉到别的存储器单元读取数据的两个读操作读0和7,则只剩下读地址1操作,即地址1到存储器#0读取。
b)写操作过程:由于没有写非法存储器单元,则按照只有写操作的方法进行数据写入。
对于三读三写存储器的其他操作可类似上述操作进行。
图12为本发明实施例提供的伪双口两读存储器和普通伪双口存储器实现奇数读端口的多口存储设备的面积对比示意图;基于TSMC 7nm工艺,Synopsys公司开发的存储器进行的评估,其中伪双口普通存储器为Synopsys公司提供的双口高速超高密度存储器,伪双口两读存储器为Synopsys公司提供的伪双口两读存储器。由下表可见,本发明实施例提供的方案和伪双口普通存储器方案相比,显著节省面积。
本发明实施例还提供的一种数据处理装置的结构示意图;所述装置包括:
接收模块,用于接收目标操作;
处理模块,用于根据所述存储映射表确定执行所述目标操作的伪双口两读存储器;
通过确定的伪双口两读存储器执行目标操作,并更新所述存储映射表。
所述装置还可以实现图5所示方法中的其他步骤,这里不多赘述。
本发明实施例还提供了一种电子设备,所述电子设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序;位于电子设备的处理器执行所述程序时实现上述一个或多个技术方案提供的方法。
上述本申请实施例揭示的方法可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。
本申请实施例还提供了一种存储介质,具体为计算机存储介质,更具体的为计算机可读存储介质。其上存储有计算机指令,即计算机程序;该计算机指令被处理器执行时上述一个或多个技术方案提供的方法。
在本申请所提供的几个实施例中,应该理解到,所揭露的方法和智能设备,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
另外,本申请实施例所记载的技术方案之间,在不冲突的情况下,可以任意组合。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种多口存储设备,其特征在于,所述设备,包括:CEILING(M/2)*(N+1)-1个伪双口两读存储器、写操作控制单元、读操作控制单元和存储映射表;所述M为读端口的数量;所述N为写端口的数量;所述CEILING表示向上取整;
所述伪双口两读存储器,用于执行读操作、写操作、读写操作中的至少一种;
所述存储映射表,用于指示每一个地址的有效数据所存储的伪双口两读存储器;
所述写操作控制单元,用于对针对伪双口两读存储器的写操作进行控制管理;
所述读操作控制单元,用于对针对伪双口两读存储器的读操作进行控制管理。
2.根据权利要求1所述的设备,其特征在于,所述伪双口两读存储器具有第一端口和第二端口;所述第一端口为读端口;所述第二端口为读端口或写端口。
3.根据权利要求1或2所述的设备,其特征在于,所述存储映射表的容量为W*(CEILING(LOG2(CEILING(M/2)*(N+1)-1)))比特;
其中,所述W为单个伪双口两读存储器的深度。
4.一种多口存储设备的读写方法,其特征在于,应用于权利要求1至3任一项所述的多口存储设备;所述方法包括:
接收目标操作;
根据所述存储映射表确定执行所述目标操作的伪双口两读存储器;
通过确定的伪双口两读存储器执行目标操作,并更新所述存储映射表。
5.根据权利要求4所述的方法,其特征在于,所述目标操作为写操作时;所述根据所述存储映射表确定执行所述目标操作的伪双口两读存储器,包括:
根据所述写操作的信息和所述存储映射表,确定可执行写操作的伪双口两读存储器;根据所述可执行写操作的伪双口两读存储器,确定执行写操作的伪双口两读存储器;
所述更新所述存储映射表,包括:
将确定的执行写操作的伪双口两读存储器的编号列表,写入所述存储映射表。
6.根据权利要求4所述的方法,其特征在于,所述目标操作为读操作时;所述根据所述存储映射表确定执行所述目标操作的伪双口两读存储器,包括:
根据所述读操作所对应的读地址查询所述存储映射表,确定对应的存储标志位信息;
根据所述存储标志位信息确定所涉及的一个或多个伪双口两读存储器。
7.根据权利要求4所述的方法,其特征在于,所述目标操作为同时读写操作时;所述根据所述存储映射表确定执行所述目标操作的伪双口两读存储器,包括:
针对所述同时读写操作的读操作,根据所述读操作所对应的读地址查询所述存储映射表,确定对应的存储标志位信息;根据所述存储标志位信息确定所涉及的一个或多个伪双口两读存储器;
针对所述同时读写操作的写操作,根据所述写操作的信息和所述存储映射表,确定可执行写操作的伪双口两读存储器;根据所述可执行写操作的伪双口两读存储器,确定执行写操作的伪双口两读存储器;
所述更新所述存储映射表,包括:
将确定的执行写操作的伪双口两读存储器的编号列表,写入所述存储映射表。
8.根据权利要求5或7所述的方法,其特征在于,所述执行写操作的伪双口两读存储器为一个或连续的多个伪双口两读存储器;
所述将确定的执行写操作的伪双口两读存储器的编号列表,写入所述存储映射表,包括:
将确定的所述执行写操作的伪双口两读存储器的起始伪双口两读存储器的编号,写入所述存储映射表;
所述起始伪双口两读存储器的编号对应标记所述写操作的信息,所述写操作的信息,至少包括:读端口个数和写端口个数。
9.根据权利要求6或7所述的方法,其特征在于,对于读操作,所述根据所述存储标志位信息确定所涉及的一个或多个伪双口两读存储器,还包括:
确定执行两个读操作的伪双口两读存储器;
所述更新所述存储映射表,还包括:
将同时进行两个读操作的伪双口两读存储器,标记为写操作非法存储器。
10.根据权利要求6或7所述的方法,其特征在于,相应于存在写操作非法存储器的情况,所述根据所述存储映射表确定执行所述目标操作的伪双口两读存储器之前,所述方法还包括:
确定存在的写操作非法存储器,根据所述写操作非法存储器确定可写存储器列表;所述可写存储列表包括:除所述写操作非法存储器外的其他伪双口两读存储器;
相应的,所述根据所述存储映射表确定执行所述目标操作的伪双口两读存储器,包括:
根据所述可写存储器列表为任一写操作分配若干连续的伪双口两读存储器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111364202.0A CN116136828A (zh) | 2021-11-17 | 2021-11-17 | 一种多口存储设备、读写方法、装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111364202.0A CN116136828A (zh) | 2021-11-17 | 2021-11-17 | 一种多口存储设备、读写方法、装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116136828A true CN116136828A (zh) | 2023-05-19 |
Family
ID=86334168
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111364202.0A Pending CN116136828A (zh) | 2021-11-17 | 2021-11-17 | 一种多口存储设备、读写方法、装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116136828A (zh) |
-
2021
- 2021-11-17 CN CN202111364202.0A patent/CN116136828A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6081878A (en) | Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices | |
US20040199714A1 (en) | Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices | |
EP1209568A1 (en) | Memory card, method for allotting logical address, and method for writing data | |
KR101391270B1 (ko) | Mram을 이용하는 비휘발성 메모리 시스템 | |
US8433844B2 (en) | Method for managing a memory device having multiple channels and multiple ways, and associated memory device and controller thereof | |
CN113094003B (zh) | 数据处理方法、数据存储装置及电子设备 | |
US9123443B2 (en) | Memory device, memory management device, and memory management method | |
EP0032956B1 (en) | Data processing system utilizing hierarchical memory | |
US20130268717A1 (en) | Emulated electrically erasable memory having sector management | |
US20090319721A1 (en) | Flash memory apparatus and method for operating the same | |
CN117632043B (zh) | Cxl内存模组、控制芯片、数据处理方法、介质和系统 | |
CN101819821A (zh) | 一种固态硬盘动态损耗均衡方法 | |
US8954662B2 (en) | SSD controller, and method for operating an SSD controller | |
CN116136827A (zh) | 一种多口存储设备、读写方法、装置 | |
CN116136828A (zh) | 一种多口存储设备、读写方法、装置 | |
US8671262B2 (en) | Single-port memory with addresses having a first portion identifying a first memory block and a second portion identifying a same rank in first, second, third, and fourth memory blocks | |
CN102930898B (zh) | 一种构建多端口异步存储模块的方法 | |
CN111611178A (zh) | 数据储存装置以及非挥发式存储器控制方法 | |
CN113377684B (zh) | 数据写入系统与方法 | |
KR100479170B1 (ko) | 메모리 억세스 제어장치 및 방법 | |
CN117149671B (zh) | 缓存实现方法、系统、介质及电子设备 | |
CN117917735B (zh) | 伪双端口sram的读写控制方法及装置 | |
TWI760702B (zh) | 資料寫入系統與方法 | |
US9110782B2 (en) | Emulated electrically erasable memory parallel record management | |
KR20090098276A (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 |