固态储存装置及其电源失效时的数据处理方法

文档序号:1627679 发布日期:2020-01-14 浏览:5次 >En<

阅读说明:本技术 固态储存装置及其电源失效时的数据处理方法 (Solid-state storage device and data processing method thereof during power failure ) 是由 李宜忠 谢尚均 曾士豪 毛超远 于 2018-07-06 设计创作,主要内容包括:一种固态储存装置及其电源失效时的数据处理方法,固态储存装置包括:一缓冲器,暂时储存一写入数据;一非挥发性记忆体,包括多个芯片,每一该芯片中包括一第一部分空间作为一数据储存区;以及一控制器,连接至一主机、该缓冲器、该非挥发性记忆体。当一电源失效发生时,若该写入数据未到达一预定数据量时,该控制器对该写入数据进行一同位检查,并产生一同位数据;以及,该控制器将该缓冲器中的该写入数据分配为至少一笔子写入数据,并将该至少一笔子写入数据同时储存至部分该些芯片的该数据储存区,且该控制器将该同位数据以及一位置信息储存至该非挥发性记忆体的一系统储存区。(A solid-state storage device and a data processing method thereof when a power supply fails, the solid-state storage device comprises: a buffer for temporarily storing a write data; a non-volatile memory, which comprises a plurality of chips, wherein each chip comprises a first partial space as a data storage area; and a controller connected to a host, the buffer and the non-volatile memory. When a power failure occurs, if the written data does not reach a preset data volume, the controller carries out a parity check on the written data and generates parity data; and the controller distributes the write data in the buffer into at least one sub-write data and simultaneously stores the at least one sub-write data to the data storage areas of part of the chips, and the controller stores the same-bit data and position information to a system storage area of the non-volatile memory.)

固态储存装置及其电源失效时的数据处理方法

技术领域

本发明涉及一种固态储存装置及其数据处理方法,且特别涉及一种固态储存装置及其电源失效(power failure)时的数据处理方法。

背景技术

众所周知,早期电脑系统中的数据大多储存在硬盘中(Hard Disk Drive)。而容错式磁碟阵列(redundant array of independent disk,简称RAID)则是把多个硬盘组合起来,使其效能超过一个价格昂贵且容量具大的硬盘。

举例来说,RAID硬盘中包括多个独立的硬盘,于写入动作时,控制器可将写入数据分配为多笔子写入数据,并且同时将多笔子写入数据写入RAID硬盘内所有的独立硬盘中。

于读取动作时,控制器由RAID硬盘内所有的独立硬盘中取得多笔子读取数据,并组合成读取数据。因此,RAID硬盘的优点在于提高数据的处理效能(performance)、增强数据可靠度(reliability)以及增加数据储存容量(capacity)等等。

由于现今的固态储存装置已逐渐取代传统硬盘,因此RAID的概念也被运用于单一个固态储存装置中。

请参照图1,其所绘示为现有固态储存装置的示意图。固态储存装置160中包括一控制器162、一缓冲器164、一非挥发性记忆体166。其中,非挥发性记忆体166由多个芯片(die)111~126组成,而芯片111~126可为与非门快闪记忆体芯片(NAND flash die)。另外,缓冲器164可为动态随机存取记忆体(DRAM)。

固态储存装置160经由一外部总线152连接至主机(host)150,其中外部总线152可为USB总线、SATA总线、PCIe总线、M.2总线或者U.2总线等等。

再者,控制器162连接至非挥发性记忆体166以及缓冲器164。基本上,控制器162根据主机150所发出的写入命令,将主机150的写入数据暂存于缓冲器164,并于适当的时机再将缓冲器164中的写入数据储存于非挥发性记忆体166中。再者,控制器162根据主机150所发出的读取命令进一步操控非挥发性记忆体166并取得读取数据,经由控制器162传递至主机150。

为了让固态储存装置160达到RAID硬盘的效能,控制器162可将非挥发性记忆体166中的每一个芯片111~126视为一个独立的硬盘来操作。

首先,控制器162根据写入命令,将主机150的写入数据暂存于缓冲器164。之后,控制器162于适当的时机将缓冲器164中的写入数据分配为多笔子写入数据,并且将多笔子写入数据同时写入芯片111~126中。举例来说,当缓冲器164中的数据量到达一预设数据量时,控制器162将缓冲器164中的写入数据分配为多笔子写入数据,并且将多笔子写入数据同时写入芯片111~126中。

当控制器162执行主机150的读取命令时,控制器162由芯片111~126中取得多笔子写入数据,并组合成读取数据并传递至主机150。

请参照图2A与图2B,其所绘示为非发性记忆体中储存写入数据的示意图。基本上,当缓冲器164中暂存的写入数据到达特定数据量后,控制器162才会将缓冲器164中的写入数据储存至非挥发性记忆体166。

再者,每个芯片111~126中的大部分空间被规划为数据储存区(data storagearea)111d~126d。控制器162可以将主机150的写入数据储存于芯片111~126中的数据储存区(data storage area)111d~126d。也就是说,芯片111~126中的数据储存区(datastorage area)111d~126d为主机150可以储存以及读取数据的区域。

再者,芯片111~126中的数据储存区(data storage area)111d~126d区分为多个条带(stripe)。举例来说,假设非挥发性记忆体166中共有16个芯片111~126,且固态储存装置160中所设定的条带化尺寸(stripe size)为160Kbytes。因此,控制器162可同时写入10Kbytes的大小的子写入数据至每个芯片111~126。另外,为了要维持非挥发性记忆体166中的数据可靠度。最后一个芯片126用来储存同位数据(parity data)。

亦即,每个芯片111~126的数据储存区(data storage area)111d~126d中的每特定储存空间(例如10Kbytes)是被逻辑地结合成一个条带(stripe)的储存空间。而每一条带的储存空间即为上述条带化尺寸(stripe size)。

再者,当缓冲器164中暂存了150Kbytes的写入数据后,控制器164会对150Kbytes的写入数据进行同位检查(parity check)并产生10Kbytes的同位数据(parity data)。因此,写入数据加上同位数据相当于条带化尺寸(stripe size)的160Kbytes。

再者,控制器162将150Kbytes的写入数据区分为15笔子写入数据Da1~Da15后,控制器162即将子写入数据Da1~Da15与同位数据Dap同时储存至芯片111~126的数据储存区111d~126d的第一条带(stripe)SP1中。

如图2A所示,芯片111的数据储存区111d储存了10Kbytes的子写入数据Da1、芯片112的数据储存区112d储存了10Kbytes的子写入数据Da2、芯片113的数据储存区113d储存了10Kbytes的子写入数据Da3。依此类推,芯片125的数据储存区125d储存了10Kbytes的子写入数据Da15。另外,芯片126的数据储存区126d储存了10Kbytes的同位数据Dap。

再者,当控制器162执行读取命令时,控制器162同时由芯片111~126中取得15笔子写入数据Da1~Da15与同位数据Dap,并进行同位检查后组合成150Kbytes的读取数据并传递至主机150。

如图2B所示,当缓冲器164中再次暂存了150Kbytes的写入数据时,控制器164会进行相同的动作,并将15笔子写入数据Db1~Db15与同位数据Dbp同时储存至芯片111~126的数据储存区111d~126d的第二条带SP2中。

再者,固态储存装置160的条带化尺寸(stripe size)并不限定为160Kbytes,而非挥发性记忆体166中的芯片数目也不限定为16个芯片。举例来说,非挥发性记忆体166中有n个芯片,且固态储存装置160的条带化尺寸设定mKbytes。因此,每个子写入数据的大小为(m/n)Kbytes。

发明内容

本发明的目的在于提供一种固态储存装置及其电源失效时的数据处理方法。

本发明提供的固态储存装置,包括:一缓冲器,暂时储存一写入数据;一非挥发性记忆体,包括多个芯片,每一该芯片中包括一第一部分空间作为一数据储存区;以及一控制器,连接至一主机、该缓冲器、该非挥发性记忆体。当一电源失效发生时,若该写入数据未到达一预定数据量时,该控制器对该写入数据进行一同位检查,并产生一同位数据;以及,该控制器将该缓冲器中的该写入数据分配为至少一笔子写入数据,并将该至少一笔子写入数据同时储存至部分该些芯片的该数据储存区,且该控制器将该同位数据以及一位置信息储存至该非挥发性记忆体的一系统储存区。

本发明有关于一种固态储存装置的数据处理方法,该固态储存装置中的一非挥发性记忆体包括多个芯片,且每一该芯片中包括一第一部分空间作为一数据储存区。该数据处理方法包括下列步骤:于该固态储存装置正常运作时,将一写入数据储存于一缓冲器,且持续判断是否发生一电源失效;当该电源失效发生时,若该写入数据未到达一预定数据量时,对该写入数据进行一同位检查,并产生一同位数据;将该写入数据分配为至少一笔子写入数据,并将该至少一笔子写入数据同时储存至部分该些芯片的该数据储存区;以及,将该同位数据以及一位置信息储存至该非挥发性记忆体的一系统储存区。

以下结合附图和具体实施例对本发明进行详细描述,但不作为对本发明的限定。

附图说明

图1为现有固态储存装置的示意图;

图2A与图2B为非发性记忆体中储存写入数据的示意图;

图3为本发明固态储存装置的示意图;

图4A为本发明固态储存装置遭遇电源失效时的数据处理方法的第一实施例;

图4B至图4C为本发明第一实施例的数据处理方法的示意图;

图5A为本发明固态储存装置遭遇电源失效时的数据处理方法的第二实施例;

图5B至图5C为本发明第二实施例的数据处理方法的示意图;

图6A为本发明固态储存装置遭遇电源失效时的数据处理方法的第三实施例;

图6B至图6C为本发明第三实施例的数据处理方法的示意图;

图7A为本发明固态储存装置遭遇电源失效时的数据处理方法的第四实施例;

图7B至图7C为本发明第四实施例的数据处理方法的示意图。

具体实施方式

下面结合附图对本发明的结构原理和工作原理作具体的描述:

基本上,运用于数据中心(data center)等级的固态储存装置必须要能够确保数据的可靠性,因此会有更多的数据保护措施用于固态储存装置。举例来说,电源失效(powerfailure)的数据保护措施。

请参照图3,其所绘示为本发明固态储存装置的示意图。相较于图1的固态储存装置。本发明固态储存装置360中的控制器362中包括一电压检测器(voltage detector)364连接至电源检测脚位(power detecting pin)pdp,用以检测固态储存装置360的电源电压Vcc是否稳定。

如图3所示,固态储存装置360中包括一电容器C,电容器C的第一端接收电源电压Vcc,电容器的第二端连接至接地电压。再者,控制器362的电源检测脚位pdp连接至电容器C的第一端。

根据本发明的实施例,当固态储存装置360正常运作时,控制器362的电压检测器364会持续检测电容器C上的电压。当电容器C上的电压下降至一特定电压值(例如0.95×Vcc)时,电压检测器364即判断出电源失效。此时,控制器362必须利用电容器C中残留的电量,进行数据保护动作。

在进行数据保护动作时,控制器362需要将缓冲器164中的写入数据储存至非挥发性记忆体166中,以防止缓冲器164中的写入数据随着固态储存装置160断电而消失。以下详细说明本发明固态储存装置遭遇电源失效时的数据处理方法。

请参照图4A,其所绘示为本发明固态储存装置遭遇电源失效时的数据处理方法的第一实施例。

首先,固态储存装置360正常运作(步骤S402)。亦即,当电源失效未发生时,固态储存装置360正常运作。此时,控制器362可以接收主机150并执行主机150的命令,例如控制器362执行写入命令,并将写入数据暂时储存于缓冲器164中。

再者,当电源失效发生(步骤S404)时,控制器362进行数据保护动作。此时,控制器362产生无效数据(invalid data)并进行同位检查,使得缓冲器164中的数据量扩充至条带化尺寸(步骤S406)。

接着,控制器362将缓冲器164中的数据区分为多笔子写入数据与同位数据(步骤S408)。之后,将所有子写入数据与同位数据同时储存至所有芯片111~126的数据储存区111d~126d中(步骤S410)。

接着,控制器362将系统数据更新于系统储存区(步骤S412)。

请参照图4B至图4C,其所绘示为本发明第一实施例的数据处理方法的示意图。举例来说,非挥发性记忆体166中共有16个芯片111~126,且固态储存装置360中所设定的条带化尺寸(stripe size)为160Kbytes。

根据本发明的实施例,每个芯片111~126中的大部分空间被规划为数据储存区(data storage area)111d~126d,而每个芯片111~126中的另一部分空间111s~126则组成一系统储存区(system storage area)。再者,芯片111~126中的数据储存区(datastorage area)111d~126d为主机150可以储存以及读取数据的区域,而主机150无法存取系统储存区中的数据。

基本上,系统储存区系储存系统数据(system data),其记录了固态储存装置360中的相关信息。举例来说,系统数据包括芯片111~126中数据储存区111d~126d内的可用空间范围、损坏区块(bad block)位置、或者记录发生的事件(event)等。

当固态储存装置360关机(turn off)时,控制器362会将系统数据更新于系统储存区。因此,当固态储存装置360再次开机(turn on)时,控制器362即可根据系统储存区中最新的系统数据来初始化(initialize)固态储存装置360后即可正常运作。

如图4B所示,在芯片111~126的数据储存区111d~126d的第一条带SP1中已经储存15笔子写入数据Da1~Da15与同位数据Dap。

假设电源失效发生时,缓冲器164中仅储存了20Kbytes的写入数据。此时,控制器362会产生130Kbytes的无效数据,并进行同位检查产生10Kbytes的同位数据。因此,缓冲器164中的数据量被扩充至160Kbytes的条带化尺寸。

如图4C所示,控制器362将缓冲器164中的写入数据区分为15笔子写入数据Db1、Db2、Div1~Div13与同位数据Dbp。之后,控制器362将所有子写入数据Db1、Db2、Div1~Div13与同位数据Dbp同时储存至芯片111~126的数据储存区111d~126d的第二条带SP2中。其中,子写入数据Div1~Div13为无效数据。

接着,控制器362将系统数据Ds1更新于系统储存区111s中。

当上述动作完成后,等到电容器C中残留的电量耗尽后,固态储存装置360便会被断电(power off)。

由以上的说明可知,当电源失效发生时,控制器362必须利用电容器C中残留的电量,进行数据保护动作以防止写入数据遗失,并确保写入数据的正确性。

然而,根据本发明的第一实施例,于进行数据保护动作时,控制器362必须产生无效数据、进行同位检查、将子写入数据与同位数据同时储存于所有芯片111~126的数据储存区111d~126d以及将系统数据更新于系统储存区。明显地,电容器C中残留的电量无法保证控制器362能够完成上述的所有动作。

请参照图5A,其所绘示为本发明固态储存装置遭遇电源失效时的数据处理方法的第二实施例。

首先,固态储存装置360正常运作(步骤S502)。亦即,当电源失效未发生时,固态储存装置360正常运作。此时,控制器362可以接收主机150并执行主机150的命令,例如写入命令或者读取命令。

当电源失效发生(步骤S504)时,控制器362进行数据保护动作。此时,控制器362根据缓冲器164中的写入数据来进行同位检查以产生同位数据(步骤S506)。

接着,控制器362将缓冲器164中的数据区分为多笔子写入数据与同位数据(步骤S508)。之后,将所有子写入数据与同位数据同时储存至部分芯片的数据储存区中(步骤S510)。

接着,控制器362将系统数据更新于系统储存区(步骤S512)。

请参照第请参照图5B至图5C,其所绘示为本发明第二实施例的数据处理方法的示意图。其中,非挥发性记忆体166中共有16个芯片111~126,且固态储存装置360中所设定的条带化尺寸(stripe size)为160Kbytes。

如图5B所示,在芯片111~126的数据储存区111d~126d的第一条带SP1中已经储存15笔子写入数据Da1~Da15与同位数据Dap。

假设电源失效发生时,缓冲器164中仅储存了20Kbytes的写入数据。此时,控制器362直接根据缓冲器164中的写入数据来进行同位检查,并产生10Kbytes的同位数据。此时,缓冲器164中的数据量仅被扩充至30Kbytes,未扩充到条带化尺寸。

如图5C所示,控制器362将缓冲器164中的写入数据区分为2笔子写入数据Db1、Db2与同位数据Dbp。之后,控制器362同时将子写入数据Db1、Db2与同位数据Dbp储存至三个芯片111~113的数据储存区111d~113d的第二条带SP2中,而其他芯片114~126的数据储存区114d~126d的第二条带SP2(虚线部分)中则未储存任何数据。如此,即可确保写入数据不会遗失。

接着,控制器362将系统数据Ds1更新于系统储存区111s中。

当上述动作完成后,等到电容器C中残留的电量耗尽后,固态储存装置360便会被断电(power off)。

相较于第一实施例,当电源失效发生时,第二实施例的控制器362不需要产生无效数据,所以可确保控制器362能够即时完成上述所有动作。然而,当同位数据Dbp写入芯片113的数据储存区113d之后,对应条带(stripe)内的其他空间(数据储存区114d~126d的第二条带SP2中的虚线部分区域)将暂时无法再被用来储存其他的子写入数据。换句话说,当固态储存装置360重新启动并欲储存新的写入数据时,新的写入数据将被储存至其他条带(stripe)中。例如,在上述实施例中,当固态储存装置360重新启动并欲写入新的写入数据时,新的写入数据无法被储存至第二条带SP2中的虚线部分区域,其将被储存至下个条带,例如第三条带SP3,中。

请参照图6A,其所绘示为本发明固态储存装置遭遇电源失效时的数据处理方法的第三实施例。

首先,固态储存装置360正常运作(步骤S602)。亦即,当电源失效未发生时,固态储存装置360正常运作。此时,控制器362可以接收主机150并执行主机150的命令,例如写入命令或者读取命令。

当电源失效发生(步骤S604)时,控制器362进行数据保护动作。此时,控制器362根据缓冲器164中的写入数据来进行同位检查以产生同位数据(步骤S606)。

接着,控制器362将缓冲器164中的数据区分为多笔子写入数据与同位数据(步骤S608)。之后,将所有子写入数据同时储存至部分芯片的数据储存区中(步骤S610)。

接着,控制器362将系统数据、位置信息以及同位数据更新于系统储存区(步骤S612)。

请参照图6B至图6C,其所绘示为本发明第三实施例的数据处理方法的示意图。其中,非挥发性记忆体166中共有16个芯片111~126,且固态储存装置360中所设定的条带化尺寸(stripe size)为160Kbytes。

如图6B所示,在芯片111~126的数据储存区111d~126d的第一条带SP1中已经储存15笔子写入数据Da1~Da15与同位数据Dap。

假设电源失效发生时,缓冲器164中仅储存了20Kbytes的写入数据。此时,控制器362直接根据缓冲器164中的写入数据来进行同位检查,并产生10Kbytes的同位数据。此时,缓冲器164中的数据量仅被扩充至30Kbytes,未扩充到条带化尺寸。

如图6C所示,控制器362将缓冲器164中的写入数据区分为2笔子写入数据Db1、Db2与同位数据Dbp1。之后,控制器362同时将子写入数据Db1、Db2储存至二个芯片111~112的数据储存区111d~112d的第二条带SP2中,而其他芯片113~126的数据储存区113d~126d的第二条带SP2中则未储存任何数据。

接着,控制器362将系统数据Ds1、位置信息Inf_b与同位数据Dbp1更新于系统储存区111s~113s中。其中,位置信息Inf_b用来指示子写入数据Db1、Db2在非挥发性记忆体166中的储存位置。亦即,同位数据Dbp1根据位置信息Inf_b所指示的子写入数据Db1、Db2来进行同位检查后所获得。换句话说,控制器362可根据位置信息Inf_b得知同位数据Dbp1是对应于哪些储存位置中的子写入数据进行同位检查后所产生。

当上述动作完成后,等到电容器C中残留的电量耗尽后,固态储存装置360便会被断电(power off)。

根据本发明的第三实施例,当电源失效发生时,控制器362不需要产生无效数据,所以可确保控制器362能够即时完成上述所有动作。再者,由于同位数据Dbp1更新于系统储存区111s~113s中,所以对应条带(stripe)内的其他空间将可继续用来储存子写入数据。换句话说,当固态储存装置360重新启动并欲储存新的写入数据时,新的写入数据可先被储存至断电前最后储存的对应条带中。例如,在上述实施例中,当固态储存装置360重新启动并欲储存新的写入数据时,新的写入数据可先被储存至其他芯片113~126的数据储存区113d~126d的第二条带SP2中。

请参照图7A,其所绘示为本发明固态储存装置遭遇电源失效时的数据处理方法的第四实施例。相较于本发明的第三实施例,第四实施例中增加了判断电源电压Vcc是否为假性电源失效(electrical brownout)的步骤(步骤S614)。

基本上,当电源失效时,控制器362会进行数据保护动作,且电容器C的电量会耗尽并使得固态储存装置360断电(步骤S616)。然而,当电容器C的电量耗尽之前,电源电压Vcc又回复正常时,则可视为假性电源失效(electrical brownout)。换句话说,如果电容器C的电量耗尽之前,电源电压Vcc又回复正常时,则控制器362回到步骤S602,使得固态储存装置360又再次正常运作。

请参照第请参照图7B至图7C,其所绘示为本发明第四实施例的数据处理方法的示意图。其中,图7B为接续图6C之后的运作。

如图6C所示,当控制器362将系统数据Ds1、位置信息Inf_b与同位数据Dbp1更新于系统储存区111s之后,控制器362将判断电源电压Vcc是否为假性电源失效(electricalbrownout)的步骤(步骤S614)。如果电源电压Vcc并非为假性电源失效,例如控制器362未检测到电源电压Vcc回复正常,则等到电容器C中残留的电量耗尽后,固态储存装置360便会被断电(power off)(步骤S616)。反之,如果确认电源电压Vcc是为假性电源失效,例如控制器362检测到电源电压Vcc又回复正常,则控制器362恢复为正常运作。

由于缓冲器164中已经暂存20Kbytes的写入数据。因此,当控制器362再接收130Kbyte的写入数据后,控制器362即可将缓冲器164中的写入数据进行同位检查并产生10Kbytes的同位数据Dbp2。亦即,缓冲器164中的数据量扩充至条带化尺寸。

如图7B所示,在正常运作下,控制器362将尚未写入非挥发性记忆体166的写入数据区分为13笔子写入数据Db3~Db15。接着,控制器362将13笔子写入数据Db3~Db15与同位数据Dp2储存于芯片113~126的数据储存区113d~126d的第二条带SP2中。

如图7C所示,假设缓冲器164中又接收了10Kbytes的写入数据时,电源失效发生。此时,控制器362直接根据缓冲器164中的写入数据来进行同位检查,并产生10Kbytes的同位数据。此时,缓冲器164中的数据量仅被扩充至20Kbytes,未扩充到条带化尺寸。

接着,控制器362将缓冲器164中的写入数据区分为1笔子写入数据Dc1与同位数据Dcp1。之后,控制器362同时将子写入数据Dc1储存至芯片111的数据储存区111d的第三条带SP3中,而第三条带SP3的其他数据储存区112d~126d中则未储存任何数据。

接着,控制器362将系统数据Ds2、位置信息Inf_c与同位数据Dcp1更新于系统储存区111s中。其中,系统数据Ds2、位置信息Inf_c与同位数据Dcp1将取代先前写入的系统数据Ds1、位置信息Inf_b与同位数据Dbp1。

当上述动作完成后,控制器362会持续判断是否为假性电源失效,即检测到电源电压Vcc是否回复正常,直到电容器C中残留的电量耗尽后被断电(power off)。

由以上的说明可知,本发明提出一种固态储存装置及其电源失效时的数据处理方法。固态储存装置360的控制器362中包括一电压检测器364可用来判断电源失效是否发生。当电源失效发生时,控制器362将缓冲器164中的写入数据储存至非挥发性记忆体166中,防止写入数据遗失。再者,同位检查后产生的同位数据,可以储存在非挥发性记忆体166的数据储存区或者系统储存区,如此将可以确保写入数据的正确性。

再者,本发明实施例中的电压检测器364也可以设计在控制器362外部。当电压检测器判断出电源失效时,则通知控制器362进行数据保护的动作。

另外,在本发明中利用每个芯片111~126中的小部分区域111s~126s来组成系统储存区。当然本发明并不限定于此,在此领域的技术人员也可以在非挥发性记忆体中增加一个芯片,并利用新增芯片内的空间来作为系统储存区。

当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。

22页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:存储器系统及该存储器系统的操作方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类