处理快速的非同步串流的方法及装置技术领域
本发明有关于一种电脑数据储存系统,尤指一种有效率处理存储
控制器快取记忆体内的主机写入数据,使得写入串流效率可以最大
化。
背景技术
在数据存储系统内,藉由利用已知的数据快取技术(包含重新写
入快取记忆体技术)来提升写入效能。当存储控制器接收到主机电脑
的写入请求时,存储控制器将写入数据储存于写入快取记忆体。如果
写入快取记忆体内仍有可用的空间,则会通知主机电脑此完成写入请
求已经完成。接着开放主机电脑以允许额外的读取或写入请求。如果
没有可用的写入快取记忆体空间,存储控制器必须直接移转此写入请
求至较慢的存储元件,如此会降低写入效能。
一旦写入数据位于写入快取记忆体内,存储控制器建立多种方式
来判断何时以及多少数量的写入数据传送至目标的存储元件。与如此
移转相关的动作通常称为自写入快取记忆体释出数据。释出写入数据
是很重要的因为其释放出写入快取记忆体的空间以接收来自主机电
脑的新写入请求,且数据是以冗余磁盘阵列(RAID)架构存储于存储元
件中。当单一或数个存储元件失效时,冗余RAID架构可以对数据进
行保存。因此有需要一种有效率处理主机写入请求以及将存储控制器
写入快取记忆体的写入数据传送至存储元件的方法。
发明内容
本发明解决现有技术的缺点。依据本发明的数个实施例,提供一
种可以有效率地将写入数据由存储控制器传送至条纹存储区域。该方
法包含有接收一主机写入请求,其中该主机写入请求包含一主机写入
请求大小;计算出填满一包含主机写入请求的一条纹的时间小于一主
机保证写入时间;以及处理该主机写入请求以作为一写回主机写入请
求。存储控制器将数个写回主机写入请求存储于一写入快取记忆体,
以及填满该条纹的时间为该条纹的大小除以包含该主机写入请求的
对应的主机写入串流的数据速率。该主机保证写入时间是该存储控制
器保证主机写入请求送进于写入快取记忆体以及条纹存储区域之一
者的最大时间区间。
在本发明的一实施例中,提供一种存储控制器,该存储控制器可
以有效率处理自一个或多个主机电脑写入数据至一包含一个或多个
存储元件的条纹存储区域。该存储控制器包含一处理器与一记忆体,
该记忆体耦接于该处理器。该记忆体包含一写入快取记忆体以及一主
机保证写入时间。该主机保证写入时间是该存储控制器保证主机写入
请求送进于写入快取记忆体以及条纹存储区域之一者的最大时间区
间。存储控制器接收一主机写入请求,该主机写入请求包含有一主机
写入请求大小。该存储控制器计算出填满一包含有该主机写入请求的
条纹的时间小于该主机保证写入时间,以及该存储控制器处理该主机
写入请求作为一写回主机写入请求。填满该条纹的时间是该条纹的大
小除以包含该主机写入请求的对应的主机写入串流的数据速率。
在本发明的另一实施例中,提供一种可以有效率地将写入数据传
送至存储元件的系统。该系统包含一主机电脑、一耦接于主机电脑的
存储控制器、以及一包含有一个或多个的存储元件且与存储控制器耦
接的条纹区域。该存储控制器包含一处理器以及一耦接于处理器的记
忆体。该记忆体包含一写入快取记忆体。该主机电脑将一主机写入请
求传送至存储控制器,该主机写入请求送进于条纹存储区域之中的一
条纹。当主机电脑将主机写入请求传送至存储控制器时,该存储控制
器计算出填满该条纹的时间未大于一主机保证写入时间以及处理主
机写入请求以作为一写回主机写入请求。填满条纹的时间为包含有主
机写入请求的条纹的大小除以包含该主机写入请求的对应的主机写
入串流的数据速率。
本发明的优点在于针对快速串流与慢速串流,优先将快速串流写
入至快取记忆体,藉此提升主机写入串流的写入效能。快速串流写入
数据至存储控制器的速度快于慢速串流,因此将整个条纹填满于写入
快取记忆体的速度快于慢速串流。当数据从整个条纹释出而非从部分
条纹释出,数据将依据最大效率从写入快取记忆体释出至存储元件的
条纹区域。通过将自整个条纹释出的频率最大化,使得写入快取记忆
体的使用率最大化以及存储控制器的网状写入效能最大化。
本发明的其他优点在于使得具有相对较小的写入快取记忆体的
存储控制器优于具有相对较大的写入快取记忆体的存储控制器,其中
较大的写入快取记忆体没有利用本发明。存储控制器的成本部分决定
于机上快取记忆体的速度与大小。因此,希望利用较小且更有效率的
存储控制器快取记忆体,以便维持存储控制器的成本有效性。
本发明还有其他优点在于存储控制器维持来自主机电脑较快的
写入数据速率。在其他实施例中,允许主机电脑在没有数据溢位以及
遗漏客户数据的可能性的情形之下,维持高的客户数据速率。
本发明的实施例的附加特征与优点明显地揭露于说明书,特别是
可与附图共同参酌。
附图说明
图1a绘示本发明第一实施例的非主机型数据存储系统的方块图;
图1b绘示本发明第二实施例的非主机型数据存储系统的方块图;
图1c绘示本发明第三实施例的非主机型数据存储系统的方块图;
图2a绘示本发明第一实施例的主机型数据存储系统的方块图;
图2b绘示本发明第二实施例的主机型数据存储系统的方块图;
图2c绘示本发明第三实施例的主机型数据存储系统的方块图;
图3绘示本发明一实施例的数据存储系统的方块图;
图4a绘示本发明一实施例的单一存储元件组成的条纹区域的示意
图;
图4b绘示本发明一实施例的复数个存储元件组成的条纹区域的示意
图;
图5a绘示本发明一实施例的写入数据串流的示意图;
图5b绘示本发明一实施例的爆发参数的示意图;
图6绘示本发明一实施例的主机数据串流的示意图;
图7绘示本发明一实施例的针对快速串流与慢速串流来填满条纹的
时间示意图;
图8绘示本发明一实施例的所有主机写入串流的总体大数据的参数
的示意图;
图9绘示本发明一实施例的预先主机写入串流的参数的示意图;
图10绘示本发明一实施例的主机写入请求程序的流程图;
图11绘示本发明一实施例的串流分析程序的流程图;
图12绘示本发明一实施例的快速串流的新的主机写入请求程序的流
程图;以及
图13绘示本发明一实施例的较少最近使用串流序列的管理步骤的流
程图。
其中,附图标记说明如下:
100数据存储系统104主机电脑
108存储控制器108a冗余存储控制器
108b冗余存储控制器112主机汇流排
116、116a-116n存储元件120存储元件汇流排
124、132存储子系统128、136数据存储系统
140控制器间通讯链路
200、204、208数据存储系统
224应用程序
300数据存储系统308、308a、308b主机数据串流
312中央处理器316记忆体
324读取数据快取记忆体328写入数据快取记忆体
320数据串流大数据332主机输入/输出请求
340计时器
400条纹区域401条纹N
408条纹N+1412条纹N+2
416条纹N+3420区块A
424区块B428区块C
432区块D434条纹区域
434条纹M440条纹M+1
444条纹M+2448条纹M+3
452区块E456区块F
460区块G464区块H
468区块I472区块J
488区块K480区块L
484区块M488区块N
492区块O496区块P
512时段516爆发
516a爆发0516b爆发1
516c爆发2516d爆发3
516e爆发4516f爆发5
520爆发长度
604逻辑区块地址608指定时间
612a-612m主机写入请求616主机写入请求大小
620起始逻辑区块地址624结束逻辑区块地址
632串流窗口
704写入快取708回写快取
712透写快取716填满条纹的时间
720主机保证写入时间804主机保证写入时间
808较少最近使用串流序列812原始容器表
816条纹大小904串流标识
908上次选中的串流时间912串流数据速率
916主机写入序列920主机写入请求
924主机写入请求大小928主机写入请求之起始逻辑区块地址
932爆发取样序列940上次爆发后的时间的取样序列
具体实施方式
本案的发明人观察到从主机电脑至存储控制器的输入/输出工作
量有多种效能问题。特别是指当有需要许多具有不同数据速率的大量
的循序写入串流的存储控制器写入快取记忆体时,有效率地管理存储
控制器写入快取记忆体是困难的。例如,将所有的主机写入串流被同
样地处理的话,存储控制器写入快取记忆体将会快速地被来自于慢速
串流的部分条纹填满。如此会使得存储控制器将部分串流自写入快取
记忆体释出而传送至存储元件,以便释放更多的写入快取记忆体空
间,或者一旦没有可使用的写入快取记忆体空间时,快速串流必须使
用连续写入模式。部分条纹写入包含少于在完整条纹内的所有数据。
任何一种结果都是高度没有效率。因此有需要针对每一个串流的数据
速率进行追踪,以及允许对于快速串流优先进行写入快取记忆体,以
便将释出至存储元件的完整条纹的数目极大化。
图1a绘示本发明第一实施例的非主机为基础型的数据存储系统
100的方块图。
数据存储系统100包含一个或数个主机电脑104。主机电脑104
一般为伺服器,但是也可为桌上型电脑或行动型电脑。主机电脑104
执行应用程序而产生读取请求以及写入请求,通过主机汇流排112(或
网络)将读取请求以及写入请求传送至存储控制器108。在本实施例
中,主机汇流排(或网络)112可为SCSI、FC-AL、USB、火线(Firewire)、
SSA、SAS、SATA或高速汇流排(Infiniband)。在其他实施例中,主
机汇流排(或网络)112可为乙太网络、iSCSI、光纤通道、SSA、ESCON、
ATM、FICON、NVMe或高速汇流排(Infiniband)。
主机电脑104可与多个存储控制器108相连接,为了清楚起见,
附图中仅显示出一个存储控制器108。在本实施例中,存储控制器108
为磁盘阵列(RAID)控制器。在其他实施例中,存储控制器108为存储
元件,例如调度、虚拟化、复制或备份装置。存储控制器108通过存
储元件汇流排120将数据至存储子系统124内的两个存储元件116a、
116b,或者通过存储元件汇流排120接收来自两个存储元件116a、
116b的数据。存储元件汇流排120可为任何合适的存储汇流排或汇
流排组,其包含但不仅限于SCSI、光纤、SAS、SATAorSSA,以便
于存储控制器108与存储元件116之间直接传送数据。
在本实施例中,存储子系统124包含十二个存储元件116。在其
他实施例中,存储子系统124可包含少于或多于十二个存储元件116。
存储元件116包含多种类的存储元件,其包含硬盘驱动机、固态驱动
机、光学驱动机、以及磁带驱动机。在指定的存储元件种类的范围内,
有数个存储元件116的子系统依据效能进行配置,例如硬盘驱动机依
据快取空间、驱动频率(例如5400,7200,10000,以及1500RPM)、伫
列深度、随机传送率、或序列的传送率。
图1b绘示本发明第二实施例的非主机为基础型的数据存储系统
128的方块图。本实施例的数据存储系统128与第一实施例的数据存
储系统100相似,差别在于存储子系统132与存储元件116设于存储
控制器108内。如图1b所示,存储控制器108为一个磁盘阵列控制
器。然而在其他实施例中,存储控制器108可为多个磁盘阵列控制器。
图1c绘示本发明第三实施例的非主机为基础型的数据存储系统
136的方块图。本实施例的数据存储系统136与第一及第二实施例的
数据存储系统100、128相似,差别在于存储控制器108包含有两个
冗余存储控制器108a、108b。在本实施例中,当冗余存储控制器108a、
108b其中一个发生故障时,由于冗余存储控制器108a、108b利用主
动-主动(active-active)容错移转功能,可通过主机104持续地使用存储
元件116。控制器间通讯链路140为冗余存储控制器108a、108b之间
的通讯及数据传递路径,以便反映写入数据以及使得容错移转与故障
后恢复的操作同步进行。图2a绘示本发明第一实施例的主机为基础
型的数据存储系统200的方块图。本实施例的数据存储系统200相似
于图1a的数据存储系统100,差别在于存储控制器108设于主机电
脑104内。存储控制器108连接主机电脑104的区域汇流排,其包含
RapidIO、PCI、PCI-X或PCIExpress。存储控制器108可整合于主
机电脑104的主机板,或者为附加的板体或其他形式与主机电脑104
相组接。
图2b绘示本发明第二实施例的主机为基础型的数据存储系统
204的方块图。数据存储系统204将存储子系统124的功能整合于主
机电脑104中。数据存储系统204为高度自给式整合数据系统。
图2c绘示本发明第三实施例的主机式的数据存储系统208的方
块图。本实施例的数据存储系统208与数据存储系统200相似,但是
将存储控制器108改由软件方式取代。主机电脑104与存储元件汇流
排120之间通过主机汇流排配接器212来连接,藉此提供适当的数据
与命令缓冲功能,就如同协定控制以及低阶错误操作一样。中央处理
器216执行记忆体220内的应用程序224以便控制记忆体220与存储
子系统124内的存储元件116a、116b之间的数据流通。
图3绘示本发明一实施例的数据存储系统300的方块图。数据存
储系统300包含一个或多个主机电脑104,而主机电脑104通过汇流
排112(或网络)与存储控制器108连接。主机电脑104产生主机串流,
而主机串流为主机输入/输出请求332的数个群组。
存储控制器108包含一中央处理器312(或处理器),其执行存储
于记忆体316内的程序指令,而记忆体316与中央处理器312耦接。
中央处理器312包含任何适用于执行存储控制器108的程序的任何处
理装置,例如微软x-86相容处理器、嵌入式处理器、行动处理器、
且/或RSIC处理器。中央处理312可包含数个装置,其包含现场可编
辑逻辑闸阵列(FPGAs)、记忆体控制器、北桥装置、且或南桥装置。
记忆体316可为挥发性记忆体、非挥发性记忆体、或挥发性与非
挥发性记忆体的组合。记忆体316包含韧体,其包含中央处理器312
取得与执行的程序指令。非挥发性记忆体包含但不限制为快闪记忆
体、SD、EPROM、EEPROM、硬盘、及NOVRAM。挥发性记忆体
存储数个数据结构以及使用者数据。挥发性记忆体包含但不限制为
SRAM、DDRRAM、DDR2RAM、DDR3RAM、Z-RAM、TTRAM、
A-RAM、ETARAM、及其他形式的暂存记忆体。
记忆体316包含读取数据快取记忆体(readdatacache)324。在其
他实施例中,记忆体316还可包含一写入数据快取记忆体328,读取
数据快取记忆体324以及写入数据快取记忆体328分别改善了对于主
机电脑104的读取与写入效能。记忆体316也包含数据串流大数据
320。数据串流大数据320存储与主机输入/输出请求332相关的参数,
且用于控制循序的输入操作。
存储控制器108与存储子系统124、132相耦接,存储子系统124、
132包含一个或数个存储元件116a-116n。经常取用数据从存储元件
116读取并传送至读取数据快取记忆体324,如此一来,对于主机输
入/输出请求332的反应,相较于直接从存储元件116读取而言快速
许多。写入数据起初存储于写入数据快取记忆体328,其相较于直接
写入存储元件116而言快速许多。
在其他实施例中,存储控制器108包含数个计时器340。计时器
340可为中央处理器312控制的硬件,或者为中央处理器312内执行
的软件。计时器340量测主机写入请求332的参数,详细内容将于后
续说明书中阐述。计时器340的数量并未受限,在本发明中,只有一
个计时器340配置给所有的主机写入请求332。
可以理解的,存储控制器108可配置于数种不同的功能组织与架
构,前提在不超出本发明附图与说明书的范围。
图4a绘示本发明一实施例的由单一存储元件条纹区域400的示
意图。
单一存储元件116或单一存储元件116的一部分可组成一条纹区
域400。存储元件116可为硬盘驱动机、光学驱动机、磁带驱动机、
固态装置或其他形式的大量数据存储元件。条纹区域400为包含有两
个或更多个平均大小条纹的逻辑区域。存储元件116的一个条纹的一
部分为区块(chunk)。
图4a绘示具有条纹N(401)、条纹N+1(408)、条纹N+2(412)、以
及条纹N+3(416)的条纹区域400的示意图。条纹N(401)具有区块
A(420),条纹N+1(408)具有区块B(424),条纹N+2(412)具有区块
C(428),以及条纹N+3具有区块D(432)。虽然图4a绘示单一存储元
件的条纹区域400具有四个条纹404、408、412、416以及四个区块
420、424、428、432。可以理解的是,单一存储元件的条纹区域400
可具有少于四个条纹/区块或多于四个条纹/区块。此外,单一存储元
件的条纹区域400可仅占用单个存储元件116的可使用数据存储空间
的一部分,而且在相同的存储元件116上还有其他的单一存储元件的
条纹区域400。当虚拟硬盘348为单一的存储元件116,该虚拟硬盘
条纹大小为区块420、424、428、或432的大小。
图4b绘示本发明一实施例的由多重存储元件条纹区域434的示
意图。
复数个存储元件116或复数个存储元件116的一部分可组成条纹
区域434。图4b绘示具有三个存储元件116a、116b、116c的条纹区
域434。条纹区域434具有四个条纹:条纹M(434)、条纹M+1(440)、
条纹M+2(444)、以及条纹M+3(448)。条纹M(436)具有区块E(452)、
区块F(456)以及区块G(460)。条纹M+1(440)具有区块H(464)、区块
I(468)以及区块J(472)。条纹M+2(444)具有区块K(488)、区块L(480)
以及区块M(484)。条纹M+3(448)具有区块N(488)、区块O(492)以及
区块P(496)。虽然图4b绘示由复数个存储元件组成的条纹区域434
具有四个条纹436、440、444、448以及三个存储元件116a、116b、
116c。可以理解的是,由复数个存储元件组成的条纹区域434可具有
少于或多于四个条纹,或者少于或多于三个存储元件116。在本发明
中,条纹400以及434分别为由单个存储元件组成的条纹区域400以
及由复数个存储元件组成的条纹区域434。此外,复数个存储元件组
成的条纹区域434仅占用存储元件116的群组上的可使用数据存储空
间的一部分,以及在相同的存储元件116的群组上还有其他由复数个
存储元件组成的条纹区域434。当虚拟硬盘348由复数个存储元件116
组成,虚拟硬盘的大小为条纹内的所有区块的大小的总合:条纹
M(436)的大小等于区块452、456、460的大小总和,条纹M+1(440)
的大小等于区块464、468、472的大小总和,条纹M+2(444)的大小
等于区块476、480、484的大小总和,条纹M+3(448)的大小等于区
块488、492、496的大小总和。
图5a绘示本发明一实施例的写入数据串流308的示意图。存储
控制器108于一时段512接收到六个爆发516所组成的数据群组,每
个爆发516具有百万位元(MB)的爆发大小。图5a绘示序列的主机写
入请求332的六个爆发516分别定义为爆发0(516a)、爆发1(516b)、
爆发2(516b)、爆发3(516d)、爆发4(516e)、以及爆发5(516f)。
爆发的时间间隔tlb显示于每两个连续的爆发516之间。爆发
0(516a)与爆发1(516b)的时间间隔为tlb0。爆发1(516b)与爆发2(516c)
的时间间隔为tlb1。爆发2(516c)与爆发3(516d)的时间间隔为tlb2。爆
发3(516c)与爆发4(516d)的时间间隔为tlb3。爆发4(516d)与爆发5(516e)
的时间间隔为tlb4。
图5b绘示本发明一实施例的爆发516的参数的示意图。参考图
5a,阐述存储于数据串流大数据320的爆发参数。一写入数据串流
308包含一个或多个爆发516。
每个爆发516具有一个相关联的爆发长度520的参数,其中爆发
0(516a)具有2MB的爆发长度520,爆发1(516a)具有1MB的爆发长
度520,爆发2(516c)具有6MB的爆发长度520,爆发3(516d)具有2MB
的爆发长度520,爆发4(516e)具有1MB的爆发长度520,以及爆发
5(516f)具有2MB的爆发长度520。两次爆发的时间区间524以tlb表
示,其中tlb0为200ms,tlb1为30ms,tlb2为60ms,tlb3为120ms,以
及tlb4为200ms。
图6绘示本发明一实施例的主机数据串流308的示意图。主机数
据串流308a包含于指定时间608所接收到的复数个主机写入请求
332,该些主机写入请求332分别等同于主机写入请求612。图6绘
示序列的主机写入请求612a、612b、612c所组成的第一爆发,序列
的主机写入请求612g、612h、612i所组成的第二爆发,以及序列的
主机写入请求612n、612o、612p、612q所组成的第三爆发。存储控
制器108于指定时间除了接收上述三个爆发之外,还接收非序列的主
机写入请求612d、612e、612f、612k、612l、612m。
主机数据串流308包含主机写入请求332、612,该些主机写入请求
332、612在指定时间608中序列地增加于逻辑区块地址604,或者序
列地减少于逻辑区块地址604,但上述现象不会出现于相同的主机数
据串流308中。
每个主机写入请求612具有一个相关的主机写入请求大小616,
而为了简化起见,所有的主机写入请求612都具有相同的主机写入请
求大小616。此外,每个主机写入请求612定址于一逻辑区块地址范
围,该范围包含一起始逻辑区块地址620以及一结束逻辑区块地址
624。存储控制器108在指定时间608接收每个主机写入请求612。
例如,存储控制器108于时间t0接收序列的主机写入请求0(612a),
于时间t1接收序列的主机写入请求1(612b),以及于时间t2接收序列
的主机写入请求2(612c)。
存储控制器108判断是否每个接收到的主机写入请求612都为当
前的主机数据串流308的一部分,而更详细的内部将随后搭配流程图
阐述。对于循序的主机写入请求612,存储控制器108依据每个主机
数据串流308的第一个主机写入请求612来建议一个串流窗口632,
其中该串流窗口632包含有起始逻辑区块地址620与结束逻辑区块地
址624。在较佳的实施例中,串流窗口632的起始逻辑区块地址620
的范围一开始取决于主机写入请求大小616。存储控制器108将主机
写入请求大小乘以8来建立一串流窗口偏移量。存储控制器108将串
流窗口偏移量加至起始逻辑区块地址620,以便获得一串流窗口逻辑
区块地址上限,以及从接收到的主机输入/输出请求的起始逻辑区块
地址620,以便建立一串流窗口逻辑区块地址下限。
当存储控制器108接收到位于串流窗口632之外的一个新的主机
写入请求612时,串流窗口632的边界需要改变。如此的目的是将对
于相同的主机数据串流308的序列的主机写入请求612,维持在一串
流窗口632之内。存储控制器108用于调整串流窗口632的步骤详述
在申请于2014年8月11日的美国专利申请案第14/456,328号。
图7绘示本发明一实施例的对于快速与慢速串流填满条纹所需
时间的示意图。写入快取704可使用回写快取(writebackcaching)708
或透写快取(writethroughcaching)712的处理方式。藉由回写快取708
的处理方式,存储控制器108起初将主机写入请求332转移至写入快
取记忆体328,之后将主机写入请求332的写入数据转移至一个或多
个存储元件116。藉由透写快取712的处理方式,存储控制器108起
初将主机写入请求332的数据直接地转移至一个或多个存储元件
116,从而跳过(bypass)写入快取记忆体328。
综上所述,无论对于主机写入请求332采用回写快取708或透写
快取712的处理方式,乃取决将含有主机写入请求332的条纹填满所
需的时间。高速数据传输率填满条纹的速度快于慢速数据传输率。将
主机保证写入时间720的预设值与填满条纹的时间716的数据传输率
相互比较以决定存储控制器108是否使用回写快取708或透写快取
712的处理方式。如果填满条纹的时间716小于主机保证写入时间
720,则存储控制器108使用回写快取708的处理方式。相对应地,
如果填满条纹的时间716大于主机保证写入时间720,则存储控制器
108使用透写快取712的处理方式。如果填满条纹的时间716等于主
机保证写入时间720,则存储控制器108可以使用回写快取708或者
透写快取712的处理方式。
图8绘示本发明一实施例的针对所有的主机写入串流308的整体
大数据320的参数的示意图。整体大数据320包含有一主机保证写入
时间804。主机保证写入时间804的定义为存储控制器108保证来自
于主机写入请求332的数据位于写入快取记忆体328或一个(或多个)
存储元件116之内。主机保证写入时间804为本发明的技术核心,且
对于主机电脑104的应用十分重要,以便用于管理受到限制的主机数
据存储与快取资源。
总体大数据320也包含一较少最近使用(Leastrecentlyused)串流
序列808。较少最近使用串流序列808允许存储控制器108持续追踪
所有的有效主机写入请求的历史。较少最近使用串流序列808的每个
入口为特定的主机写入串流308的标识值,从而所有目前的有效主机
写入串流308唯一地表示。最新的主机写入串流808a的标识符填入
于较少最近使用串流序列808的尾端,同时最旧的主机写入串流808n
的标识符填入较少最近使用串流序列808的头端。根据条件的需求,
在本发明中,可增加主机写入串流308至较少最近使用串流序列808,
或者从较少最近使用串流序列808之中删除主机写入串流308。
整体大数据320也包含一原始容器表812。原始容器表812被虚
拟化为空的,而存储控制器108配置数据于可利用的记忆体316。当
接收新的数据时,原始容器表812为分配至条纹基础的数据结构,而
且不会超过条纹边界。每个原始容器表812具有相对应的条纹大小
816,而一个原始容器表812的条纹大小816可与不同的原始容器表
812相同或不同。在较佳的实施例中,存储控制器108支援64个原
始容器表812。
图9绘示本发明一实施例的每一串流大数据320的参数的示意
图。每个主机写入串流308的每一串流大数据320的参数可以不相同,
而所有的主机写入串流308具有如图9所示的所有参数。
每一串流大数据320的参数包含串流标识904、上次击中的串流
时间908、以及串流数据速率912。串流标识904唯一辨别来自其他
串流的串流。上次击中的串流时间908为主机写入串流308接收到上
次写入请求332的时间的一时间印记,或者何时产生新的主机写入串
流308的时间。串流数据速率912乃依据上次爆发后的时间524来计
算(参阅图5a与图5b)。
每一串流大数据320的参数也包含等候判断的主机写入序列
916,其针对目前的主机写入串流308以及所有等候判断的写入请求
332来存储大数据320。最新的等待判断的主机写入请求916a配置于
主机写入序列916的尾端,而最旧的等待判断的主机写入请求916n
配置于主机写入序列916的头端。主机写入序列916的每个入口包含
三个参数:主机写入请求920、主机写入请求大小924、以及主机写
入请求起始逻辑区块地址928。
每一主机写入大数据320的参数还包含用来管理爆发516且相互
关联的爆发取样序列932以及上次爆发后的时间的取样序列940,以
便计算出与主机写入串流308相对应的数据速率912。
爆发取样序列932为具有数个位置的循环序列,其存储有每个爆
发516最新的爆发长度520。相较于预设的爆发长度520,较旧的爆
发长度520会从爆发取样序列932之中去除。在最佳的实施例中,爆
发取样序列932有10个入口。在其他实施例中,爆发取样序列932
的入口可少于10个。目前的爆发长度指标936可确认目前在爆发取
样序列932之中的爆发长度520的入口。
上次爆发后的时间的取样序列940存储有介于连续成对的爆发
516的时间的最新数值。图5a与图5b更详细阐述有关上次爆发后的
时间524的内容。爆发取样序列932中的每个爆发长度入口具有一个
上次爆发后的时间的取样序列940中的相对应的上次爆发后的时间
524的入口。因此,爆发取样序列932以及上次爆发后的时间的取样
序列940具有相同数目的入口。上次爆发后的时间的指标944确认上
次爆发后的时间的取样序列940中的上次爆发后的时间524的入口。
参阅图10,绘示本发明一实施例的处理主机写入请求332的流
程图。流程开始于步骤1004。
在步骤1004中,存储控制器108接收来自于一主机电脑104的
一个新的主机写入请求332。接着进入步骤1008。
在步骤1008中,如果主机写入串流308已经存在,存储控制器
108执行一使得一现存的主机写入串流有关于该主机写入请求322的
串流描绘过程。否则,存储控制器108建立一个新的主机写入串流
308。接着进入步骤1012。
在步骤1012中,存储控制器108可决定主机写入请求填满条纹
的时间是否小于主机保证写入时间804。该决定步骤为本发明之核心,
而且最后决定是否存储控制器会使用透写快取712与回写快取708之
一者去完成该主机写入请求332。主机保证写入时间804为存储控制
器108保证来自主机写入请求332的数据位于写入快取记忆体328与
一个/或多个存储元件116之一者。存储控制器108传送一认可响应
至主机电脑104,其中主机电脑104传送主机写入请求332,如此意
指来自于主机写入请求332的数据位于写入快取记忆体328或存储元
件116。如果主机写入请求332填满条纹的时间少于主机保证写入时
间804,接着对应的主机写入串流308具有一快速数据速率912并且
进入步骤1016。如果主机写入请求332填满条纹的时间未少于主机
保证写入时间804,接着相对应的主机写入串流308具有慢速数据速
率912并且进入步骤1020。
在步骤1016中,存储控制器108决定主机写入请求332是否应
该被延期。延期的意义指存储控制器108确认主机写入请求332是否
应该被放置于一个与主机写入串流308相对应的等待主机写入序列
916之中以及确认主机写入请求332的数据带入存储控制器108的动
作是否应该延期。然而,在所有例子中(意即无论主机写入请求332
是否被延期),主机写入请求332最后总是被视为一个回写写入请求。
图12将更为详细地阐述步骤1016的其他细节。
在步骤1020中,存储控制器108将主机写入请求332视为写进
写入请求。意指与主机写入请求332相对应的主机写入串流308的数
据速率较慢,因此通过主机写入请求332的数据并不会存储于写入快
取记忆体328的方式来改善效率,并且改为直接地将主机写入请求
332的数据存储于存储元件116,以作为写进操作。接着进入步骤1004
来等待下一个主机写入请求332。
在其他实施例中,并不进行量测填满条纹所需时间的步骤,而是
改为量测填满条纹区块所需的时间。慢速移动串流308完整写入一条
纹所花费的时间可能大于主机保证写入时间804,但是写入一区块的
花费时间可能少于主机保证写入时间804。所有属于该区块的主机写
入请求332可被允许进入写入快取记忆体328。接着多个主机写入请
求332可合并为单个写入集合而传送至包含该区块的存储元件116;
藉此,最小化单一区块读取-修正写入的循环次数。
参阅图11,绘示本发明一实施例的串流308处理方法的流程图。
图11更详细地阐述图10的步骤1016。该处理流程于步骤1104开始。
在步骤1104中,存储控制器108接收来自于主机电脑104的一
主机写入请求332。接着进入步骤1108。
在步骤1108中,存储控制器108决定是否主机写入请求612插
入至一目前的主机写入串流308。如果主机写入请求612插入至一目
前的主机写入串流308,接着进入步骤1116。如果主机写入请求612
并不插入至一目前的主机写入串流308,接着进入步骤1112。
在步骤1112中,如果主机写入请求612并没有插入至目前的主
机写入串流308,则存储控制器108建立一个新的主机写入串流308。
该新的主机写入串流308包含图9所示的大数据,其包含有创造时间
印记948以及如同该目前爆发长度520的主机写入请求大小。该目前
爆发长度520经由该目前爆发长度指标936所辨别。处理流程结束于
步骤1112,因此回归至步骤1016并且等待步骤1004中的新的主机
写入请求332。
在步骤1116中,如果主机写入请求332插入至一目前的主机写
入串流308,而且存储控制器108计算耗时,藉此,耗时等于目前的
时间减去对应于主机写入请求332的主机写入串流308之中的上次击
中的串流时间908。耗时简而言之为存储控制器108接收上次的主机
写入请求332至接受到目前的主机写入请求之间时间。该目前时间可
从离散计时器340获得,或者从计时器软件例行程序获得(如图3所
示)。上次击中的串流时间908从大数据记忆体320中获得,而且每
当目前的主机写入串流308接收到一个新的主机写入请求332或者存
储控制器108建立一个新的主机写入串流308,便会更新上次击中的
串流时间908。接着进入步骤1120。
在步骤1120中,存储控制器108确认是否步骤1116中计算的耗
时大于一预设时间。该预设时间为确认主机写入请求332是否为目前
的爆发516的一部分,或者是否为新的爆发516的开始的一个时间周
期。在较佳的实施例中,预设时间为10微秒。然而,在其他实施例
中,预设时间可大于10微秒或小于10微秒。如果耗时大于预设时间,
接着进入步骤1124。如果耗时没有大于预设时间,接着进入步骤
1132。
在步骤1124中,对于对应于主机写入请求332的主机写入串流
308,存储控制器108储存消逝时间以及主机写入请求大小于大数据
记忆体320。该耗时储存于上次爆发后的时间的取样序列940中以作
为上次爆发后的时间524,该上次爆发后的时间的取样序列940经由
该上次爆发后的时间的指标944来辨别。接着,新的上次爆发后的时
间524之值将被该目前的主机写入串流308的下一个耗时来重写。主
机写入请求大小616被储存于爆发取样序列932的爆发长度位置内,
其中爆发取样序列932经由目前的爆发长度指标936识别,在存储控
制器108增加目前爆发长度指标936。流程进入步骤1128。
在步骤1128中,存储控制器108计算作为权重平均的串流数据
速率912,而且储存串流数据速率912至大数据记忆体320。在较佳
的实施例中,存储控制器108使用上次爆发后的时间的取样序列940
中全部的上次爆发后的时间524的入口,来计算权重平均值。离目前
最近的上次爆发后的时间524的入口具有最大的权重值,而且离目前
最久的上次爆发后的时间524的入口具有最小的权重值,至于其他数
个入口的权重值平均地分布于最大权重值以及最小权重值之间。最
后,上次爆发后的时间524的权重值的总和除以上次爆发后的时间的
取样序列940中的入口数目的阶乘。在其他实施例中,串流数据速率
912可使用不相同且更为复杂的方式来计算,以便取得更合适的数值。
举例来说,直到存储控制器108已经接收10个爆发516的完整历史
纪录为止,不会计算出串流数据速率912。流程结束于步骤1128,因
此返回至步骤1016且等待步骤1004中的新的主机写入请求332。
在步骤1132中,主机写入请求332已经确认为目前爆发516的
一部分,而且存储控制器108将主机写入请求大小924加入于目前爆
发长度520。目前爆发长度520经由目前爆发长度指标936来辨别。
流程结束于步骤1132,因此返回至步骤1016而且等待步骤1004中
的新的主机写入请求332。
参阅图12,绘示本发明一实施例的快速串流308的新的主机写
入请求332的处理程序的流程图。图12更详细地阐述图10的步骤
1016。该流程开始于步骤1204。
在步骤1204中,存储控制器108获得串流参数以及来自串流大
数据320的原始容器812。接着进入步骤1208。
在决定步骤1208中,存储控制器108确认是否新的主机写入请
求332扩大或开始一个条纹。如果主机写入请求332包含一个位于条
纹的下限或上限的逻辑区块地址,则新的主机写入请求332延展条
纹。如果主机写入请求332包含一个位于条纹开头的逻辑区块地址,
则新的主机写入请求332起始条纹。如此的好处在于存储控制器108
可放置或储存足够的主机写入请求332至未决定的主机写入序列
916,以便组成一个条纹,或者可能关闭一个条纹。因为主机写入串
流308是序列的而不是随机的,所以本发明假设存储控制器108将开
始追踪一个新的条纹,而因此悬而未决的主机写入序列916上的所有
东西属于一个应该传送至写入快取记忆体328的旧有条纹,后来释出
至存储元件116。如果新的主机写入请求332延展或起始一个条纹,
则流程进入步骤1212。如果新的主机写入请求332没有延展或起始
一个条纹,则流程进入步骤1224。
在步骤1212中,对于目前的主机写入串流308(意即对应于主机
写入请求332的主机写入串流308)存储控制器108执行所有未决定的
主机写入请求916a-916n。针对对应于主机写入请求332的主机写入
串流308,当主机电脑104传送一个主机写入请求332至存储控制器
108,存储控制器108起初将主机写入请求332放置于未决定的主机
写入序列916。存储控制器108不曾要求来自主机电脑104的主机写
入请求332的数据,而数据依然位于主机电脑104。因此,未决定的
主机写入请求916a-916n为存储控制器108接收到的主机写入请求
332,但是数据本身尚未被接收。
存储控制器108执行未决定的主机写入请求916a-916n,其意指
存储控制器108要求来自主机电脑104的所有未决定的主机写入请求
916a-916n的数据,并且将该数据放置于存储控制器写入快取记忆体
328中,接着进入步骤1216。
在步骤1216中,没有任何长久未决定的主机写入请求916a-916n,
而且存储控制器108删除目前主机写入串流308之中未决定的主机写
入请求序列916之中所有未决定的主机写入请求916a-916n。接着流
程进入步骤1220。
在步骤1220中,存储控制器108将新的条纹948的起始逻辑区
块地址存储于大数据记忆体320。于步骤1224中,判断是否主机写
入请求332为目前或先前条纹的一部分。流程接着进入步骤1232。
在决定步骤1224中,存储控制器108确认主机写入请求332的
起始逻辑区块地址620是否少于目前的条纹起始逻辑区块地址948。
如果主机写入请求332的起始逻辑区块地址620少于该目前的条纹起
始逻辑区块地址948,则主机写入请求332不是该目前条纹的一部分
而且通过允许主机写入请求332进入写入快取记忆体328,将达成最
佳效能。如此一来,流程进入步骤1224。如果主机写入请求332的
起始逻辑区块地址620没有少于该目前的条纹起始逻辑区块地址
948,则流程进入步骤1228来检查悬而未决的主机写入序列916上延
期的主机写入请求332。
值得注意的是,本发明阐述的流程反应出最普遍的例子是增加序
列主机写入串流308,其中下一个主机写入请求332、612具有高于
目前主机写入请求332的起始逻辑区块地址620。然而,序列的主机
写入串流308有时候为降低序列主机写入串流308,其中下一个主机
写入请求332、612具有低于目前主机写入请求332的起始逻辑区块
地址620。本发明领域的技术人员应该理解如何修正本发明阐述的流
程以适应任何增加或下降序列主机写入串流308的组合。在任何情形
中,本发明考虑两种类型的序列主机写入串流308。
在步骤1228中,存储控制器108决定未决定的主机写入序列916
之中是否有未决定的主机写入请求916a-916n。如果未决定的主机写
入序列916之中有未决定的主机写入请求916a-916n,有助于增加新
的主机写入请求332至未决定的主机写入序列916,而且流程进入步
骤1232。如果未决定的主机写入序列916之中没有未决定的主机写
入请求916a-916n,则有助于直接增加新的主机写入请求332至写入
快取记忆体328,而且流程进入步骤1244。
在步骤1232中,针对目前的主机写入串流308,存储控制器108
将新的主机写入请求332放置于未决定的主机写入序列916的尾端。
接着流程进入步骤1236。
在步骤1236中,存储控制器108存储目前时间作为上次击中的
串流时间908。该目前时间可由计时器340提供或者由维持目前时间
的软件例行程序来提供。流程进入步骤1240。
在步骤1240中,存储控制器108将目前主机写入串流308移动
至较少最近使用串流序列808的尾端来作为最新的串流808a。流程
结束于步骤1240,返回至图10的步骤1016以等待步骤1004中的新
的主机写入请求。
在步骤1244中,存储控制器108将新的主机写入请求332传送
至存储控制器写入快取记忆体328。流程结束于步骤1244,返回至图
10的步骤1016来等待步骤1004的新的主机写入请求。
图13绘示本发明一实施例的较少最近使用串流序列808的管理
程序的流程图。图13所阐述的程序没有与其他程序同步进行,而在
较佳实施例中,每一秒执行一次。应该注意在其他实施例中,较少最
近使用串流序列808的管理程序的执行频率可少于或多于1秒。该流
程开始于步骤1304。
在步骤1304中,存储控制器108判断较少最近使用串流序列808
是否为空的。如果较少最近使用串流序列808是空的,则不再需要串
流管理动作并且流程结束于步骤1304。如果较少最近使用串流序列
808不是空的,则有一个或多个主机写入串流308位于较少最近使用
串流序列808并且流程进入步骤1308。
在步骤1308中,存储控制器108识别位于较少最近使用串流序
列808的头端808n的入口。该头端808n识别存储控制器108追踪的
最旧的主机写入串流308。流程进入步骤1312。
在步骤1312中,存储控制器108计算消逝时间,其中消逝时间
相等于目前主机写入串流308中的目前时间与上次选中的串流时间
908之差值。流程进入步骤1316。
在步骤1316中,存储控制器108判断耗时是否大于或等于主机
保证写入时间804。如果耗时大于或等于主机保证写入时间804,则
流程进入步骤1320。如果耗时没有大于或等于主机保证写入时间
804,则流程结束于步骤1316。
在步骤1320中,存储控制器108将未决定的主机写入序列916
之中的所有未决定的主机写入请求916a-916n传送至写入快取记忆体
328。流程进入步骤1324。
在步骤1324中,存储控制器108删除位于较少最近使用串流序
列808的头端808n的入口。如此清除旧有的串流308是为了符合主
机保证写入时间804,即使当存储控制器108没有接收到串流308的
更多的主机写入请求332,其中该串流308具有一个或多个未决定的
主机写入序列916的入口。流程进入步骤1304来再次检查较少最近
使用串流序列808是否为空的。
以上叙述依据本发明多个不同实施例,其中各项特征可以单一或
不同结合方式实施。因此,本发明实施方式的揭露为阐明本发明原则
之具体实施例,应不拘限本发明于所揭示的实施例。进一步言之,先
前叙述及其附图仅为本发明示范之用,并不受其限囿。其他元件的变
化或组合皆可能,且不悖于本发明的精神与范围。