存储系统及其操作方法与流程

文档序号:12786287阅读:550来源:国知局
存储系统及其操作方法与流程

本申请要求2015年12月23日提交的申请号为10-2015-0184913的韩国专利申请的优先权,其通过引用其整体合并于此。

技术领域

本发明的示例性实施例总体而言涉及一种包括存储器件和存储器控制器的存储系统及其操作方法。



背景技术:

存储器件中的存储体的数量是重要的,因为在存储器件的操作期间,任何一次仅可以激活每个存储体的一行。因此,例如,如果存储器件包括8个存储体,则一次可以激活存储器件中的仅最多8行,每个存储体一行。类似地,如果存储器件包括4个存储体,则一次可以激活仅最多4行。

因此,为了增强存储器件的性能,可以增加存储体的数量,然而,是以相当大的代价。通常,用于绘图的存储器件(诸如例如GDDR5SDRAM)比已知的存储器件(诸如例如DDR3SDRAM)具有更优的并行性,因为其具有更多的存储体,但是其更昂贵。



技术实现要素:

各种实施例针对提供一种更简单、更经济适用的技术以提升存储系统的性能。

在一个实施例中,一种存储系统可以包括:存储器件,包括N个(N是等于或大于1的整数)物理存储体;以及存储器控制器,适用于使用M个(M是比N大的整数)逻辑存储体来与主机通信以及适用于与存储器件通信。存储器控制器可以包括:与各个M个逻辑存储体相对应的M个行缓冲器,用于高速缓冲各个M个逻辑存储体的数据;以及地址转换器,用于执行用于与主机通信的逻辑地址与用于与存储器件通信的物理地址之间的地址转换。

逻辑地址可以包括逻辑存储体地址、逻辑行地址和逻辑列地址,而物理地址可以包括物理存储体地址、物理行地址和物理列地址。

地址转换器可以将逻辑存储体地址的一个或更多个比特转换成物理存储体地址,可以将逻辑存储体地址的剩余比特和逻辑行地址转换成物理行地址,以及可以将逻辑列地址转换成物理列地址。

所述M个行缓冲器中的每个行缓冲器可以储存:高速缓冲的数据、关于行缓冲器的有效性的有效性信息、高速缓冲的数据的逻辑行地址、高速缓冲的数据的物理存储体地址、高速缓冲的数据的物理行地址、以及指示高速缓冲的数据的脏或干净的脏/干净信息。

所述M个行缓冲器中的每个行缓冲器储存:被分成两部分或更多部分的高速缓冲的数据;关于行缓冲器的有效性的有效性信息;高速缓冲的数据的逻辑行地址;高速缓冲的数据的物理存储体地址;高速缓冲的数据的物理行地址;关于高速缓冲的数据的所述两部分或更多部分中的每部分的有效性的数据有效性信息;以及指示高速缓冲的数据的所述两部分或更多部分中的每部分的脏或干净的脏/干净信息。

如果要由主机读取的逻辑存储体地址和逻辑行地址的数据已经被高速缓冲在所述M个行缓冲器的对应逻辑存储体的行缓冲器中,则存储器控制器可以从所述对应逻辑存储体的行缓冲器读取数据以及将读取的数据发送给主机。如果要由主机读取的逻辑存储体地址和逻辑行地址的数据还未被高速缓冲在所述M个行缓冲器的对应逻辑存储体的行缓冲器中,则存储器控制器可以使用由主机读取的逻辑存储体地址和逻辑行地址转换来的物理存储体地址和物理行地址来从存储器件读取数据,以及将读取的数据传送给主机。

当主机指示写入操作时,存储器控制器可以访问所述M个行缓冲器之中的行缓冲器,以及用写入数据来更新被访问的行缓冲器。被访问的行缓冲器可以是已经被指示了写入操作的逻辑存储体的行缓冲器。

如果被高速缓冲在已经被指示了写入操作的逻辑存储体的行缓冲器中的行被改变,则可以用写入数据更新存储器件,已经用所述写入数据更新了已经被指示了写入操作的逻辑存储体的行缓冲器。

存储器控制器还可以包括:主机接口,适用于与主机通信;调度器,适用于确定存储器件的操作的顺序;命令发生器,适用于产生要施加给存储器件的命令;以及存储器接口,适用于与存储器件通信。

对于每个逻辑存储体,主机一次可以激活一行。

在一个实施例中,一种存储器控制器的操作方法可以包括:从主机接收针对M个逻辑存储体的第K个逻辑存储体的特定逻辑行的读取请求;判断第K个逻辑存储体的行缓冲器是否是空的;如果确定第K个逻辑存储体的行缓冲器是空的,则从存储器件中包括的N个物理存储体之中的特定物理存储体的特定物理行读取数据以及将读取的数据传送给主机,其中,所述特定物理存储体对应于第K个逻辑存储体,以及所述特定物理行对应于所述特定逻辑行;以及用从存储器件读取的数据来更新第K个逻辑存储体的行缓冲器。N可以是等于或大于1的整数,M可以是大于N的整数,以及K可以是大于等于1至小于等于M的整数。

存储器控制器的操作方法还可以包括:如果确定第K个逻辑存储体的行缓冲器不是空的,则判断是否存在针对第K个行缓冲器的行命中。

存储器控制器的操作方法还可以包括:如果确定存在针对第K个行缓冲器的行命中,则将储存在第K个行缓冲器中的数据传送给主机。

存储器控制器的操作方法还可以包括:如果确定不存在针对第K个行缓冲器的行命中,则用储存在第K个行缓冲器中的脏数据来更新存储器件的与物理存储体地址和物理行地址相对应的区域;从物理存储体的与特定逻辑行相对应的物理行读取数据以及将读取的数据传送给主机,所述物理存储体属于存储器件的所述N个物理存储体,且对应于第K个逻辑存储体;以及用从存储器件读取的数据来更新第K个逻辑存储体的行缓冲器。

在一个实施例中,一种存储器控制器的操作方法可以包括:从主机接收针对M个逻辑存储体的第K个逻辑存储体的特定逻辑行的写入请求;判断是否存在针对第K个逻辑存储体的行缓冲器的行命中;如果确定存在行命中,则用写入数据来更新第K个逻辑存储体的行缓冲器;如果确定不存在行命中,则用第K个逻辑存储体的行缓冲器的脏数据来更新物理存储体的与所述特定逻辑行相对应的物理行,所述物理存储体属于存储器件的N个物理存储体且对应于第K个逻辑存储体;以及用写入数据来更新第K个逻辑存储体的行缓冲器。N可以是等于或大于1的整数,M可以是大于N的整数,以及K可以是大于等于1至小于等于M的整数。

附图说明

图1是图示根据本发明的一个实施例的存储系统的示图。

图2是图示根据本发明的一个实施例的地址转换器的操作的示图。

图3是图示物理存储体与逻辑存储体之间的关系的示图。

图4是图示根据本发明的一个实施例的储存在多个行缓冲器的每个中的信息的示例的示图。

图5是图示根据本发明的一个实施例的储存在多个行缓冲器的每个中的信息的另一示例的示图。

图6至图10是图示根据本发明的一个实施例的当在存储系统中执行读取操作和写入操作时储存在行缓冲器中的信息可以如何改变的示图。

图11是根据本发明的一个实施例的存储系统的读取操作的流程图。

图12是根据本发明的一个实施例的存储系统的写入操作的流程图。

具体实施方式

下面将参照附图更详细地描述各种实施例。然而,本发明可以以不同的形式来实施,而不应当被解释为局限于本文中阐述的实施例。相反地,这些实施例被提供使得本公开将彻底且完整,且这些实施例将把本发明的范围充分传达给本领域技术人员。贯穿本公开,相同的附图标记在本发明的各种附图和实施例中始终指代相同的部分。

图1图示了根据本发明的一个实施例的存储系统100。

根据图1的实施例,存储系统100可以包括存储器件110和存储器控制器120。

存储器件110可以包括八(8)个物理存储体PBANK0~PBANK7。然而,我们注意到,物理存储体的数量可以通过设计来改变。存储器件110可以从存储器控制器120接收命令和物理地址,以及将数据发送给存储器控制器120和从存储器控制器120接收数据。当执行读取操作时,数据可以从存储器件110传输给存储器控制器120。当执行写入操作时,数据可以从存储器控制器120传输给存储器件110。

存储器控制器120可以响应于来自主机HOST的请求来控制存储器件110。主机HOST与存储器控制器120之间的通信可以基于存储器件110包括三十二(32)个逻辑存储体的假设来执行。即,从主机HOST传输给存储器控制器120的逻辑地址可以基于这32个逻辑存储体来配置。逻辑存储体的数量也可以通过设计来改变。存储器控制器120与存储器件110之间的通信可以基于存储器件110包括8个物理存储体的假设来执行。即,从存储器控制器120传输给存储器件110的物理地址可以基于这8个物理存储体来配置。

存储器控制器120可以包括主机接口121、调度器122、命令发生器123、存储器接口124、地址转换器125和多个行缓冲器(例如,具有与逻辑存储体的数量相同的数量的ROW_BUF0~ROW_BUF31)。因此,在图1的实施例中,控制器包括32个行缓冲器ROW_BUF0~ROW_BUF31。

主机接口121可以为存储器控制器120与主机HOST之间的任何合适的接口。主机HOST的请求可以经由主机接口121来从主机HOST接收。与主机HOST的请求相对应的处理的结果可以经由主机接口121来传输给主机HOST。

调度器122可以确定如下请求的顺序,该请求属于来自主机HOST的请求以及将针对存储器件110作出的。调度器122可以改变从主机HOST接收的请求的顺序以及要指示给存储器件110的操作的顺序以提升存储器件110的性能。例如,虽然主机HOST可以首先请求存储器件110的读取操作,然后请求存储器件110的写入操作,但是调度器122可以控制该顺序,使得写入操作可以先于读取操作执行。调度器122可以访问行缓冲器ROW_BUF0~ROW_BUF31,并执行用于判断是否对行缓冲器ROW_BUF0~ROW_BUF31执行读取/写入操作或者是否对存储器件110执行读取/写入操作的操作。

命令发生器123可以根据由调度器122确定的操作顺序来产生要施加给存储器件110的命令。

存储器接口124可以为用于存储器控制器120与存储器件110之间的接口的任意合适的接口。命令和物理地址可以经由存储器接口124从存储器控制器120传输给存储器件110。数据可以经由存储器接口124来在存储器件110与存储器控制器120之间传输和接收。在下文中存储器接口124也称作PHY接口。

地址转换器125可以执行用于与主机HOST通信的逻辑地址与用于与存储器件110通信的物理地址之间的转换操作。

行缓冲器ROW_BUF0~ROW_BUF31分别对应于32个逻辑存储体,并高速缓冲其相应的逻辑存储体的数据。当从主机HOST作出读取或写入请求时,通过首先访问行缓冲器ROW_BUF0~ROW_BUF31,然后尽可能多地从行缓冲器ROW_BUF0~ROW_BUF31读取数据或将数据写入行缓冲器ROW_BUF0~ROW_BUF31中,存储器控制器120可以操作就好像存储器件110具有大于32个存储体的物理存储体PBANK0~PBANK7一样。即,存储器件110仅包括8个物理存储体PBANK0~PBANK7,但是存储系统100可以给主机HOST提供增强的性能,就好像存储器件110具有32个存储体一样。

在图1中,存储器件110已经被图示为包括8个物理存储体PBANK0~PBANK7,但是存储器件110可以包括等于或大于1的任何特定数量N的物理存储体,其中N是自然数。此外,在图1中,存储器控制器110已经被图示为支持32个逻辑存储体,但是逻辑存储体的数量可以为大于存储器件110的物理存储体的数量的特定数量M,其中M是物理数。

图2是图示根据本发明的一个实施例的地址转换器的操作的示图。例如,图2的操作可以为图1的地址转换器125的操作。

根据图2的实施例,物理地址可以包括3比特的物理存储体地址PBA<0:2>、12比特的物理行地址PRA<0:11>和10比特的物理列地址PCA<0:9>。此外,逻辑地址可以包括5比特的逻辑存储体地址LBA<0:4>、10比特的逻辑行地址LRA<0:9>和10比特的逻辑列地址LCA<0:9>。

物理地址与逻辑地址之间的转换可以通过将物理行地址PRA<0:11>的2比特的PRA<10:11>(即,最高有效位)转换成逻辑地址的物理存储体地址LBA<0:4>的最低有效位LBA<0:1>。在这种情况下,物理存储体地址PBA<0:2>可以被转换成逻辑存储体地址LBA<2:4>。

图2中的物理地址与逻辑地址之间的转换仅为示例。可以改变从物理行地址到逻辑存储体地址的转换中的地址的比特的数量和位置。在一些实施例中,一些物理列地址可以被转换成逻辑存储体地址。

图3图示了物理存储体与逻辑存储体之间的对应关系。

相应地,物理存储体PBANK0~PBANK7与相同位置中示出的逻辑存储体LBANK0~LBANK31彼此对应。如所图示的,例如,一个物理存储体可以对应于4个逻辑存储体。例如,物理存储体0PBANK0可以对应于逻辑存储体0LBANK0至逻辑存储体3LBANK3,而物理存储体6PBANK6可以对应于逻辑存储体24LBANK24至逻辑存储体27LBANK27。

如果物理存储体PBANK0~PBANK7中的每个包括4096个物理行,这些物理行包括物理行0至物理行4095,则逻辑存储体LBANK0~LBANK31中的每个可以包括1024个逻辑行,这些逻辑行包括逻辑行0至逻辑行1023。物理存储体0PBANK0的物理行0至物理行1023可以对应于逻辑存储体0LBANK0的逻辑行0至逻辑行1023。物理存储体0PBANK0的物理行1024至物理行2047可以对应于逻辑存储体1LBANK1的逻辑行0至逻辑行1023。物理存储体0PBANK0的物理行2048至物理行3071可以对应于逻辑存储体2LBANK2的逻辑行0至逻辑行1023。物理存储体0PBANK0的物理行3072至物理行4095可以对应于逻辑存储体3LBANK3的逻辑行0至逻辑行1023。类似地,物理存储体1PBANK1至物理存储体7PBANK7的物理行可以对应于逻辑存储体4LBANK4至逻辑存储体31LBANK31的逻辑行。

图4是图示根据本发明的一个实施例的图1的行缓冲器ROW_BUF0~ROW_BUF31中的每个中储存的信息的示例的示图。

根据图4的实施例,行缓冲器ROW_BUF0~ROW_BUF31中的每个可以储存关于每个行缓冲器的有效性的有效性信息VALID、逻辑行地址LRA<0:9>、物理存储体地址PBA<0:2>、物理行地址PRA<0:11>、脏/干净信息DIRTY和高速缓冲的数据DATA。

针对每个行缓冲器的有效性信息VALID可以指示对应的行缓冲器是否正被使用。如果有效性信息VALID是“0”,其可以意味着对应的行缓冲器是空的。如果有效性信息VALID是“1”,则可以其意味着对应的行缓冲器正被使用。

逻辑行地址LRA<0:9>可以意味着与高速缓冲在对应的行缓冲器中的数据相对应的逻辑行地址。

物理存储体地址PBA<0:2>可以意味着与高速缓冲在对应的行缓冲器中的数据相对应的物理存储体地址。

物理行地址PRA<0:11>可以意味着与高速缓冲在对应的行缓冲器中的数据相对应的物理行地址。

脏/干净信息DIRTY可以指示储存在对应的行缓冲器中的数据与储存在存储器件110中的数据是否相同。如果脏/干净信息DIRTY为“0”,则其可以意味着储存在对应的行缓冲器中的数据与储存在存储器件110中的数据相同(即,干净)。如果脏/干净信息DIRTY为“1”,则其意味着储存在对应的行缓冲器中的数据与储存在存储器件110中的数据不同(即,脏)。

高速缓冲的数据DATA可以意味着高速缓冲在对应的行缓冲器中的数据。存储器件110中的一行的全部数据可以被高速缓冲在行缓冲器中。

图5图示了根据本发明的一个实施例的储存在行缓冲器ROW_BUF0~ROW_BUF31的每个中的信息的另一示例。

根据图5,类似于图4中的信息,行缓冲器ROW_BUF0~ROW_BUF31中的每个可以储存关于每个行缓冲器的有效性的有效性信息VALID、逻辑行地址LRA<0:9>、物理存储体地址PBA<0:2>和物理行地址PRA<0:11>。

此外,行缓冲器ROW_BUF0~ROW_BUF31中的每个可以以分结构来储存数据有效性信息V0~V1023、脏/干净信息DIRTY0~DIRTY1023和高速缓冲的数据DATA0~DATA1023。被分成若干部分的高速缓冲的数据DATA0~DATA1023可以被储存在行缓冲器ROW_BUF0至ROW_BUF31的每个中。各个分数据DATA0~DATA1023的数据有效性信息V0~V1023的片段和各个分数据DATA0~DATA1023的脏/干净信息DIRTY0~DIRTY1023的片段可以被储存在行缓冲器ROW_BUF0~ROW_BUF31的每个中。

存储器件110中的一行的数据可以被分成1024个部分来访问,因为其可以通过10比特的列地址来寻址。类似地,高速缓冲在行缓冲器ROW_BUF0~ROW_BUF31中的数据也可以按照1024个部分DATA0~DATA1023来划分和储存。高速缓冲的数据的这1024个部分DATA0~DATA1023中的每个可以具有多个比特。

数据有效性信息V0~V1023的片段中的每个可以指示高速缓冲的数据的1024个部分DATA0~DATA1023中的每个的有效性。脏/干净信息DIRTY0~DIRTY1023的片段中的每个可以指示高速缓冲的数据的1024个部分DATA0~DATA1023的每个是干净的还是脏的。

在下文中假设信息片段(诸如图5的信息片段)被储存在行缓冲器ROWBUF0~ROW_BUF31的每个中。

图6至图10是图示根据本发明的一个实施例的、当在存储系统100中执行读取操作和写入操作时,图1的行缓冲器ROW_BUF0~ROW_BUF31中储存的信息可以如何改变的示图。

从图6可以看出,行缓冲器ROW_BUF0~ROW_BUF31在其初始状态是空的。由于行缓冲器ROW_BUF0~ROW_BUF31全部是空的,因此全部行缓冲器ROW_BUF0~ROW_BUF31的有效性信息VALID可以具有值“0”。

图7是示出在图6的状态之后,主机HOST已经请求针对逻辑存储体0LBANK0的逻辑行1的读取操作之后的行缓冲器ROW_BUF0~ROW_BUF31的状态的示图。由于与逻辑存储体0LBANK0相对应的行缓冲器ROW_BUF0是空的,因此行缓冲器ROW_BUF0可以立即更新。行缓冲器ROW_BUF0的有效性信息VALID可以用“1”来更新,逻辑行地址LRA<0:9>可以用“1”(表示十进制数字)来更新。由于逻辑存储体0LBANK0的逻辑行1对应于物理存储体0PBANK0的物理行1,因此行缓冲器ROW_BUF0的物理存储体地址PBA<0:2>可以用“0”(表示十进制数字)来更新,而物理行地址PRA<0:11>可以用“1”(表示十进制数字)来更新。此外,数据可以从存储器件110的物理存储体0PBANK0的物理行1读取,高速缓冲在行缓冲器ROW_BUF0中的数据DATA0~DATA1023可以用读取的数据来更新。在这种情况下,物理存储体0PBANK0的物理行1的全部数据已经被示出为被读取,而行缓冲器ROW_BUF0已经被示出为用读取的数据来更新。在一些实施例中,可以仅更新所要求部分的数据(即,仅由主机HOST请求的列的数据)。由于高速缓冲的数据DATA0~DATA1023全部有效且干净,因此数据有效性信息V0~V1023的片段可以具有值“1”,而脏/干净信息DIRTY0~DIRTY1023的片段可以具有值“0”。此外,由主机HOST请求的数据(即,属于逻辑存储体0LBANK0的逻辑行1且已经被主机HOST请求的列的数据)可以被传输给主机HOST。

图8是示出在图7的状态之后,在主机HOST已经请求针对逻辑存储体1LBANK1的逻辑行1的读取操作之后,行缓冲器ROW_BUF0~ROW_BUF31的状态的示图。由于与逻辑存储体1LBANK1相对应的行缓冲器ROW_BUF1是空的,因此行缓冲器ROW_BUF0可以立即更新。行缓冲器ROW_BUF1的有效性信息VALID可以用“1”来更新,以及逻辑行地址LRA<0:9>可以用“1”(表示十进制数字)来更新。由于逻辑存储体1LBANK1的逻辑行1对应于物理存储体0PBANK0的物理行1025,因此行缓冲器ROW_BUF1的物理存储体地址PBA<0:2>可以用“0”(表示十进制数字)来更新,以及物理行地址PRA<0:11>可以用“1025”(表示十进制数字)来更新。此外,数据可以从存储器件110的物理存储体0PBANK0的物理行1025读取,以及高速缓冲在行缓冲器ROW_BUF1中的数据DATA0~DATA1023可以用读取的数据来更新。在这种情况下,物理存储体0PBANK0的物理行1025的全部数据已经被图示为被读取,以及行缓冲器ROW_BUF1已经被图示为用读取的数据来更新。然而,在一些实施例中,可以仅更新所要求部分的数据(即,仅由主机HOST请求的列的数据)。由于全部高速缓冲的数据DATA0~DATA1023是有效且干净的,因此数据有效性信息V0~V1023的片段可以具有值“1”,而脏/干净信息DIRTY0~DIRTY1023的片段可以具有值“0”。此外,由主机HOST请求的数据(即,属于逻辑存储体1LBANK0的逻辑行1且已经被主机HOST请求的列的数据)可以被传输给主机HOST。

图9是示出在图8的状态之后,主机HOST已经请求针对逻辑存储体0LBANK0的逻辑行1的写入操作之后,行缓冲器ROW_BUF0~ROW_BUF31的状态的示图。因为逻辑行1已经被高速缓冲在与逻辑存储体0LBANK0相对应的行缓冲器ROW_BUF0中,所以行缓冲器ROW_BUF0可以用写入数据直接更新。属于逻辑存储体0LBANK0的逻辑行1且针对其的写入操作已经由主机HOST请求的列部分(图示为部分DATA0)可以用写入数据KJ来更新。此外,因为仅行缓冲器ROW_BUF0已经用写入数据KJ更新,而存储器件110还未用写入数据KJ更新,即,因为储存在行缓冲器ROW_BUF0中的数据KJ与储存在存储器件110中的数据(即,作为先前值的AB)不同,因此脏/干净信息DIRTY0可以用“1”来更新。

图10是示出在图9的状态之后,主机HOST已经请求针对逻辑存储体0LBANK0的逻辑行2的读取操作之后,行缓冲器ROW_BUF0~ROW_BUF31的状态的示图。由于逻辑行1的数据已经被高速缓冲在与逻辑存储体0LBANK0相对应的行缓冲器ROW_BUF0中,因此需要移除储存在行缓冲器ROW_BUF0中的数据以将逻辑行2的数据高速缓冲在行缓冲器ROW_BUF0中。用于移除储存在行缓冲器ROW_BUF0中的数据的操作可以通过将该部分(图9中的KJ)(即,高速缓冲在行缓冲器ROW_BUF0中的数据)移动至存储器件110来执行。在行缓冲器ROW_BUF0变成空的之后,行缓冲器ROW_BUF0的逻辑行地址LRA<0:9>可以用“2”来更新,其物理存储体地址PBA<0:2>可以用“0”来更新,物理行地址PRA<0:11>可以用“2”来更新,以及从存储器件110的物理存储体0PBANK0的物理行2读取的数据可以被高速缓冲在行缓冲器ROW_BUF0中,如图10中所示。由于高速缓冲在行缓冲器ROW_BUF0中的数据DATA0~DATA1023已经重新从存储器件110高速缓冲,因此数据有效性信息V0~V1023的片段全部可以具有值“1”,而脏/干净信息DIRTY0~DIRTY1023的片段全部可以具有值“0”。此外,由主机HOST请求的数据(即,属于逻辑存储体0LBANK0的逻辑行2且已经被主机HOST请求的列的数据)可以被传输给主机HOST。

图11是根据本发明的一个实施例的存储系统的读取操作的流程图。例如,图11的读取操作可以通过图1中的存储系统100的存储器控制器120来执行。

根据图11的实施例,首先在步骤S1110处,存储系统100可以接收针对逻辑存储体LBANKK的读取请求。例如,存储系统100的存储器控制器120可以从主机HOST接收针对逻辑存储体LBANKK(K为大于等于1至小于等于23的整数)的特定逻辑行的读取请求。

此外,在步骤S1120处,存储器控制器120检查与逻辑存储体K LBANKK相对应的行缓冲器K ROW_BUFK是否是空的。

在步骤S1130处,如果作为步骤S1120的检查结果,确定行缓冲器K ROW_BUFK是空的(步骤S1120处的Y),则从存储器件110读取数据,用读取的数据更新行缓冲器K ROW_BUFK,以及将由主机HOST请求的数据发送给主机。已经关于图7和相关描述详细描述了步骤S1130的操作。

如果作为检查结果,确定行缓冲器ROW_BUFK不是空的(步骤S1120处的N),则存储器控制器120在步骤S1140处检查是否存在行命中(row hit)。在此情况下,行命中意味着主机HOST已经对其请求了读取操作的逻辑存储体K LBANKK的逻辑行与高速缓冲在行缓冲器ROW_BUFK中的逻辑行相同。

在步骤S1150处,作为步骤S1140的检查结果,如果确定行命中存在(步骤S1140处的Y),则存储器控制器120将高速缓冲在行缓冲器K ROW_BUFK中的数据发送给主机HOST,因为由主机HOST请求的数据已经被高速缓冲在行缓冲器ROW_BUFK中。

在步骤S1160处,作为步骤S1140的检查结果,如果行命中不存在(步骤S1140处的N),则控制器120用储存在行缓冲器K ROW_BUFK中的脏数据来更新存储器件110。在步骤S1170处,从存储器件110读取数据,用读取的数据更新行缓冲器ROW_BUFK,以及将由主机HOST请求的数据发送给主机HOST。当行缓冲器K ROW_BUFK用从存储器件110读取的数据更新时,可以更新一行的全部数据,或者可以仅更新一行的一些数据。已经关于图10和相关描述详细描述了这种情况中的操作。

图12是根据本发明的一个实施例的存储系统的写入操作的流程图。例如,图12的写入操作可以通过图1中的存储系统100的存储器控制器120来执行。

根据图12的实施例,首先,在步骤S1210处,存储器控制器120可以从主机HOST接收针对逻辑存储体K LBANKK的特定逻辑行的写入请求。

然后,在步骤S1220处,存储器控制器120检查在例如行缓冲器K ROW_BUF与在步骤S1210处接收的写入请求之间是否存在行命中。在一些实施例中,不存在行命中的情况可以包括高速缓冲在行缓冲器K ROW_BUFK中的逻辑行与在步骤S1210处已经请求了对其的写入操作的逻辑行不同的情况以及行缓冲器K ROW_BUFK是空的情况。

在步骤S1230处,作为步骤S1220的检查结果,如果确定行命中存在(步骤S1220处的Y),则用写入数据直接更新行缓冲器K ROW_BUFK。已经关于图9和相关描述详细描述了此情况中的操作。

在步骤S1240处,作为检查的结果,如果行命中不存在(步骤S1220处的N),则用行缓冲器K ROW_BUFK的脏数据来更新存储器件110。如果脏数据不存在,则可以省略步骤S1240的执行,因为不存在针对存储器件110的更新数据。其后,将高速缓冲在行缓冲器ROW_BUFK中的逻辑行改变为在步骤S1210处请求的逻辑行,以及在步骤S1250处用写入数据更新行缓冲器K ROW_BUFK。

根据本发明的实施例,可以在不增加存储系统的成本的情况下提升存储系统的性能。

虽然已经出于说明的目的而描述了各种实施例,但是对于本领域技术人员将明显的是,在不脱离所附权利要求书中所限定的本发明的精神和/或范围的情况下,可以作出各种改变和修改。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1