存取存储器模块/增加写入端口的方法以及存储器控制器的制造方法
【专利摘要】本发明提供一种存取存储器模块/增加写入端口的方法以及存储器控制器。存储器控制器耦接于多端口存储器模块,包含至少第一存储库、第二存储库以及参考存储库;当第一数据被要求写入至第一存储库时,存储器控制器读取参考存储库中的参考数据,并将第一数据连同参考数据一并进行编码以产生第一编码后数据,且将第一编码后数据写入至第一存储库中;以及当第二数据被要求写入至第二存储库时,存储器控制器自参考存储库中读取相同位置的参考数据,并将第二数据连同参考数据一并进行编码以产生第二编码后数据,且将第二编码后数据写入至第二存储库中。本发明的存取存储器模块/增加写入端口的方法以及存储器控制器可以增加写入端口,节约成本。
【专利说明】
存取存储器模块/増加写入端口的方法以及存储器控制器
技术领域
[0001]本发明有关于存储器,尤指一种存储器模块的存取方法及相关的存储器控制器。
【背景技术】
[0002]—般来说,一个多端口存储器模块会包含多个用来储存数据的存储库,且每一个存储库都可以独立地被存取。每一个存储库也支持一或多个读取命令以及写入命令,举例来说,假设一个存储库为具有两个读取端口以及一个写入端口的二读一写存储库(2R1Wbank),则表示该存储库可以同时执行两个读取命令以及一个写入命令。然而,当存储器接收到两个或更多个写入命令,以要求将数据写入到单一个存储库时,则会有存储库冲突(bank conflict)的情形发生,而造成该多个写入命令需要被循序地执行,进而造成存储器存取延迟以及更糟的存取效率。为了解决这个问题,传统的多端口存储器模块会使用定制的电路来使能多个存取端口,或是指派多个存储器单元,例如对应到主存储库的辅助存储库或是备份存储库,以支持多个同时存取的操作。然而,这些方法会增加设计制造的成本,且/或增加芯片面积以及功率消耗,因此,如何提供一种存储器存取方法以延伸增加存储器模块的写入端口是一个重要的课题。
【发明内容】
[0003]有鉴于此,本发明特提供以下技术方案:
[0004]本发明实施例提供一种存取多端口存储器模块的方法,其中多端口存储器模块包含了多个存储库,多个存储库包含至少第一存储库、第二存储库以及参考存储库,且存取多端口存储器模块的方法包含:当第一数据被要求写入至第一存储库时,读取参考存储库中的参考数据,并将第一数据连同参考数据一并进行编码以产生第一编码后数据,且将第一编码后数据写入至第一存储库中;以及当第二数据被要求写入至第二存储库时,自参考存储库中读取相同位置的参考数据,并将第二数据连同参考数据一并进行编码以产生第二编码后数据,且将第二编码后数据写入至第二存储库中。
[0005]本发明实施例提供一种存储器控制器,耦接于多端口存储器模块,其中多端口存储器模块包含了多个存储库,多个存储库包含至少第一存储库、第二存储库以及参考存储库;当一第一数据被要求写入至第一存储库时,存储器控制器读取参考存储库中的参考数据,并将第一数据连同参考数据一并进行编码以产生第一编码后数据,且将第一编码后数据写入至第一存储库中;以及当第二数据被要求写入至第二存储库时,存储器控制器自参考存储库中读取相同位置的参考数据,并将第二数据连同参考数据一并进行编码以产生第二编码后数据,且将第二编码后数据写入至第二存储库中。
[0006]本发明实施例又提供一种增加存储器模块的写入端口的方法,包含:在存储器模块中提供第一存储库以及参考存储库;当第一数据以及第二数据同时被要求写入至第一存储库时,但是第二数据不被允许同时被写入第一存储库以更新/覆写旧数据时,读取参考存储库中的第一参考数据,将第一数据连同第一参考数据一并进行编码以产生第一编码后数据,且将第一编码后数据写入至第一存储库中;以及读取第一存储库中的旧数据,将第二数据连同旧数据一并进行编码以产生第二编码后数据,并将第二编码后数据写入至参考存储库中以更新/覆写对应于I日数据的第二参考数据。
[0007]本发明的存取存储器模块/增加写入端口的方法以及存储器控制器可以增加存储器模块的写入端口,节约成本。
【附图说明】
[0008]图1为根据本发明实施例的存储器模块的示意图。
[0009]图2A为根据本发明实施例的存取存储器模块的方法的示意图。
[0010]图2B为根据本发明实施例的读取储存在图2A所示的存储库中的数据的示意图。[0011 ]图3A为根据本发明另一实施例的存取存储器模块的方法的示意图。
[0012]图3B为根据本发明另一实施例的读取储存在图3A所示的存储库中的数据的示意图。
[0013]图4为当两笔数据D2、D3被要求写入到存储库时,根据本发明一实施例的存取存储器模块的方法的示意图。
[0014]图5为当两笔数据D2、D3被要求写入到存储库时,存储库210、220以及参考存储库230的不意图ο
[0015]图6为根据本发明实施例存取存储器模块的流程图。
[0016]图7为根据本发明实施例的读取储存在图4、5所示的存储库210、220中的数据的示意图。
[0017]图8为当两笔数据D4、D5被要求写入到相同的存储库时,存储库及参考存储库的操作示意图。
[0018]图9为根据本发明另一实施例的存取存储器模块的方法的示意图。
[0019]图10为根据本发明另一实施例的存取存储器模块的方法的示意图。
[0020]图11为根据本发明另一实施例的存取存储器模块的方法的示意图。
[0021]图12为根据本发明另一实施例的存取存储器模块的方法的示意图。
[0022]图13为N读一写存储库以及两个M读一写存储库形成(N-2)读二写特定存储器模块的示意图。
[0023]图14为N读二写存储库以及两个M读二写存储库形成(N-4)读四写特定存储器模块的示意图。
[0024]图15为根据本发明另一实施例的写入端口延伸方法的示意图。
【具体实施方式】
[0025]在说明书及权利要求书当中使用了某些词汇来指称特定的组件。所属领域中的技术人员应可理解,制造商可能会用不同的名词来称呼同样的组件。本说明书及权利要求书并不以名称的差异来作为区分组件的方式,而是以组件在功能上的差异来作为区分的基准。在通篇说明书及权利要求书当中所提及的“包含”是开放式的用语,故应解释成“包含但不限定于”。另外,“耦接”一词在此包含任何直接及间接的电气连接手段。因此,若文中描述第一装置耦接于第二装置,则代表第一装置可直接电气连接于第二装置,或通过其它装置或连接手段间接地电气连接至第二装置。
[0026]请参考图1,其为根据本发明一个实施例的存储器控制器110的示意图。如图1所示,存储器控制器110耦接于存储器模块120,且另通过总线101来耦接到需要存取存储器模块120的元件,例如中央处理器102以及图形处理器104。此外,存储器控制器110包含了地址解码器112、处理电路114、写入/读取端口 116、控制逻辑118以及仲裁器119;且存储器模块120包含写入/读取控制器122以及多个存储库126。在本实施例中,存储器模块120为支持两个或更多个读取/写入操作的多端口存储器模块,且每一个存储库126具有独立的读取/写入端口以支持多个存取操作,且每一个存储库126允许被独立地存取。此外,存储器模块120可以是多端口的静态随机存取存储器(mult1-port static random access memory(SRAM))模块或是多端口的动态随机存取存储器(dynamic random access memory (DRAM))模块,但这并非是本发明的限制条件。
[0027]关于存储器控制器110中元件的操作,地址解码器112用来对来自中央处理器102或是图形处理器104或是其他需要存取存储器模块120中数据的接收信号进行解码,以产生一或多个读取命令及/或一或多个写入命令;处理电路114用来管理及处理读取/写入命令;写入/读取端口 116用来暂时储存需要写入到存储器模块120的数据,或是暂时储存自存储器模块120读取的数据;控制逻辑118用来根据写入命令来对数据进行编码以产生编码后数据,且也用来根据读取命令以对自存储器模块120中所读取的编码后数据进行解码;以及仲裁器119用来对写入命令及读取命令进行排程。
[0028]关于存储器模块120中元件的操作,写入/读取控制器122可包含行解码器(rowdecoder)以及列解码器(column decoder),且用来对来自存储器控制器110的写入/读取命令进行解码,以存取存储库126中对应于写入/读取命令的地址上的比特位值,且每一个存储库126由一或多个芯片来实施以储存数据。
[0029]本发明的实施例中提供了一种存取存储器模块120的方法,且该方法可以在存储库126仅具有较少写入端口的情形下允许存储器模块120支持更多个写入端口,亦即增加写入端口。举例来说,每一个存储库126仅具有一个写入端口,但是存储器模块120却可以总是支持多个写入命令。本发明实施例的操作细节在以下会做具体的描述。
[0030]请参考图2A,其为根据本发明一实施例的存取存储器模块120的方法的示意图。如图2A所示,存储器模块120包含了两个存储库210、220以及参考存储库230,其中存储库210、220为一读一写(1R1W)存储库,且参考存储库230为一二读一写(2R1W)存储库。如图2A所示,当存储器模块120接收到两个写入命令,且两笔数据D0、D1分别被要求写入至存储库210、220中时,存储器控制器110会自参考存储库230中的地址AO读取一参考数据RO,且存储器控制器110对数据DO及参考数据RO—并进行编码以产生编码后数据D0’,且编码后数据D0’接着被写入到存储库210中具有地址AO的单元中;同时,存储器控制器110会自参考存储库230中的地址AO读取相同位置的参考数据R0,且存储器控制器110对数据Dl及参考数据RO—并进行编码以产生编码后数据D1’,且编码后数据D1’接着被写入到存储库220中具有地址AO的单元中。此外,在本实施例中,每一笔数据00、01、00’、01’、如都是一个比特位,且编码操作为一异或(exclusive-or,X0R)运算,亦即DO ’ =DO ? RO,且DI ’ =Dl ? RO,其中“ ? ” 是一个异或算子。
[0031]图2A所示的实施例是写入命令没有发生存储库冲突的一个例子,所以数据D0、D1在编码结束之后可以同时且直接地分别写入到存储库210、220中。
[0032]请参考图2B,其为根据本发明一个实施例的读取储存在图2A所示的存储库中的数据的示意图。如图2B所示,存储器模块120接收到两个读取命令,且要求自存储库210、220中分别读取数据D0、D1。存储器控制器110分别自存储库210以及参考存储库230中读取编码后数据DO ’以及参考数据RO,且存储器控制器110使用参考数据RO来对编码后数据DO ’进行解码以产生数据D0;同时,存储器控制器110分别自存储库220以及参考存储库230中读取编码后数据D1’以及参考数据R0,且存储器控制器110使用参考数据RO来对编码后数据D1’进行解码以产生数据D1。在本实施例中,解码操作同样是异或运算,亦即D0 = D0’ eR0,且Dl =Dl, ? RO0
[0033]请参考图3A,其为根据本发明另一实施例的存取存储器模块120的方法的示意图。如图3A所示,存储器模块120包含了两个存储库310、320以及一参考存储库330,其中存储库310、320为一读一写(1R1W)存储库,且参考存储库330为二读一写(2R1W)存储库。如图3A所示,当存储器模块120接收到两个写入命令,且两笔数据D0、D1分别被要求写入至存储库310、320中时,存储器控制器110会自参考存储库330中的地址AO读取一参考数据RO,且存储器控制器310对数据DO及参考数据RO—并进行编码以产生编码后数据D0’,且编码后数据D0’接着被写入到存储库310中具有地址AO的单元中;同时,存储器控制器110会自参考存储库330中的地址Al读取参考数据R1,且存储器控制器110对数据Dl及参考数据Rl—并进行编码以产生编码后数据D1’,且编码后数据D1’接着被写入到存储库320中具有地址Al的单元中。此外,在本实施例中,每一笔数据00、01、00’、01’、如、1?1都是一个比特位,且编码操作为异或运算,亦即00’=00?1?0,且01’=01?^。
[0034]图3A所示的实施例为写入命令没有发生存储库冲突的一个例子,所以数据D0、D1在编码结束之后可以同时且直接地分别写入到存储库310、320中。
[0035]请参考图3B,其为根据本发明另一实施例的读取储存在图3A所示的存储库中的数据的示意图。如图3B所示,存储器模块120接收到两个读取命令,且要求自存储库310、320中分别读取数据D0、D1。存储器控制器110分别自存储库310以及参考存储库330中读取编码后数据DO ’以及参考数据RO,且存储器控制器110使用参考数据RO来对编码后数据DO ’进行解码以产生数据D0;同时,存储器控制器110分别自存储库320以及参考存储库330中读取编码后数据D1’以及参考数据Rl,且存储器控制器110使用参考数据Rl来对编码后数据D1’进行解码以产生数据D1。在本实施例中,解码操作同样是异或运算,亦即D0 = D0’ eR0,且Dl =Dl, ? Rl0
[0036]请同时参考图4?图6,其中图4为当两笔数据D2、D3被要求写入到存储库210时,根据本发明一实施例的存取存储器模块的方法的示意图;图5为当两笔数据D2、D3被要求写入到存储器模块时,存储库210、220以及参考存储库230的示意图;且图6为根据本发明一实施例存取存储器模块的流程图。图4?图6所示的实施例接续图2A所示的实施例,亦即存储库210原本在地址AO便储存了编码后数据D0’,且存储库220在地址AO储存了编码后数据Dl’。
[0037]在步骤600,流程开始。在步骤602中,存储器模块120自存储器控制器110接收两个写入命令,而在本实施例中,一个写入命令将数据D2写入到存储库210对应到地址Al的单元中,且另一个写入命令系将数据D3写入到存储库210对应到地址AO的单元中(亦即,更新/覆写编码后数据D0’)。由于存储库210是一个一读一写存储库,因此同时间只能够允许执行一个写入命令,因此,只有一笔数据(本实施例中为数据D2)可以被写入到存储库210中(步骤604及步骤606),且另一笔数据(亦即,D3)则需要使用一特别的流程(步骤608?612)才能够被同时写入到存储器模块120中。在步骤604中,存储器控制器110自参考存储库230中对应于地址Al的单元读取参考数据R1,并对数据D2及参考数据Rl—并进行编码以产生编码后数据D2 ’ ;接着,在步骤606中,存储器控制器110将编码后数据D2,写入到存储库210中具有地址Al的单元中。在本实施例中,编码操作为异或运算,亦即D2’=D2 ? R1。
[0038]关于数据D3,在步骤608中,存储器控制器110自存储库210读取编码后数据DO’,并对数据D3及编码后数据D0’一并进行编码以产生编码后数据D3’,其中编码后数据D3’用来更新/覆写参考存储库230中的参考数据R0;同时,存储器控制器110分别自存储库220以及参考存储库230中读取编码后数据D1’以及参考数据R0,并使用参考数据RO来对编码后数据D1’进行解码以产生数据D1。在本实施例中,编码及解码操作为异或运算,亦即D3’=D3eDO,,且D1=D1’ ? RO0
[0039]在步骤610中,存储器控制器110对编码后数据D3’及数据Dl—并进行编码以产生更新的编码后数据D1”,其中更新的编码后数据D1”用来更新存储库220中的编码后数据D1’。在本实施例中,编码操作为异或运算,亦即D1”=D3’ ?D1=D3?D0’ ?D1。
[0040]在步骤602中,存储器控制器110将编码后数据D3’写入到参考存储库230中对应到地址AO的单元中,亦即更新/覆写参考数据R0;此外,存储器控制器110另将更新的编码后数据D1”写入到存储库220中对应到地址AO的单元中,以更新/覆写编码后数据Dl ’。
[0041]在步骤614中,两笔数据Dl、D2成功地被写入到存储器模块120中,流程结束。
[0042]请参考图7,其为根据本发明一实施例的读取储存在图4、5所示的存储库210、220中的数据的示意图。如图7所示,当存储器模块120接收到两个读取命令,且要求自存储库210、220中分别读取数据D3、D1时,存储器控制器110分别自存储库210以及参考存储库230中读取编码后数据DO ’以及编码后数据D3’,且存储器控制器110使用编码后数据D3 ’来对编码后数据DO ’进行解码以产生数据D3;同时,存储器控制器110另外分别自存储库220以及参考存储库230中读取更新的编码后数据D1”以及编码后数据D3’,且存储器控制器110使用编码后数据D3’来对更新的编码后数据D1”进行解码以产生数据D1。在本实施例中,解码操作系为异或运算,亦即D3 = D0’ ? D3,,且D1=D1” ? D3,。
[0043]需要注意的是,数据D3的读取操作并没有任何的改变,亦同样是读取存储库210及参考存储库230中对应到地址AO的单元,并将所读取的数据来进行解码(执行异或操作)以得到数据D3。换句话说,不论存储库冲突有没有发生,根据读取命令所读取的数据永远是通过将存储库210/220中的数据与参考存储库230的相对参考数据一并进行解码来得到。
[0044]简要归纳以上图4?图7所示的实施例,当两笔数据D2、D3被要求写入到存储库210时,数据D2可以在编码后被写入到存储库210中,且数据D3可以在编码后被写入到存储库230中以更新/覆写参考数据R0。此外,由于参考存储库230中的参考数据RO被更新了,因此对应到参考数据RO的编码后数据D1’也需要被更新。通过上述的写入方法,即使两笔数据D2、D3存在着存储库冲突的问题,数据D2、D3也可以同时地被写入到存储器模块120中,因此,即使存储库210、220本身仅具有一个写入端口,存储库210、220以及参考存储库230可以形成一个总是支持两个写入命令(两个写入端口)的特定存储器模块,亦即这个特定存储器模块增加了本身的写入端口。另外,不论采用图2A或是图5的写入步骤,这个特定存储器模块都是采用相同的读取方式来读取数据。
[0045]此外,在上述图2A?图7的实施例中,参考存储库230由两个存储库210、220所共有,然而,在其他实施例中,参考存储库可以被两个以上的存储库所共有。图8为当两笔数据D4、D5被要求写入到相同的存储库810_1,存储库810_1?810_N及参考存储库830的操作示意图。类似于图5的实施例,在图8中,当两笔数据D4、D5被要求写入到存储器模块时,数据D4在编码后被写入到存储库810_1中;同时,数据D5在编码后被写入到参考数据库830中,且储存在存储库810_2?810_N*的相对应数据也一并被更新。换句话说,当两笔数据D4、D5被要求同时写入到存储库810_1时,存储库810_1的操作类似于图5所示的存储库210的操作,存储库810_2?810__勺操作类似于图5所示的存储库220的操作,而参考存储库830的操作类似于图5所示的参考存储库230的操作,而由于本领域技术人员在阅读过图4?图6所示的实施例的说明后应该能够了解图8的实施例,故细节部分在此不再赘述。
[0046]请参考图9,其为根据本发明另一实施例的存取存储器模块120的方法的示意图。如图9所示,存储器模块120包含了两个存储库910、920以及参考存储库930,其中存储库910、920是二读二写(2R2W)存储库,且参考存储库930是一个四读二写(4R2W)存储库。在本实施例中,存储器模块120接收四个写入命令,且四笔数据DO?D3被要求分别写入到存储库910、920中,其中数据DO?Dl被要求写入到存储库910中分别对应到地址AO及Al的单元,且数据D2?D3被要求写入到存储库920中分别对应到地址AO及Al的单元。如图9所示,存储器控制器110自参考存储库930的地址AO读取参考数据RO,且存储器控制器110将数据DO与参考数据RO—并进行编码以产生编码后数据D0’,并将编码后数据D0’写入到存储库910中具有地址AO的单元中;存储器控制器910自参考存储库930的地址Al读取参考数据Rl,且存储器控制器110将数据Dl与参考数据Rl—并进行编码以产生编码后数据D1’,并将编码后数据D1’写入到存储库910中具有地址Al的单元中;同时,存储器控制器910自参考存储库930的地址AO读取参考数据R0,且存储器控制器110将数据D2与参考数据RO—并进行编码以产生编码后数据D2’,并将编码后数据D2’写入到存储库920中具有地址AO的单元中;以及存储器控制器910自参考存储库930的地址Al读取相同位置的参考数据Rl,且存储器控制器110将数据D3与参考数据Rl—并进行编码以产生编码后数据D3’,并将编码后数据D3’写入到存储库920中具有地址Al的单元中。在本实施例中,D0、D1、D2、D3、D0’、D1’、D2’、D3’、R0、R1中的每一笔数据都是一个比特位,且编码操作为异或运算。
[0047]此外,在另一个实施例中,若数据D2-D3被要求分别写入至存储库920对应于地址A2和A3的单元中,存储器控制器110自参考存储库930的地址A2读取参考数据R2,且存储器控制器110将数据D2与参考数据R2—并进行编码以产生编码后数据D2’,并将编码后数据D2’写入到存储库920中具有地址A2的单元中;且存储器控制器110自参考存储库930的地址A3读取参考数据R3,且存储器控制器110将数据D3与参考数据R3—并进行编码以产生编码后数据D3’,并将编码后数据D3’写入到存储库920中具有地址A3的单元中。在本实施例中,R2、R3中的每一笔数据都是一个比特位,且编码操作为异或运算。
[0048]图9所示的实施例是四个写入命令没有发生存储库冲突的一个例子,所以数据DO?D3在编码结束之后可以同时且直接地分别写入到存储库910、920中。
[0049]请参考图10,其为根据本发明另一实施例的存取存储器模块120的方法的示意图。如图10所示,存储器模块120包含了两个存储库1010、1020以及参考存储库1030,其中存储库1010、1020是二读二写(2R2W)存储库,且参考存储库1030是一个四读二写(4R2W)存储库。在本实施例中,存储器模块120接收四个写入命令,且四笔数据DO?D3被要求分别写入到存储库1010中,但由于存储库1010仅仅包含两个写入端口,所以仅有两笔数据可以同时被写入到存储库11中。在图1O中,数据DO、DI被编码且写入到存储库11中;同时,数据D2、D3则是使用储存在存储库1010中的旧数据来进行编码,且数据D2、D3的编码后数据则是被储存至参考存储库1030的两个单元中,其中该两个单元系和存储库1010中的旧数据具有相同的地址。此外,由于参考存储库1030的更新/覆写,存储库1020中的相对应数据也要做对应的更新。换句话说,图10中有关于数据D0、D1的写入步骤类似于图4中数据D2的写入步骤,且图10中有关于数据D2、D3的写入步骤类似于图4中数据D3的写入步骤,而由于本领域技术人员在阅读过图4?图6所示的实施例的说明后应该能够了解图10的实施例,故细节部分在此不再赘述。
[0050]请参考图11,其为根据本发明另一实施例的存取存储器模块120的方法的示意图。如图11所示,存储器模块120包含了两个存储库1110、1120以及参考存储库1130,其中存储库1110、1120是二读二写(2R2W)存储库,且参考存储库1130是一个四读二写(4R2W)存储库。在本实施例中,存储器模块120接收四个写入命令,且四笔数据DO?D3被要求分别写入到存储库1110、1120中,其中数据DO?D2被要求写入到存储库1110中,数据D3被要求写入到存储库1120中,且数据D2、D3所对应到的写入地址是不同的(亦即,存储库1110中对应到数据D2的单元与存储库1120中对应到数据D3的单元具有不同的地址)。但由于存储库1110仅仅包含两个写入端口,所以仅有两笔数据可以同时被写入到存储库1110中。在图11中,数据D0、Dl被编码且写入到存储库1110中,且数据D3被编码且写入到存储库1120中;同时,数据D2则是使用储存在存储库1110中的旧数据来进行编码,且数据D2的编码后数据则是被储存至参考存储库1130的单元中,其中该单元和存储库1110中的旧数据具有相同的地址。此外,由于参考存储库1130的更新/覆写,存储库1120中的相对应数据也要做对应的更新。换句话说,图11中有关于数据D0、D1、D3的写入步骤类似于图4中数据D2的写入步骤,且图11中有关于数据D2的写入步骤类似于图4中数据D3的写入步骤,而由于本领域技术人员在阅读过图4?图6所示的实施例的说明后应该能够了解图11的实施例,故细节部分在此不再赘述。
[0051]请参考图12,其为根据本发明另一实施例的存取存储器模块120的方法的示意图。如图12所示,存储器模块120包含了两个存储库1210、1220以及参考存储库1230,其中存储库1210、1220是二读二写(2R2W)存储库,且参考存储库1230是一个四读二写(4R2W)存储库。在本实施例中,存储器模块120接收四个写入命令,且四笔数据DO?D3被要求分别写入到存储库1210、1220中,其中数据DO?D2被要求写入到存储库1210中,数据D3被要求写入到存储库1220中,且数据D2、D3所对应到的写入地址是相同的(在以下的叙述中,假设此相同的地址是A3)。由于存储库1210仅仅包含两个写入端口,所以仅有两笔数据可以同时被写入到存储库1210中。在图12中,数据DO、DI被编码且写入到存储库1210中;同时,数据D2与存储库1210中对应至地址A3的旧数据进行编码,以产生编码后数据D2’,且编码后数据D2’被储存至参考存储库1230中对应到地址A3的单元中。此外,数据D3与编码后数据D2’一同进行编码以产生编码后数据D3’,且编码后数据D3’被储存至存储库1220中对应到地址A3的单元中。在本实施例中,图12中有关于数据D0、D1的写入步骤类似于图4中数据D2的写入步骤,图12中有关于数据D2的写入步骤类似于图4中数据D3的写入步骤,而由于本领域技术人员在阅读过图4?图6所示的实施例的说明后应该能够了解图12的实施例,故细节部分在此不再赘述。
[0052]简要归纳以上图9?图12所示的实施例,通过上述的写入方法,即使四笔数据DO?D3存在着存储库冲突的问题,数据DO?D3也可以同时地被写入到存储器模块120中,因此,即使存储库910/1010/1110/1210、920/1020/1120/1220本身仅具有两个写入端口,存储库910/1010/1110/1210、920/1020/1120/1220 以及参考存储库 930/1030/1130/1230 可以形成一个总是支持四个写入命令(四个写入端口)的特定存储器模块,亦即这个特定存储器模块增加了本身的写入端口。另外,不论采用图9?12中的哪一个写入步骤,这个特定存储器模块都是采用相同的读取方式来读取数据。
[0053]此外,当使用上述的写入步骤来延伸/增加存储器模块120的写入端口时,由于参考存储库中的某些数据需要被读取以进行编码或解码操作,因此,整体上,存储器模块的读取端口会减少。举例来说,如图13所示,假设存储库1310以及存储库1320是M读一写(MRlW)的存储库,且参考存储库1320为N读一写(NRlW)的存储库,其中M可以是小于N的任意适合正整数,通过使用上述的写入步骤,存储库1310、1320以及参考存储库1330可以形成具有(N-2)个读取端口以及两个写入端口的特定存储器模块1340。举另一例子来说,如图14所示,假设存储库1410以及存储库1420是M读二写(MR2W)的存储库,且参考存储库1420为N读二写(NR2W)的存储库,其中M可以是小于N的任意适合正整数,通过使用上述的写入步骤,存储库1410、1420以及参考存储库1430可以形成具有(N-4)个读取端口以及四个写入端口的特定存储器模块1440。如上所述,虽然读取端口减少了,但是存储器模块的写入端口可以加倍,以允许同时执行更多的写入命令。
[0054]此外,存储库或是存储器模块的读取端口可以通过先前技术中的额外层技术来加倍,举例来说,一个二读一写的存储库可以被延伸为一个四读一写的存储库,该四读一写的存储库可以被延伸为一个八读一写的存储库,该八读一写的存储库可以被延伸为一个十六读一写的存储库,由于本领域技术人员应能够了解该技术,故相关细节在此不做说明。因此,通过使用读取端口的延伸技术,再加上述实施例的写入方法,存储器模块便可以具有更多个写入端口以同时执行更多的写入命令。以图15为例,四读一写的存储库可以被延伸为二读二写的存储库/存储器模块;八读一写的存储库可以被延伸为六读二写的存储库/存储器模块或是二读四写的存储库/存储器模块;十六读一写的存储库可以被延伸为十四读二写的存储库/存储器模块、十读四写的存储库/存储器模块、或是二读八写的存储库/存储器模块;以及三十二读一写的存储库可以被延伸为三十读二写的存储库/存储器模块、二十六读四写的存储库/存储器模块、十八读八写的存储库/存储器模块、或是二读十六写的存储库/存储器模块,等等。
[0055]简要归纳本发明,通过使用本发明实施例的存取方法,可以在存储库仅具有较少写入端口的情形下增加存储器模块的写入端口,此外,在本发明的实施例中,参考存储库由两个或更多个存储库所共享以储存数据,因此不会增加太多的制造成本。
[0056]尽管已经在文中使用不同的方法、设备以及系统来描述和示出了一些示例性的技术,但是本领域普通技术人员应当理解的是:可以在不脱离所要求保护的主题的情况下进行各种其它修改以及进行等同物替换。此外,在不脱离文中描述的中心构思的情况下,可以进行许多修改以使特定的情况适应于所要求保护的主题的教导。因此,意在所要求保护的主题不限制于所公开的特定示例,而且这样的要求保护的主题还可以包括落在所附权利要求的范围内的所有实施及它们的等同物。
【主权项】
1.一种存取多端口存储器模块的方法,其中所述多端口存储器模块包含了多个存储库,所述多个存储库包含至少第一存储库、第二存储库以及参考存储库,且所述存取多端口存储器模块的方法包含: 当第一数据被要求写入至所述第一存储库时,读取所述参考存储库中的参考数据,并将所述第一数据连同所述参考数据一并进行编码以产生第一编码后数据,且将所述第一编码后数据写入至所述第一存储库中;以及 当第二数据被要求写入至所述第二存储库时,自所述参考存储库中读取相同位置的所述参考数据,并将所述第二数据连同所述参考数据一并进行编码以产生第二编码后数据,且将所述第二编码后数据写入至所述第二存储库中。2.根据权利要求1所述的存取多端口存储器模块的方法,其特征在于,另包含: 当第三数据被要求写入至所述第一存储库以更新/覆写所述第一存储库中的所述第一编码后数据,但是所述第一存储库的一或多个写入端口被其他的写入步骤占据时,自所述第一存储库中读取所述第一编码后数据,并将所述第三数据连同所述第一编码后数据一并进行编码以产生第三编码后数据,且将所述第三编码后数据写入至所述参考存储库中以更新/覆写所述参考数据。3.根据权利要求2所述的存取多端口存储器模块的方法,其特征在于,另包含: 在所述参考数据被所述第三编码后数据更新/覆写之前,分别自所述参考存储库以及所述第二存储库中读取所述参考数据以及所述第二编码后数据,并使用所述参考数据来对所述第二编码后数据进行解码以产生所述第二数据; 将所述第二数据连同所述第三编码后数据一并进行编码以产生更新的第二编码后数据;以及 将所述更新的第二编码后数据写入至所述第二存储库以更新所述第二编码后数据。4.根据权利要求2所述的存取多端口存储器模块的方法,其特征在于,其中当所述第三数据被要求自所述第一存储库中读取时,分别自所述第一存储库以及所述参考存储库中读取所述第一编码后数据以及所述第三编码后数据,且使用所述第一编码后数据来对所述第三编码后数据进行解码以产生所述第三数据。5.根据权利要求1所述的存取多端口存储器模块的方法,其特征在于,另包含: 当第三数据以及第四数据被要求写入至所述第一存储库以分别更新/覆写所述第一存储库中的第一旧数据以及第二旧数据时,自所述参考存储库中读取另一参考数据,并将所述第三数据连同所述另一参考数据一并进行编码以产生第三编码后数据,且将所述第三编码后数据写入至所述第一存储库中以更新/覆写所述第一旧数据;以及 自所述第一存储库中读取所述第二旧数据,并将所述第四数据连同所述第二旧数据一并进行编码以产生第四编码后数据,且将所述第四编码后数据写入至所述参考存储库中以更新/覆写对应于所述第二旧数据的又一参考数据。6.根据权利要求1所述的存取多端口存储器模块的方法,其特征在于,其中所述第一存储库包含K个写入端口,所述第二存储库包含K个写入端口,所述参考存储库包含N个读取端口 ;以及所述第一存储库、所述第二存储库以及所述参考存储库形成一个支持(2*K)个写入端口以及(Ν-2*Κ)个读取端口的特定存储器子模块,其中K为等于或大于I的正整数,且N为大于(2*Κ)的正整数。7.根据权利要求1所述的存取多端口存储器模块的方法,其特征在于,其中所述第一数据、所述第二数据以及所述参考数据中的每一个均为一个比特位,且编码操作为异或运算。8.—种存储器控制器,耦接于多端口存储器模块,其中所述多端口存储器模块包含了多个存储库,所述多个存储库包含至少第一存储库、第二存储库以及参考存储库;当第一数据被要求写入至所述第一存储库时,所述存储器控制器读取所述参考存储库中的参考数据,并将所述第一数据连同所述参考数据一并进行编码以产生第一编码后数据,且将所述第一编码后数据写入至所述第一存储库中;以及当第二数据被要求写入至所述第二存储库时,所述存储器控制器自所述参考存储库中读取相同位置的所述参考数据,并将所述第二数据连同所述参考数据一并进行编码以产生第二编码后数据,且将所述第二编码后数据写入至所述第二存储库中。9.根据权利要求8所述的存储器控制器,其特征在于,当第三数据被要求写入至所述第一存储库以更新/覆写所述第一存储库中的所述第一编码后数据,但是所述第一存储库的一或多个写入端口被其他的写入步骤占据时,所述存储器控制器自所述第一存储库中读取所述第一编码后数据,并将所述第三数据连同所述第一编码后数据一并进行编码以产生第三编码后数据,且将所述第三编码后数据写入至所述参考存储库中以更新/覆写所述参考数据。10.根据权利要求9所述的存储器控制器,其特征在于,在所述参考数据被所述第三编码后数据更新/覆写之前,所述存储器控制器分别自所述参考存储库以及所述第二存储库中读取所述参考数据以及所述第二编码后数据,并使用所述参考数据来对所述第二编码后数据进行解码以产生所述第二数据;且所述存储器控制器另将所述第二数据连同所述第三编码后数据一并进行编码以产生更新的第二编码后数据;以及将所述更新的第二编码后数据写入至所述第二存储库以更新所述第二编码后数据。11.根据权利要求9所述的存储器控制器,其特征在于,当所述第三数据被要求自所述第一存储库中读取时,所述存储器控制器分别自所述第一存储库以及所述参考存储库中读取所述第一编码后数据以及所述第三编码后数据,且使用所述第一编码后数据来对所述第三编码后数据进行解码以产生所述第三数据。12.根据权利要求8所述的存储器控制器,其特征在于,当第三数据以及第四数据被要求写入至所述第一存储库以分别更新/覆写所述第一存储库中的第一旧数据以及第二旧数据时,所述存储器控制器自所述参考存储库中读取另一参考数据,并将所述第三数据连同所述另一参考数据一并进行编码以产生第三编码后数据,且将所述第三编码后数据写入至所述第一存储库中以更新/覆写所述第一旧数据;以及所述存储器控制器另自所述第一存储库中读取所述第二旧数据,并将所述第四数据连同所述第二旧数据一并进行编码以产生第四编码后数据,且将所述第四编码后数据写入至所述参考存储库中以更新/覆写对应于所述第二 I日数据的又一参考数据。13.根据权利要求8所述的存储器控制器,其特征在于,所述第一存储库包含K个写入端口,所述第二存储库包含K个写入端口,所述参考存储库包含N个读取端口;以及所述第一存储库、所述第二存储库以及所述参考存储库形成一个支持(2*K)个写入端口以及(N-2*K)个读取端口的特定存储器子模块,其中K为等于或大于I的正整数,且N为大于(2*K)的正整数。14.根据权利要求8所述的存储器控制器,其特征在于,所述第一数据、所述第二数据以及所述参考数据中的每一个均为一个比特位,且编码操作为异或运算。15.一种增加存储器模块的写入端口的方法,包含: 在所述存储器模块中提供第一存储库以及参考存储库; 当第一数据以及第二数据同时被要求写入至所述第一存储库时,但是所述第二数据不被允许同时被写入所述第一存储库以更新/覆写旧数据时,读取所述参考存储库中的第一参考数据,将所述第一数据连同所述第一参考数据一并进行编码以产生第一编码后数据,且将所述第一编码后数据写入至所述第一存储库中;以及 读取所述第一存储库中的所述旧数据,将所述第二数据连同所述旧数据一并进行编码以产生第二编码后数据,并将所述第二编码后数据写入至所述参考存储库中以更新/覆写对应于所述I日数据的第二参考数据。16.根据权利要求15所述的增加存储器模块的写入端口的方法,其特征在于,所述第一存储库包含K个写入端口,所述参考存储库包含N个读取端口,以及所述存储器模块支持(2*K)个写入端口以及(N-2*K)个读取端口,其中K为等于或大于I的正整数,且N为大于(2*K)的正整数。17.根据权利要求15所述的增加存储器模块的写入端口的方法,其特征在于,另包含: 在所述存储器模块中提供第二存储库;以及 当第三数据被要求写入至所述第二存储库时,自所述参考存储库中读取所述第一参考数据,将所述第三数据连同所述第一参考数据一并进行编码以产生第三编码后数据,且将所述第三编码后数据写入至所述第二存储库中。18.根据权利要求15所述的增加存储器模块的写入端口的方法,其特征在于,所述第一数据、所述第二数据、所述第一参考数据以及所述第二参考数据中的每一个均为一个比特位,且编码操作为异或运算。19.根据权利要求15所述的增加存储器模块的写入端口的方法,其特征在于,每一个存储库均被允许独立地存取。20.根据权利要求15所述的增加存储器模块的写入端口的方法,其特征在于,所述存储器模块为多端口的静态随机存取存储器模块或是多端口的动态随机存取存储器模块。
【文档编号】G06F13/16GK106066832SQ201610250189
【公开日】2016年11月2日
【申请日】2016年4月21日 公开号201610250189.9, CN 106066832 A, CN 106066832A, CN 201610250189, CN-A-106066832, CN106066832 A, CN106066832A, CN201610250189, CN201610250189.9
【发明人】吕国正, 赖伯承, 黄琨骅, 林俊良
【申请人】联发科技股份有限公司