CN101350218B - 一种虚拟多端口存储器及其存储和读取数据的方法 - Google Patents

一种虚拟多端口存储器及其存储和读取数据的方法 Download PDF

Info

Publication number
CN101350218B
CN101350218B CN2008101175101A CN200810117510A CN101350218B CN 101350218 B CN101350218 B CN 101350218B CN 2008101175101 A CN2008101175101 A CN 2008101175101A CN 200810117510 A CN200810117510 A CN 200810117510A CN 101350218 B CN101350218 B CN 101350218B
Authority
CN
China
Prior art keywords
port
data
buffer
memory
reading
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.)
Active
Application number
CN2008101175101A
Other languages
English (en)
Other versions
CN101350218A (zh
Inventor
庄志伟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
BEIJING JULI NORTH MICROELECTRONICS Co Ltd
Original Assignee
BEIJING JULI NORTH MICROELECTRONICS Co Ltd
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 BEIJING JULI NORTH MICROELECTRONICS Co Ltd filed Critical BEIJING JULI NORTH MICROELECTRONICS Co Ltd
Priority to CN2008101175101A priority Critical patent/CN101350218B/zh
Publication of CN101350218A publication Critical patent/CN101350218A/zh
Application granted granted Critical
Publication of CN101350218B publication Critical patent/CN101350218B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明涉及集成电路领域,特别涉及一种由单端口存储器实现虚拟多端口存储器的方法及装置,虚拟多端口存储器的主要应用限定在各端口之间交换大量连续的数据。本发明的虚拟多端口存储器(端口数NP≥2)包括NP个单端口存储器、NP个和端口对应的写缓存器和读缓存器,以及控制单元。NP个单端口存储器轮流接受NP个端口的访问,每次访问接收/送出NP个周期的数据,从而保证各端口数据传输的码率。本发明可以采用低成本的单元端口存储器在特定应用中替代高成本的多端口存储器,从而节省成本。

Description

一种虚拟多端口存储器及其存储和读取数据的方法
技术领域
本发明涉及集成电路领域,特别涉及一种虚拟多端口存储器及其存储和读取数据的方法。
背景技术
在集成电路中,经常需要在多个异步模块之间交换大量连续的数据。为了保证数据传输的完整性、减少对系统资源的占用,一般会采用一块多端口存储器来缓存一端发送的数据,在适当的时候再由其它端口取走。多端口存储器(端口数NP≥2)提供NP套可读/写数据的端口,从而实现各端口可以同时读/写存储器。
常见的多端口存储器是如图1所示的双端口存储器。在USB(UniversalSerial Bus,通用串行总线)的控制电路中,就需要通过双端口存储器在USB数据端和系统内部总线之间以包为单位交换大量数据。
然而由于多端口存储器的单位面积较大,使得生产多端口存储器的成本较高,一般希望能采用成本相对低廉的如图2所示的单端口存储器来替代多端口存储器。
单端口存储器来替代多端口存储器最简单的例子是单端口存储器取代双端口存储器。目前较常见的做法是让单端口存储器在端口时钟的二倍频下工作,交替接受两个端口的访问。这样做的缺点是系统需要提供一个额外的倍频时钟,单端口存储器的工作频率较高,功耗大,对存储器的性能要求也高。
综上所述,现有多端口存储器的单位面积较大,使得生产成本较高。
发明内容
本发明实施例提供的一种虚拟多端口存储器及其存储和读取数据的方法,用以解决现有技术中存在的多端口存储器的单位面积较大,生产成本较高的问题。
本发明实施例提供的一种虚拟多端口存储器,其特征在于,所述虚拟多端口存储器包括控制单元、至少两个端口、至少两个单端口存储器、至少两个写缓存器和至少两个读缓存器,其中,所述单端口存储器的数量和端口数量相同,所述写缓存器的数量和端口数量相同,一个所述写缓存器同一个所述端口相对应,所述写缓存器包括多个缓存单元,所述读缓存器与所述端口数量相同,一个所述读缓存器同一个所述端口相对应,所述读缓存器包括多个缓存单元;
所述控制单元,用于根据来自其中一个端口的包含写地址的写指令,控制所述写缓存器将所述其中一个端口的数据存储到与所述写地址对应的缓存单元,在所述单端口存储器接受所述其中一个端口访问时,控制所述单端口存储器存储来自所述写缓存器的数据,以及根据来自其中一个端口的包含读地址的读指令,在所述单端口存储器接受所述其中一个端口访问时,控制所述单端口存储器将存储的数据发送给所述读缓存器,在所述单端口存储器送出所述其中一个端口的数据时,控制所述读缓存器将第一读潜伏期之前端口发送的读指令中的读地址所对应的缓存单元的数据,向所述其中一个端口发送;
与所述其中一个端口相对应的所述写缓存器,用于在所述控制单元的控制下,存储所述其中一个端口的数据,在所述单端口存储器接受所述其中一个端口访问时,在一个周期内将存储的所述其中一个端口的数据发送给对应的所述单端口存储器;
与所述其中一个端口相对应的所述读缓存器,用于在所述控制单元的控制下,存储收到的数据,并将所述第一读潜伏期之前,端口发送的读指令中的读地址所对应的缓存单元的数据,向端口发送;
所述单端口存储器,用于在所述控制单元的控制下,存储来自所述写缓存器的数据,或发送存储的数据。
本发明实施例提供的一种存储数据的方法,应用于虚拟多端口存储器,其特征在于,所述虚拟多端口存储器包括控制单元、至少两个端口、至少两个单端口存储器、至少两个写缓存器和至少两个读缓存器,其中,所述单端口存储器的数量和端口数量相同,所述写缓存器的数量和端口数量相同,一个所述写缓存器同一个所述端口相对应,所述写缓存器包括多个缓存单元,所述读缓存器与所述端口数量相同,一个所述读缓存器同一个所述端口相对应,所述读缓存器包括多个缓存单元,该方法包括:
控制单元根据来自其中一个端口的包含写地址的写指令,控制所述写缓存器将所述其中一个端口的数据存储到与所述写地址对应的缓存单元,在所述单端口存储器接受所述其中一个端口访问时,控制所述单端口存储器存储来自所述写缓存器的数据;
与所述其中一个端口相对应的所述写缓存器在所述控制单元的控制下,存储所述其中一个端口的数据,在所述单端口存储器接受所述其中一个端口访问时,在一个周期内将存储的所述其中一个端口的数据发送给对应的所述单端口存储器;
所述单端口存储器在所述控制单元的控制下,存储来自所述写缓存器的数据;
控制单元根据来自其中一个端口的包含读地址的读指令,在所述单端口存储器接受所述其中一个端口访问时,控制所述单端口存储器将存储的数据发送给所述读缓存器,在所述单端口存储器送出所述其中一个端口的数据时,控制所述读缓存器将第一读潜伏期之前端口发送的读指令中的读地址所对应的缓存单元的数据,向所述其中一个端口发送;
所述单端口存储器在所述控制单元的控制下,发送存储的数据;
与所述其中一个端口相对应的所述读缓存器在所述控制单元的控制下,存储收到的数据,并将所述第一读潜伏期之前,端口发送的读指令中的读地址所对应的缓存单元的数据,向端口发送。
本发明的虚拟多端口存储器(端口数NP≥2)包括NP个单端口存储器、NP个和端口对应的写缓存器和读缓存器,以及控制单元。NP个单端口存储器轮流接受NP个端口的访问,每次访问接收/送出NP个周期的数据,从而保证各端口数据传输的码率,由于采用低成本的单端口存储器在特定应用中替代高成本的多端口存储器,从而减小了芯片面积,相应的节省了生产的成本,并且降低了单端口存储器的工作频率,从而减小了单端口存储器的功耗,降低了对存储器的性能要求,节约了能源。
附图说明
图1为双端口存储器示意图;
图2为单端口存储器示意图;
图3为本发明实施例的第一种虚拟多端口存储器结构示意图;
图4为本发明实施例的第一种虚拟多端口存储器的数据存储结构示意图;
图5为本发明实施例的第一种虚拟多端口存储器端口复用的时序图;
图6为本发明实施例的第一种虚拟双端口存储器结构示意图;
图7为本发明实施例的第一种虚拟双端口存储器的数据存储结构示意图;
图8为本发明实施例第一种虚拟双端口存储器的两个端口同时写数据的时序图;
图9为本发明实施例第一种虚拟双端口存储器的第一种一个端口读数据同时另一个端口写数据的时序图;
图10为本发明实施例第一种虚拟双端口存储器的第二种一个端口读数据同时另一个端口写数据的时序图;
图11为本发明实施例第一种虚拟双端口存储器的两个端口同时读数据的时序图;
图12为本发明实施例第一种虚拟多端口存储器存储数据的方法流程示意图;
图13为本发明实施例第一种虚拟多端口存储器读取数据的方法流程示意图;
图14为本发明实施例的第二种虚拟多端口存储器结构示意图;
图15A为本发明实施例的第三种虚拟双端口存储器结构示意图;
图15B为本发明实施例的第三种虚拟双端口存储器的控制单元结构示意图;
图16A为本发明实施例的第三种虚拟双端口存储器存储数据的方法流程示意图;
图16B为本发明实施例的第三种虚拟双端口存储器读取数据的方法流程示意图。
具体实施方式
本发明实施例通过多个单端口存储器,实现虚拟多端口存储器,从而在保证各端口数据传输的码率不变的前提下,减小了所用的存储器的面积,降低了芯片的成本。
如图3所示,本发明实施例的第一种虚拟多端口存储器(端口数NP≥2)包括控制单元10、NP个与端口对应的写缓存器20和NP个单端口存储器30。假设虚拟多端口存储器的数据位宽为n bits、地址深度是a、地址位宽为
Figure S2008101175101D00061
bits、写使能位宽为k bits,则单端口存储器的数据位宽为n bits、地址深度是
Figure S2008101175101D00062
地址位宽为
Figure S2008101175101D00063
bits、写使能位宽为k bits。
控制单元10,用于根据来自其中一个端口的包含写地址的写指令,控制所述写缓存器20将所述其中一个端口的数据存储到与所述写地址对应的缓存单元,在所述单端口存储器接受所述其中一个端口访问时,控制所述单端口存储器30存储来自所述写缓存器20的数据。
其中,控制单元10还可以进一步包括:写入数据控制模块100、写指令缓存控制模块101、复用控制模块102和写多路选择器103。
写入数据控制模块100,用于在收到端口的写指令后,根据该写指令以及所述第一对应关系,生成写缓存器控制信号,向所述写缓存器20发送。
具体的,在向虚拟多端口存储器的端口j写入数据的情况下,依据端口j的地址生成控制信号,控制端口j的写入数据缓存到写缓存器_j对应的缓存单元中。例如可要求写缓存器_j的第i个存储单元缓存数据的地址满足A_MP_j除以NP余i的条件。A_MP_j表示虚拟多端口存储器的第j个端口的地址(0≤j≤NP-1,0≤i≤NP-1)。
写指令缓存控制模块101,用于根据所述写指令,生成并存储单端口存储器写指令(该单端口存储器写指令包括地址、写使能和片选使能),在单端口存储器30接受所述其中一个端口访问时,根据所述第二对应关系,将所述单端口存储器写指令发送给对应的单端口存储器30。
具体的,在向虚拟多端口存储器的端口j写入数据的情况下,写指令缓存控制电路缓存端口j的地址、写使能和片选使能。在单端口存储器接受端口j访问时,将缓存的地址、写使能和片选使能送入相应的单端口存储器。例如可要求单端口存储器_i接受的写指令的地址满足A_MP_j除以NP余i的条件。
复用控制模块102,用于生成端口选择信号。
写多路选择器103,用于根据所述端口选择信号和所述第三对应关系,将当前周期单端口存储器接受访问的所述写缓存器20的各缓存单元的数据线,连接到对应的单端口存储器30的数据输入端口。
具体的,在单端口存储器接受端口j访问时,写缓存器_j的数据连接到单端口存储器的写入数据端口,例如可要求写缓存器_j中的第i个存储单元的数据连接到单端口存储器_i的写入数据端口(0≤i≤NP-1)。
与所述其中一个端口相对应的写缓存器20,用于在所述控制单元10的控制下,存储所述其中一个端口的数据,在所述单端口存储器接受所述其中一个端口访问时,在一个周期内将存储的所述其中一个端口的数据发送给对应的单端口存储器。
具体的,写缓存器20在所述写缓存器控制信号的控制下,根据所述第一对应关系,将来自所述其中一个端口的多个周期的数据存储到写地址对应的缓存单元,在所述单端口存储器30接受所述其中一个端口访问时,根据写缓存器的缓存单元和单端口存储器标识的第三对应关系,在一个周期内将所述其中一个端口对应的各缓存单元的数据发送给对应的单端口存储器30。
所述某一个写缓存器20与特定的端口相对应,包含NP个n bits的存储单元(存储单元0-存储单元NP-1)和写使能控制电路。在控制单元10的控制下,依据所述其中一个端口写入数据的地址缓存写入数据到适当的位置,例如可要求第i个存储单元缓存数据的地址满足A_MP_j除以NP余i的条件。
单端口存储器30,用于在所述控制单元10的控制下,存储来自所述写缓存器20的数据。
具体的,单端口存储器30根据收到的所述单端口存储器的写指令,存储来自所述写缓存器20的数据。
单端口存储器30在控制单元10的控制下通过写缓存器20轮流接受各端口的访问。NP个单端口存储器组合构成虚拟多端口存储器的存储空间,例如数据存储结构可如图4所示,单端口存储器的编号为0~NP-1,设第i个单端口存储器的地址用A_SP_i表示(0≤i≤NP-1),虚拟多端口存储器的第j个端口的地址用A_MP_j表示(0≤j≤NP-1),则第i个单端口存储器储的第A_SP_i单元存储多端口地址A_MP_j=NP×A_SP_i+i的数据。各单端口存储器所接收的写入数据均来自控制单元10分选的各多端口的写缓存器20的数据。
在本发明实施例虚拟多端口存储器涉及数据读出时,虚拟多端口存储器还可以进一步包括:NP个和端口对应的读缓存器40。
则控制单元10还用于:
根据来自所述其中一个端口的包含读地址的读指令,在单端口存储器30接受所述其中一个端口访问时,控制所述单端口存储器30将存储的数据发送给读缓存器40,在单端口存储器30送出所述其中一个端口的数据时,控制所述读缓存器40将第一读潜伏期之前端口发送的读指令中的读地址所对应的缓存单元的数据,向所述其中一个端口发送。
读潜伏期为延迟发送数据的时间,即在收到数据后,经过读潜伏期的时间将数据发送,根据需要读潜伏期的时间可以设定读潜伏期。
这里的第一读潜伏期以及后面涉及的第二、第三和第四读潜伏期的作用都相同,只是读潜伏期的时间不同,不再一一解释。
其中,控制单元10还可以进一步包括:读指令缓存控制模块104、读出数据控制模块105和读多路连接器106。
读指令缓存控制模块104,用于根据来自所述其中一个端口的包含读地址的读指令,以及所述第二对应关系,生成并存储单端口存储器读指令(该单端口存储器读指令包括地址、读使能和片选使能),在单端口存储器30接受所述其中一个端口访问时,根据所述第二对应关系,将所述单端口存储器读指令发送给读地址对应的所述单端口存储器30。
具体的,在端口j读出数据的情况下,缓存端口j的地址、读使能和片选使能,在单端口存储器30接受端口j访问时,将缓存的地址、读使能和片选使能送入相应的单端口存储器30。例如可要求单端口存储器_i收到的读指令的地址满足A_MP_j除以NP余i的条件。
读出数据控制模块105,用于根据所述读指令和第二对应关系以及单端口存储器标识和读缓存器的缓存单元的第四对应关系,生成并存储读缓存器控制信号,在单端口存储器30送出所述其中一个端口的数据时,将所述读缓存器控制信号发送给所述读缓存器40,控制所述读缓存器40中的缓存单元存储对应的单端口存储器30的数据,在端口送出数据时,根据第一读潜伏期之前端口发送的读指令以及读缓存器的缓存单元和读地址的第五对应关系,将第一读潜伏期之前端口发送的读指令中的读地址所对应的缓存单元连接到输出端口上。
具体的,单端口存储器30送出端口j的数据时,根据生成的控制信号,控制各单端口存储器30的数据写入读缓存器_j的对应的缓存单元中,以及在随后将读缓存器_j中的数据依次送出到端口j的读出数据端口。例如可要求单端口存储器_i的数据写入读缓存器_j的第i个存储单元,如果在T_MP_latency_1(第一读潜伏期)个周期之前,端口j送入读指令的地址A_MP_j除以NP余i,则将读缓存器_j的第i个存储单元的数据连接到端口j的读出数据端口。
读多路连接器106,用于根据所述第四对应关系,对各单端口存储器30的数据输出端口和各读缓存器40的各缓存单元进行连接。
具体的,例如可将单端口存储器_i的读出数据端口连接到各读缓存器的第i个存储单元。
与所述其中一个端口相对应的读缓存器40,用于在所述控制单元10的控制下,存储收到的数据,并将所述第一读潜伏期之前,端口发送的读指令中的读地址所对应的缓存单元的数据,向端口发送。
具体的,读缓存器40在所述读缓存器控制信号的控制下,根据所述第四对应关系,将收到的所述单端口存储器的数据存储到单端口存储器标识对应的缓存单元,并根据所述第五对应关系,将所述第一读潜伏期之前,端口发送的读指令中的读地址所对应的缓存单元的数据,向端口发送。
所述读缓存器与特定的端口相对应,包含NP个n bits的存储单元(存储单元0-存储单元NP-1)和写使能控制电路及多路选择电路。在控制单元10的控制下,当单端口存储器30送出所述其中一个端口数据时,依据单端口存储器30的标识,缓存单端口存储器30的数据到对应的缓存单元中,例如可要求第i个存储单元缓存单端口存储器_i的数据;随后在控制单元10的控制下,依据缓存的读指令,将各存储单元的数据依次选择送出到多端口的读出数据端口。例如可要求如果在T_MP_latency_1(第一读潜伏期)个周期之前,端口j送入读指令的地址A_MP_j除以NP余i,则将读缓存器_j的第i个存储单元的数据连接到端口j的读出数据端口。
则单端口存储器30在所述控制单元10的控制下,向所述读缓存器发送存储的数据。
具体的,单端口存储器30在收到所述单端口存储器读指令后,经过第二读潜伏期,向所述读缓存器40发送存储的数据。
单端口存储器30在控制单元10的控制下通过读缓存器40轮流接受各端口的访问。NP个单端口存储器组合构成虚拟多端口存储器的存储空间,例如数据存储结构可如图4所示,单端口存储器的编号为0~NP-1,设第i个单端口存储器的地址用A_SP_i表示(0≤i≤NP-1),虚拟多端口存储器的第j个端口的地址用A_MP_j表示(0≤j≤NP-1),则第i个单端口存储器储的第A_SP_i单元存储多端口地址A_MP_j=NP×A_SP_i+i的数据。各单端口存储器送出的读出数据均通过控制单元10分选送给各多端口的读缓存器40。
在具体实施过程中,同一端口对应的写缓存器20和读缓存器40可以置于同一实体中。需要说明的是,本发明实施例的单端口存储器30、写缓存器20和读缓存器40的存储空间并不局限于上述分配方式,其他类似的分配方式同样适用本发明实施例。
其中,单端口存储器是否接受所述其中一个端口访问是根据端口选择信号确定的。
在具体实施过程中,所述第一对应关系,第二对应关系和第三对应关系中的任何一个对应关系可由其它两个对应关系确定。
所述第二对应关系,第四对应关系和第五对应关系中的任何一个对应关系可由其它两个对应关系确定。
需要说明的是,本发明实施例虚拟多端口存储器的存储数据涉及的模块和读取数据涉及的模块可以在一个实体中共同存在,也可以分开在两个不同实体中,也就是说,本发明实施例存储数据涉及的模块和读取数据涉及的模块是相互独立存在的,即可以用本发明实施例存储数据涉及的模块,和其他读取数据的模块共同使用;同理,可以用本发明实施例读取数据涉及的模块,和其他存储数据的模块共同使用;当然,较佳的方式是将本发明实施例存储数据涉及的模块和读取数据涉及的模块在一起共同使用。
本发明实施例虚拟多端口存储器如果只涉及读取数据功能,则虚拟多端口存储器包括:控制单元、单端口存储器、读缓存器,其中,控制单元还包括:读指令缓存控制模块、读出数据控制模块、读多路连接器,具体的模块功能与上述读取数据涉及的模块功能相同,不再赘述。
复用控制模块102用于控制单端口存储器30轮流接受各端口的访问。单端口存储器复用的情况可如图5所示,图中假设单端口存储器的第二读潜伏期(T_SP_latency_2)为1个周期,即单端口存储器在接收读指令后的下一个周期送出相应数据。如图5所示的例子中,在第0个周期选择端口0,第NP-1个周期选择端口NP-1,随后重复如上选择。在单端口存储器选择端口j时,单端口存储器可接收来自端口j的控制信号和写入数据,如果接收了读指令,将在T_SP_latency_2个周期后送出端口j的读出数据。单端口存储器的第二读潜伏期为其它值的情况与图5所示情况类似,只是各单端口存储器的读出数据的波形根据潜伏期的值相应的向右移动。
在具体实施过程中,虚拟多端口存储器在写入数据时,会延迟1-NP个周期才能将多端口上的地址、数据和写使能信号送到单端口存储器。在读取数据时,多端口上的第一读潜伏期T_MP_latency_1=T_SP_latency_2+NP。
为了便于本领域普通技术人员更好的理解本发明,下面以两个端口为例,对本发明进行详细说明。
如图6所示,本发明实施例第一种虚拟双端口存储器包括:单端口存储器0,单端口存储器1,写缓存器A,写缓存器B,读缓存器A,读缓存器B和控制单元。
假设希望得到数据位宽为n bits、地址深度为2m,地址位宽为m bits、写使能位宽为k bits的虚拟双端口存储器,则要求单端口存储器的数据位宽为n bits、地址深度为2m-1,地址位宽为m-1 bits、写使能位宽为k bits,读/写缓存器为2×nbits。
单端口存储器中数据的存储结构如图7所示。单端口存储器_0的地址A_SP_0指向的n bits数据对应于端口A/B的特定地址(A_DP_j[m-1:0]={A_SP_0[m-2:0],0},j=A或B)所指向的n bits数据。单端口存储器_1的地址A_SP_1指向的n bits数据对应于端口A/B的特定地址(A_DP_j[m-1:0]={A_SP_1[m-2:0],1},j=A或B)所指向的n bits数据。
写缓存器包含两个n bits的存储单元,写存储单元0和写存储单元1,用于缓存两个周期的写入数据。写存储单元0缓存端口A/B地址是偶数(A_DP_j[0]=0,j=A或B)的数据,写存储单元1缓存端口A/B地址是奇数(A_DP_j[0]=1,j=A或B)的数据。再根据port_sel信号,每隔一个周期将缓存的数据写入单端口存储器。
读缓存器包含两个n bits的存储单元,读存储单元0和读存储单元1,用于缓存两周期的读出数据。读存储单元0缓存端口A/B地址是偶数(A_DP_j[0]=0,j=A或B)的数据,读存储单元1缓存端口A/B地址是奇数(A_DP_j[0]=1,j=A或B)的数据。
控制单元用于缓存各端口的读/写指令,控制各端口读/写缓存器的工作,并控制单端口存储器的复用和读/写操作。其输出信号和输入信号的关系为:
port_sel:端口选择信号,根据port_sel来选择A端口或B端口访问单端口存储器。port_sel为CLK的二分频,每一个CLK周期翻转一次。为描述方便,本说明中假设port_sel为0时选择端口A,port_sel为1时选择端口B。
buf_wr_en_A[1:0]:写缓存器_A的写使能。在端口A写入数据时,如果端口A的写地址是偶数,则buf_wr_en_A[0]有效,数据线D_DP_A[n-1:0]的数据写入写缓存器_A的写存储单元0;如果端口A的写地址是奇数,则buf_wr_en_A[1]有效,数据线D_DP_A[n-1:0]的数据写入写缓存器_A的写存储单元1。
buf_rd_en_A[1:0]:读缓存器_A的读使能。在单端口存储器_0向端口A送出数据时,buf_rd_en_A[0]有效,Q_SP_0[n-1:0]被写入到读缓存器_A的读存储单元0;在单端口存储器_1向端口A送出数据时,buf_rd_en_A[1]有效,Q_SP_1[n-1:0]被写入到读缓存器_A的读存储单元1。
rd_data_sel_A:读缓存器_A的读出数据选择信号,选择读缓存器_A的读存储单元0或读存储单元1连接到Q_DP_A上。如果在T_DP_latency(虚拟双端口存储器的读潜伏期)个周期之前,端口A发出读地址为偶数的读指令,则rd_data_sel_A选择读缓存器_A的读存储单元0连接到Q_DP_A上;如果在T_DP_latency个周期之前,端口A发出读地址为奇数的读指令,则选择读缓存器A的读存储单元1连接到Q_DP_A上。
A_SP_0[m-2:0]、CEN_SP_0、WEN_SP_0[k-1]和OEN_SP_0:单端口存储器_0的地址和控制使能信号。
1.在port_sel选择端口A进行读操作时,A_SP_0[m-2:0]、CEN_SP_0、WEN_SP_0[k-1]和OEN_SP_0等于在当前周期和前一周期中端口A访问单端口存储器_0的A_DP_A[m-1:1]、CEN_DP_A、WEN_DP_A[k-1]和OEN_DP_A。
2.在port_sel选择端口A进行写操作时,A_SP_0[m-2:0]、CEN_SP_0、WEN_SP_0[k-1]和OEN_SP_0等于在前两个周期中端口A访问单端口存储器_0的A_DP_A[m-1:1]、CEN_DP_A、WEN_DP_A[k-1]和OEN_DP_A。
3.在port_sel选择端口B进行读操作时,A_SP_0[m-2:0]、CEN_SP_0、WEN_SP_0[k-1]和OEN_SP_0等于在当前周期和前一周期中端口B访问单端口存储器_0的A_DP_B[m-1:1]、CEN_DP_B、WEN_DP_B[k-1]和OEN_DP_B。
4.在port_sel选择端口B进行写操作时,A_SP_0[m-2:0]、CEN_SP_0、WEN_SP_0[k-1]和OEN_SP_0等于在前两个周期中端口B访问单端口存储器_0的A_DP_B[m-1:1]、CEN_DP_B、WEN_DP_B[k-1]和OEN_DP_B。
buf_wr_en_B[1:0],buf_rd_en_B[1:0],rd_data_sel_B,A_SP_1[m-2:0]、CEN_SP_1、WEN_SP_1[k-1]和OEN_SP_1同buf_wr_en_A[1:0],buf_rd_en_A[1:0],rd_data_sel_A,A_SP_0[m-2:0]、CEN_SP_0、WEN_SP_0[k-1]和OEN_SP_0类似,不再赘述。
图8,图9,图10和图11显示了第一种虚拟双端口存储器的端口A、B同时读/写数据的时序图,其中假设单端口存储器的读潜伏期为1个周期。可见在端口的读/写指令连续或不连续的情况下,都可以保证两端同时访问虚拟双端口存储器。图8表示端口A向双端口地址为0-4的存储单元写入数据,同时端口B向双端口地址为10-14的存储单元写入数据。图9表示端口A向双端口地址为5-9的存储单元写入数据,同时端口B从双端口地址为0-4的存储单元读出数据。图10表示端口A从双端口地址为10-14的存储单元读出数据,同时端口B向双端口地址为15-19的存储单元写入数据。图11表示端口A从双端口地址为15-19的存储单元读出数据,同时端口B从双端口地址为5-9的存储单元读出数据。
以图9为例,具体的读写时序如下:
第一周期:端口A写入数据D_5,控制单元缓存该写指令,并将D_5缓存至写缓存器A的存储单元1。端口B送入读数据D_0的读指令,控制单元缓存该读指令。
第二周期:端口A没有操作。端口B送入读数据D_1的读指令。因为单端口存储器在本周期接受端口B的访问,控制单元将缓存的上一周期读数据D_0的读指令送入单端口存储器0,并将本周期读数据D_1的读指令送入单端口存储器1。
第三周期:端口A写入数据D_6,控制单元缓存该写指令,并将D_6缓存至写缓存器A的存储单元0。端口B没有操作。因为单端口存储器在本周期接受端口A的访问,控制单元将缓存的上两个周期的写数据D_5的写指令和数据送入单端口存储器1。因为单端口存储器在本周期送出上一周期端口B的读数据,控制单元将单端口存储器0送出数据D_0缓存至读缓存器B的存储单元0,单端口存储器1送出数据D_1缓存至读缓存器B的存储单元1。
第四周期:端口A写入数据D_7,控制单元缓存该写指令,并将D_7缓存至写缓存器A的存储单元1。端口B送入读数据D_2的读指令。因为单端口存储器在本周期接受端口B的访问,控制单元将本周期读数据D_2的读指令送入单端口存储器0。因为端口B在3个周期前送入了读数据D_0的指令,所以控制单元将读缓存器B的存储单元0中缓存的数据D_0连接到端口B的读出数据端口上。
第五周期:端口A没有操作。端口B送入读数据D_3的读指令,控制单元缓存该读指令。因为单端口存储器在本周期接受端口A的访问,控制单元将缓存的上两个周期的写数据D_6的写指令和数据送入单端口存储器0,并将缓存的上一个周期的写数据D_7的写指令和数据送入单端口存储器1。因为单端口存储器在本周期送出上一周期端口B的读数据,控制单元将单端口存储器0送出数据D_2缓存至读缓存器B的存储单元0。因为端口B在3个周期前送入了读数据D_1的指令,所以控制单元将读缓存器B的存储单元1中缓存的数据D_1连接到端口B的读出数据端口上。
第六周期:端口A写入数据D_8,控制单元缓存该写指令,并将D_8缓存至写缓存器A的存储单元0。端口B送入读数据D_4的读指令。因为单端口存储器在本周期接受端口B的访问,控制单元将缓存的上一周期读数据D_3的读指令送入单端口存储器1,并将本周期读数据D_4的读指令送入单端口存储器0。
第七周期:端口A写入数据D_9,控制单元缓存该写指令,并将D_9缓存至写缓存器A的存储单元1。端口B没有操作。因为单端口存储器在本周期接受端口A的访问,控制单元将缓存的上一个周期的写数据D_8的写指令和数据送入单端口存储器0。因为单端口存储器在本周期送出上一周期端口B的读数据,控制单元将单端口存储器0送出数据D_4缓存至读缓存器B的存储单元0,单端口存储器1送出数据D_3缓存至读缓存器B的存储单元1。因为端口B在3个周期前送入了读数据D_2的指令,所以控制单元将读缓存器B的存储单元0中缓存的数据D_2连接到端口B的读出数据端口上。
第八周期:端口A没有操作。端口B没有操作。因为端口B在3个周期前送入了读数据D_3的指令,所以控制单元将读缓存器B的存储单元1中缓存的数据D_3连接到端口B的读出数据端口上。
第九周期:端口A没有操作。端口B没有操作。因为单端口存储器在本周期接受端口A的访问,控制单元将缓存的上两个周期的写数据D_9的写指令和数据送入单端口存储器1。因为端口B在3个周期前送入了读数据D_4的指令,所以控制单元将读缓存器B的存储单元0中缓存的数据D_4连接到端口B的读出数据端口上。
需要说明的是,图8、图10和图11的情况与图9类似,不再赘述。
如图12和图13所示,本发明实施例第一种虚拟多端口存储器存储数据和读取数据的方法包括下列步骤:
存储数据过程:
步骤1200、控制单元根据来自其中一个端口的包含写地址的写指令,控制写缓存器将所述其中一个端口的数据存储到与所述写地址对应的缓存单元,在所述单端口存储器接受所述其中一个端口访问时,控制所述单端口存储器存储来自所述写缓存器的数据。
具体的,在端口写入数据时,控制单元根据来自所述其中一个端口的包含写地址的写指令,以及端口地址和写缓存器的缓存单元的第一对应关系,生成写缓存器控制信号,并发送给所述其中一个端口对应的所述写缓存器,所述写缓存器在所述写缓存器控制信号的控制下,根据所述第一对应关系,将来自所述其中一个端口的数据存储到写地址对应的缓存单元。控制单元同时根据该写指令,以及端口地址和单端口存储器标识的第二对应关系,生成单端口存储器写指令,所述控制单元在单端口存储器接受所述其中一个端口访问时,将所述单端口存储器写指令发送给写地址对应的单端口存储器。
步骤1201、与所述其中一个端口相对应的所述写缓存器在所述控制单元的控制下,存储所述其中一个端口的数据,在所述单端口存储器接受所述其中一个端口访问时,在一个周期内将存储的所述其中一个端口的数据发送给对应的单端口存储器,以及所述单端口存储器在所述控制单元的控制下,存储来自所述写缓存器的数据。
所述写缓存器在所述单端口存储器接受所述其中一个端口访问时,根据写缓存器的缓存单元和单端口存储器标识的第三对应关系,在一个周期内将所述其中一个端口对应的各缓存单元的数据发送给对应的单端口存储器。所述单端口存储器根据收到的所述单端口存储器的写指令,存储来自所述写缓存器的数据。
读取数据过程:
步骤1300、控制单元根据来自其中一个端口的包含读地址的读指令,在单端口存储器接受所述其中一个端口访问时,控制所述单端口存储器将存储的数据发送给所述读缓存器,在单端口存储器送出所述其中一个端口的数据时,控制所述读缓存器将第一读潜伏期之前端口发送的读指令中的读地址所对应的缓存单元的数据,向所述其中一个端口发送。
具体的,在端口送入读指令时,控制单元根据来自所述其中一个端口的包含读地址的读指令,以及端口地址和单端口存储器标识的第二对应关系,生成单端口存储器读指令,根据所述读指令以及第二对应关系和单端口存储器标识和读缓存器的缓存单元的第四对应关系,生成读缓存器控制信号;
在单端口存储器接受所述其中一个端口访问时,根据所述第二对应关系,将所述单端口存储器读指令发送给读地址对应的所述单端口存储器;
在单端口存储器送出所述其中一个端口的数据时,将所述读缓存器控制信号发送给所述读缓存器;
在端口送出数据时,根据第一读潜伏期之前端口发送的读指令以及所述第五对应关系,将第一读潜伏期之前端口发送的读指令中的读地址所对应的缓存单元连接到输出端口上。
步骤1301、所述单端口存储器在所述控制单元的控制下,向所述读缓存器发送存储的数据;与所述其中一个端口相对应的所述读缓存器在所述控制单元的控制下,存储收到的数据,并将所述第一读潜伏期之前,端口发送的读指令中的读地址所对应的缓存单元的数据,向端口发送。
具体的,所述单端口存储器在收到所述单端口存储器读指令后,经过第二读潜伏期,向所述读缓存器发送存储的数据,所述读缓存器在所述读缓存器控制信号的控制下,根据所述第四对应关系,将收到的所述单端口存储器的数据缓存到单端口存储器标识对应的缓存单元;
所述读缓存器在所述读缓存器控制信号的控制下,根据来自所述其中一个端口的包含读地址的读指令,以及所述第二对应关系和所述第四对应关系,将收到的所述单端口存储器的数据缓存到单端口存储器标识对应的缓存单元。
本发明实施例还可以有第二种实现方法,可在读/写路径上减少一个周期的延时。其基本原理和第一种虚拟多端口存储器实现方法一样,只是在读/写缓存的过程略有不同。
如图14所示,本发明实施例的第二种虚拟多端口存储器包括:控制单元50、写缓存器60、单端口存储器70和读缓存器80。
控制单元50还包括:写入数据控制模块500、写指令缓存控制模块501、复用控制模块502、写多路选择器503、读指令缓存控制模块504、读出数据控制模块505和读多路连接器506。
其中,除控制单元50有细微的不同外,本发明实施例的第二种虚拟多端口存储器与本发明实施例的第一种虚拟多端口存储器中的对应的模块功能相同。
写多路选择器503包括写多路选择器103的功能外,还用于:
在单端口存储器接受端口访问,并且所述其中一个端口写入数据时,根据所述第二对应关系,将所述其中一个端口的数据输入端口的数据线连接到对应的所述单端口存储器的数据输入端口。
写入数据控制模块500同写入数据控制模块100的不同之处在于:
写入数据控制模块500在单端口存储器接受端口访问,并且所述其中一个端口写入数据时,无需将所述其中一个端口的数据写入写缓存器。
写指令缓存控制模块501同写指令缓存控制模块101的不同之处在于:
写指令缓存控制模块501在单端口存储器接受端口访问,并且所述其中一个端口写入数据时,会依据所述第二对应关系,将所述其中一个端口的写指令不经过存储直接送入对应的单端口存储器。
具体的,当向虚拟多端口存储器的某一端口写入数据的时候,所述其中一个端口的写缓存器缓存(NP-1)×n bits的数据,当单端口存储器接受所述其中一个端口访问时,控制单元将当前周期端口上写入的数据和所述其中一个端口的写缓存器缓存的(NP-1)×n bits数据一起写入相应的单端口存储器。
读多路连接器506包括读多路连接器106的功能外,还用于:
在单端口存储器送出端口的数据,并且所述其中一个端口送出数据时,根据所述第二对应关系,将多端口存储器第三读潜伏期之前所述其中一个端口发送的读指令中的读地址所对应的单端口存储器的数据输出端口的数据线连接到所述其中一个端口的数据输出端口。
读出数据控制模块505同读出数据控制模块105的不同之处在于:
在单端口存储器送出端口的数据,并且所述其中一个端口送出数据时,无需根据所述第二对应关系,将多端口存储器多端口存储器第三读潜伏期之前所述其中一个端口发送的读指令中的读地址所对应的单端口存储器的数据写入读缓存器。
在端口送出数据时,根据多端口存储器第三读潜伏期之前端口发送的读指令以及读缓存器的缓存单元和读地址的第五对应关系,将多端口存储器第三读潜伏期之前端口发送的读指令中的读地址所对应的缓存单元连接到输出端口上。
具体的,当从虚拟多端口存储器的某一端口读出数据的时候,当单端口存储器送出所述其中一个端口的数据时,单端口存储器一次送出NP×n bits的数据,其中n bits数据直接送到所述其中一个端口的数据读出端口,其余(NP-1)×n bits数据由所述其中一个端口的读缓存器缓存,在随后NP-1个周期送到所述其中一个端口的数据读出端口。
多端口存储器第三读潜伏期T_MP_latency_3=T_SP_latency_2+NP-1。
本发明实施例第二种虚拟多端口存储器存储数据和读取数据的方法与本发明实施例第一种虚拟多端口存储器存储数据和读取数据的方法类似,区别在于:
所述控制单元在单端口存储器接受端口访问,并且所述其中一个端口写入数据时,根据所述第二对应关系,将所述其中一个端口的写入数据和写指令不通过存储,直接送入对应的所述单端口存储器。
所述控制单元在单端口存储器送出端口的数据,并且所述其中一个端口送出数据时,根据所述第二对应关系,将第三读潜伏期之前所述其中一个端口发送的读指令中的读地址所对应的单端口存储器的数据不通过存储,直接输出到所述其中一个端口的数据输出端口。
在端口送出数据时,根据多端口存储器第三读潜伏期之前端口发送的读指令以及读缓存器的缓存单元和读地址的第五对应关系,将多端口存储器第三读潜伏期之前端口发送的读指令中的读地址所对应的缓存单元连接到端口的输出端口上。
本发明对于双端口的情况,还有第三种实现方法,在读/写路径上减少一个周期的延时,并将读/写缓存器减小为n bits,但电路稍复杂。其基本原理和第一种虚拟双端口存储器一样,只是在读/写缓存的过程略有不同,工作原理如下。
如图15A所示,本发明实施例的第三种虚拟双端口存储器包括控制单元、两个端口、两个单端口存储器和两个写缓存器,一个所述写缓存器同一个所述端口相对应,
控制单元,用于根据来自其中一个端口的包含写地址的写指令,以及端口地址和单端口存储器标识的第二对应关系,生成单端口存储器写指令,在单端口存储器接受所述其中一个端口的访问时,将单端口存储器写指令和所述其中一个端口的数据送入对应的单端口存储器,在单端口存储器不接受所述其中一个端口的访问时,缓存单端口存储器写指令,控制所述写缓存器存储所述其中一个端口的数据,并在单端口存储器接受所述其中一个端口的访问时,将所述写缓存器存储的数据和存储的单端口存储器写指令送入对应的所述单端口存储器。
具体的,在端口写入数据时,根据读指令中的地址和所述第二对应关系,生成单端口存储器写指令,如果单端口存储器接受所述其中一个端口的访问,则根据所述第二对应关系,将所述其中一个端口的数据和单端口存储器写指令送入对应的所述单端口存储器;如果单端口存储器不接受所述其中一个端口的访问,则将所述其中一个端口的数据送入所述其中一个端口对应的写缓存器,并将该单端口存储器写指令存储起来,在下一周期,即单端口存储器接受所述其中一个端口的访问时,根据所述第二对应关系,控制写缓存器将存储的数据送入对应的所述单端口存储器,以及自身存储的单端口存储器写指令送入对应的所述单端口存储器。
与所述其中一个端口相对应的写缓存器,用于根据所述控制单元的控制存储所述其中一个端口的数据。
单端口存储器,用于根据收到的所述单端口存储器写指令,存储收到的数据。
上述模块是数据存储时涉及的模块,如果涉及数据读出,则本发明实施例的第三种虚拟双端口存储器还可以进一步包括:两个读缓存器,一个读缓存器同一个端口相对应,其中,
所述控制单元还用于:
根据来自所述其中一个端口的包含读地址的读指令,以及端口地址和单端口存储器标识的第二对应关系,生成单端口存储器读指令,在单端口存储器接受所述其中一个端口的访问时,将单端口存储器读指令直接送入对应的单端口存储器,在单端口存储器不接受所述其中一个端口的访问时,存储单端口存储器读指令,并在单端口存储器接受所述其中一个端口的访问时,将存储的单端口存储器读指令送入对应的所述单端口存储器,在单端口存储器送出端口数据时,根据所述第二对应关系,将第四读潜伏期前所述其中一个端口送入的读地址对应的单端口存储器的数据输出端口连接到所述其中一个端口的数据输出端口,根据所述第二对应关系,将第二读潜伏期前所述其中一个端口送入的读地址对应的单端口存储器的输出数据送入所述其中一个端口对应的读缓存器,在下一个周期发送给所述其中一个端口的数据输出端口。
具体的,在端口发出读指令时,根据读指令中的地址和所述第二对应关系,生成单端口存储器读指令,如果单端口存储器接受所述其中一个端口的访问,将该单端口存储器读指令送入对应的所述单端口存储器;如果单端口存储器不接受所述其中一个端口的访问,则将该单端口存储器读指令存储起来,在下一周期,即单端口存储器接受所述其中一个端口的访问时,根据所述第二对应关系,将存储的单端口存储器读指令送入对应的所述单端口存储器;以及
在单端口存储器送出某端口数据时,如果单端口存储器在第二读潜伏期前接受的单端口存储器读指令是存储过的,则将单端口存储器送出的数据直接发送给所述其中一个端口的数据输出端口,如果单端口存储器在单端口存储器第二读潜伏期前接受的单端口存储器读指令是没有存储过的,则将单端口存储器送出的数据将发送给所述其中一个端口对应的读缓冲器,在下一个周期控制读缓冲器发送给所述其中一个端口的数据输出端口。
所述单端口存储器还用于:
根据所述单端口存储器读指令,发送对应的数据。
与所述其中一个端口相对应的所述读缓存器,用于根据所述控制单元的控制存储来自所述单端口存储器的数据,并在下一个周期将存储的数据发送给对应端口的数据输出端口。
以上双端口存储器的第四读潜伏期T_DP_latency_4=T_SP_latency_2+1。
如图15B所示,本发明实施例的第三种虚拟双端口存储器的控制单元结构示意图中,在存储数据时控制单元包括:第一生成模块1和第一处理模块2。
第一生成模块1,用于根据来自其中一个端口的包含写地址的写指令,以及端口地址和单端口存储器标识的第二对应关系,生成单端口存储器写指令。
第一处理模块2,用于在单端口存储器接受所述其中一个端口的访问时,将所述单端口存储器写指令和所述其中一个端口的数据送入对应的单端口存储器,在单端口存储器不接受所述其中一个端口的访问时,存储单端口存储器写指令,控制所述写缓存器存储所述其中一个端口的数据,并在单端口存储器接受所述其中一个端口的访问时,将所述写缓存器存储的数据和存储的单端口存储器写指令送入对应的所述单端口存储器。
在读取数据时,控制单元包括:第二生成模块3、第二处理模块4和第三处理模块5。
第二生成模块3,用于根据来自其中一个端口的包含读地址的读指令,以及端口地址和单端口存储器标识的第二对应关系,生成单端口存储器读指令。
第二处理模块4,用于在单端口存储器接受所述其中一个端口的访问时,将所述单端口存储器读指令直接送入对应的单端口存储器,在单端口存储器不接受所述其中一个端口的访问时,存储单端口存储器读指令,并在单端口存储器接受所述其中一个端口的访问时,将存储的单端口存储器读指令送入对应的所述单端口存储器。
第三处理模块5,用于在单端口存储器送出端口数据时,根据所述第二对应关系,将第四读潜伏期前所述其中一个端口送入的读地址对应的单端口存储器的数据输出端口连接到所述其中一个端口的数据输出端口,根据所述第二对应关系,将第二读潜伏期前所述其中一个端口送入的读地址对应的单端口存储器的输出数据送入所述其中一个端口对应的读缓存器,控制读缓冲器将存储的数据在下一个周期发送给所述其中一个端口的数据输出端口。
如图16A所示,本发明实施例的第三种虚拟双端口存储器存储数据的方法包括下列步骤:
步骤1600、控制单元根据来自其中一个端口的包含写地址的写指令,控制所述写缓存器将所述其中一个端口的数据存储到与所述写地址对应的缓存单元,根据来自所述其中一个端口的包含写地址的写指令,以及端口地址和单端口存储器标识的第二对应关系,生成单端口存储器写指令。
步骤1601、控制单元在单端口存储器接受所述其中一个端口的访问时,将所述单端口存储器写指令和所述其中一个端口的数据送入对应的单端口存储器,在单端口存储器不接受所述其中一个端口的访问时,存储单端口存储器写指令,控制与所述其中一个端口相对应的所述写缓存器存储所述其中一个端口的数据,并在单端口存储器接受所述其中一个端口的访问时,将所述写缓存器存储的数据和存储的单端口存储器写指令送入对应的所述单端口存储器;
步骤1602、所述单端口存储器根据收到的所述单端口存储器写指令,存储收到的数据。
如图16B所示,本发明实施例的第三种虚拟双端口存储器读取数据的方法包括下列步骤:
步骤1610、所述控制单元根据来自其中一个端口的包含读地址的读指令,以及端口地址和单端口存储器标识的第二对应关系,生成单端口存储器读指令。
步骤1611、所述控制单元在单端口存储器接受所述其中一个端口的访问时,将所述单端口存储器读指令直接送入对应的单端口存储器,在单端口存储器不接受所述其中一个端口的访问时,存储单端口存储器读指令,并在单端口存储器接受所述其中一个端口的访问时,将存储的单端口存储器读指令送入对应的所述单端口存储器。
步骤1612、所述单端口存储器根据所述单端口存储器读指令,发送对应的数据。
步骤1613、所述控制单元在单端口存储器送出端口数据时,根据所述第二对应关系,将第四读潜伏期前所述其中一个端口送入的读地址对应的单端口存储器的数据输出端口连接到所述其中一个端口的数据输出端口。
步骤1614、所述控制单元根据所述第二对应关系,将第二读潜伏期前所述其中一个端口送入的读地址对应的单端口存储器的输出数据送入与所述其中一个端口对应的读缓存器,控制读缓冲器将存储的数据在下一个周期发送给所述其中一个端口的数据输出端口。
步骤1615、与所述其中一个端口相对应的所述读缓存器根据所述控制单元的控制存储来自所述单端口存储器的数据,并在下一个周期将存储的数据发送给对应端口的数据输出端口。
需要说明的是,本发明实施例虚拟多端口存储器的存储数据涉及的模块和读取数据涉及的模块可以在一个实体中共同存在,也可以分开在两个不同实体中,也就是说,本发明实施例存储数据涉及的模块和读取数据涉及的模块是相互独立存在的,即可以用本发明实施例存储数据涉及的模块,和其他读取数据的模块共同使用;同理,可以用本发明实施例读取数据涉及的模块,和其他存储数据的模块共同使用;当然,较佳的方式是将本发明实施例存储数据涉及的模块和读取数据涉及的模块在一起共同使用。
虚拟多端口存储器在两个大块数据访问操作交替的时候,为了保证NP个周期内端口不访问同一单端口存储器,需在两段操作间保证有至少NP-1个周期的间隙。
本发明实施例还可以在细节上做一些变动。如可以在单端口存储器的输入/输出端口增加一级缓存器,以改善单端口存储器的相关路径上的时序,但这样会相应的增加双端口上的读写延时。
以上所述的虚拟多端口存储器工作在单一的时钟频率下,如果希望得到跨多个时钟域的虚拟多端口存储器,则可以将上述单时钟虚拟多端口存储器置于频率最高的时钟域,再将其它时钟域的信号通过同步逻辑同步到该时钟域并连接到单时钟虚拟多端口存储器上即可。
本发明实施例可用于任意端口j,连续NP个周期的访问地址A_MP_j除以NP得到的余数不相同,即在连续NP个周期内端口不访问同一单端口存储器的情况。最常见的应用是在各端口之间交换大量连续的数据。
从上述内容可知:本发明的虚拟多端口存储器(端口数NP≥2)包括NP个单端口存储器、NP个和端口对应的写缓存器和读缓存器,以及控制单元。NP个单端口存储器轮流接受NP个端口的访问,每次访问接收/送出NP个周期的数据,从而保证各端口数据传输的码率,由于采用低成本的单元端口存储器在特定应用中替代高成本的多端口存储器,从而减小存储器的面积,节省成本。
显然,本领域的技术人员可以对本发明进行改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (20)

1.一种虚拟多端口存储器,其特征在于,所述虚拟多端口存储器包括控制单元、至少两个端口、至少两个单端口存储器、至少两个写缓存器和至少两个读缓存器,其中,所述单端口存储器的数量和端口数量相同,所述写缓存器的数量和端口数量相同,一个所述写缓存器同一个所述端口相对应,所述写缓存器包括多个缓存单元,所述读缓存器与所述端口数量相同,一个所述读缓存器同一个所述端口相对应,所述读缓存器包括多个缓存单元;
所述控制单元,用于根据来自其中一个端口的包含写地址的写指令,控制所述写缓存器将所述其中一个端口的数据存储到与所述写地址对应的缓存单元,在所述单端口存储器接受所述其中一个端口访问时,控制所述单端口存储器存储来自所述写缓存器的数据,以及根据来自其中一个端口的包含读地址的读指令,在所述单端口存储器接受所述其中一个端口访问时,控制所述单端口存储器将存储的数据发送给所述读缓存器,在所述单端口存储器送出所述其中一个端口的数据时,控制所述读缓存器将第一读潜伏期之前端口发送的读指令中的读地址所对应的缓存单元的数据,向所述其中一个端口发送;
与所述其中一个端口相对应的所述写缓存器,用于在所述控制单元的控制下,存储所述其中一个端口的数据,在所述单端口存储器接受所述其中一个端口访问时,在一个周期内将存储的所述其中一个端口的数据发送给对应的所述单端口存储器;
与所述其中一个端口相对应的所述读缓存器,用于在所述控制单元的控制下,存储收到的数据,并将所述第一读潜伏期之前,端口发送的读指令中的读地址所对应的缓存单元的数据,向端口发送;
所述单端口存储器,用于在所述控制单元的控制下,存储来自所述写缓存器的数据,或发送存储的数据。
2.如权利要求1所述的虚拟多端口存储器,其特征在于,所述控制单元包括:
写入数据控制模块,用于在收到所述其中一个端口的包含写地址的写指令后,根据所述写指令以及端口地址和写缓存器的缓存单元的第一对应关系,生成写缓存器控制信号,向所述写缓存器发送;
写指令缓存控制模块,用于根据所述端口的写指令,生成并缓存单端口存储器写指令,在单端口存储器接受所述其中一个端口访问时,根据端口地址和单端口存储器标识的第二对应关系,将所述单端口存储器写指令发送给对应的所述单端口存储器;
复用控制模块,用于生成端口选择信号;
写多路选择器,用于根据所述端口选择信号以及写缓存器的缓存单元和单端口存储器标识的第三对应关系,将当前周期所述单端口存储器接受访问的所述写缓存器的各缓存单元的数据线,连接到对应的所述单端口存储器的数据输入端口;
所述写缓存器用于:
在所述写缓存器控制信号的控制下,根据所述第一对应关系,将来自所述其中一个端口的多个周期的数据存储到写地址对应的缓存单元,在所述单端口存储器接受所述其中一个端口访问时,根据所述第三对应关系,在一个周期内将所述其中一个端口对应的各缓存单元的数据发送给对应的所述单端口存储器;
所述单端口存储器用于:
根据收到的所述单端口存储器的写指令,存储来自所述写缓存器的数据。
3.如权利要求2所述的虚拟多端口存储器,其特征在于,所述写多路选择器还用于:
在所述单端口存储器接受端口访问,并且所述其中一个端口写入数据时,根据所述第二对应关系,将所述其中一个端口的数据输入端口的数据线连接到对应的所述单端口存储器的数据输入端口;
所述单端口存储器还用于:
根据收到的所述单端口存储器的写指令,存储来自所述端口的数据。
4.如权利要求2所述的虚拟多端口存储器,其特征在于,所述控制单元包括:
读指令缓存控制模块,用于根据来自所述其中一个端口的包含读地址的读指令,以及所述第二对应关系,生成并存储单端口存储器读指令,在所述单端口存储器接受所述其中一个端口访问时,根据所述第二对应关系,将所述单端口存储器读指令发送给读地址对应的所述单端口存储器;
读出数据控制模块,用于根据来自所述其中一个端口的包含读地址的读指令,以及所述第二对应关系以及单端口存储器标识和读缓存器的缓存单元的第四对应关系,生成并存储读缓存器控制信号,在所述单端口存储器送出所述其中一个端口的数据时,将所述读缓存器控制信号发送给所述读缓存器,控制所述读缓存器中的缓存单元存储对应的所述单端口存储器的数据,在端口送出数据时,根据多端口存储器第一读潜伏期之前端口发送的读指令以及读缓存器的缓存单元和读地址的第五对应关系,将多端口存储器第一读潜伏期之前端口发送的读指令中的读地址所对应的缓存单元连接到端口的输出端口上;
读多路连接器,用于根据所述第四对应关系,对各所述单端口存储器的数据输出端口和各读缓存器的各缓存单元进行连接;
所述单端口存储器用于:
在收到所述单端口存储器读指令后,经过所述单端口存储器的第二读潜伏期,向所述读缓存器发送存储的数据;
与所述其中一个端口相对应的所述读缓存器用于:
在所述读缓存器控制信号的控制下,根据所述第四对应关系,将收到的所述单端口存储器的数据存储到单端口存储器标识对应的缓存单元,并根据所述第五对应关系,将所述第一读潜伏期之前,端口发送的读指令中的读地址所对应的缓存单元的数据,向端口发送。
5.如权利要求4所述的虚拟多端口存储器,其特征在于,所述读多路连接器还用于:
在所述单端口存储器送出端口的数据,并且所述其中一个端口送出数据时,根据所述第二对应关系,将多端口储存器第三读潜伏期之前所述其中一个端口发送的读指令中的读地址所对应的所述单端口存储器的数据输出端口的数据线连接到所述其中一个端口的数据输出端口;
所述读出数据控制模块还用于:
在端口送出数据时,根据所述第五对应关系,控制所述读缓存器将所述第三读潜伏期之前,端口发送的读指令中的读地址所对应的缓存单元的数据,向端口发送;
所述读缓存器还用于:
在所述读出数据控制模块的控制下,将存储的数据,向端口发送;
所述单端口存储器还用于:
在收到所述单端口存储器读指令,并且在所述第二读潜伏期后,向所述端口发送存储的数据。
6.如权利要求1所述的虚拟多端口存储器,其特征在于,所述虚拟多端口存储器为虚拟双端口存储器,所述虚拟双端口存储器包括两个单端口存储器、两个写缓存器和两个读缓存器,其中,一个所述写缓存器同一个所述端口相对应,一个所述读缓存器同一个所述端口相对应;
所述控制单元包括:
第一生成模块,用于根据来自所述其中一个端口的包含写地址的写指令,以及端口地址和单端口存储器标识的第二对应关系,生成单端口存储器写指令;
第一处理模块,用于在所述单端口存储器接受所述其中一个端口的访问时,将所述单端口存储器写指令和所述其中一个端口的数据送入对应的所述单端口存储器,在所述单端口存储器不接受所述其中一个端口的访问时,存储单端口存储器写指令,控制所述写缓存器存储所述其中一个端口的数据,并在所述单端口存储器接受所述其中一个端口的访问时,将所述写缓存器存储的数据和存储的单端口存储器写指令送入对应的所述单端口存储器;
第二生成模块,用于根据来自其中一个端口的包含读地址的读指令,以及端口地址和单端口存储器标识的第二对应关系,生成单端口存储器读指令;
第二处理模块,用于在所述单端口存储器接受所述其中一个端口的访问时,将所述单端口存储器读指令直接送入对应的所述单端口存储器,在所述单端口存储器不接受所述其中一个端口的访问时,存储单端口存储器读指令,并在所述单端口存储器接受所述其中一个端口的访问时,将存储的单端口存储器读指令送入对应的所述单端口存储器;
第三处理模块,用于在所述单端口存储器送出端口数据时,根据所述第二对应关系,将第四读潜伏期前所述其中一个端口送入的读地址对应的所述单端口存储器的数据输出端口连接到所述其中一个端口的数据输出端口,根据所述第二对应关系,将第二读潜伏期前所述其中一个端口送入的读地址对应的所述单端口存储器的输出数据送入所述其中一个端口对应的读缓存器,控制读缓冲器将存储的数据在下一个周期发送给所述其中一个端口的数据输出端口;
所述单端口存储器用于:
根据收到的所述单端口存储器写指令,存储收到的数据,以及根据收到的所述单端口存储器读指令,发送对应的数据。
所述读缓存器用于:
根据所述控制单元的控制,存储来自所述单端口存储器的数据,并在下一个周期将存储的数据发送给对应端口的数据输出端口。
7.如权利要求1所述的虚拟多端口存储器,其特征在于,所述控制单元包括:
读指令缓存控制模块,用于根据来自所述其中一个端口的包含读地址的读指令,以及端口地址和单端口存储器标识的第二对应关系,生成并存储单端口存储器读指令,在所述单端口存储器接受所述其中一个端口访问时,根据所述第二对应关系,将所述单端口存储器读指令发送给读地址对应的所述单端口存储器;
读出数据控制模块,用于根据来自所述其中一个端口的包含读地址的读指令、所述第二对应关系和以及单端口存储器标识和读缓存器的缓存单元的第四对应关系,生成并存储读缓存器控制信号,在所述单端口存储器送出所述其中一个端口的数据时,将所述读缓存器控制信号发送给所述读缓存器,控制所述读缓存器中的缓存单元存储对应的所述单端口存储器的数据,在端口送出数据时,根据第一读潜伏期之前端口发送的读指令以及读缓存器的缓存单元和读地址的第五对应关系,将第一读潜伏期之前端口发送的读指令中的读地址所对应的缓存单元连接到输出端口上;
读多路连接器,用于根据所述第四对应关系,对各所述单端口存储器的数据输出端口和各读缓存器的各缓存单元进行连接;
所述单端口存储器用于:
在收到所述单端口存储器读指令后,经过第二读潜伏期,向所述读缓存器发送存储的数据;
所述读缓存器用于:
在所述读缓存器控制信号的控制下,根据所述第四对应关系,将收到的所述单端口存储器的数据存储到单端口存储器标识对应的缓存单元,并根据所述第五对应关系,将所述第一读潜伏期之前,端口发送的读指令中的读地址所对应的缓存单元的数据,向端口发送。
8.如权利要求7所述的虚拟多端口存储器,其特征在于,所述读多路连接器还用于:
在所述单端口存储器送出端口的数据,并且所述其中一个端口送出数据时,根据所述第二对应关系,将第三读潜伏期之前所述其中一个端口发送的读指令中的读地址所对应的所述单端口存储器的数据输出端口的数据线连接到所述其中一个端口的数据输出端口;
所述读出数据控制模块还用于:
在端口送出数据时,根据所述第五对应关系,控制所述读缓存器将所述第三读潜伏期之前,端口发送的读指令中的读地址所对应的缓存单元的数据,向端口发送;
所述读缓存器还用于:
在所述读出数据控制模块的控制下,将存储的数据,向端口发送;
所述单端口存储器还用于:
在收到所述单端口存储器读指令,并且在所述第二读潜伏期后,向所述端口发送存储的数据。
9.如权利要求7所述的虚拟多端口存储器,其特征在于,所述虚拟多端口存储器为虚拟双端口存储器,所述虚拟双端口存储器包括,两个读缓存器,其中,一个所述读缓存器同一个所述端口相对应,
所述控制单元包括:
第二生成模块,用于根据来自所述其中一个端口的包含读地址的读指令,以及端口地址和单端口存储器标识的第二对应关系,生成单端口存储器读指令;
第二处理模块,用于在所述单端口存储器接受所述其中一个端口的访问时,将所述单端口存储器读指令直接送入对应的所述单端口存储器,在所述单端口存储器不接受所述其中一个端口的访问时,存储单端口存储器读指令,并在所述单端口存储器接受所述其中一个端口的访问时,将存储的单端口存储器读指令送入对应的所述单端口存储器;
第三处理模块,用于在所述单端口存储器送出端口数据时,根据所述第二对应关系,将第四读潜伏期前所述其中一个端口送入的读地址对应的所述单端口存储器的数据输出端口连接到所述其中一个端口的数据输出端口,根据所述第二对应关系,将第二读潜伏期前所述其中一个端口送入的读地址对应的所述单端口存储器的输出数据送入所述其中一个端口对应的读缓存器,控制读缓冲器将存储的数据在下一个周期发送给所述其中一个端口的数据输出端口;
所述单端口存储器用于:
根据所述单端口存储器读指令,发送对应的数据;
所述读缓存器用于:
根据所述控制单元的控制,存储来自所述单端口存储器的数据,并在下一个周期将存储的数据发送给对应端口的数据输出端口。
10.如权利要求1-9任一权利要求所述的虚拟多端口存储器,其特征在于,所述单端口存储器是否接受所述其中一个端口访问是根据端口选择信号确定的。
11.一种存储数据的方法,应用于虚拟多端口存储器,其特征在于,所述虚拟多端口存储器包括控制单元、至少两个端口、至少两个单端口存储器、至少两个写缓存器和至少两个读缓存器,其中,所述单端口存储器的数量和端口数量相同,所述写缓存器的数量和端口数量相同,一个所述写缓存器同一个所述端口相对应,所述写缓存器包括多个缓存单元,所述读缓存器与所述端口数量相同,一个所述读缓存器同一个所述端口相对应,所述读缓存器包括多个缓存单元,该方法包括:
控制单元根据来自其中一个端口的包含写地址的写指令,控制所述写缓存器将所述其中一个端口的数据存储到与所述写地址对应的缓存单元,在所述单端口存储器接受所述其中一个端口访问时,控制所述单端口存储器存储来自所述写缓存器的数据;
与所述其中一个端口相对应的所述写缓存器在所述控制单元的控制下,存储所述其中一个端口的数据,在所述单端口存储器接受所述其中一个端口访问时,在一个周期内将存储的所述其中一个端口的数据发送给对应的所述单端口存储器;
所述单端口存储器在所述控制单元的控制下,存储来自所述写缓存器的数据;
控制单元根据来自其中一个端口的包含读地址的读指令,在所述单端口存储器接受所述其中一个端口访问时,控制所述单端口存储器将存储的数据发送给所述读缓存器,在所述单端口存储器送出所述其中一个端口的数据时,控制所述读缓存器将第一读潜伏期之前端口发送的读指令中的读地址所对应的缓存单元的数据,向所述其中一个端口发送;
所述单端口存储器在所述控制单元的控制下,发送存储的数据;
与所述其中一个端口相对应的所述读缓存器在所述控制单元的控制下,存储收到的数据,并将所述第一读潜伏期之前,端口发送的读指令中的读地址所对应的缓存单元的数据,向端口发送。
12.如权利要求11所述的方法,其特征在于,所述控制单元控制所述写缓存器包括:
所述控制单元根据来自所述其中一个端口的包含写地址的写指令,以及端口地址和写缓存器的缓存单元的第一对应关系,生成写缓存器控制信号,在端口写入数据时,将所述写缓存器控制信号发送给与所述其中一个端口对应的所述写缓存器;
则所述写缓存器在所述写缓存器控制信号的控制下,根据所述第一对应关系,将来自所述其中一个端口的多个周期的数据存储到写地址对应的缓存单元,并在所述单端口存储器接受所述其中一个端口访问时,根据写缓存器的缓存单元和单端口存储器标识的第三对应关系,在一个周期内将所述其中一个端口对应的各缓存单元的数据发送给对应的所述单端口存储器。
13.如权利要求12所述的方法,其特征在于,所述控制单元控制所述单端口存储器包括:
所述控制单元根据来自所述其中一个端口的包含写地址的写指令,以及端口地址和单端口存储器标识的第二对应关系,生成单端口存储器写指令,在所述单端口存储器接受端口访问,并且所述其中一个端口写入数据时,根据所述第二对应关系,将所述其中一个端口的数据输入端口的数据线连接到对应的所述单端口存储器的数据输入端口;
则所述单端口存储器根据收到的所述单端口存储器的写指令,存储来自所述写缓存器的数据。
14.如权利要求13所述的方法,其特征在于,所述方法还包括:
所述控制单元根据来自所述其中一个端口的包含读地址的读指令,以及所述第二对应关系,生成单端口存储器读指令,根据所述读指令以及单端口存储器标识和读缓存器的缓存单元的第四对应关系,生成读缓存器控制信号,在所述单端口存储器接受所述其中一个端口访问时,根据所述第二对应关系,将所述单端口存储器读指令发送给读地址对应的所述单端口存储器;
所述单端口存储器在收到所述单端口存储器读指令后,经过第二读潜伏期,向所述读缓存器发送存储的数据;
所述控制单元在所述单端口存储器送出所述其中一个端口的数据时,将所述读缓存器控制信号发送给所述读缓存器,在端口送出数据时,根据第一读潜伏期之前端口发送的读指令以及所述第五对应关系,将第一读潜伏期之前端口发送的读指令中的读地址所对应的缓存单元连接到输出端口上;
与所述其中一个端口相对应的所述读缓存器在所述读缓存器控制信号的控制下,根据来自所述其中一个端口的包含读地址的读指令,以及所述第二对应关系和所述第四对应关系,将收到的所述单端口存储器的数据存储到单端口存储器标识对应的缓存单元。
15.如权利要求13所述的方法,其特征在于,所述方法还包括:
所述控制单元在所述单端口存储器送出端口的数据,并且所述其中一个端口送出数据时,根据所述第二对应关系,将第三读潜伏期之前所述其中一个端口发送的读指令中的读地址所对应的所述单端口存储器的数据输出端口的数据线连接到所述其中一个端口的数据输出端口;
所述读缓存器在端口送出数据时,根据所述第五对应关系,将所述第三读潜伏期之前,端口发送的读指令中的读地址所对应的缓存单元的数据,向端口发送。
16.如权利要求11所述的方法,其特征在于,所述虚拟多端口存储器为虚拟双端口存储器,所述虚拟双端口存储器包括两个单端口存储器、两个写缓存器和两个读缓存器,其中,一个所述写缓存器同一个所述端口相对应,一个所述读缓存器同一个所述端口相对应;
所述控制单元控制所述单端口存储器包括:
所述控制单元根据来自所述其中一个端口的包含写地址的写指令,以及端口地址和单端口存储器标识的第二对应关系,生成单端口存储器写指令,在所述单端口存储器接受所述其中一个端口的访问时,将所述单端口存储器写指令和所述其中一个端口的数据送入对应的所述单端口存储器,在所述单端口存储器不接受所述其中一个端口的访问时,存储单端口存储器写指令,并在所述单端口存储器接受所述其中一个端口的访问时,将存储的单端口存储器写指令送入对应的所述单端口存储器;
则所述控制单元控制所述单端口存储器包括:
所述控制单元在所述单端口存储器不接受所述其中一个端口的访问时,控制所述写缓存器存储所述其中一个端口的数据,并在所述单端口存储器接受所述其中一个端口的访问时,将所述写缓存器存储的数据送入对应的所述单端口存储器;
则所述单端口存储器用于:
根据收到的所述单端口存储器写指令,存储收到的数据;
所述控制单元控制所述单端口存储器包括:
所述控制单元根据来自所述其中一个端口的包含读地址的读指令,以及端口地址和单端口存储器标识的第二对应关系,生成单端口存储器读指令,在所述单端口存储器接受所述其中一个端口的访问时,将所述单端口存储器读指令直接送入对应的所述单端口存储器,在所述单端口存储器不接受所述其中一个端口的访问时,存储单端口存储器读指令,并在所述单端口存储器接受所述其中一个端口的访问时,将存储的单端口存储器读指令送入对应的所述单端口存储器,在所述单端口存储器送出端口数据时,根据所述第二对应关系,将第四读潜伏期前所述其中一个端口送入的读地址对应的所述单端口存储器的数据输出端口连接到所述其中一个端口的数据输出端口;
所述控制单元控制所述读缓存器包括:
所述控制单元根据所述第二对应关系,将第二读潜伏期前所述其中一个端口送入的读地址对应的所述单端口存储器的输出数据送入所述其中一个端口对应的读缓存器,控制读缓冲器将存储的数据在下一个周期发送给所述其中一个端口的数据输出端口;
则所述单端口存储器根据所述单端口存储器读指令,发送对应的数据;
则所述读缓存器根据所述控制单元的控制存储来自所述单端口存储器的数据,并在下一个周期将存储的数据发送给对应端口的数据输出端口。
17.如权利要求11所述的方法,其特征在于,所述控制单元控制所述单端口存储器包括:
所述控制单元根据来自所述其中一个端口的包含读地址的读指令,以及端口地址和单端口存储器标识的第二对应关系,生成单端口存储器读指令,在所述单端口存储器接受所述其中一个端口访问时,根据所述第二对应关系,将所述单端口存储器读指令发送给读地址对应的所述单端口存储器;
则所述单端口存储器在收到所述单端口存储器读指令后,经过第二读潜伏期,向所述读缓存器发送存储的数据。
18.如权利要求17所述的方法,其特征在于,所述控制单元控制所述读缓存器包括:
所述控制单元根据来自所述其中一个端口的包含读地址的读指令以及第二对应关系和单端口存储器标识和读缓存器的缓存单元的第四对应关系,生成读缓存器控制信号,在所述单端口存储器送出所述其中一个端口的数据时,将所述读缓存器控制信号发送给所述读缓存器,在端口送出数据时,根据第一读潜伏期之前端口发送的读指令以及所述第五对应关系,将第一读潜伏期之前端口发送的读指令中的读地址所对应的缓存单元连接到输出端口上;
则所述读缓存器在所述读缓存器控制信号的控制下,根据来自所述其中一个端口的包含读地址的读指令,以及所述第二对应关系和所述第四对应关系,将收到的所述单端口存储器的数据存储到单端口存储器标识对应的缓存单元。
19.如权利要求17所述的方法,其特征在于,所述虚拟多端口存储器为虚拟双端口存储器,所述虚拟双端口存储器包括,两个读缓存器,其中,一个所述读缓存器同一个所述端口相对应,
所述控制单元控制所述单端口存储器包括:
所述控制单元根据来自所述其中一个端口的包含读地址的读指令,以及端口地址和单端口存储器标识的第二对应关系,生成单端口存储器读指令,在所述单端口存储器接受所述其中一个端口的访问时,将所述单端口存储器读指令直接送入对应的所述单端口存储器,在所述单端口存储器不接受所述其中一个端口的访问时,存储单端口存储器读指令,并在所述单端口存储器接受所述其中一个端口的访问时,将存储的单端口存储器读指令送入对应的所述单端口存储器,在所述单端口存储器送出端口数据时,根据所述第二对应关系,将第四读潜伏期前所述其中一个端口送入的读地址对应的所述单端口存储器的数据输出端口连接到所述其中一个端口的数据输出端口;
所述控制单元控制所述读缓存器包括:
所述控制单元根据所述第二对应关系,将第二读潜伏期前所述其中一个端口送入的读地址对应的所述单端口存储器的输出数据送入所述其中一个端口对应的读缓存器,控制读缓冲器将存储的数据在下一个周期发送给所述其中一个端口的数据输出端口;
则所述单端口存储器根据所述单端口存储器读指令,发送对应的数据;
则所述读缓存器根据所述控制单元的控制存储来自所述单端口存储器的数据,并在下一个周期将存储的数据发送给对应端口的数据输出端口。
20.如权利要求11-19任一权利要求所述的方法,其特征在于,所述单端口存储器是否接受所述其中一个端口访问是根据端口选择信号确定的。
CN2008101175101A 2008-07-31 2008-07-31 一种虚拟多端口存储器及其存储和读取数据的方法 Active CN101350218B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2008101175101A CN101350218B (zh) 2008-07-31 2008-07-31 一种虚拟多端口存储器及其存储和读取数据的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2008101175101A CN101350218B (zh) 2008-07-31 2008-07-31 一种虚拟多端口存储器及其存储和读取数据的方法

Publications (2)

Publication Number Publication Date
CN101350218A CN101350218A (zh) 2009-01-21
CN101350218B true CN101350218B (zh) 2010-07-07

Family

ID=40268962

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2008101175101A Active CN101350218B (zh) 2008-07-31 2008-07-31 一种虚拟多端口存储器及其存储和读取数据的方法

Country Status (1)

Country Link
CN (1) CN101350218B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102081591A (zh) * 2011-01-27 2011-06-01 中国第一汽车集团公司 双端口存储器在双cpu结构设计中的应用
CN102736887B (zh) * 2011-04-01 2015-05-13 珠海全志科技股份有限公司 一种fifo存储器和存储控制装置
US9158683B2 (en) * 2012-08-09 2015-10-13 Texas Instruments Incorporated Multiport memory emulation using single-port memory devices
CN103594110B (zh) * 2012-08-15 2017-09-15 上海华虹集成电路有限责任公司 替代双端口静态存储器的存储器结构
US10977057B2 (en) * 2017-01-23 2021-04-13 Via Labs, Inc. Electronic apparatus capable of collectively managing different firmware codes and operation method thereof
CN108337070A (zh) * 2018-03-21 2018-07-27 上海交通大学 一种ldpc码信道解码器及其解码方法
CN108646980A (zh) * 2018-04-27 2018-10-12 江苏华存电子科技有限公司 一种有效利用内存带宽的方法

Also Published As

Publication number Publication date
CN101350218A (zh) 2009-01-21

Similar Documents

Publication Publication Date Title
CN101350218B (zh) 一种虚拟多端口存储器及其存储和读取数据的方法
CN102177553A (zh) 具有可配置虚拟页大小的桥接装置
CN101278352B (zh) 菊花链级联设备和方法
CN206557767U (zh) 一种基于乒乓操作结构控制数据缓存的缓存系统
CN102097122B (zh) 一种多通道共享数据缓存区的NAND flash控制器电路
CN112035381B (zh) 一种存储系统及存储数据处理方法
CN101876946B (zh) 存储器控制装置和存储器控制方法
TWI438778B (zh) 用來抑制資料錯誤之方法以及相關之記憶裝置及其控制器
CN101568903A (zh) Nand闪存的基于命令的控制
CN101568904A (zh) 非易失性存储器的成扇形展开的高速系统体系结构和输入/输出电路
CN103077123A (zh) 一种数据写入和读取方法及装置
CN101233575A (zh) 存储器的控制方法、存储系统
CN101436171B (zh) 模块化通信控制系统
CN101154433A (zh) 存储系统和该存储系统的操作方法
CN101825997A (zh) 一种异步先入先出存储器
CN101515221A (zh) 一种读数据的方法、装置和系统
JP7238171B2 (ja) 不良カラム修復を提供するメモリデバイスおよびその動作方法
CN102004626B (zh) 双口存储器
CN102789424B (zh) 基于fpga的外扩ddr2的读写方法及基于fpga的外扩ddr2颗粒存储器
CN110174995A (zh) 存储器控制器及其操作方法
CN103488597A (zh) 一种先进先出缓存器及其读写数据的方法
KR100761374B1 (ko) 플래시 메모리 제어 방법 및 장치
CN100359491C (zh) 基于mcs-51架构的16m字节数据存储器寻址空间扩充方法
CN101194241A (zh) 用于对网络和存储器进行耦合的存储器控制器和方法
CN102156676A (zh) 高速缓存系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CP03 "change of name, title or address"

Address after: No.701, 7th floor, No.10, Huayuan East Road, Haidian District, Beijing

Patentee after: Beijing Juli North Microelectronics Co.,Ltd.

Address before: 100083 room 27, No. 1601, Haidian District, Beijing, Zhichun Road

Patentee before: BEIJING ACTIONS MICROELECTRONICS Co.,Ltd.

CP03 "change of name, title or address"