本發(fā)明涉及電子設(shè)備,更具體地,本發(fā)明涉固態(tài)硬盤處理IO請(qǐng)求的方法以及用于存儲(chǔ)設(shè)備的存儲(chǔ)控制器。
背景技術(shù):
參看圖1,以固態(tài)存儲(chǔ)設(shè)備(Solid Storage Device,SSD)作為電子設(shè)備的舉例,圖1展示了存儲(chǔ)設(shè)備的框圖。存儲(chǔ)設(shè)備102同主機(jī)相耦合,用于為主機(jī)提供存儲(chǔ)能力。主機(jī)同存儲(chǔ)設(shè)備102之間可通過多種方式相耦合,耦合方式包括但不限于通過例如SATA、IDE、USB、PCIE、NVMe(NVM Express)、SCSI、以太網(wǎng)、光纖通道、無線通信網(wǎng)絡(luò)等連接主機(jī)與存儲(chǔ)設(shè)備102。主機(jī)可以是能夠通過上述方式同存儲(chǔ)設(shè)備相通信的信息處理設(shè)備,例如,個(gè)人計(jì)算機(jī)、平板電腦、服務(wù)器、便攜式計(jì)算機(jī)、網(wǎng)絡(luò)交換機(jī)、路由器、蜂窩電話、個(gè)人數(shù)字助理等。存儲(chǔ)設(shè)備102包括接口103、控制部件104、一個(gè)或多個(gè)NVM(非易失存儲(chǔ)器,Non-Volatile Memory)存儲(chǔ)芯片105以及固件存儲(chǔ)器110。接口103可適配于通過例如SATA、IDE、USB、PCIE、NVMe、SCSI、iSCSI、Inifiband、以太網(wǎng)、光纖通道等方式與主機(jī)交換數(shù)據(jù)??刂撇考?04用于控制在接口103、NVM存儲(chǔ)芯片105以及固件存儲(chǔ)器110之間的數(shù)據(jù)傳輸,還用于存儲(chǔ)管理、主機(jī)邏輯地址到閃存物理地址映射、擦除均衡、壞塊管理等??赏ㄟ^軟件、硬件、固件或其組合的多種方式實(shí)現(xiàn)控制部件104??刂撇考?04可以是FPGA(Field-programmable gate array,現(xiàn)場(chǎng)可編程門陣列)、ASIC(Application Specific Integrated Circuit,應(yīng)用專用集成電路)或者其組合的形式??刂撇考?04也可以包括處理器或者控制器??刂撇考?04在運(yùn)行時(shí)從固件存儲(chǔ)器110加載固件。固件存儲(chǔ)器110可以是NOR閃存、ROM、EEPROM等。固件用于提供電子設(shè)備底層功能,諸如BIOS、操作系統(tǒng)加載等。
存儲(chǔ)器目標(biāo)(Target)是NAND閃存封裝內(nèi)的共享芯片使能(CE,Chip Enable)信號(hào)的一個(gè)或多個(gè)邏輯單元(Logic Unit)。每個(gè)邏輯單元具有邏輯單元號(hào)(LUN,Logic Unit Number)。NAND閃存封裝內(nèi)可包括一個(gè)或多個(gè)管芯(Die)。典型地,邏輯單元對(duì)應(yīng)于單一的管芯。邏輯單元可包括多個(gè)平面(Plane)。邏輯單元內(nèi)的多個(gè)平面可以并行存取,而NAND閃存芯片內(nèi)的多個(gè)邏輯單元可以彼此獨(dú)立地執(zhí)行命令和報(bào)告狀態(tài)。在可從http://www.micron.com/~/media/Documents/Products/Other%20Documents/ONFI3_0Gol d.ashx獲得的“Open NAND Flash Interface Specification(Revision 3.0)”中,提供了關(guān)于目標(biāo)(target)、邏輯單元、LUN、平面(Plane)的含義。
在固態(tài)存儲(chǔ)設(shè)備中,利用FTL(Flash Translation Layer,閃存轉(zhuǎn)換層)來維護(hù)從邏輯地址到物理地址的映射信息。存儲(chǔ)了從邏輯地址到物理地址的映射信息的表結(jié)構(gòu)被稱為FTL表。邏輯地址構(gòu)成了操作系統(tǒng)等上層軟件所感知到的固態(tài)存儲(chǔ)設(shè)備的存儲(chǔ)空間。物理地址是用于訪問固態(tài)存儲(chǔ)設(shè)備的物理存儲(chǔ)單元的地址。在現(xiàn)有技術(shù)中還可利用中間地址形態(tài)實(shí)施地址映射。例如將邏輯地址映射為中間地址,進(jìn)而將中間地 址進(jìn)一步映射為物理地址。
公開號(hào)為CN102177556A的中國專利申請(qǐng)公開了一種閃存轉(zhuǎn)換層(FTL)。參看圖2,其展示了用于FTL的并行單元的查找表的例子。由于閃存芯片中的邏輯單元(Logic Unit)可以并行方式存取,因而,并行單元可以是一邏輯單元。邏輯單元內(nèi)可包括多個(gè)平面(Plane),并行單元也可為一平面。在一個(gè)例子中,固態(tài)驅(qū)動(dòng)器包括8個(gè)信道(channel)(也稱為“通道”)。每個(gè)通道上包括多個(gè)閃存芯片。通過圖2中提供的查找表,將0-31的并行單元編號(hào),映射到特定的通道、芯片啟用(也稱為“使能”)信號(hào)、邏輯單元以及平面。
MLC(Multi-Level Cell,多級(jí)單元)NVM是在每個(gè)存儲(chǔ)單元中能夠存儲(chǔ)至少兩比特信息的非易失性存儲(chǔ)器。同SLC(Single Level Cell)NVM相比,具有存儲(chǔ)容量大,成本低的特點(diǎn),但存儲(chǔ)的可靠性不如SLC。
中國專利文獻(xiàn)CN101710252B中公開了避免意外斷電時(shí)存儲(chǔ)設(shè)備的緩沖存儲(chǔ)器中的數(shù)據(jù)丟失的方案。其中,在存儲(chǔ)設(shè)備中提供備用電源,當(dāng)發(fā)生意外斷電時(shí),由備用電源向存儲(chǔ)設(shè)備提供臨時(shí)的電能,用于將緩沖存儲(chǔ)器(Cache)中的數(shù)據(jù)轉(zhuǎn)存到閃存中。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的一個(gè)目的在于提供將IO請(qǐng)求在并行單元上進(jìn)行調(diào)度的能力,從而使存儲(chǔ)設(shè)備能夠提供服務(wù)質(zhì)量管理和控制,并能夠降低IO請(qǐng)求延時(shí)的抖動(dòng)。本發(fā)明的又一個(gè)目的在于在固態(tài)存儲(chǔ)設(shè)備掉電后的有限時(shí)間內(nèi),能夠可靠地存儲(chǔ)數(shù)據(jù)。
根據(jù)本發(fā)明的第一方面,提供了根據(jù)本發(fā)明第一方面的第一處理IO請(qǐng)求的方法,用于向多個(gè)存儲(chǔ)器的多個(gè)并行單元分發(fā)IO請(qǐng)求,其中,為每個(gè)并行單元提供IO請(qǐng)求緩沖區(qū),所述IO請(qǐng)求緩沖區(qū)包括讀請(qǐng)求緩沖區(qū)、寫請(qǐng)求緩沖區(qū)以及擦除請(qǐng)求緩沖區(qū);所述方法包括:接收IO請(qǐng)求,基于IO請(qǐng)求對(duì)應(yīng)的物理地址以及訪問類型,將IO請(qǐng)求填入該物理地址和訪問類型對(duì)應(yīng)的并行單元的IO請(qǐng)求緩沖區(qū),所述訪問類型包括讀請(qǐng)求、寫請(qǐng)求以及擦除請(qǐng)求;從IO請(qǐng)求緩沖區(qū)之一中讀出IO請(qǐng)求;根據(jù)讀出的IO請(qǐng)求訪問并行單元。
根據(jù)本發(fā)明第一方面的第一處理IO請(qǐng)求的方法,提供了根據(jù)本發(fā)明第一方面的第二處理IO請(qǐng)求的方法,其中所述讀請(qǐng)求緩沖區(qū)、寫請(qǐng)求緩沖區(qū)以及擦除請(qǐng)求緩沖區(qū)對(duì)應(yīng)不同的處理優(yōu)先級(jí),以及其中所述從IO請(qǐng)求緩沖區(qū)之一中讀出IO請(qǐng)求,是根據(jù)處理優(yōu)先級(jí),選擇IO請(qǐng)求緩沖區(qū)之一。
根據(jù)本發(fā)明第一方面的第一處理IO請(qǐng)求的方法,提供了根據(jù)本發(fā)明第一方面的第三處理IO請(qǐng)求的方法,其中為每個(gè)并行單元提供執(zhí)行狀態(tài)指示單元,用于根據(jù)并行單元上正在處理的IO請(qǐng)求指示各個(gè)并行單元的IO請(qǐng)求處理能力,所述IO請(qǐng)求處理能力包括,能夠執(zhí)行讀請(qǐng)求、能夠執(zhí)行寫請(qǐng)求、和/或能夠執(zhí)行擦除請(qǐng)求;其中所述從IO請(qǐng)求緩沖區(qū)之一中讀出IO請(qǐng)求,是根據(jù)并行單元的IO請(qǐng)求處理能力,選擇IO請(qǐng)求緩沖區(qū)之一。
根據(jù)本發(fā)明第一方面的第一處理IO請(qǐng)求的方法,提供了根據(jù)本發(fā)明第一方面的第四處理IO請(qǐng)求的方法,其中所述讀請(qǐng)求緩沖區(qū)、寫請(qǐng)求緩沖區(qū)以及擦除請(qǐng)求緩沖區(qū)對(duì)應(yīng)不同的處理優(yōu)先級(jí),以及其中為每個(gè)并行單元提供執(zhí)行狀態(tài)指示單元,用于根據(jù)并行單元上正在處理的IO請(qǐng)求指示各個(gè)并行單元的IO請(qǐng)求處理能力,所述IO請(qǐng)求處理能力包括,能夠執(zhí)行讀請(qǐng)求、能夠執(zhí)行寫請(qǐng)求、和/或能夠執(zhí)行擦除請(qǐng)求;其中所述從IO請(qǐng)求緩沖區(qū)之一中讀出IO請(qǐng)求,是根據(jù)并行單元的IO請(qǐng)求處理能力,獲得該并行單元能夠處理的訪問類型,以及根據(jù)處理優(yōu)先級(jí),選擇該并行單元能夠處理的訪問類型所對(duì)應(yīng)的IO請(qǐng)求緩沖區(qū)之一。
根據(jù)本發(fā)明第一方面的第三或第四處理IO請(qǐng)求的方法,提供了根據(jù)本發(fā)明第一方面的第五處理IO請(qǐng)求的方法,其中當(dāng)所述并行單元正在執(zhí)行擦除請(qǐng)求時(shí),所述并行單元還能夠執(zhí)行讀請(qǐng)求;當(dāng)所述并行單元正在執(zhí)行寫請(qǐng)求時(shí),所述并行單元還能夠執(zhí)行寫請(qǐng)求或讀請(qǐng)求;以及當(dāng)所述并行單元正在執(zhí)行讀請(qǐng)求時(shí),所述并行單元還能處理讀請(qǐng)求、寫請(qǐng)求或擦除請(qǐng)求。
根據(jù)本發(fā)明第一方面的第三至第五處理IO請(qǐng)求的方法,提供了根據(jù)本發(fā)明第一方面的第六處理IO請(qǐng)求的方法,其中當(dāng)所述并行單元已經(jīng)執(zhí)行的讀請(qǐng)求數(shù)量小于所述并行單元已經(jīng)執(zhí)行的寫請(qǐng)求的預(yù)定倍數(shù)時(shí),所述并行單元還能處理讀請(qǐng)求;當(dāng)所述并行單元已經(jīng)執(zhí)行的讀請(qǐng)求數(shù)量不小于所述并行單元已經(jīng)執(zhí)行的寫請(qǐng)求的預(yù)定倍數(shù)時(shí),所述并行單元還能處理寫請(qǐng)求;當(dāng)所述并行單元已經(jīng)執(zhí)行的讀請(qǐng)求數(shù)量小于所述并行單元已經(jīng)執(zhí)行的擦除請(qǐng)求的預(yù)定倍數(shù)時(shí),所述并行單元還能處理擦除請(qǐng)求;當(dāng)所述并行單元已經(jīng)執(zhí)行的讀請(qǐng)求數(shù)量不小于所述并行單元已經(jīng)執(zhí)行擦除請(qǐng)求的預(yù)定倍數(shù)時(shí),所述并行單元還能處理擦除請(qǐng)求。
根據(jù)本發(fā)明第一方面的第二、第四至第六處理IO請(qǐng)求的方法,提供了根據(jù)本發(fā)明第一方面的第七處理IO請(qǐng)求的方法,其中所述讀請(qǐng)求緩沖區(qū)的處理優(yōu)先級(jí)高于寫請(qǐng)求緩沖區(qū),而所述寫請(qǐng)求緩沖區(qū)的優(yōu)先級(jí)高于所述擦除請(qǐng)求緩沖區(qū)的處理優(yōu)先級(jí)。
根據(jù)本發(fā)明第一方面的第二、第四至第七處理IO請(qǐng)求的方法,提供了根據(jù)本發(fā)明第一方面的第八處理IO請(qǐng)求的方法,其中所述IO請(qǐng)求緩沖區(qū)還包括讀重做請(qǐng)求緩沖區(qū),所述讀重做請(qǐng)求緩沖區(qū)的優(yōu)先級(jí)高于所述讀請(qǐng)求緩沖區(qū);所述方法還包括:響應(yīng)于讀請(qǐng)求出錯(cuò),生成讀重做請(qǐng)求;以及將根據(jù)讀重做請(qǐng)求對(duì)應(yīng)的物理地址,將讀重做請(qǐng)求填入該讀重做請(qǐng)求的物理地址對(duì)應(yīng)的并行單元的讀重做請(qǐng)求緩沖區(qū)。
根據(jù)本發(fā)明第一方面的第八處理IO請(qǐng)求的方法,提供了根據(jù)本發(fā)明第一方面的第九處理IO請(qǐng)求的方法,其中所述IO請(qǐng)求緩沖區(qū)還包括寫日志請(qǐng)求緩沖區(qū),所述寫日志請(qǐng)求緩沖區(qū)的優(yōu)先級(jí)高于所述讀重做請(qǐng)求緩沖區(qū);以及其中所述IO請(qǐng)求的類型還包括寫日志請(qǐng)求。
根據(jù)本發(fā)明第一方面的第九處理IO請(qǐng)求的方法,提供了根據(jù)本發(fā)明第一方面的第十處理IO請(qǐng)求的方法,其中所述IO請(qǐng)求緩沖區(qū)還包括寫日志請(qǐng)求緩沖區(qū),以及其中所述IO請(qǐng)求的類型還包括寫日志請(qǐng)求;所述方法還包括:響應(yīng)于接收到關(guān)閉或掉電消息,將所述寫日志請(qǐng)求緩沖區(qū)的優(yōu)先級(jí)設(shè)置為高于所述讀重做請(qǐng)求緩沖區(qū)。
根據(jù)本發(fā)明第一方面的第二、第四至第七處理IO請(qǐng)求的方法,提供了根據(jù)本發(fā)明第一方面的第十一處理IO請(qǐng)求的方法,其中所述IO請(qǐng)求緩沖區(qū)還包括寫日志請(qǐng)求緩沖區(qū),所述寫日志請(qǐng)求緩沖區(qū)的優(yōu)先級(jí)高于所述讀請(qǐng)求緩沖區(qū);以及其中所述IO請(qǐng)求的類型還包括寫日志請(qǐng)求。
根據(jù)本發(fā)明第一方面的第二、第四至第七、第十一處理IO請(qǐng)求的方法,提供了根據(jù)本發(fā)明第一方面的第十二處理IO請(qǐng)求的方法,其中所述IO請(qǐng)求緩沖區(qū)還包括寫日志請(qǐng)求緩沖區(qū),以及其中所述IO請(qǐng)求的類型還包括寫日志請(qǐng)求;所述方法還包括:響應(yīng)于接收到關(guān)閉或掉電消息,將所述寫日志請(qǐng)求緩沖區(qū)的優(yōu)先級(jí)設(shè)置為高于所述讀請(qǐng)求緩沖區(qū)。
根據(jù)本發(fā)明第一方面的第十、第十二處理IO請(qǐng)求的方法,提供了根據(jù)本發(fā)明第一方面的第十三處理IO請(qǐng)求的方法,其中響應(yīng)于接收到關(guān)閉或掉電消息;所述方法還包括:屏蔽讀請(qǐng)求、讀重做請(qǐng)求以及擦除請(qǐng)求。
根據(jù)本發(fā)明第一方面的前述處理IO請(qǐng)求的方法,提供了根據(jù)本發(fā)明第一方面的第十四處理IO請(qǐng)求的方法,其中響應(yīng)于接收到關(guān)閉或掉電消息;所述方法還包括:屏蔽(停止處理)讀請(qǐng)求以及擦除請(qǐng)求。
根據(jù)本發(fā)明第一方面的前述處理IO請(qǐng)求的方法,提供了根據(jù)本發(fā)明第一方面的 第十五處理IO請(qǐng)求的方法,還包括:響應(yīng)于第一讀請(qǐng)求出錯(cuò),生成第二讀請(qǐng)求,用于讀取所述第一讀請(qǐng)求對(duì)應(yīng)的物理地址所對(duì)應(yīng)的RAID組中的其他數(shù)據(jù)。
根據(jù)本發(fā)明第一方面的第十五處理IO請(qǐng)求的方法,提供了根據(jù)本發(fā)明第一方面的第十六處理IO請(qǐng)求的方法,還包括:基于所述第二讀請(qǐng)求對(duì)應(yīng)的物理地址,將所述第二讀請(qǐng)求填入所述第二讀請(qǐng)求的物理地址對(duì)應(yīng)的并行單元的讀請(qǐng)求緩沖區(qū),以及將所述讀請(qǐng)求緩沖區(qū)的優(yōu)先級(jí)設(shè)置為最高優(yōu)先級(jí)。
根據(jù)本發(fā)明第一方面的第十五處理IO請(qǐng)求的方法,提供了根據(jù)本發(fā)明第一方面的第十七處理IO請(qǐng)求的方法,還包括:基于所述第二讀請(qǐng)求對(duì)應(yīng)的物理地址,將所述第二讀請(qǐng)求填入所述第二讀請(qǐng)求的物理地址對(duì)應(yīng)的并行單元的讀請(qǐng)求緩沖區(qū),以及將所述讀請(qǐng)求緩沖區(qū)的優(yōu)先級(jí)設(shè)置為僅低于所述寫日志請(qǐng)求緩沖區(qū)的優(yōu)先級(jí)。
根據(jù)本發(fā)明第一方面的第十五至第十七處理IO請(qǐng)求的方法,提供了根據(jù)本發(fā)明第一方面的第十八處理IO請(qǐng)求的方法,還包括:根據(jù)所述第二讀請(qǐng)求訪問并行單元。
根據(jù)本發(fā)明的第二方面,提供了根據(jù)本發(fā)明第二方面的第一存儲(chǔ)控制器,用于耦合到存儲(chǔ)器,并基于IO請(qǐng)求訪問存儲(chǔ)器;所述存儲(chǔ)控制器包括通道控制器,每個(gè)通道控制器用于訪問存儲(chǔ)器中的多個(gè)并行單元;所述存儲(chǔ)控制器還包括為每個(gè)并行單元提供的IO請(qǐng)求緩沖區(qū),所述IO請(qǐng)求緩沖區(qū)包括讀請(qǐng)求緩沖區(qū)、寫請(qǐng)求緩沖區(qū)以及擦除請(qǐng)求緩沖區(qū);所述存儲(chǔ)控制器還包括接口,用于接收IO請(qǐng)求;所述存儲(chǔ)控制器還包括耦合到所述接口與所述通道控制器的處理電路,用于基于IO請(qǐng)求對(duì)應(yīng)的物理地址以及訪問類型,將IO請(qǐng)求填入該物理地址和訪問類型對(duì)應(yīng)的并行單元的IO請(qǐng)求緩沖區(qū),所述訪問類型包括讀請(qǐng)求、寫請(qǐng)求以及擦除請(qǐng)求;所述通道控制器從多個(gè)IO請(qǐng)求緩沖區(qū)之一中獲取IO請(qǐng)求,并根據(jù)獲取的IO請(qǐng)求訪問并行單元。
根據(jù)本發(fā)明第二方面的第一存儲(chǔ)控制器,提供了根據(jù)本發(fā)明第二方面的第二存儲(chǔ)控制器,其中所述讀請(qǐng)求緩沖區(qū)、寫請(qǐng)求緩沖區(qū)以及擦除請(qǐng)求緩沖區(qū)對(duì)應(yīng)不同的處理優(yōu)先級(jí),以及其中所述通道控制器根據(jù)處理優(yōu)先級(jí),從多個(gè)IO請(qǐng)求緩沖區(qū)之一中獲取IO請(qǐng)求。
根據(jù)本發(fā)明第二方面的第一存儲(chǔ)控制器,提供了根據(jù)本發(fā)明第二方面的第三存儲(chǔ)控制器,所述存儲(chǔ)控制器還為每個(gè)并行單元提供執(zhí)行狀態(tài)指示單元,用于根據(jù)并行單元上正在處理的IO請(qǐng)求指示各個(gè)并行單元的IO請(qǐng)求處理能力,所述IO請(qǐng)求處理能力包括,能夠執(zhí)行讀請(qǐng)求、能夠執(zhí)行寫請(qǐng)求、和/或能夠執(zhí)行擦除請(qǐng)求;其中所述通道控制器從多個(gè)IO請(qǐng)求緩沖區(qū)之一中讀出IO請(qǐng)求,是根據(jù)執(zhí)行狀態(tài)指示單元指示的并行單元的IO請(qǐng)求處理能力,選擇IO請(qǐng)求緩沖區(qū)之一。
根據(jù)本發(fā)明第二方面的第一存儲(chǔ)控制器,提供了根據(jù)本發(fā)明第二方面的第四存儲(chǔ)控制器,其中所述讀請(qǐng)求緩沖區(qū)、寫請(qǐng)求緩沖區(qū)以及擦除請(qǐng)求緩沖區(qū)對(duì)應(yīng)不同的處理優(yōu)先級(jí),以及所述閃存處理器還為每個(gè)并行單元提供執(zhí)行狀態(tài)指示單元,用于根據(jù)并行單元上正在處理的IO請(qǐng)求指示各個(gè)并行單元的IO請(qǐng)求處理能力,所述IO請(qǐng)求處理能力包括,能夠執(zhí)行讀請(qǐng)求、能夠執(zhí)行寫請(qǐng)求、和/或能夠執(zhí)行擦除請(qǐng)求;其中所述通道控制器從多個(gè)IO請(qǐng)求緩沖區(qū)之一中讀出IO請(qǐng)求,是根據(jù)執(zhí)行狀態(tài)指示單元指示的并行單元的IO請(qǐng)求處理能力,獲得該并行單元能夠處理的訪問類型,以及根據(jù)處理優(yōu)先級(jí),選擇該并行單元能夠處理的訪問類型所對(duì)應(yīng)的IO請(qǐng)求緩沖區(qū)之一。
根據(jù)本發(fā)明第二方面的第三或第四存儲(chǔ)控制器,提供了根據(jù)本發(fā)明第二方面的第五存儲(chǔ)控制器,其中當(dāng)所述并行單元正在執(zhí)行擦除請(qǐng)求時(shí),所述并行單元還能夠執(zhí)行讀請(qǐng)求;當(dāng)所述并行單元正在執(zhí)行寫請(qǐng)求時(shí),所述并行單元還能夠執(zhí)行寫請(qǐng)求或讀請(qǐng)求;以及當(dāng)所述并行單元正在執(zhí)行讀請(qǐng)求時(shí),所述并行單元還能處理讀請(qǐng)求、寫請(qǐng)求或擦除請(qǐng)求。
根據(jù)本發(fā)明第二方面的第三至第五存儲(chǔ)控制器,提供了根據(jù)本發(fā)明第二方面的 第六存儲(chǔ)控制器,其中當(dāng)所述并行單元已經(jīng)執(zhí)行的讀請(qǐng)求數(shù)量小于所述并行單元已經(jīng)執(zhí)行的寫請(qǐng)求的預(yù)定倍數(shù)時(shí),所述并行單元還能處理讀請(qǐng)求;當(dāng)所述并行單元已經(jīng)執(zhí)行的讀請(qǐng)求數(shù)量不小于所述并行單元已經(jīng)執(zhí)行的寫請(qǐng)求的預(yù)定倍數(shù)時(shí),所述并行單元還能處理寫請(qǐng)求;當(dāng)所述并行單元已經(jīng)執(zhí)行的讀請(qǐng)求數(shù)量小于所述并行單元已經(jīng)執(zhí)行的擦除請(qǐng)求的預(yù)定倍數(shù)時(shí),所述并行單元還能處理擦除請(qǐng)求;當(dāng)所述并行單元已經(jīng)執(zhí)行的讀請(qǐng)求數(shù)量不小于所述并行單元已經(jīng)執(zhí)行擦除請(qǐng)求的預(yù)定倍數(shù)時(shí),所述并行單元還能處理擦除請(qǐng)求。
根據(jù)本發(fā)明第二方面的第二、第四至第六存儲(chǔ)控制器,提供了根據(jù)本發(fā)明第二方面的第七存儲(chǔ)控制器,其中所述讀請(qǐng)求緩沖區(qū)的處理優(yōu)先級(jí)高于寫請(qǐng)求緩沖區(qū),而所述寫請(qǐng)求緩沖區(qū)的優(yōu)先級(jí)高于所述擦除請(qǐng)求緩沖區(qū)的處理優(yōu)先級(jí)。
根據(jù)本發(fā)明第二方面的第二、第四至第七存儲(chǔ)控制器,提供了根據(jù)本發(fā)明第二方面的第八存儲(chǔ)控制器,其中所述IO請(qǐng)求緩沖區(qū)還包括讀重做請(qǐng)求緩沖區(qū),所述讀重做請(qǐng)求緩沖區(qū)的優(yōu)先級(jí)高于所述讀請(qǐng)求緩沖區(qū);所述通道控制器還響應(yīng)于讀請(qǐng)求出錯(cuò),生成讀重做請(qǐng)求;以及所述處理電路根據(jù)讀重做請(qǐng)求對(duì)應(yīng)的物理地址,將讀重做請(qǐng)求填入該讀重做請(qǐng)求的物理地址對(duì)應(yīng)的并行單元的讀重做請(qǐng)求緩沖區(qū)。
根據(jù)本發(fā)明第二方面的第八存儲(chǔ)控制器,提供了根據(jù)本發(fā)明第二方面的第九存儲(chǔ)控制器,其中所述IO請(qǐng)求緩沖區(qū)還包括寫日志請(qǐng)求緩沖區(qū),所述寫日志請(qǐng)求緩沖區(qū)的優(yōu)先級(jí)高于所述讀重做請(qǐng)求緩沖區(qū);以及其中所述IO請(qǐng)求的類型還包括寫日志請(qǐng)求。
根據(jù)本發(fā)明第二方面的第九存儲(chǔ)控制器,提供了根據(jù)本發(fā)明第二方面的第十存儲(chǔ)控制器,其中所述IO請(qǐng)求緩沖區(qū)還包括寫日志請(qǐng)求緩沖區(qū),以及其中所述IO請(qǐng)求的類型還包括寫日志請(qǐng)求;所述處理電路還響應(yīng)于接收到關(guān)閉或掉電消息,將所述寫日志請(qǐng)求緩沖區(qū)的優(yōu)先級(jí)設(shè)置為高于所述讀重做請(qǐng)求緩沖區(qū)。
根據(jù)本發(fā)明第二方面的第二、第四至第七存儲(chǔ)控制器,提供了根據(jù)本發(fā)明第二方面的第十一存儲(chǔ)控制器,其中所述IO請(qǐng)求緩沖區(qū)還包括寫日志請(qǐng)求緩沖區(qū),所述寫日志請(qǐng)求緩沖區(qū)的優(yōu)先級(jí)高于所述讀請(qǐng)求緩沖區(qū);以及其中所述IO請(qǐng)求的類型還包括寫日志請(qǐng)求。
根據(jù)本發(fā)明第二方面的第二、第四至第七、第十一存儲(chǔ)控制器,提供了根據(jù)本發(fā)明第二方面的第十二存儲(chǔ)控制器,其中所述IO請(qǐng)求緩沖區(qū)還包括寫日志請(qǐng)求緩沖區(qū),以及其中所述IO請(qǐng)求的類型還包括寫日志請(qǐng)求;所述處理電路還響應(yīng)于接收到關(guān)閉或掉電消息,將所述寫日志請(qǐng)求緩沖區(qū)的優(yōu)先級(jí)設(shè)置為高于所述讀請(qǐng)求緩沖區(qū)。
根據(jù)本發(fā)明第二方面的第十、第十二存儲(chǔ)控制器,提供了根據(jù)本發(fā)明第二方面的第十三存儲(chǔ)控制器,其中響應(yīng)于接收到關(guān)閉或掉電消息,所述通道控制器或所述處理電路停止處理(屏蔽)讀請(qǐng)求、讀重做請(qǐng)求以及擦除請(qǐng)求。
根據(jù)本發(fā)明第二方面的前述存儲(chǔ)控制器,提供了根據(jù)本發(fā)明第二方面的第十四存儲(chǔ)控制器,其中響應(yīng)于接收到關(guān)閉或掉電消息;所述通道控制器或所述處理電路屏蔽(停止處理)讀請(qǐng)求以及擦除請(qǐng)求。
根據(jù)本發(fā)明第二方面的前述存儲(chǔ)控制器,提供了根據(jù)本發(fā)明第二方面的第十五存儲(chǔ)控制器,其中所述通道控制器或所述處理電路響應(yīng)于第一讀請(qǐng)求出錯(cuò),生成第二讀請(qǐng)求,用于讀取所述第一讀請(qǐng)求對(duì)應(yīng)的物理地址所對(duì)應(yīng)的RAID組中的其他數(shù)據(jù)。
根據(jù)本發(fā)明第二方面的第十五存儲(chǔ)控制器,提供了根據(jù)本發(fā)明第二方面的第十六存儲(chǔ)控制器,還包括:所述處理電路基于所述第二讀請(qǐng)求對(duì)應(yīng)的物理地址,將所述第二讀請(qǐng)求填入所述第二讀請(qǐng)求的物理地址對(duì)應(yīng)的并行單元的讀請(qǐng)求緩沖區(qū),以及將所述讀請(qǐng)求緩沖區(qū)的優(yōu)先級(jí)設(shè)置為最高優(yōu)先級(jí)。
根據(jù)本發(fā)明第二方面的第十五存儲(chǔ)控制器,提供了根據(jù)本發(fā)明第二方面的第十 七存儲(chǔ)控制器,還包括:所述處理電路基于所述第二讀請(qǐng)求對(duì)應(yīng)的物理地址,將所述第二讀請(qǐng)求填入所述第二讀請(qǐng)求的物理地址對(duì)應(yīng)的并行單元的讀請(qǐng)求緩沖區(qū),以及將所述讀請(qǐng)求緩沖區(qū)的優(yōu)先級(jí)設(shè)置為僅低于所述寫日志請(qǐng)求緩沖區(qū)的優(yōu)先級(jí)。
根據(jù)本發(fā)明第二方面的第十五至第十七存儲(chǔ)控制器,提供了根據(jù)本發(fā)明第二方面的第十八存儲(chǔ)控制器,還包括:所述通道控制器根據(jù)所述第二讀請(qǐng)求訪問并行單元。
根據(jù)本發(fā)明的第三方面,提供了根據(jù)本發(fā)明第三方面的第一處理IO請(qǐng)求的裝置,用于向多個(gè)存儲(chǔ)器的多個(gè)并行單元分發(fā)IO請(qǐng)求,其中,為每個(gè)并行單元提供IO請(qǐng)求緩沖區(qū),所述IO請(qǐng)求緩沖區(qū)包括讀請(qǐng)求緩沖區(qū)、寫請(qǐng)求緩沖區(qū)以及擦除請(qǐng)求緩沖區(qū);所述裝置包括:接收模塊,用于接收IO請(qǐng)求;緩沖區(qū)填充模塊,用于基于IO請(qǐng)求對(duì)應(yīng)的物理地址以及訪問類型,將IO請(qǐng)求填入該物理地址和訪問類型對(duì)應(yīng)的并行單元的IO請(qǐng)求緩沖區(qū),所述訪問類型包括讀請(qǐng)求、寫請(qǐng)求以及擦除請(qǐng)求;讀取模塊,用于從IO請(qǐng)求緩沖區(qū)之一中讀出IO請(qǐng)求;并行單元訪問模塊,用于根據(jù)讀出的IO請(qǐng)求訪問并行單元。
根據(jù)本發(fā)明第四方面,提供了一種計(jì)算機(jī),包括:用于存儲(chǔ)程序指令的機(jī)器可讀存儲(chǔ)器;用于執(zhí)行存儲(chǔ)在所述存儲(chǔ)器中的程序指令的一個(gè)或多個(gè)處理器;所述程序指令用于使所述一個(gè)或多個(gè)處理器執(zhí)行根據(jù)本發(fā)明第一方面提供的多種方法之一。
根據(jù)本發(fā)明的第五方面,提供了一種程序,其使得計(jì)算機(jī)執(zhí)行根據(jù)本發(fā)明的第一方面而提供的多種方法之一。
根據(jù)本發(fā)明的第六方面,提供了一種在其上具有所記錄的程序的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其中所述程序使得計(jì)算機(jī)執(zhí)行根據(jù)本發(fā)明的第一方面而提供的多種方法之一。
附圖說明
當(dāng)連同附圖閱讀時(shí),通過參考后面對(duì)示出性的實(shí)施例的詳細(xì)描述,將最佳地理解本發(fā)明以及優(yōu)選的使用模式和其進(jìn)一步的目的和優(yōu)點(diǎn),其中附圖包括:
圖1是現(xiàn)有技術(shù)的存儲(chǔ)設(shè)備的方框圖;
圖2展示了用于FTL的并行單元的查找表;
圖3展示了根據(jù)本發(fā)明實(shí)施例的存儲(chǔ)控制器的方框圖;
圖4展示了根據(jù)本發(fā)明實(shí)施例的緩沖區(qū);
圖5展示了根據(jù)本發(fā)明又一實(shí)施例的存儲(chǔ)控制器的方框圖;
圖6展示了根據(jù)本發(fā)明實(shí)施的處理IO請(qǐng)求的方法的流程圖;
圖7展示了根據(jù)本發(fā)明又一實(shí)施例的處理IO請(qǐng)求的方法的流程圖;
圖8展示了根據(jù)本發(fā)明另一實(shí)施例的處理IO請(qǐng)求的方法的流程圖;
圖9展示了根據(jù)本發(fā)明依然另一實(shí)施例的處理IO請(qǐng)求的方法的流程圖;以及
圖10展示了根據(jù)本發(fā)明依然另一個(gè)實(shí)施例的處理IO請(qǐng)求的方法的流程圖。
具體實(shí)施方式
圖3展示了根據(jù)本發(fā)明實(shí)施例的存儲(chǔ)控制器的方框圖。存儲(chǔ)控制器包括接口310,用于接收IO請(qǐng)求。IO請(qǐng)求可以是寫請(qǐng)求、讀請(qǐng)求、擦除請(qǐng)求。在進(jìn)一步的例子中,IO請(qǐng)求還可以是讀重做請(qǐng)求,寫日志請(qǐng)求。存儲(chǔ)控制器還包括一個(gè)或多個(gè)通道控制器。在圖3的例子中,存儲(chǔ)控制器包括通道控制器330、通道控制器332、通道控制器334以及通道控制器336。每個(gè)通道控制器同一個(gè)閃存通道相耦合。閃存通道不屬于閃存控制器的部分。在閃存通道中可布置一片或多片閃存芯片(例如閃存芯 片0與閃存芯片1)。閃存芯片中包括一個(gè)或多個(gè)并行單元。
在圖3的例子中,通道控制器330與閃存通道340相耦合,通過通道控制器332訪問閃存通道340上的并行單元;通道控制器332與閃存通道342相耦合,通過通道控制器332訪問閃存通道342上的并行單元;通道控制器334與閃存通道344相耦合,通過通道控制器334訪問閃存通道344上的并行單元;通道控制器336與閃存通道346相耦合,通過通道控制器336訪問閃存通道346上的并行單元。
存儲(chǔ)控制器還提供多個(gè)緩沖區(qū)320。為所有閃存通道中的每個(gè)并行單元提供緩沖區(qū)。緩沖區(qū)用于緩存對(duì)相應(yīng)的并行單元的IO請(qǐng)求。緩沖區(qū)可以集成在存儲(chǔ)控制器內(nèi)部,也可以在同存儲(chǔ)控制器相耦合到的存儲(chǔ)器中提供,在另一個(gè)例子中,在訪問存儲(chǔ)控制器的主機(jī)的內(nèi)存中提供緩沖區(qū)。
根據(jù)本發(fā)明實(shí)施例的存儲(chǔ)控制器,執(zhí)行在圖7-圖10中展示的根據(jù)本發(fā)明實(shí)施例的處理IO請(qǐng)求的方法。
圖4展示了根據(jù)本發(fā)明實(shí)施例的緩沖區(qū)420與緩沖區(qū)422。在圖4的例子中,每個(gè)緩沖區(qū)包括讀請(qǐng)求緩沖區(qū)、寫請(qǐng)求緩沖區(qū)與擦除請(qǐng)求緩沖區(qū),分別用于緩存讀請(qǐng)求、寫請(qǐng)求與擦除請(qǐng)求。每個(gè)緩沖區(qū)同一個(gè)并行單元L相對(duì)應(yīng),緩沖區(qū)中的讀請(qǐng)求緩沖區(qū)、寫請(qǐng)求緩沖區(qū)與擦除請(qǐng)求緩沖區(qū)分別用于緩存訪問并行單元L的讀請(qǐng)求、寫請(qǐng)求與擦除請(qǐng)求。在根據(jù)本發(fā)明的另一個(gè)例子中,每個(gè)緩沖區(qū)還包括寫日志請(qǐng)求緩沖區(qū)與讀重做請(qǐng)求緩沖區(qū),分別用于緩存針對(duì)同緩沖區(qū)所對(duì)應(yīng)的并行單元的寫日志請(qǐng)求與讀重做請(qǐng)求。寫日志請(qǐng)求是一類特殊的寫請(qǐng)求,用于將系統(tǒng)運(yùn)行期間產(chǎn)生的寫日志和/或FTL表寫入存儲(chǔ)介質(zhì)。讀重做請(qǐng)求是一類特殊的讀請(qǐng)求,當(dāng)讀請(qǐng)求失敗時(shí),可通過從存儲(chǔ)介質(zhì)中讀出該讀請(qǐng)求所對(duì)應(yīng)數(shù)據(jù)所在的RAID組,從RAID組中恢復(fù)出該讀請(qǐng)求所對(duì)應(yīng)的數(shù)據(jù)。
讀請(qǐng)求緩沖區(qū)、寫請(qǐng)求緩沖區(qū)與擦除請(qǐng)求緩沖區(qū)可具有不同的訪問優(yōu)先級(jí)。在訪問緩沖區(qū)時(shí),依據(jù)訪問優(yōu)先級(jí)來選擇訪問讀請(qǐng)求緩沖區(qū)、寫請(qǐng)求緩沖區(qū)與擦除請(qǐng)求緩沖區(qū)中的一個(gè)或多個(gè)。在一個(gè)例子中,讀請(qǐng)求緩沖區(qū)的訪問優(yōu)先級(jí)高于寫請(qǐng)求緩沖區(qū),寫請(qǐng)求緩沖區(qū)的訪問優(yōu)先級(jí)高于擦除請(qǐng)求緩沖區(qū)。在另一個(gè)例子中,緩沖區(qū)中還包括寫日志請(qǐng)求緩沖區(qū),寫日志請(qǐng)求緩沖區(qū)的優(yōu)先級(jí)高于讀請(qǐng)求緩沖區(qū),讀請(qǐng)求緩沖區(qū)的優(yōu)先級(jí)高于寫請(qǐng)求緩沖區(qū),寫請(qǐng)求緩沖區(qū)的優(yōu)先級(jí)高于擦除請(qǐng)求緩沖區(qū)。在依然另一個(gè)例子中,緩沖區(qū)中還包括寫日志請(qǐng)求緩沖區(qū)與讀重做請(qǐng)求緩沖區(qū),寫日志請(qǐng)求緩沖區(qū)的優(yōu)先級(jí)高于讀重做請(qǐng)求緩沖區(qū),讀重做請(qǐng)求緩沖區(qū)的優(yōu)先級(jí)高于讀請(qǐng)求緩沖區(qū),讀請(qǐng)求緩沖區(qū)的優(yōu)先級(jí)高于寫請(qǐng)求緩沖區(qū),寫請(qǐng)求緩沖區(qū)的優(yōu)先級(jí)高于擦除請(qǐng)求緩沖區(qū)。在依然又一個(gè)例子中,讀請(qǐng)求緩沖區(qū)、寫請(qǐng)求緩沖區(qū)與擦除請(qǐng)求緩沖區(qū)的訪問優(yōu)先級(jí)可在運(yùn)行時(shí)動(dòng)態(tài)調(diào)整。在進(jìn)一步的例子中,對(duì)應(yīng)于各個(gè)并行單元的緩沖區(qū)具有相同或不同的訪問優(yōu)先級(jí)。
圖5展示了根據(jù)本發(fā)明又一實(shí)施例的存儲(chǔ)控制器的方框圖。存儲(chǔ)控制器包括接口510,用于接收IO請(qǐng)求。存儲(chǔ)控制器包括通道控制器530、通道控制器532、通道控制器534以及通道控制器536。每個(gè)通道控制器同一個(gè)閃存通道相耦合。閃存通道不屬于閃存控制器的部分。在閃存通道中可布置一片或多片閃存芯片(例如閃存芯片0與閃存芯片1)。閃存芯片中包括一個(gè)或多個(gè)并行單元。
在圖5的例子中,通道控制器530與閃存通道540相耦合,通過通道控制器532訪問閃存通道540上的并行單元;通道控制器532與閃存通道542相耦合,通過通道控制器532訪問閃存通道542上的并行單元;通道控制器534與閃存通道544相耦合,通過通道控制器534訪問閃存通道544上的并行單元;通道控制器536與閃存通道546相耦合,通過通道控制器536訪問閃存通道546上的并行單元。
存儲(chǔ)控制器還提供多個(gè)緩沖區(qū)520。為所有閃存通道中的每個(gè)并行單元提供緩 沖區(qū)。緩沖區(qū)用于緩存對(duì)相應(yīng)的并行單元的IO請(qǐng)求。緩沖區(qū)可以集成在存儲(chǔ)控制器內(nèi)部,也可以在同存儲(chǔ)控制器相耦合到的存儲(chǔ)器中提供,在另一個(gè)例子中,在訪問存儲(chǔ)控制器的主機(jī)的內(nèi)存中提供緩沖區(qū)。在根據(jù)圖5的實(shí)施例中,存儲(chǔ)控制器還提供多個(gè)狀態(tài)指示單元522。為所有閃存通道的每個(gè)并行單元提供狀態(tài)指示單元。狀態(tài)指示單元用于根據(jù)并行單元正在處理的IO請(qǐng)求指示并行單元的IO處理能力。
每個(gè)并行單元能夠接收多個(gè)IO請(qǐng)求。但為了保證在掉電時(shí),每個(gè)并行單元都能完成所接收的IO請(qǐng)求,需要限制并行單元正在處理的IO請(qǐng)求的數(shù)量與類型。另一方面,由于讀請(qǐng)求緩沖區(qū)的優(yōu)先級(jí)高于寫請(qǐng)求緩沖區(qū),寫請(qǐng)求緩沖區(qū)的優(yōu)先級(jí)高于擦除請(qǐng)求緩沖區(qū),當(dāng)對(duì)于一個(gè)并行單元存在連續(xù)的讀請(qǐng)求時(shí),將使得對(duì)該并行單元的寫請(qǐng)求/擦除請(qǐng)求長(zhǎng)時(shí)間等待而得不到處理。這樣的結(jié)果是不利的,因?yàn)橛脩魧Ⅲw驗(yàn)到過長(zhǎng)的寫請(qǐng)求/擦除請(qǐng)求處理時(shí)間。在根據(jù)本發(fā)明的實(shí)施例中,通過狀態(tài)指示單元來指示并行單元的處理能力,從而更有效地將IO請(qǐng)求分發(fā)給并行單元。
參看表1,表1展示了并行單元的IO請(qǐng)求處理能力,包括并行單元正在處理的IO請(qǐng)求與并行單元還能處理的IO請(qǐng)求的對(duì)應(yīng)關(guān)系。當(dāng)一個(gè)并行單元正在處理讀請(qǐng)求時(shí),該并行單元還能處理讀請(qǐng)求、寫請(qǐng)求或擦除請(qǐng)求。而當(dāng)一個(gè)并行單元正在處理寫請(qǐng)求時(shí),在該寫請(qǐng)求完成前,該并行單元還能再處理讀請(qǐng)求與寫請(qǐng)求,而不能再響應(yīng)寫請(qǐng)求。而當(dāng)一個(gè)并行單元正在處理擦除請(qǐng)求時(shí),在該擦除請(qǐng)求完成前,該并行單元僅能再處理讀請(qǐng)求。另一方面,為了避免寫請(qǐng)求或擦除請(qǐng)求長(zhǎng)期得不到執(zhí)行,還依據(jù)在一個(gè)并行單元上已經(jīng)執(zhí)行的特定類型的IO請(qǐng)求與其他類型的IO請(qǐng)求的數(shù)量關(guān)系,來確定并行單元的IO處理能力。例如,當(dāng)一個(gè)并行單元上已經(jīng)執(zhí)行的讀請(qǐng)求數(shù)量小于已經(jīng)執(zhí)行的寫請(qǐng)求的預(yù)定倍數(shù)時(shí),該并行單元上還能夠執(zhí)行讀請(qǐng)求。當(dāng)一個(gè)并行單元上已經(jīng)執(zhí)行的讀請(qǐng)求數(shù)量大于或不小于已經(jīng)執(zhí)行的寫請(qǐng)求的預(yù)定倍數(shù)時(shí),該并行單元上還能夠執(zhí)行寫請(qǐng)求。換句話說,當(dāng)一個(gè)并行單元上已經(jīng)執(zhí)行的讀請(qǐng)求數(shù)量大于或不小于已經(jīng)執(zhí)行的寫請(qǐng)求的預(yù)定倍數(shù)時(shí),若同時(shí)存在對(duì)該并行單元的讀請(qǐng)求與寫請(qǐng)求,即讀請(qǐng)求緩沖區(qū)與寫請(qǐng)求緩沖區(qū)中都緩存了IO請(qǐng)求,雖然讀請(qǐng)求緩沖區(qū)的優(yōu)先級(jí)高于寫請(qǐng)求緩沖區(qū)的優(yōu)先級(jí),但此時(shí)優(yōu)先調(diào)度寫請(qǐng)求緩沖區(qū)的請(qǐng)求,以避免對(duì)該并行單元的寫請(qǐng)求等待過程時(shí)間。類似地,當(dāng)一個(gè)并行單元上已經(jīng)執(zhí)行的讀請(qǐng)求數(shù)量大于或不小于已經(jīng)執(zhí)行的擦除請(qǐng)求的預(yù)定倍數(shù)時(shí),此時(shí)該并行單元上優(yōu)先調(diào)度擦除請(qǐng)求。
表1并行單元的IO請(qǐng)求處理能力
參看圖5,在一個(gè)例子中,狀態(tài)指示單元522指示對(duì)應(yīng)的并行單元正在處理/已經(jīng)處理的IO請(qǐng)求。根據(jù)訪問狀態(tài)指示單元522,得到對(duì)應(yīng)的并行單元正在處理/已經(jīng)處理的IO請(qǐng)求,并進(jìn)而例如通過表1確定該并行單元還能夠處理的IO請(qǐng)求。在另一 個(gè)例子中,狀態(tài)指示單元522直接指示對(duì)應(yīng)的并行單元還能夠處理的IO請(qǐng)求。
在根據(jù)本發(fā)明的實(shí)施例中,根據(jù)狀態(tài)指示單元522,確定對(duì)應(yīng)的并行單元還能夠處理的IO請(qǐng)求,并作為選擇向該并行單元分發(fā)IO請(qǐng)求的依據(jù)。在另一個(gè)例子中,依據(jù)狀態(tài)指示單元522確定對(duì)應(yīng)的并行單元還能處理的IO請(qǐng)求,并結(jié)合讀請(qǐng)求緩沖區(qū)、寫請(qǐng)求緩沖區(qū)以及擦除請(qǐng)求緩沖區(qū)的優(yōu)先級(jí)來確定從讀請(qǐng)求緩沖區(qū)、寫請(qǐng)求緩沖區(qū)以及擦除請(qǐng)求緩沖區(qū)中的哪個(gè)來獲得IO請(qǐng)求并分發(fā)給該并行單元。
圖6展示了根據(jù)本發(fā)明實(shí)施的處理IO請(qǐng)求的方法的流程圖。也參看圖3,響應(yīng)于接收到IO請(qǐng)求(610),依據(jù)IO請(qǐng)求要訪問的地址,確定IO請(qǐng)求對(duì)應(yīng)的并行單元。依據(jù)IO請(qǐng)求,填充對(duì)應(yīng)于該IO請(qǐng)求的并行單元的緩沖區(qū)(620)。從多個(gè)緩沖區(qū)之一中取出IO請(qǐng)求(630)。將取出的IO請(qǐng)求送入對(duì)應(yīng)的通道控制器,由通道控制器依據(jù)IO請(qǐng)求訪問并行單元(640)。
在操作630,從多個(gè)緩沖區(qū)之一中取出IO請(qǐng)求時(shí),在一個(gè)例子中,輪詢各個(gè)緩沖區(qū),在所訪問的緩沖區(qū)存在未處理的IO請(qǐng)求時(shí),取出IO請(qǐng)求。在另一個(gè)例子中,同時(shí)檢測(cè)各個(gè)緩沖區(qū)的狀態(tài),在發(fā)現(xiàn)緩沖區(qū)中存在IO請(qǐng)求時(shí),取出IO請(qǐng)求。在依然另一個(gè)例子中,各個(gè)緩沖區(qū)具有不同的優(yōu)先級(jí),依據(jù)存在IO請(qǐng)求的各緩沖區(qū)的優(yōu)先級(jí)選擇緩沖區(qū),并從選中的緩沖區(qū)中取出IO請(qǐng)求。
圖7展示了根據(jù)本發(fā)明又一實(shí)施例的處理IO請(qǐng)求的方法的流程圖。響應(yīng)于接收到IO請(qǐng)求(710),依據(jù)IO請(qǐng)求要訪問的地址,確定IO請(qǐng)求對(duì)應(yīng)的并行單元(715)。在填充IO請(qǐng)求緩沖區(qū)時(shí),依據(jù)IO請(qǐng)求的類型,將IO請(qǐng)求填入對(duì)應(yīng)類型的緩沖區(qū)。當(dāng)IO請(qǐng)求是讀請(qǐng)求時(shí),填充對(duì)應(yīng)于該IO請(qǐng)求的并行單元的讀請(qǐng)求緩沖區(qū)(722)。當(dāng)IO請(qǐng)求是寫請(qǐng)求時(shí),填充對(duì)應(yīng)于該IO請(qǐng)求的并行單元的寫請(qǐng)求緩沖區(qū)(724)。當(dāng)IO請(qǐng)求是擦除請(qǐng)求時(shí),填充對(duì)應(yīng)于該IO請(qǐng)求的并行單元的擦除請(qǐng)求緩沖區(qū)(726)。依據(jù)讀請(qǐng)求緩沖區(qū)、寫請(qǐng)求緩沖區(qū)與擦除請(qǐng)求緩沖區(qū)的優(yōu)先級(jí),選擇讀請(qǐng)求緩沖區(qū)、寫請(qǐng)求緩沖區(qū)與擦除請(qǐng)求緩沖區(qū)之一取出IO請(qǐng)求(730)。并依據(jù)取出的IO請(qǐng)求訪問對(duì)應(yīng)的并行單元(740)。例如將取出的IO請(qǐng)求送入對(duì)應(yīng)的通道控制器,由通道控制器依據(jù)IO請(qǐng)求訪問并行單元。
在進(jìn)一步的實(shí)施例中,在操作730選擇讀請(qǐng)求緩沖區(qū)、寫請(qǐng)求緩沖區(qū)與擦除請(qǐng)求緩沖區(qū)之一取出IO請(qǐng)求時(shí),還考慮并行單元的處理能力。參看表1,例如當(dāng)并行單元正在處理擦除請(qǐng)求時(shí),即使與該并行單元對(duì)應(yīng)的緩沖區(qū)中存在且僅存在擦除請(qǐng)求,由于依據(jù)表1中提供的并行單元的處理能力,在并行單元正在處理擦除請(qǐng)求時(shí),不能再接受新的擦除請(qǐng)求,因而不從緩沖區(qū)中取出擦除請(qǐng)求。在另一個(gè)例子中,與一并行單元對(duì)應(yīng)的讀請(qǐng)求緩沖區(qū)與寫請(qǐng)求緩沖區(qū)中均存在對(duì)應(yīng)的IO請(qǐng)求。而該并行單元上已經(jīng)執(zhí)行的讀請(qǐng)求數(shù)量大于已經(jīng)執(zhí)行的寫請(qǐng)求的預(yù)定倍數(shù)。為避免該并行單元上的寫請(qǐng)求的處理時(shí)間過程,雖然讀請(qǐng)求緩沖區(qū)的優(yōu)先級(jí)高于寫請(qǐng)求緩沖區(qū),也從寫請(qǐng)求緩沖區(qū)中取出IO請(qǐng)求并進(jìn)行處理。在另一個(gè)例子中,當(dāng)并行單元上已經(jīng)執(zhí)行的讀請(qǐng)求數(shù)量大于已經(jīng)執(zhí)行的寫請(qǐng)求的預(yù)定倍數(shù)時(shí),臨時(shí)修改對(duì)應(yīng)于該并行單元的讀請(qǐng)求緩沖區(qū)與寫請(qǐng)求緩沖區(qū)的優(yōu)先級(jí),使得寫請(qǐng)求緩沖區(qū)的優(yōu)先級(jí)臨時(shí)地高于讀請(qǐng)求緩沖區(qū)的優(yōu)先級(jí),并進(jìn)而依據(jù)優(yōu)先級(jí)來選擇讀請(qǐng)求緩沖區(qū)與寫請(qǐng)求緩沖區(qū)之一來取出IO請(qǐng)求并訪問并行單元。
圖8展示了根據(jù)本發(fā)明又一實(shí)施例的處理IO請(qǐng)求的方法的流程圖。響應(yīng)于接收到IO請(qǐng)求(810),依據(jù)IO請(qǐng)求要訪問的地址,確定IO請(qǐng)求對(duì)應(yīng)的并行單元(815)。在填充IO請(qǐng)求緩沖區(qū)時(shí),依據(jù)IO請(qǐng)求的類型,將IO請(qǐng)求填入對(duì)應(yīng)類型的緩沖區(qū)。當(dāng)IO請(qǐng)求是讀請(qǐng)求時(shí),填充對(duì)應(yīng)于該IO請(qǐng)求的并行單元的讀請(qǐng)求緩沖區(qū)(822)。當(dāng)IO請(qǐng)求是寫請(qǐng)求時(shí),填充對(duì)應(yīng)于該IO請(qǐng)求的并行單元的寫請(qǐng)求緩沖區(qū)(824)。當(dāng)IO請(qǐng)求是擦除請(qǐng)求時(shí),填充對(duì)應(yīng)于該IO請(qǐng)求的并行單元的擦除請(qǐng)求緩沖區(qū)(826)。 依據(jù)并行單元當(dāng)前的IO請(qǐng)求處理能力,以及讀請(qǐng)求緩沖區(qū)、寫請(qǐng)求緩沖區(qū)與擦除請(qǐng)求緩沖區(qū)的優(yōu)先級(jí),選擇讀請(qǐng)求緩沖區(qū)、寫請(qǐng)求緩沖區(qū)與擦除請(qǐng)求緩沖區(qū)之一取出IO請(qǐng)求(830)。并依據(jù)取出的IO請(qǐng)求訪問對(duì)應(yīng)的并行單元(840)。例如將取出的IO請(qǐng)求送入對(duì)應(yīng)的通道控制器,由通道控制器依據(jù)IO請(qǐng)求訪問并行單元。
在根據(jù)圖8的實(shí)施例中,伴隨著依據(jù)取出的IO請(qǐng)求訪問對(duì)應(yīng)的并行單元(840),還更新并行單元的狀態(tài)(850),使并行單元的狀態(tài)信息指示并行單元正在執(zhí)行的IO請(qǐng)求。而在通道控制器收到并行單元返回的IO請(qǐng)求的執(zhí)行結(jié)果時(shí),同樣更新并行單元的狀態(tài),使并行單元的狀態(tài)信息指示并行單元正在執(zhí)行的IO請(qǐng)求。在另一個(gè)例子中,依據(jù)并行單元當(dāng)前正在執(zhí)行的IO請(qǐng)求進(jìn)一步確定并行單元的IO處理能力(860)。并且在操作830,能夠依據(jù)在操作860中確定的并行單元的IO處理能力,以及讀請(qǐng)求緩沖區(qū)、寫請(qǐng)求緩沖區(qū)與擦除請(qǐng)求緩沖區(qū)的優(yōu)先級(jí),選擇讀請(qǐng)求緩沖區(qū)、寫請(qǐng)求緩沖區(qū)與擦除請(qǐng)求緩沖區(qū)之一取出IO請(qǐng)求。
圖9展示了根據(jù)本發(fā)明依然另一實(shí)施例的處理IO請(qǐng)求的方法的流程圖。響應(yīng)于接收到IO請(qǐng)求(910),依據(jù)IO請(qǐng)求要訪問的地址,確定IO請(qǐng)求對(duì)應(yīng)的并行單元(915)。在填充IO請(qǐng)求緩沖區(qū)時(shí),依據(jù)IO請(qǐng)求的類型,將IO請(qǐng)求填入對(duì)應(yīng)類型的緩沖區(qū)。當(dāng)IO請(qǐng)求是讀請(qǐng)求時(shí),填充對(duì)應(yīng)于該IO請(qǐng)求的并行單元的讀請(qǐng)求緩沖區(qū)(922)。當(dāng)IO請(qǐng)求是寫請(qǐng)求時(shí),填充對(duì)應(yīng)于該IO請(qǐng)求的并行單元的寫請(qǐng)求緩沖區(qū)(924)。當(dāng)IO請(qǐng)求是擦除請(qǐng)求時(shí),填充對(duì)應(yīng)于該IO請(qǐng)求的并行單元的擦除請(qǐng)求緩沖區(qū)(926)。依據(jù)并行單元當(dāng)前的IO請(qǐng)求處理能力,以及讀請(qǐng)求緩沖區(qū)、寫請(qǐng)求緩沖區(qū)與擦除請(qǐng)求緩沖區(qū)的優(yōu)先級(jí),選擇讀請(qǐng)求緩沖區(qū)、寫請(qǐng)求緩沖區(qū)與擦除請(qǐng)求緩沖區(qū)之一取出IO請(qǐng)求(930)。并依據(jù)取出的IO請(qǐng)求訪問對(duì)應(yīng)的并行單元(940)。例如將取出的IO請(qǐng)求送入對(duì)應(yīng)的通道控制器,由通道控制器依據(jù)IO請(qǐng)求訪問并行單元。伴隨著依據(jù)取出的IO請(qǐng)求訪問對(duì)應(yīng)的并行單元(940),還更新并行單元的狀態(tài)(950),使并行單元的狀態(tài)信息指示并行單元正在執(zhí)行的IO請(qǐng)求。而在通道控制器收到并行單元返回的IO請(qǐng)求的執(zhí)行結(jié)果時(shí),同樣更新并行單元的狀態(tài),使并行單元的狀態(tài)信息指示并行單元正在執(zhí)行的IO請(qǐng)求。依據(jù)并行單元當(dāng)前正在執(zhí)行的IO請(qǐng)求進(jìn)一步確定并行單元的IO處理能力(960)。并且在操作930,能夠依據(jù)在操作960中確定的并行單元的IO處理能力,以及讀請(qǐng)求緩沖區(qū)、寫請(qǐng)求緩沖區(qū)與擦除請(qǐng)求緩沖區(qū)的優(yōu)先級(jí),選擇讀請(qǐng)求緩沖區(qū)、寫請(qǐng)求緩沖區(qū)與擦除請(qǐng)求緩沖區(qū)之一取出IO請(qǐng)求。
在根據(jù)圖9的本發(fā)明的實(shí)施例中,在對(duì)應(yīng)于每個(gè)并行單元而提供的緩沖區(qū)中,除讀請(qǐng)求緩沖區(qū)、寫請(qǐng)求緩沖區(qū)與擦除請(qǐng)求緩沖區(qū)外,還提供讀重做請(qǐng)求緩沖區(qū)。在通道控制器收到并行單元返回的IO請(qǐng)求的執(zhí)行結(jié)果時(shí),若IO請(qǐng)求是讀請(qǐng)求,且該讀請(qǐng)求的執(zhí)行出錯(cuò)(970),則基于出錯(cuò)的讀請(qǐng)求,產(chǎn)生讀重做請(qǐng)求,并將該讀重做請(qǐng)求填入對(duì)應(yīng)于該并行單元的讀重做請(qǐng)求緩沖區(qū)(928)。讀重做請(qǐng)求用于處理執(zhí)行出錯(cuò)的讀請(qǐng)求。在一個(gè)例子中,對(duì)出錯(cuò)的讀請(qǐng)求再次執(zhí)行。在另一個(gè)例子中,提供閃存芯片提供的讀重式(read-retry)機(jī)制,以不同的讀取方式從閃存芯片的特定物理頁讀取數(shù)據(jù)。在又一個(gè)例子中,存儲(chǔ)設(shè)備中以RAID方式組織數(shù)據(jù)。讀請(qǐng)求所對(duì)應(yīng)的數(shù)據(jù)對(duì)應(yīng)于一個(gè)RAID組,在RAID組中包括多項(xiàng)數(shù)據(jù),當(dāng)讀請(qǐng)求所對(duì)應(yīng)的數(shù)據(jù)出錯(cuò)時(shí),利用RAID組中的其他數(shù)據(jù)有可能恢復(fù)出錯(cuò)的數(shù)據(jù)。通過出錯(cuò)的讀請(qǐng)求的地址可獲得該地址所在的RAID組中的其他數(shù)據(jù)的地址。讀請(qǐng)求的執(zhí)行出錯(cuò),可表現(xiàn)為基于讀請(qǐng)求從并行單元獲得的讀出數(shù)據(jù)錯(cuò)在錯(cuò)誤,例如通過錯(cuò)誤校正碼可確定讀出數(shù)據(jù)存在錯(cuò)誤。讀請(qǐng)求出錯(cuò)還可體現(xiàn)為并行單元返回指示讀請(qǐng)求出錯(cuò)的信息。
由于讀重做請(qǐng)求是對(duì)出錯(cuò)的讀請(qǐng)求的再次處理,為避免向用戶響應(yīng)出錯(cuò)的讀請(qǐng)求的延遲過長(zhǎng),為讀重做請(qǐng)求緩沖區(qū)設(shè)置高優(yōu)先級(jí)。在一個(gè)例子中,讀重做緩沖區(qū)的 優(yōu)先級(jí)高于讀請(qǐng)求緩沖區(qū),使得當(dāng)對(duì)應(yīng)于并行單元的緩沖區(qū)中存在讀重做請(qǐng)求與其他類型的IO請(qǐng)求時(shí),優(yōu)先處理讀重做請(qǐng)求。
在根據(jù)本發(fā)明的另一個(gè)實(shí)施例中,響應(yīng)于讀請(qǐng)求出錯(cuò),基于出錯(cuò)的讀請(qǐng)求產(chǎn)生讀重做請(qǐng)求,并重新處理該讀重做請(qǐng)求。例如,在操作910,接收該讀重做請(qǐng)求,并將其按照讀請(qǐng)求進(jìn)行處理。在另一個(gè)例子中,基于該讀重做請(qǐng)求,填充對(duì)應(yīng)于該讀重做請(qǐng)求的并行單元的讀請(qǐng)求緩沖區(qū)。在此例子中,無需提供讀重做請(qǐng)求緩沖區(qū)。在依然另一個(gè)例子中,通道控制器識(shí)別到讀請(qǐng)求出錯(cuò),產(chǎn)生讀重做請(qǐng)求,并將該讀重做請(qǐng)求發(fā)送給并行單元。
圖10展示了根據(jù)本發(fā)明依然另一個(gè)實(shí)施例的處理IO請(qǐng)求的方法的流程圖。響應(yīng)于接收到IO請(qǐng)求(1010),依據(jù)IO請(qǐng)求要訪問的地址,確定IO請(qǐng)求對(duì)應(yīng)的并行單元(1015)。在填充IO請(qǐng)求緩沖區(qū)時(shí),依據(jù)IO請(qǐng)求的類型,將IO請(qǐng)求填入對(duì)應(yīng)類型的緩沖區(qū)。當(dāng)IO請(qǐng)求是讀請(qǐng)求時(shí),填充對(duì)應(yīng)于該IO請(qǐng)求的并行單元的讀請(qǐng)求緩沖區(qū)(1022)。當(dāng)IO請(qǐng)求是寫請(qǐng)求時(shí),填充對(duì)應(yīng)于該IO請(qǐng)求的并行單元的寫請(qǐng)求緩沖區(qū)(1024)。當(dāng)IO請(qǐng)求是擦除請(qǐng)求時(shí),填充對(duì)應(yīng)于該IO請(qǐng)求的并行單元的擦除請(qǐng)求緩沖區(qū)(1026)。依據(jù)并行單元當(dāng)前的IO請(qǐng)求處理能力,以及讀請(qǐng)求緩沖區(qū)、寫請(qǐng)求緩沖區(qū)與擦除請(qǐng)求緩沖區(qū)的優(yōu)先級(jí),選擇讀請(qǐng)求緩沖區(qū)、寫請(qǐng)求緩沖區(qū)與擦除請(qǐng)求緩沖區(qū)之一取出IO請(qǐng)求(1030)。并依據(jù)取出的IO請(qǐng)求訪問對(duì)應(yīng)的并行單元(1040)。例如將取出的IO請(qǐng)求送入對(duì)應(yīng)的通道控制器,由通道控制器依據(jù)IO請(qǐng)求訪問并行單元。
在根據(jù)圖10的本發(fā)明的實(shí)施例中,在對(duì)應(yīng)于每個(gè)并行單元而提供的緩沖區(qū)中,除讀請(qǐng)求緩沖區(qū)、寫請(qǐng)求緩沖區(qū)與擦除請(qǐng)求緩沖區(qū)外,還提供寫日志請(qǐng)求緩沖區(qū)。寫日志請(qǐng)求是一類特殊的寫請(qǐng)求,用于將系統(tǒng)運(yùn)行期間產(chǎn)生的日志和/或FTL表寫入存儲(chǔ)介質(zhì)。日志是重要數(shù)據(jù),在掉電時(shí)要保證日志被完整寫入存儲(chǔ)設(shè)備。在填充IO請(qǐng)求緩沖區(qū)時(shí),依據(jù)IO請(qǐng)求的類型,將IO請(qǐng)求填入對(duì)應(yīng)類型的緩沖區(qū)。當(dāng)IO請(qǐng)求是寫日志請(qǐng)求時(shí),填充對(duì)應(yīng)于該IO請(qǐng)求的并行單元的寫日志請(qǐng)求緩沖區(qū)(1026)。為寫日志請(qǐng)求緩沖區(qū)設(shè)置最高的優(yōu)先級(jí),從而保證對(duì)寫日志請(qǐng)求的優(yōu)先處理。在發(fā)生意外掉電時(shí),存儲(chǔ)設(shè)備提供備用電源來支撐將關(guān)鍵數(shù)據(jù)寫入非易失存儲(chǔ)介質(zhì)。由于寫日志請(qǐng)求緩沖區(qū)具有最高優(yōu)先級(jí),寫日志請(qǐng)求在掉電時(shí)也能得到有效處理。
在另一個(gè)實(shí)施例中,存儲(chǔ)系統(tǒng)正常運(yùn)行時(shí),寫日志請(qǐng)求緩沖區(qū)可具有同寫請(qǐng)求緩沖區(qū)一致的優(yōu)先級(jí)或其他優(yōu)先級(jí)。響應(yīng)于收到指示異常掉電的信息,調(diào)整寫日志緩沖區(qū)的優(yōu)先級(jí),使之具有最高優(yōu)先級(jí),并使存儲(chǔ)系統(tǒng)在異常掉電后,優(yōu)先處理寫日志請(qǐng)求。在依然另一個(gè)實(shí)施例中,響應(yīng)于收到指示異常掉電的信息,屏蔽其他類型的IO請(qǐng)求,而僅處理寫日志請(qǐng)求。例如,在收到指示異常掉電的信息后,僅從寫日志緩沖區(qū)中獲取寫日志請(qǐng)求,并根據(jù)取出的寫日志請(qǐng)求訪問并行單元,將日志寫入存儲(chǔ)介質(zhì),而不在處理存儲(chǔ)其他類型IO請(qǐng)求的緩沖區(qū)。
本發(fā)明實(shí)施例還提供一種包含計(jì)算機(jī)程序代碼的計(jì)算機(jī)程序,當(dāng)被載入計(jì)算機(jī)系統(tǒng)并在計(jì)算機(jī)系統(tǒng)上執(zhí)行時(shí),所述計(jì)算機(jī)程序代碼使所述計(jì)算機(jī)系統(tǒng)執(zhí)行上面所述的方法。
本發(fā)明實(shí)施例還提供一種包括程序代碼的程序,當(dāng)被載入存儲(chǔ)設(shè)備并在存儲(chǔ)設(shè)備上執(zhí)行時(shí),所述計(jì)程序代碼使所述存儲(chǔ)設(shè)備執(zhí)行上面所述的方法。
應(yīng)該理解,框圖和流程圖的每個(gè)框以及框圖和流程圖的框的組合可以分別由包括計(jì)算機(jī)程序指令的各種裝置來實(shí)施。這些計(jì)算機(jī)程序指令可以加載到通用計(jì)算機(jī)、專用計(jì)算機(jī)或其他可編程數(shù)據(jù)控制設(shè)備上以產(chǎn)生機(jī)器,從而在計(jì)算機(jī)或其他可編程數(shù)據(jù)控制設(shè)備上執(zhí)行的指令創(chuàng)建了用于實(shí)現(xiàn)一個(gè)或多個(gè)流程圖框中指定的功能的裝置。
這些計(jì)算機(jī)程序指令還可以存儲(chǔ)在可以引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)控制設(shè)備 的計(jì)算機(jī)可讀存儲(chǔ)器中從而以特定方式起作用,從而能夠利用存儲(chǔ)在計(jì)算機(jī)可讀存儲(chǔ)器中的指令來制造包括用于實(shí)現(xiàn)一個(gè)或多個(gè)流程圖框中所指定功能的計(jì)算機(jī)可讀指令的制品。計(jì)算機(jī)程序指令還可以加載到計(jì)算機(jī)或其他可編程數(shù)據(jù)控制設(shè)備上以使得在計(jì)算機(jī)或其他可編程數(shù)據(jù)控制設(shè)備上執(zhí)行一系列的操作操作,從而產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的過程,進(jìn)而在計(jì)算機(jī)或其他可編程數(shù)據(jù)控制設(shè)備上執(zhí)行的指令提供了用于實(shí)現(xiàn)一個(gè)或多個(gè)流程圖框中所指定功能的操作。
因而,框圖和流程圖的框支持用于執(zhí)行指定功能的裝置的組合、用于執(zhí)行指定功能的操作的組合和用于執(zhí)行指定功能的程序指令裝置的組合。還應(yīng)該理解,框圖和流程圖的每個(gè)框以及框圖和流程圖的框的組合可以由執(zhí)行指定功能或操作的、基于硬件的專用計(jì)算機(jī)系統(tǒng)實(shí)現(xiàn),或由專用硬件和計(jì)算機(jī)指令的組合實(shí)現(xiàn)。
上面已經(jīng)公開了處理IO請(qǐng)求的方法及其存儲(chǔ)控制器。所屬領(lǐng)域技術(shù)人員還將意識(shí)到本發(fā)明中所公開的方法或操作流程可由軟件、固件及其任何組合實(shí)現(xiàn)。實(shí)現(xiàn)本發(fā)明實(shí)施例的方法或操作流程的軟件、固件可由訪問存儲(chǔ)設(shè)備的主機(jī)的CPU執(zhí)行。實(shí)現(xiàn)本發(fā)明實(shí)施例的方法或操作的軟件、固件可存儲(chǔ)于網(wǎng)絡(luò)服務(wù)器、訪問存儲(chǔ)設(shè)備的主機(jī)和/或存儲(chǔ)設(shè)備。
雖然當(dāng)前發(fā)明參考的示例被描述,其只是為了解釋的目的而不是對(duì)本發(fā)明的限制,對(duì)實(shí)施方式的改變,增加和/或刪除可以被做出而不脫離本發(fā)明的范圍。
這些實(shí)施方式所涉及的、從上面描述和相關(guān)聯(lián)的附圖中呈現(xiàn)的教導(dǎo)獲益的領(lǐng)域中的技術(shù)人員將認(rèn)識(shí)到這里記載的本發(fā)明的很多修改和其他實(shí)施方式。因此,應(yīng)該理解,本發(fā)明不限于公開的具體實(shí)施方式,旨在將修改和其他實(shí)施方式包括在所附權(quán)利要求書的范圍內(nèi)。盡管在這里采用了特定的術(shù)語,但是僅在一般意義和描述意義上使用它們并且不是為了限制的目的而使用。