相关申请的交叉引用
本申请要求于2015年12月23日向韩国知识产权局提交的第10-2015-0185001号韩国专利申请的优先权益,该案的内容以引用的方式全部并入本文中。
本公开的示例性实施例涉及一种存储系统,该存储系统包括高速缓冲存储器、备用存储器(sparememory)、主存储器等。
背景技术:
常规的组相联高速缓存(set-associativecache)需要标记匹配以判断待访问数据的高速缓存命中/未命中。为了标记匹配,高速缓存需要用于标记匹配的元数据存储和逻辑。此类逻辑非常复杂,并且会导致存储系统面积的增加,且标记匹配操作导致时延增加。这就需要一种高速缓存结构来最小化存储系统面积的增加和时延的增加。
近来,对于下一代存储器(诸如rram(阻变随机存取存储器)、pcram(相变随机存取存储器)以及mram(磁性随机存取存储器)和fram(铁电随机存取存储器))的研究正变得更加活跃。但是,下一代存储器的操作速度尚未达到期望的速度,并且下一代存储器的故障率还没有降低到期望的水平。另外,下一代存储器具有低耐久性的问题,因此,存在多次访问会迅速减少存储器使用寿命的问题。因此,需要有助于提升下一代存储器操作速度的高速缓存结构以及解决下一代存储器的故障的编程的技术。
技术实现要素:
各实施例针对一种高速缓存方案,其能够最小化存储系统面积的增加以及时延的增加。此外,各实施例针对一种高速缓存方案,其不仅增强存储系统的性能,还可以修复存储系统中的故障。
在一实施例中,一种存储系统可以包括:第一高速缓冲存储器,包括使用第一地址来访问的多个区域,在该多个区域中的每一个中储存了是否存在高速缓存数据的指示和第二地址;第二高速缓冲存储器,被配置为,当因第一高速缓冲存储器的访问而存在高速缓存数据时,使用储存在第一高速缓冲存储器的被访问区域中的第二地址来访问该第二高速缓冲存储器;以及主存储器,被配置为,当因第一高速缓冲存储器访问而不存在高速缓存数据时,使用第一地址来访问该主存储器。
在一实施例中,一种存储系统可以包括:第一高速缓冲存储器,包括使用第一地址来访问的多个区域,在该多个区域中的每一个中储存了是否存在故障和第二地址;备用存储器,被配置为,在因第一高速缓冲存储器的访问而存在故障的情况下,使用储存在第一高速缓冲存储器的被访问区域中的第二地址来访问该备用存储器;以及主存储器,被配置为,在因第一高速缓冲存储器访问而不存在故障的情况下,使用第一地址来访问该主存储器。
在一实施例中,一种存储系统可以包括:第一高速缓冲存储器,包括使用第一地址来访问的多个区域,在该多个区域中的每一个中储存了是否存在高速缓存数据、是否存在故障和第二地址;第二高速缓冲存储器,被配置为,在因第一高速缓冲存储器的访问而存在高速缓存数据的情况下,使用储存在第一高速缓冲存储器的被访问区域中的第二地址来访问该第二高速缓冲存储器;备用存储器,被配置为,在因第一高速缓冲存储器的访问而不存在高速缓存数据但存在故障的情况下,使用储存在第一高速缓冲存储器的被访问区域中的第二地址来访问该备用存储器;以及主存储器,被配置为,在因第一高速缓冲存储器访问而即不存在高速缓存数据也不存在故障的情况下,使用第一地址来访问该主存储器。
在一实施例中,一种存储系统的操作方法可以包括:使用第一地址来访问第一高速缓冲存储器;在因第一高速缓冲存储器的访问而检查出存在高速缓存数据的情况下,使用储存在第一高速缓冲存储器中的第二地址来访问第二高速缓冲存储器;以及在因第一高速缓冲存储器的访问而检查出不存在高速缓存数据的情况下,使用第一地址来访问主存储器。
附图说明
图1是图示根据一实施例的存储系统的配置的示图。
图2是图示在第一高速缓冲存储器的每一个区域中存储的信息的示图。
图3是示出存储系统(100)的操作的流程图。
图4是图示根据另一实施例的存储器件的配置的示图。
图5是图示在第一高速缓冲存储器的每一个区域中存储的信息的示图。
图6是示出存储系统(400)的操作的流程图。
图7是图示根据另一实施例的存储器件的配置的示图。
图8是图示在第一高速缓冲存储器的每一个区域中存储的信息的示图。
图9是示出存储系统(700)的操作的流程图。
图10图示了采用根据以上参考图1至图9论述的各实施例的半导体器件的系统的实例代表的方框图。
具体实施方式
以下将参照附图更详细描述各实施例。但是,本发明可以体现为不同形式且不应被理解为受限于本文所述实施例。相反,提供这些实施例使得本公开彻底且完整,且将充分地将本发明的范围传达给本领域技术人员。贯穿本公开,在本发明的各个附图和实施例中,相同的附图标记指代相同的部分。
附图不一定成比例,且在某些情况下,可能将比例夸张以清楚地图示实施例的特征。当将第一层称作在第二层“上”或在衬底“上”时,不仅指第一层直接形成在第二层上或衬底上的情况,还指在第一层与第二层或衬底之间存在第三层的情况。
图1是图示根据一实施例的存储系统100的配置的示图。
参见图1,存储系统100可以包括第一高速缓冲存储器110、第二高速缓冲存储器120、主存储器130以及访问控制单元140。
主存储器130可以具有大的储存容量并包括多个主页。例如,主存储器可以具有128gb(千兆字节)的全部储存容量并包括128m的主页。主页中的每一个可以具有1kb(千字节)的储存容量。在每一个主页中,可以进行基于字节的数据寻址,即,每个主页可以是字节可寻址的。被输入至主存储器130的第一地址add1<0:26>可以用于在主存储器130中的128m主页之中选择一个主页。因此,第一地址add1<0:26>可以是27位(2^27=128m)地址。被输入到主存储器130的第三地址add3<0:9>可以用于在由第一地址add1<0:26>选中的主页(1kb)中选择1字节的数据。因此,第三地址add3<0:9>可以是10位(2^10=1k)地址。主存储器130可以是具有比第一高速缓冲存储器110和第二高速缓冲存储器120的储存容量大的储存容量的存储器,且主存储器130可以具有比第一高速缓冲存储器110或第二高速缓冲存储器120的操作速度低的操作速度。例如,如果第一高速缓冲存储器110和第二高速缓冲存储器120中的每一个是动态随机存取存储器(dram),那么主存储器130可以是快闪存储器、相变随机存取存储器(pcram)以及阻变随机存取存储器(rram)中的任意一种。
第一高速缓冲存储器110可以包括与主存储器130的主页相同数量(128m)的区域。因为所述区域中的每一个储存元数据,所以每一个区域可以具有相对小的储存容量(例如4b)。在第一高速缓冲存储器110的访问期间,这些区域之中的一个区域可以由第一地址add1<0:26>选中并访问。如图2中所示的信息可以被储存在所述区域的每一个中。
参见图2,高速缓存信息cached可以指示与第一高速缓冲存储器110的相关区域对应的主存储器120的主页的高速缓存数据是否存在于第二高速缓冲存储器120中。高速缓存信息cached可以是1位信息。被设置为“1”的高速缓存信息cached可以指示存在高速缓存数据。被设置为“0”的高速缓存信息cached可以指示不存在高速缓存数据。脏/干净信息dirty/clean包括关于高速缓存在第二高速缓冲存储器120中的数据以及储存在主存储器130中的数据是匹配还是不匹配的信息。脏/干净信息dirty/clean可以是1位信息。被设置为“1”的脏/干净信息dirty/clean可以指示脏状态,换言之,高速缓存在第二高速缓冲存储器120中的数据以及储存在主存储器130中的数据不匹配。被设置为“0”的脏/干净信息dirty/clean可以指示干净状态,换言之,高速缓存在第二高速缓冲存储器120中的数据以及储存在主存储器130中的数据匹配。访问计数信息counter可以指示相关区域被访问的次数。通过举例来说明访问计数信息counter是9位信息的情况。第二地址add2<0:19>可以指示储存了高速缓存数据的第二高速缓冲存储器120的地址。如果存在高速缓存数据,则可以使用第二地址add2<0:19>来访问第二高速缓冲存储器120。第二地址add2<0:19>的位的数量可以基于在第二高速缓冲存储器120中的高速缓存页的数量。在此实施例中,因为第二高速缓冲存储器120已经被描述为包括1m的高速缓存页,所以通过举例来描述第二地址add2<0:19>的位的数量为20的情况。在第一高速缓冲存储器110的区域中的剩余1位可以是未使用的。
第二高速缓冲存储器120可以包括多个高速缓存页。所述高速缓存页中的每一个可以具有与主存储器130的主页中的每一个相同的储存容量(例如1kb)。高速缓存页的数量可以对应于在第二地址中的位的数量。在此实施例中,因为第二地址add2<0:19>已经被图示为20位地址,所以高速缓存页的数量可以是1m(=2^20)。在高速缓存页中,可以储存对应主页的高速缓存数据。第二地址add2<0:19>可以用于在第二高速缓冲存储器120的高速缓存页之中选择一个页。第三地址add3<0:9>可以用于在选中的高速缓存页(1kb)中选择1字节(1b)数据。
访问控制单元140可以响应于从存储器控制器(主机)传输来的命令cmd和地址add<0:36>而访问第一高速缓冲存储器110、第二高速缓冲存储器120以及主存储器130,并且,访问控制单元140可以将第一高速缓冲存储器110、第二高速缓冲存储器120以及主存储器130的数据data与存储器控制器(主机)来交换。
图3是示出存储系统100的操作的流程图。将参考图3描述存储系统100的操作。
首先,可以在步骤s310处,从存储器控制器(主机)施加用于访问存储系统100的命令cmd(例如,读取命令或写入命令)和地址add<0:36>。如果命令cmd是写入命令,还可以将待写入至存储系统100的数据data施加至存储系统100。
在步骤s320处,访问控制单元140可以首先访问第一高速缓冲存储器110。访问控制单元140可以使用在从存储器控制器(主机)传输来的地址add<0:36>之中的27个位作为用于访问第一高速缓冲存储器110的第一地址add1<0:26>。脏/干净信息dirty/clean和访问计数信息counter可以被储存在第一高速缓冲存储器110的多个区域中的每一个中。在第一高速缓冲存储器110的访问期间,使用第一地址add1<0:26>访问的第一高速缓冲存储器110的选中区域的脏/干净信息dirty/clean和访问计数信息counter可以得到更新。
当使用第一地址add1<0:26>访问的第一高速缓冲存储器110的选中区域中存在高速缓存数据的信息被储存时(步骤s330处的y),高速缓存信息cached可以设置为“1”。当高速缓存信息cached=“1”时,在步骤s340处,访问控制单元140可以使用在第一高速缓冲存储器110的选中区域中储存的第二地址add2<0:19>来访问第二高速缓冲存储器120。在第二高速缓冲存储器120的访问期间,第二地址add2<0:19>可以用于从第二高速缓冲存储器120选择高速缓存页,且第三地址add3<0:9>可以用于从选中的高速缓存页选择数据。第三地址add3<0:9>可以是在步骤s310处由访问控制单元140从存储器控制器(主机)接收到的地址add<0:36>之中的除第一地址add1<0:26>以外的剩余地址。如果在步骤s310处,由访问控制单元140从存储器控制器(主机)接收到的命令cmd是读取命令,则在步骤s340处从第二高速缓冲存储器120读取的数据可以通过访问控制单元140而被传输至存储器控制器(主机)。如果在步骤s310处,由访问控制单元140从存储器控制器(主机)接收到的命令cmd是写入命令,则在步骤s310处由访问控制单元140从存储器控制器(主机)接收到的数据data可以在步骤s340处被写入至第二高速缓冲存储器120。
如果在使用第一地址add1<0:26>访问的第一高速缓冲存储器110的选中区域中不存在高速缓存数据的信息被储存(步骤s330处的n),则高速缓存信息cached可以被设置为等于“0”。当高速缓存信息cached=“0”时,在步骤s350处访问控制单元140可以使用第一地址add1<0:26>和第三地址add3<0:9>来访问主存储器130。第三地址add3<0:9>可以是由访问控制单元140从存储器控制器(主机)接收到的地址add<0:36>之中除第一地址add1<0:26>以外的剩余地址。如果在步骤s310处,由访问控制单元140从存储器控制器(主机)接收到的命令cmd是读取命令,则在步骤s350处从主存储器130读取的数据可以通过访问控制单元140而被传输至存储器控制器(主机)。如果在步骤s310处,由访问控制单元140从存储器控制器(主机)接收到的命令cmd是写入命令,则在步骤s310处由访问控制单元140从存储器控制器(主机)接收到的数据data可以在步骤s350处被写入至主存储器130。
在存储系统100中,首先访问第一高速缓冲存储器110以检查是否存在高速缓存数据。如果存在高速缓存数据,则可以使用储存在第一高速缓冲存储器110中的第二地址add2<0:19>来访问第二高速缓冲存储器120,使得数据被读取或写入。如果不存在高速缓存数据,则可以访问主存储器130,使得数据被读取或写入。此类高速缓存方案使得虽然最小化了用于高速缓存的存储系统100的面积增加,但仍可以增加存储系统100的访问速度。
在存储系统100中,诸如添加待高速缓存到第二高速缓冲存储器120的数据以及收回已经高速缓存在第二高速缓冲存储器120中的数据的操作可以根据存储系统100的高速缓存管理规则来执行。这些操作可以参考在第一高速缓冲存储器110的多个区域中的每一个中储存的脏/干净信息dirty/clean、计数信息counter等来执行。另外,可以将用于执行添加待高速缓存数据以及收回先前高速缓存的数据的高速缓存管理逻辑(未示出)添加到存储系统100或设置在存储系统100外部。
图1中所示的存储系统100的部分110、120、130以及140是基于功能方面划分的部分,而不是基于物理划分的部分。例如,图1中的部分110、120、130和140中的两个或更多个可以形成在单个物理半导体芯片上或被包括在单个半导体封装体中。另外,对于在图1中示出的第一高速缓冲存储器110、第二高速缓冲存储器120以及主存储器130,全部容量、页数目以及每一页的容量仅是出于说明性目的,这些参数可以以各种方式进行修改。
图4是图示根据另一实施例的存储系统的配置的示图。
参见图4,存储系统400可以包括第一高速缓冲存储器410、备用存储器420、主存储器130以及访问控制单元440。
主存储器130可以具有大的储存容量且包括多个主页。例如,主存储器可以具有128gb(千兆字节)的全部储存容量,且包括128m主页。所述主页中的每一个可以具有1kb(千字节)的储存容量。在每一个主页中,可以进行基于字节的数据寻址,即,每一个主页可以是字节可寻址的。被输入至主存储器130的第一地址add1<0:26>可以用于在主存储器130的128m主页之中选择一个主页。因此,第一地址add1<0:26>可以是27位(2^27=128m)地址。被输入至主存储器130的第三地址add3<0:9>可以用于在由第一地址add1<0:26>选中的主页(1kb)中选择1字节数据。因此,第三地址add3<0:9>可以是10位(2^10=1k)地址。主存储器130可以是具有比第一高速缓冲存储器110和备用存储器420的储存容量大的储存容量的存储器,且主存储器130可以具有比第一高速缓冲存储器110的操作速度低的操作速度。例如,如果第一高速缓冲存储器410是dram,则主存储器130可以是快闪存储器、pcram和rram中的任意一种。
第一高速缓冲存储器410可以包括与主存储器130的主页的数目相同数目(128m)的区域。因为每个区域中储存元数据,所以第一高速缓冲存储器410可以具有相对小的储存容量(例如,512mb)。在第一高速缓冲存储器410的访问期间,在所述区域中的一个区域可以通过第一地址add1<0:26>来选择并访问。诸如图5的信息可以被储存在所述区域中的每一个中。
参见图5,故障信息faulty可以指示在主存储器130的与第一高速缓冲存储器410的相关区域对应的主页中是否存在故障。故障信息faulty可以是1位信息。如果故障信息faulty是“1”,则故障信息faulty可以指示存在故障。如果故障信息faulty是“0”,则故障信息faulty可以指示不存在故障。当在主页中存在故障时,第二地址add2<0:19>可以表示备用存储器420中替代对应主页的备用页的地址。当在主页中存在故障时,可以使用第二地址add2<0:19>来访问备用存储器420。第二地址add2<0:19>的位的数目可以根据在备用存储器420中的备用页的数目来确定。在此实施例中,因为备用存储器420被描述为包括1m备用页,所以通过举例来描述第二地址add2<0:19>的位的数目为20的情况。在第一高速缓冲存储器410的区域中的剩余的11个位是未使用的。
备用存储器420可以包括多个备用页。所述备用页中的每一个可以具有与主存储器130的主页中的每一个的储存容量相同的储存容量(例如,1kb)。备用页的数目可以对应于在第二地址中的位的数目。在此实施例中,因为第二地址add2<0:19>已经被图示为20位地址,所以高速缓存页的数目可以是1m(=2^20)。应储存在对应主页(即,故障主页)中的数据可以被储存在备用页中。换言之,备用页可以替代(修复)故障主页。第二地址add2<0:19>可以用于在备用存储器420中的备用页中选择一个备用页。第三地址add3<0:9>可以用于在选中的备用页(1kb)中选择1字节(1b)数据。备用存储器420可以是与主存储器130相同种类的存储器。
访问控制单元440可以响应于从存储器控制器(主机)传输来的命令cmd和地址add<0:36>而访问第一高速缓冲存储器410、备用存储器420以及主存储器130,且访问控制单元440可以将第一高速缓冲存储器410、备用存储器420以及主存储器130的数据data与存储器控制器(主机)来交换。
图6是示出存储系统400的操作的流程图。将参考图6来描述存储系统400的操作。
首先,在步骤s610处,可以从存储器控制器(主机)施加用于访问存储系统400的命令cmd(例如,读取命令或写入命令)和地址add<0:36>。如果命令cmd是写入命令,则也可以将待写入至存储系统400的数据data施加至存储系统400。
访问控制单元440可以在步骤s620处首先访问第一高速缓冲存储器410。访问控制单元440可以使用在从存储器控制器(主机)传输来的地址add<0:36>中的27个位作为用于访问第一高速缓冲存储器410的第一地址add1<0:26>。
当在使用第一地址add1<0:26>访问的第一高速缓冲存储器410的选中区域中存在故障的信息被储存时(步骤s630处的y),故障信息faulty可以被设置为“1”。当故障信息faulty=“1”时,访问控制单元440可以在步骤s640处,使用在第一高速缓冲存储器410的选中区域中储存的第二地址add2<0:19>来访问备用存储器420。在备用存储器420的访问期间,第二地址add2<0:19>可以用于从备用存储器420选择备用页,且第三地址add3<0:9>可以用于从选中的备用页选择数据。第三地址add3<0:9>可以是在步骤s610处由访问控制单元440从存储器控制器(主机)接收到的地址add<0:36>中的除第一地址add1<0:26>以外的剩余地址。当在步骤s610处由访问控制单元440从存储器控制器(主机)接收到的命令cmd是读取命令时,在步骤s640处从备用存储器420读取的数据可以通过访问控制单元440而被传输至存储器控制器(主机)。如果在步骤s610处由访问控制单元440从存储器控制器(主机)接收到的命令cmd是写入命令,则由访问控制单元440从存储器控制器(主机)接收到的数据data可以在步骤s640处被写入至备用存储器420。
当在使用第一地址add1<0:26>访问的第一高速缓冲存储器410的选中区域中不存在故障的信息被储存时(步骤s630处的n),故障信息可以被设置为等于“0”。当故障信息faulty=“0”时,访问控制单元440可以在步骤s650处使用第一地址add1<0:26>和第三地址add3<0:9>来访问主存储器130。第三地址add3<0:9>可以是在步骤s610处由访问控制单元440从存储器控制器(主机)接收到的地址add<0:36>中除第一地址add1<0:26>以外的剩余地址。如果在步骤s610处由访问控制单元440从存储器控制器(主机)接收到的命令cmd是读取命令,则在步骤s650处从主存储器130读取的数据可以通过访问控制单元440而被传输至存储器控制器(主机)。如果在步骤s610处由访问控制单元440从存储器控制器(主机)接收到的命令cmd是写入命令,则在步骤s610处由访问控制单元440从存储器控制器(主机)接收到的数据data可以在步骤s650处被写入至备用存储器420。
在存储系统400中,首先访问第一高速缓冲存储器410以检查是否存在故障。如果存在故障,则可以使用储存在第一高速缓冲存储器410中的第二地址add2<0:19>来访问备用存储器420,从而可以没有错误地读取或写入数据。如果不存在故障,则可以访问主存储器130,使得数据被读取或写入。此类修复方案使得虽然最小化了用于修复的存储系统130的面积增加,但仍可以修复存储系统130。
图4中所示的存储系统400的部分410、420、130以及440表示基于功能方面划分的部分,而不是基于物理划分的部分。例如,图4中的部分410、420、130和440中的两个或更多个可以形成在单个物理半导体芯片上或被包括在单个半导体封装体中。另外,对于图4中所示的第一高速缓冲存储器410、备用存储器420以及主存储器130,全部容量、页的数目和每一页的容量仅是出于说明性目的,这些参数可以以各种方式来修改。
图7是图示根据另一实施例的存储器件的配置的示图。
参见图7,存储系统700可以包括第一高速缓冲存储器710、第二高速缓冲存储器120、备用存储器420、主存储器130以及访问控制单元740。
主存储器130可以具有大的储存容量且可以包括多个主页。例如,主存储器可以具有128gb(千兆字节)的全部储存容量且包括128m主页。所述主页中的每一个可以具有1kb(千字节)的储存容量。在每一个主页中,可以进行基于字节的数据寻址,即,每一个主页可以是字节可寻址的。被输入至主存储器130的第一地址add1<0:26>可以用于在主存储器130中的128m主页中选择一个主页。因此,第一地址add1<0:26>可以是27位(2^27=128m)地址。被输入至主存储器130的第三地址add3<0:9>可以用于在由第一地址add1<0:26>选中的主页(1kb)中选择一字节的数据。因此,第三地址add3<0:9>可以是10位(2^10=1k)地址。主存储器130和备用存储器420中的每一个可以是具有比第一高速缓冲存储器710和第二高速缓冲存储器120的操作速度低的操作速度的存储器。例如,如果第一高速缓冲存储器710和第二高速缓冲存储器120中的每一个是dram,则主存储器130和备用存储器420中的每一个可以是快闪存储器、pcram和rram中的任意一种。
第一高速缓冲存储器710可以包括与主存储器130的主页的数目相同数目(128m)的区域。因为每个区域中储存元数据,所以第一高速缓冲存储器710可以具有比主存储器130小的储存容量(例如,512mb)。在第一高速缓冲存储器710的访问期间,在所述区域中的一个区域可以通过第一地址add1<0:26>来选择并访问。诸如图8的信息可以被储存在所述区域中的每一个中。
参见图8,高速缓存信息cached可以指示与第一高速缓冲存储器710的相关区域对应的主存储器130的主页的高速缓存数据是否存在于第二高速缓冲存储器120中。高速缓存信息cached可以是1位信息。如果高速缓存信息cached是“1”,则高速缓存信息cached可以指示存在高速缓存数据。如果高速缓存信息cached是“0”,则高速缓存信息cached可以指示不存在高速缓存数据。另外,故障信息faulty可以指示在主存储器130的与第一高速缓冲存储器710的相关区域对应的主页中是否存在故障。故障信息faulty可以是1位信息。如果故障信息faulty是“1”,则故障信息faulty可以指示存在故障。如果故障信息faulty是“0”,则故障信息faulty可以指示不存在故障。脏/干净信息dirty/clean和访问计数信息counter可以被储存在第一高速缓冲存储器710的多个区域中的每一个中。脏/干净信息dirty/clean包括关于高速缓存在第二高速缓冲存储器120中的数据和储存在主存储器130中的数据是匹配还是不匹配的信息。脏/干净信息dirty/clean可以是1位信息。如果脏/干净信息dirty/clean是“1”,则脏/干净信息dirty/clean可以指示脏状态,换言之,高速缓存在第二高速缓冲存储器120中的数据和储存在主存储器130中的数据不匹配。如果脏/干净信息dirty/clean是“0”,则脏/干净信息dirty/clean可以指示干净状态,换言之,高速缓存在第二高速缓冲存储器120中的数据和储存在主存储器130中的数据匹配。访问计数信息counter可以指示相关区域已经被访问的次数。举例说明访问计数信息counter是9位信息的情况。第二地址add2<0:19>可以指示储存了高速缓存数据的第二高速缓冲存储器120的地址,或在备用存储器420中替代对应主页的备用页的地址。如果存在高速缓存数据,则可以使用第二地址add2<0:19>来访问第二高速缓冲存储器120。如果存在故障,可以使用第二地址add2<0:19>来访问备用存储器420。第二地址add2<0:19>的位的数目可以根据在第二高速缓冲存储器120中的高速缓存页的数目以及在备用存储器420中的备用页的数目来确定。在此实施例中,因为第二高速缓冲存储器120已被描述为包括1m高速缓存页且备用存储器420已被描述为包括1m备用页,所以通过举例描述第二地址add2<0:19>的位的数目是20的情况。
第二高速缓冲存储器120可以包括多个高速缓存页。所述高速缓存页中的每一个可以具有与主存储器130的主页中的每一个相同或更小的储存容量(例如1kb)。高速缓存页的数目可以对应于在第二地址中的位的数目。在此实施例中,因为第二地址add2<0:19>已经被图示为20位地址,所以高速缓存页的数目可以是1m(=2^20)。在所述高速缓存页中,可以储存对应主页的高速缓存数据。第二地址add2<0:19>可以用于在第二高速缓冲存储器120的高速缓存页中选择一个高速缓存页。第三地址add3<0:9>可以用于在选中的高速缓存页(1kb)中选择1字节(1b)的数据。
备用存储器420可以包括多个备用页。所述备用页中的每一个可以具有与主存储器130的主页中的每一个相同或更小的储存容量(例如1kb)。备用页的数目可以对应于在第二地址中的位的数目。在此实施例中,因为第二地址add2<0:19>已经被图示为20位地址,所以高速缓存页的数目可以是1m(=2^20)。应储存在对应主页(即,故障主页)中的数据可以被储存在备用页中。换言之,备用页可以替代(修复)故障主页。第二地址add2<0:19>可以用于在备用存储器420中的备用页中选择一个备用页。第三地址add3<0:9>可以用于在选中的备用页(1kb)中选择1字节(1b)数据。备用存储器420可以是与主存储器130相同种类的存储器。
访问控制单元740可以响应于从存储器控制器(主机)传输来的命令cmd和地址add<0:36>来访问第一高速缓冲存储器710、第二高速缓冲存储器120、备用存储器420以及主存储器130,并且,访问控制单元740可以将第一高速缓冲存储器710、第二高速缓冲存储器120、备用存储器420以及主存储器130的数据data与存储器控制器(主机)来交换。
图9是示出存储系统700的操作的流程图。将参考图9来描述存储系统700的操作。
首先,在步骤s910处,可以从存储器控制器(主机)施加用于访问存储系统700的命令cmd(例如,读取命令或写入命令)和地址add<0:36>。如果命令cmd是写入命令,则也可以将待写入至存储系统700的数据data施加至存储系统700。
在步骤s920处,访问控制单元740可以首先访问第一高速缓冲存储器710。访问控制单元740可以使用从存储器控制器(主机)传输来的地址add<0:36>之中的27个位作为用于访问第一高速缓冲存储器710的第一地址add1<0:26>。在第一高速缓冲存储器710的访问期间,使用第一地址add1<0:26>访问的第一高速缓冲存储器710的选中区域的脏/干净信息dirty/clean和访问计数信息counter可以得到更新。
当在使用第一地址add1<0:26>访问的第一高速缓冲存储器710的选中区域中存在高速缓存数据的信息被储存时(在步骤s930处的y),高速缓存信息cached可以被设置为“1”。当高速缓存信息cached=“1”时,在步骤s940处,访问控制单元740可以使用储存在第一高速缓冲存储器710的选中区域中的第二地址add2<0:19>来访问第二高速缓冲存储器120。在第二高速缓冲存储器120的访问期间,第二地址add2<0:19>可以用于从第二高速缓冲存储器120选择高速缓存页,并且,第三地址add3<0:9>可以用于从选中的高速缓存页选择数据。第三地址add3<0:9>可以是在步骤s910处由访问控制单元740从存储器控制器(主机)接收到的地址add<0:36>中的除第一地址add1<0:26>以外的剩余地址。当在步骤s910处,由访问控制单元740从存储器控制器(主机)接收到的命令cmd是读取命令时,在步骤s940处从第二高速缓冲存储器120读取的数据可以通过访问控制单元740而被传输至存储器控制器(主机)。如果在步骤s910处,由访问控制单元740从存储器控制器(主机)接收到的命令cmd是写入命令,则在步骤s910处由访问控制单元740从存储器控制器(主机)接收到的数据data可以在步骤s940处被写入至第二高速缓冲存储器120。
当在使用第一地址add1<0:26>访问的第一高速缓冲存储器710的选中区域中不存在高速缓存数据的信息被储存时(步骤s930处的n),高速缓存信息cached可以被设置为等于“0”。当高速缓存信息cached=“0”时,可以在步骤s950处检查在使用第一地址add1<0:26>访问的第一高速缓冲存储器710的选中区域中所储存的故障信息faulty。
当在使用第一地址add1<0:26>访问的第一高速缓冲存储器710的选中区域中存在故障的信息被储存时(步骤s950处的y),故障信息faulty可以被设置为“1”。当故障信息faulty=“1”时,访问控制单元740可以在步骤s960处使用储存在第一高速缓冲存储器710的选中区域中的第二地址add2<0:19>来访问备用存储器420而不是访问主存储器130。在备用存储器420的访问期间,第二地址add2<0:19>可以用于从备用存储器420选择备用页,并且,第三地址add3<0:9>可以用于在选中备用页中选择数据。当在步骤s910处由访问控制单元740从存储器控制器(主机)接收到的命令cmd是读取命令时,在步骤s960处从备用存储器420读取的数据可以通过访问控制单元740而被传输至存储器控制器(主机)。如果在步骤910处由访问控制单元740从存储器控制器(主机)接收到的命令cmd是写入命令时,则由访问控制单元740在步骤s910处从存储器控制器(主机)接收到的数据data可以在步骤s960处被写入至备用存储器420。
当在使用第一地址add1<0:26>访问的第一高速缓冲存储器710的选中区域中不存在故障的信息被储存时(步骤s950处的n),故障信息可以被设置为等于“0”。当故障信息faulty=“0”时,访问控制单元740可以在步骤s970处使用第一地址add1<0:26>和第三地址add3<0:9>来访问主存储器130。如果在步骤s910处由访问控制单元740从存储器控制器(主机)接收到的命令cmd是读取命令,则在步骤s970处从备用存储器130读取的数据可以通过访问控制单元740而被传输至存储器控制器(主机)。如果在步骤s910处由访问控制单元740从存储器控制器(主机)接收到的命令cmd是写入命令,则在步骤s910处由访问控制单元740从存储器控制器(主机)接收到的数据data可以在步骤s970处被写入至主存储器130。
在存储系统700中,首先访问第一高速缓冲存储器710以检查是否存在高速缓存数据。如果存在高速缓存数据,则可以使用储存在第一高速缓冲存储器710中的第二地址add2<0:19>来访问第二高速缓冲存储器120,使得数据被读取或写入。如果不存在高速缓存数据,则判断是否存在故障。如果存在故障但不存在高速缓存数据,则使用储存在第一高速缓冲存储器710中的第二地址add2<0:19>来访问备用存储器420,使得数据可以被没有错误地读取或写入。如果因为第一高速缓冲存储器110的访问而不存在故障,则使用第一地址add1<0:26>来访问主存储器130,使得数据被读取或写入。此类高速缓存方案使得虽然最小化了用于高速缓存和修复的存储系统700的面积增加,仍可以提高存储系统700的访问速度。
在存储系统700中,诸如添加待高速缓存到第二高速缓冲存储器120的数据以及收回已经高速缓存在第二高速缓冲存储器120中的数据的操作可以参考储存在第一高速缓冲存储器710中的脏/干净信息dirty/clean、计数信息counter等,根据存储系统700的高速缓存管理规则来执行。另外,用于执行添加待高速缓存的数据以及收回已经被高速缓存的数据的高速缓存管理逻辑(未示出)可以被添加至存储系统700或设置在存储系统700外部。
图7中示出的存储系统700的部分710、120、420、130以及740指示基于功能方面划分的部分而不是物理划分的部分。例如,图7的部分710、120、420、130和740中的两个或更多个可以形成在单个物理半导体芯片上或被包括在单个半导体封装体中。另外,对于图7中示出的第一高速缓冲存储器710、第二高速缓冲存储器120、备用存储器420以及主存储器130,全部容量、页的数目以及每一页的容量仅是出于说明性目的,这些参数也可以以各种方式进行修改。
根据各实施例,存储系统的面积增加和时延增加可以被最小化,并且,可以修复存储系统中的故障。
尽管已经出于说明性目的描述了各实施例,但是对于本领域技术人员显然的是,可以在不偏离由所附权利要求所限定的本发明的精神和范围的前提下做出各种改变和修改。
以上讨论的半导体器件和/或存储系统(见图1至图9)在存储器件、处理器和计算机系统的设计中尤其适用。例如,参照图10,应用根据各实施例的半导体器件和/或存储器的系统的方框图被示出并一般用附图标记1000来标记。系统1000可以包括一个或多个处理器(即处理器),或例如但不限于中央处理单元(cpu)1100。处理器(即,cpu)可以单独使用或者与其他处理器(即cpu)结合使用。尽管处理器(即cpu)1100将主要以单数形式提及,但是,本领域技术人员将理解,可以实施具有任意数目的物理或逻辑处理器(即cpu)的系统1000。
芯片集1150可以可操作地耦接至处理器(即cpu)1100。芯片集1150是用于在处理器(即cpu)1100与系统1000的其他组件之间的信号的通信路径。系统1000的其他组件可以包括存储器控制器1200、输入/输出(“i/o”)总线1250以及盘驱动器控制器1300。根据系统1000的配置,若干不同信号中的任意一种可以通过芯片集1150来传输,且本领域技术人员将了解,可以在不改变系统1000的根本性质的前提下能容易地调整贯穿系统1000的信号的路径。
如上所述,存储器控制器1200可以可操作地耦接至芯片集1150。存储器控制器1200可以包括上文参考图1至图9所讨论的至少一个半导体器件和/或存储系统。因此,存储器控制器1200可以通过芯片集1150接收从处理器(即cpu)1100提供的请求。在替换实施例中,存储器控制器1200可以被集成到芯片集1150中。存储器控制器1200可以可操作地耦接至一个或更多个存储器件1350。在一实施例中,存储器件1350可以包括上文参考图1至图9所讨论的至少一个半导体器件和/或存储系统,存储器件1350可以包括用于限定多个存储单元的多个字线和多个位线。存储器件1350可以是若干工业标准存储器类型中的任意一种,包括但不限于单列直插式存储模块(“simm”)和双列直插式存储模块(“dimm”)。另外,存储器件1350可以通过储存指令和数据二者而有助于外部数据储存器件的安全移除。
芯片集1150也可以耦接至i/o总线1250。i/o总线1250可以用作从芯片集1150至i/o器件1410、1420和1430的信号的通信路径。i/o器件1410、1420和1430可以包括,例如但不限于,鼠标1410、视频显示器1420或键盘1430。i/o总线1250可以采用若干通信协议中的任意一种来与i/o器件1410、1420和1430通信。在一实施例中,i/o总线1250可以被集成到芯片集1150中。
盘驱动器控制器1300可以可操作地耦接至芯片集1150。盘驱动器控制器1300可以用作芯片集1150与一个内部盘驱动器1450或一个以上的内部盘驱动器1450之间的通信路径。内部盘驱动器1450可以通过储存指令和数据二者而有助于外部数据储存器件的断开。盘驱动器控制器1300和内部盘驱动器1450可以使用几乎任意一种类型的通信协议(例如但不限于,上面关于i/o总线1250提及的所有通信协议)来彼此通信或与芯片集1150通信。
重要的是要注意到,上文关于图10描述的系统1000仅仅是采用上文参考图1至图9所讨论的半导体器件和/或存储系统的系统1000的一个示例。在替换实施例中,诸如例如但不限于,蜂巢式电话或数码相机等组件可以与图10所示实施例不同。