TWI847003B - 儲存裝置及對邏輯區塊位址中的重疊進行檢查的方法 - Google Patents
儲存裝置及對邏輯區塊位址中的重疊進行檢查的方法 Download PDFInfo
- Publication number
- TWI847003B TWI847003B TW110100712A TW110100712A TWI847003B TW I847003 B TWI847003 B TW I847003B TW 110100712 A TW110100712 A TW 110100712A TW 110100712 A TW110100712 A TW 110100712A TW I847003 B TWI847003 B TW I847003B
- Authority
- TW
- Taiwan
- Prior art keywords
- block address
- logical block
- overlap
- commands
- address range
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 27
- 230000004044 response Effects 0.000 claims description 22
- 239000000284 extract Substances 0.000 claims description 9
- 230000003247 decreasing effect Effects 0.000 claims 1
- 238000000605 extraction Methods 0.000 description 18
- 238000001514 detection method Methods 0.000 description 15
- 238000010586 diagram Methods 0.000 description 10
- 238000012545 processing Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 239000003999 initiator Substances 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 101001121408 Homo sapiens L-amino-acid oxidase Proteins 0.000 description 2
- 102100026388 L-amino-acid oxidase Human genes 0.000 description 2
- 101100012902 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) FIG2 gene Proteins 0.000 description 2
- 230000000903 blocking effect Effects 0.000 description 2
- 241001025261 Neoraja caerulea Species 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 229910052798 chalcogen Inorganic materials 0.000 description 1
- 150000001787 chalcogens Chemical class 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3037—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/126—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Quality & Reliability (AREA)
- Storage Device Security (AREA)
- Information Transfer Systems (AREA)
- Debugging And Monitoring (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Executing Machine-Instructions (AREA)
Abstract
一種儲存裝置包括:一或多個邏輯區塊,用於儲存自主
機裝置接收的主機資料,所述邏輯區塊具有邏輯區塊位址(LBA);LBA範圍表,用於儲存一或多個LBA範圍,所述一或多個LBA範圍與藉由儲存介面自主機裝置接收的一或多個命令相關聯;以及重疊檢查電路,用於將與現用請求相關聯的LBA範圍和與所述一或多個命令相關聯的所述一或多個LBA範圍進行比較,並確定與現用請求相關聯的LBA範圍和與所述一或多個命令相關聯的所述一或多個LBA範圍中的任一者之間的重疊。
Description
本申請案主張在2020年3月24日提出申請且名稱為「用於具有重疊範圍的命令的平行重疊管理(PARALLEL OVERLAP MANAGEMENT FOR COMMANDS WITH OVERLAPPING RANGES)」的美國臨時申請案第62/994,185號的優先權及權益,所述美國臨時申請案的全部內容併入本案供參考。
本揭露的一或多個示例性實施例的態樣是有關於儲存裝置,且更具體而言是有關於一種用於管理具有重疊範圍的命令的儲存裝置。
儲存系統一般包括主機裝置及一或多個儲存裝置。主機裝置可藉由向儲存裝置傳送各種命令來更新儲存裝置的一或多個邏輯區塊而對儲存於儲存裝置中的資料進行管理。舉例而言,主機裝置可將中斷(UNMAP)命令或重新分派區塊(REASSIGN BLOCKS)命令與一或多個邏輯區塊位址(logical block address,
LBA)或LBA範圍傳送至儲存裝置,使得儲存裝置收回(例如,中斷)或改變與所述一或多個LBA或LBA範圍相關聯的邏輯區塊的物理位置(例如,重新分派區塊)。在此種情形中,舉例而言,儲存裝置可阻止與中斷命令或重新分派區塊命令具有一或多個重疊LBA或LBA範圍的其他命令(例如讀取(READ)命令及寫入(WRITE)命令)(或者可以相似的方式阻止具有重疊LBA或LBA範圍的重新分派區塊命令或中斷命令),以維護受影響的LBA或LBA範圍內的原子性。
在此先前技術部分中揭露的以上資訊僅用於增強對本揭露的背景的理解,且因此以上資訊可能包含不構成先前技術的資訊。
本揭露的一或多個示例性實施例是有關於一種包括硬體模組(例如,LBA重疊檢查(LBA overlap check,LOC)電路)的儲存裝置以用於檢查具有多個不連貫的LBA或LBA範圍的命令的重疊。
本揭露的一或多個示例性實施例是有關於一種包括硬體模組(例如,LOC電路)的儲存裝置,以在即使同一命令的一或多個LBA或LBA範圍因重疊而被阻止時亦能夠執行具有非重疊LBA或LBA範圍的命令。
根據本揭露的一或多個示例性實施例,一種儲存裝置包括:一或多個邏輯區塊,被配置成儲存自主機裝置接收的主機資
料,所述邏輯區塊具有邏輯區塊位址(LBA);LBA範圍表,被配置成儲存一或多個LBA範圍,所述一或多個LBA範圍與藉由儲存介面自所述主機裝置接收的一或多個命令相關聯;以及重疊檢查電路,被配置成將與現用請求相關聯的LBA範圍和與所述一或多個命令相關聯的所述一或多個LBA範圍進行比較,並確定與所述現用請求相關聯的所述LBA範圍和與所述一或多個命令相關聯的所述一或多個LBA範圍中的任一者之間的重疊。
在示例性實施例中,所述重疊檢查電路可被配置成因應於確定出與所述現用請求相關聯的所述LBA範圍和與所述一或多個命令相關聯的所述一或多個LBA範圍中的至少一者重疊而阻止與所述現用請求相關聯的命令的執行,並因應於確定出與所述現用請求相關聯的所述LBA範圍不和與所述一或多個命令相關聯的所述一或多個LBA範圍中的任一者重疊而容許與所述現用請求相關聯的所述命令的執行。
在示例性實施例中,所述一或多個命令可對應於因具有重疊LBA範圍而被所述重疊檢查電路阻止的未決命令或正在被執行的未決命令。
在示例性實施例中,所述現用請求可對應於藉由所述儲存介面自所述主機裝置接收的傳入命令,且與所述現用請求相關聯的所述LBA範圍可包括所述傳入命令的不連貫的LBA範圍。
在示例性實施例中,所述重疊檢查電路可被配置成針對所述不連貫的LBA範圍中的至少第一LBA範圍而阻止所述傳入
命令的執行,並針對同一所述傳入命令的所述不連貫的LBA範圍中的至少第二LBA範圍而容許所述傳入命令的執行。
在示例性實施例中,所述重疊檢查電路可包括一或多個比較器,所述一或多個比較器被配置成將與所述現用請求相關聯的所述LBA範圍和與所述一或多個命令相關聯的所述一或多個LBA範圍進行比較,且所述比較器中的每一者可被配置成將與所述現用請求相關聯的所述LBA範圍和與所述一或多個命令相關聯的所述一或多個LBA範圍中的不同的一者進行比較。
在示例性實施例中,所述重疊檢查電路可被配置成維護具有重疊LBA範圍的命令的執行次序序列。
在示例性實施例中,所述重疊檢查電路可被配置成因應於確定出與所述現用請求相關聯的所述LBA範圍和與所述一或多個命令相關聯的所述一或多個LBA範圍中的至少一者重疊而為與所述現用請求相關聯的所述LBA範圍設定重疊計數值,且所述重疊計數值可對應於與所述現用請求相關聯的所述LBA範圍和與所述一或多個命令相關聯的所述一或多個LBA範圍之間的重疊數目。
在示例性實施例中,所述重疊檢查電路可被配置成因應於所述一或多個命令中和與所述現用請求相關聯的所述LBA範圍具有重疊LBA範圍的命令的執行完成而遞減所述重疊計數值,且因應於所述重疊計數值遞減至臨限值而容許與所述現用請求相關聯的所述LBA範圍的執行。
在示例性實施例中,與所述現用請求相關聯的所述LBA範圍可被登記至所述LBA範圍表,且所述重疊檢查電路可被配置成自所述LBA範圍表擷取與所述現用請求相關聯的所述LBA範圍。
根據本揭露的一或多個示例性實施例,一種對與由主機裝置發至儲存裝置的命令相關聯的邏輯區塊位址(LBA)中的重疊進行檢查的方法包括:藉由LBA範圍表儲存與藉由儲存介面自所述主機裝置接收的一或多個命令相關聯的一或多個LBA範圍;由所述儲存裝置的重疊檢查電路將與現用請求相關聯的LBA範圍和與所述一或多個命令相關聯的所述一或多個LBA範圍進行比較;以及由所述重疊檢查電路確定與所述現用請求相關聯的所述LBA範圍和與所述一或多個命令相關聯的所述一或多個LBA範圍中的任一者之間的重疊。
在示例性實施例中,所述方法可更包括:由所述重疊檢查電路因應於確定出與所述現用請求相關聯的所述LBA範圍和與所述一或多個命令相關聯的所述一或多個LBA範圍中的至少一者重疊而阻止與所述現用請求相關聯的命令的執行;以及由所述重疊檢查電路因應於確定出與所述現用請求相關聯的所述LBA範圍不和與所述一或多個命令相關聯的所述一或多個LBA範圍中的任一者重疊而容許與所述現用請求相關聯的所述命令的執行。
在示例性實施例中,所述一或多個命令可對應於因具有重疊LBA範圍而被所述重疊檢查電路阻止的未決命令或正在被執
行的未決命令。
在示例性實施例中,所述現用請求可對應於藉由所述儲存介面自所述主機裝置接收的傳入命令,且與所述現用請求相關聯的所述LBA範圍可包括所述傳入命令的不連貫的LBA範圍。
在示例性實施例中,所述方法可更包括:由所述重疊檢查電路針對所述不連貫的LBA範圍中的至少第一LBA範圍而阻止所述傳入命令的執行;以及由所述重疊檢查電路針對同一所述傳入命令的所述不連貫的LBA範圍中的至少第二LBA範圍而容許所述傳入命令的執行。
在示例性實施例中,所述重疊檢查電路可包括一或多個比較器,且所述方法可更包括:由所述比較器將與所述現用請求相關聯的所述LBA範圍和與所述一或多個命令相關聯的所述一或多個LBA範圍進行比較,且所述比較器中的每一者可將與所述現用請求相關聯的所述LBA範圍和與所述一或多個命令相關聯的所述一或多個LBA範圍中的不同的一者進行比較。
在示例性實施例中,所述方法可更包括:由所述重疊檢查電路維護具有重疊LBA範圍的命令的執行次序序列。
在示例性實施例中,為維護所述執行次序序列,所述方法可更包括:由所述重疊檢查電路因應於確定出與所述現用請求相關聯的所述LBA範圍和與所述一或多個命令相關聯的所述一或多個LBA範圍中的至少一者重疊而為與所述現用請求相關聯的所述LBA範圍設定重疊計數值,且所述重疊計數值可對應於與所述
現用請求相關聯的所述LBA範圍和與所述一或多個命令相關聯的所述一或多個LBA範圍之間的重疊數目。
在示例性實施例中,所述方法可更包括:由所述重疊檢查電路因應於所述一或多個命令中和與所述現用請求相關聯的所述LBA範圍具有重疊LBA範圍的命令的執行完成而遞減所述重疊計數值;以及由所述重疊檢查電路因應於所述重疊計數值遞減至臨限值而容許與所述現用請求相關聯的所述LBA範圍的執行。
在示例性實施例中,與所述現用請求相關聯的所述LBA範圍可被登記至所述LBA範圍表,且所述方法可更包括:由所述重疊檢查電路自所述LBA範圍表擷取與所述現用請求相關聯的所述LBA範圍。
100:儲存系統
102:主機裝置
104:儲存裝置
106:主機處理器
108:主機記憶體
110:儲存介面
112:命令管線電路
114:儲存控制器
116:儲存記憶體
118:邏輯區塊
120:邏輯區塊位址(LBA)範圍表
122:LBA重疊檢查(LOC)電路
202:選擇電路
204:提取電路
206:檢查電路
302:LBA範圍
402:比較電路
404:重疊位元映像/位元映像
406:偵測電路
408:計數電路
502:或邏輯閘
602:第一邏輯電路
604:第二邏輯電路
606:第二邏輯閘/第一-第二邏輯閘
608:第二邏輯閘/第二-第二邏輯閘
610:第二邏輯閘/第三-第二邏輯閘
612:第三邏輯閘
702:第一現用請求
704:第二現用請求
706:第三現用請求
B0:位元/第一位元
B1:位元/第二位元
B2:位元/第三位元
Comparator 1:比較器/第一比較器
Comparator 2:比較器/第二比較器
Comparator N:比較器/第N比較器
Range 1:LBA範圍/第一LBA範圍
Range 2:LBA範圍/第二LBA範圍
Range 3:LBA範圍/第三LBA範圍
Range 4:LBA範圍/第四LBA範圍
Range N:LBA範圍/第N LBA範圍
S0:第一計數位元/位元
S1:第二計數位元/位元
參照附圖閱讀示例性實施例的以下詳細說明,本揭露的以上及其他態樣及特徵對於熟習此項技術者將變得更顯而易見。
圖1是根據本揭露一或多個示例性實施例的儲存系統的系統圖。
圖2是例示出根據本揭露一或多個示例性實施例的儲存裝置的LOC電路的方塊圖。
圖3例示出根據本揭露一或多個示例性實施例的LBA範圍表的示例性格式。
圖4是根據本揭露一或多個示例性實施例的LOC電路的檢查
電路的方塊圖。
圖5是例示出根據本揭露一或多個示例性實施例的檢查電路的偵測電路的示意性電路圖。
圖6是例示出根據本揭露一或多個示例性實施例的檢查電路的計數電路的示意性電路圖。
圖7是根據本揭露一或多個示例性實施例的具有重疊範圍的阻止命令的例示性實例的流程圖。
在下文中,將參照附圖更詳細地闡述示例性實施例,在所有附圖中,相同的參考編號指代相同的元件。然而,本揭露可以各種不同的形式實施且不應被視為僅限於本文中所例示的實施例。確切而言,提供該些實施例是作為實例來使本揭露將透徹及完整且將向熟習此項技術者充分傳達本揭露的態樣及特徵。因此,可不再闡述對於此項技術中具有通常知識者完整地理解本揭露的各個方面及特徵而言並非必需的過程、元件及技術。除非另外注明,否則在所有附圖及本書面說明通篇中相同的參考編號表示相同的元件,且因此可不再對其予以贅述。
根據本揭露的一或多個示例性實施例,主機裝置(例如,主機電腦)可將命令發至儲存裝置,以請求對儲存主機資料的儲存裝置的一或多個邏輯區塊的更新。在此種情形中,每一命令可向儲存裝置提供與所述命令相關聯的一或多個邏輯區塊位址(LBA)或LBA範圍的列表。舉例而言,中斷命令(例如,SCSI
中斷命令)可向儲存裝置提供LBA的列表,且重新分派區塊命令(例如,SCSI重新分派區塊命令)可向儲存裝置提供LBA範圍的列表。舉例而言,儲存裝置可阻止與重新分派區塊命令或中斷命令具有LBA重疊的其他命令(例如讀取命令及寫入命令)(及/或可以相似的方式阻止具有重疊LBA或LBA範圍的重新分派區塊命令或中斷命令),以維護受影響的LBA或LBA範圍內的原子性。然而,此可能會帶來效能問題。
舉例而言,比較儲存裝置可依序檢查LBA或LBA範圍中的重疊,使得比較儲存裝置可一次性處置一個LBA或LBA範圍。然而,在此種情形中,即使後續命令不具有重疊LBA或LBA範圍,比較儲存裝置仍可阻止所有後續命令,直至具有重疊範圍的命令皆被解決(例如,得到處理及/或執行)為止。由於並非容許執行(例如,立即執行)具有非重疊LBA或LBA範圍的命令,而是可阻止該些命令直至具有重疊LBA或LBA範圍的任何前面的命令已被解決並得到執行為止,因此此可能會使儲存裝置的效能劣化。相似地,對於具有多個不連貫的LBA或LBA範圍的命令(例如,單個命令),比較儲存裝置可依序檢查LBA或LBA範圍中的重疊,使得即使不存在影響第二LBA或LBA範圍的重疊,所述多個不連貫的LBA或LBA範圍中的第一LBA或LBA範圍的重疊仍可防止比較儲存裝置對所述多個不連貫的LBA或LBA範圍中的第二LBA或LBA範圍進行處理。
根據本揭露的一或多個示例性實施例,儲存裝置可包括
硬體模組(例如,LOC電路)以同時(例如,同步或在同一時間)支援多個LBA或LBA範圍的重疊檢查。在此種情形中,硬體模組可阻止具有重疊LBA或LBA範圍的命令的執行,同時即使一或多個前面的命令由於具有重疊LBA或LBA範圍而被阻止,仍容許不具有重疊LBA或LBA範圍的命令(例如,後續命令)的執行。因此,可改善儲存裝置的效能。
根據本揭露的一或多個示例性實施例,硬體模組(例如,LOC電路)可針對單個命令同時檢查多個不連貫的LBA或LBA範圍中的重疊。舉例而言,單個命令的LBA或LBA範圍可被劃分成LBA範圍表的多個表項,所述LBA範圍表可被硬體模組用於檢查與未決命令(例如,正在被執行或等待執行的命令)的LBA或LBA範圍的重疊。在一些實施例中,可阻止與未決命令中的LBA或LBA範圍中的一或多者重疊的命令的任何LBA或LBA範圍,而可容許執行(例如,可立即執行或者可繼續執行)不與未決命令的LBA或LBA範圍重疊的同一命令的LBA或LBA範圍。在一些實施例中,可自動阻止與正在進行的命令的LBA或LBA範圍重疊的任何接收命令,直至所述範圍被完全處理為止。因此,可改善效能。
根據本揭露的一或多個示例性實施例,硬體模組(例如,LOC電路)可自韌體或軟體卸載重疊檢查。舉例而言,使用韌體或軟體(例如,執行指令的處理器)檢查多個不連貫的LBA或LBA範圍中的重疊可能會引入等待時間(例如,由於處理時間)
及/或可能會降低儲存裝置的通量(例如,總通量)(例如,因利用儲存裝置的有限處理資源)。因此,藉由將重疊檢查卸載至硬體模組,可減少等待時間及/或可改善儲存裝置104的通量。
圖1是根據本揭露一或多個示例性實施例的儲存系統的系統圖。
簡言之,根據本揭露的一或多個實施例,儲存系統100可包括主機裝置(例如,主機電腦)102及儲存裝置104。主機裝置102可將命令發至儲存裝置104,使得儲存裝置104根據所述命令對儲存於儲存裝置104中的主機資料進行管理。舉例而言,主機裝置102可以可通訊的方式連接至儲存裝置104(例如,藉由儲存介面110),且可將各種命令(例如,讀取、寫入、中斷、重新分派區塊、修正(TRIM)及/或類似命令)和與所述命令相關聯的一或多個LBA或LBA範圍一起發至儲存裝置104。儲存裝置104可在與所述一或多個LBA或LBA範圍相關聯的一或多個邏輯區塊中儲存、更新及/或以其他方式管理主機資料。一旦命令被執行,儲存裝置104便可向主機裝置102傳送因應,指示命令被成功完成。
在一或多個示例性實施例中,儲存裝置104可包括硬體模組(例如,LOC電路122),以對與傳入命令相關聯的一或多個LBA或LBA範圍和未決命令的LBA或LBA範圍之間的重疊進行檢查,而並非使用韌體或軟體(例如,執行指令的處理器,例如儲存控制器114)來實行重疊檢查。舉例而言,在一些實施例中,
與一或多個未決命令(例如,正在被執行或等待執行的一或多個命令)相關聯的LBA或LBA範圍可被劃分成表(例如,LBA範圍表120)的各別表項。在此種情形中,硬體模組可將與傳入命令相關聯的一或多個LBA或LBA範圍和所述表中的LBA或LBA範圍進行比較,以判斷與傳入命令相關聯的所述一或多個LBA或LBA範圍是否和來自所述表的LBA或LBA範圍重疊。若與傳入命令相關聯的所述一或多個LBA或LBA範圍和來自所述表的LBA或LBA範圍重疊,則可阻止傳入命令。另一方面,若與傳入命令相關聯的所述一或多個LBA或LBA範圍不與來自所述表的LBA或LBA範圍中的任一者重疊,則可執行(例如,可立即執行或者可繼續執行)傳入命令。
在一或多個示例性實施例中,硬體模組(例如,LOC電路122)可同時(例如,同步或在同一時間)檢查與命令(例如,單個命令)相關聯的多個不連貫的LBA或LBA範圍,且可使得能夠針對LBA或LBA範圍中的非重疊LBA或LBA範圍而執行所述命令,同時針對LBA或LBA範圍中的重疊LBA或LBA範圍而阻止同一命令的執行。因此,藉由針對非重疊LBA或LBA範圍而容許所述命令的執行、與此同時針對重疊LBA或LBA範圍而阻止同一命令的執行,可減少或最小化命令的執行時間。
更詳細而言,參照圖1,主機裝置102可包括主機處理器106及主機記憶體108。舉例而言,主機處理器106可為通用處理器,例如主機裝置102的中央處理單元(central processing unit,
CPU)核。主機記憶體108可被認為是主機裝置102的高實行性主記憶體(例如,主要記憶體)。舉例而言,在一些實施例中,主機記憶體108可包括(或可為)揮發性記憶體,例如(舉例而言)動態隨機存取記憶體(dynamic random-access memory,DRAM)。然而,本揭露並非僅限於此,且如熟習此項技術者所知,主機記憶體108可包括(或可為)任何合適的高實行性主記憶體(例如,主要記憶體)以替換主機裝置102。舉例而言,在其他實施例中,主機記憶體108可為相對高實行性的非揮發性記憶體,例如反及(NAND)快閃記憶體、相變記憶體(Phase Change Memory,PCM)、電阻式隨機存取記憶體(Resistive RAM)、自旋轉移扭矩隨機存取記憶體(Spin-transfer Torque RAM,STTRAM)、基於PCM技術、憶阻器技術及/或電阻式隨機存取記憶體(ReRAM)的任何合適的記憶體且可包含例如硫屬元素及/或類似元素。
儲存裝置104可被認為是可持久儲存可由主機裝置102存取的資料的輔助記憶體。在此上下文中,相較於主機記憶體108的高實行性記憶體,儲存裝置104可包括(或可為)相對較慢的記憶體。舉例而言,在一些實施例中,儲存裝置104可為主機裝置102的輔助記憶體,例如(舉例而言)固態驅動機(Solid-State Drive,SSD)。然而,本揭露並非僅限於此,且在其他實施例中,儲存裝置104可包括(或可為)任何合適的儲存裝置,例如(舉例而言)磁儲存裝置(例如,硬碟驅動機(hard disk drive,HDD)等)、光學儲存裝置(例如,藍光光碟驅動機(Blue-ray disc drive)、
光碟(compact disc,CD)驅動機、數位影音光碟(digital versatile disc,DVD)驅動機等)、其他種類的快閃記憶體裝置(例如,通用序列匯流排(Universal Serial Bus,USB)快閃驅動機等)及/或類似儲存裝置。在各種實施例中,儲存裝置104可符合大形狀因數標準(例如,3.5英吋硬驅動機形狀因數)、小形狀因數標準(例如,2.5英吋硬驅動機形狀因數)、M.2形狀因數、E1.S形狀因數及/或類似形狀因數。在其他實施例中,儲存裝置104可符合該些形狀因數的任何合適的衍生物或期望的衍生物。為方便起見,在下文中可在SSD的上下文中闡述儲存裝置104,但本揭露並非僅限於此。
儲存裝置104可藉由儲存介面110以可通訊的方式連接至主機裝置102。儲存介面110可利於主機裝置102與儲存裝置104之間的通訊(例如,使用連接器及協定)。在一些實施例中,儲存介面110可利於主機裝置102與儲存裝置104之間的儲存請求及因應的交換。舉例而言,在實施例中,儲存介面110(例如,連接器及其協定)可包括(或可符合)小型電腦系統介面(Small Computer System Interface,SCSI)、快速非揮發性記憶體(Non Volatile Memory Express,NVMe)及/或類似儲存介面。然而,本揭露並非僅限於此,且在其他實施例中,儲存介面110(例如,連接器及其協定)可符合其他合適的儲存介面,例如(舉例而言)快速周邊組件互連(Peripheral Component Interconnect Express,PCIe)、乙太網路遠程直接記憶體存取(remote direct memory
access,RDMA)、串列進階技術附接(Serial Advanced Technology Attachment,SATA)、光纖通道、串列附接小型電腦系統介面(Serial Attached SCSI,SAS)、架構上NVMe(NVMe over fabric,NVMe-oF)及/或類似儲存介面。在其他實施例中,舉例而言,儲存介面110(例如,連接器及其協定)可包括(或可符合)各種通用介面,例如乙太網路、通用序列匯流排(USB)及/或類似通用介面。為方便起見,在下文中可在SCSI介面的上下文中闡述儲存介面110,但本揭露並非僅限於此。
在一些實施例中,儲存裝置104可包括儲存控制器114及儲存記憶體116。儲存控制器114可連接至儲存介面110(例如,經由命令管線電路112),且可對藉由儲存介面110自主機裝置102接收的輸入/輸出(input/output,I/O)請求作出因應。儲存控制器114可提供介面來控制儲存記憶體116並提供相對於儲存記憶體116進行的存取。舉例而言,儲存控制器114可包括嵌置於儲存控制器114上的至少一個處理電路,以用於與主機裝置102及儲存記憶體116進行介接。處理電路可包括例如能夠執行資料存取指令(例如,經由韌體及/或軟體)以根據資料存取指令提供相對於儲存於儲存記憶體116中的資料進行的存取的數位電路(例如,微控制器、微處理器、數位訊號處理器或邏輯裝置(例如,現場可程式化閘陣列(field programmable gate array,FPGA)、特殊應用積體電路(application-specific integrated circuit,ASIC)及/或類似邏輯裝置))。舉例而言,資料存取指令可包括任何合適的資
料儲存及擷取演算法(例如,讀取/寫入)指令、資料管理及更新演算法(例如,中斷、重新分派區塊、修正及/或類似演算法)指令及/或類似指令。
儲存記憶體116可持久儲存自主機裝置102接收的資料。舉例而言,儲存記憶體116可包括多個邏輯區塊118,以儲存自主機裝置102接收的主機資料。在實施例中,舉例而言,儲存記憶體116可包括非揮發性記憶體,例如反及快閃記憶體。然而,本揭露並非僅限於此,且儲存記憶體116可依據儲存裝置104的類型而包括任何合適的記憶體。
在一或多個示例性實施例中,儲存裝置104可包括LBA範圍表120。LBA範圍表120可包括儲存與正在被執行或等待執行的一或多個命令相關聯的LBA或LBA範圍的多個各別槽,使得LBA範圍表120中的LBA或LBA範圍可與傳入命令的LBA或LBA範圍進行比較。舉例而言,在一些實施例中,LBA範圍表120可儲存於緩衝器中或儲存裝置104的揮發性記憶體(例如DRAM)中。然而,本揭露並非僅限於此,且LBA範圍表120可儲存於任何合適的記憶體中,使得LBA範圍表120中的LBA或LBA範圍可被擷取且與傳入命令的LBA或LBA範圍進行比較。舉例而言,在另一實施例中,LBA範圍表120可儲存於儲存記憶體116中。
在一或多個示例性實施例中,儲存裝置104可更包括命令管線電路112及LBA重疊檢查(LOC)電路122。在一些實施例中,命令管線電路112可藉由儲存介面110自主機裝置102接
收命令(例如,命令訊框、提交佇列表項及/或類似物),且可將命令發佈(例如,可傳送)(例如,經由通知)至儲存控制器114(或使用韌體或軟體的另一處理器)。在此種情形中,儲存控制器114(或使用韌體或軟體的另一處理器)可向LOC電路122提交與命令中的每一者相關聯的一或多個LBA範圍以進行重疊檢查。在一些實施例中,命令管線電路112可自主機裝置102接收命令(例如,命令訊框、提交佇列表項及/或類似物),且可解析命令(例如,以確定命令中的每一者的命令類型以及與命令中的每一者相關聯的一或多個LBA或LBA範圍)。在此種情形中,在一些實施例中,命令管線電路112可向LOC電路122提交與命令中的每一者相關聯的一或多個LBA或LBA範圍以進行重疊檢查。在一些實施例中,命令管線電路112及儲存控制器114(或使用韌體或軟體的另一處理器)中的每一者可將LBA或LBA範圍提交至LOC電路122以進行重疊檢查。在其他實施例中,命令管線電路112及儲存控制器114(或使用韌體或軟體的另一處理器)中的合適的一者可依據儲存裝置104的實施方式或類型而將LBA或LBA範圍提交至LOC電路122以進行重疊檢查。然而,本揭露並非僅限於此,且可依據儲存裝置104的類型及/或實施方式而省略命令管線電路112及儲存控制器114中的一者。
在一些實施例中,LOC電路122可被實施為可以可通訊的方式連接至儲存控制器114及/或命令管線電路112且可自儲存控制器114及/或命令管線電路112接收重疊檢查請求的硬體模組
(例如,電子電路)。LOC電路122可檢查與重疊檢查請求相關聯的一或多個LBA或LBA範圍和來自LBA範圍表120的一或多個LBA或LBA範圍之間的重疊。舉例而言,在實施例中,LOC電路122可被實施為附接至(或安裝於)儲存裝置104上(例如,可嵌置於在與儲存裝置104的板相同的板或相同的電路板上)的積體電路(integrated circuit,IC)。舉例而言,LOC電路122可被實施成作為系統晶片(system on chip,SOC)而位於(例如,可附接至或安裝於)儲存裝置104上。然而,本揭露並非僅限於此。舉例而言,在另一實施例中,LOC電路122可被實施成位於儲存裝置104的電路板中的單獨的電路板(例如,印刷電路板PCB)上且可連接至儲存控制器114及/或命令管線電路112。
在一或多個示例性實施例中,如以下參照圖2至圖7更詳細地論述,LOC電路122可自儲存控制器114及/或命令管線電路112接收請求,以同時(例如,同步或在同一時間)檢查多個LBA或LBA範圍中的重疊。舉例而言,儲存控制器114及/或命令管線電路112可將傳入命令的LBA或LBA範圍(在下文中可被統稱為LBA範圍)登記至LBA範圍表120的各別槽中,且LOC電路122可使用LBA範圍表120來同時檢查請求中的一或多個LBA範圍與LBA範圍表120中的LBA範圍之間的重疊。在一些實施例中,LOC電路122可阻止具有與LBA範圍表120中的LBA範圍中的一或多者重疊的LBA範圍的任何命令的執行,且可容許具有不與LBA範圍表120中的LBA範圍重疊的LBA範圍的命令
的執行。在一些實施例中,LOC電路122可使得能夠針對LBA範圍中的非重疊LBA範圍而執行命令,同時針對LBA範圍中的重疊LBA範圍而阻止同一命令的執行。因此,可減少或最小化命令的執行時間,可減少等待時間及/或可改善通量。
圖2是例示出根據本揭露一或多個示例性實施例的儲存裝置的LOC電路的方塊圖。
簡言之,LOC電路122可為硬體模組(例如,電子電路)所述硬體模組連接至儲存控制器114(例如,如實線箭頭所示)及/或命令管線電路112(例如,如虛線箭頭所示),使得LOC電路122可自儲存控制器114及/或命令管線電路112接收重疊檢查請求。在一些實施例中,LOC電路122可自重疊檢查請求中選擇重疊檢查請求作為現用請求,且可將與現用請求相關聯的一或多個LBA範圍自LBA範圍表120提取(例如,可擷取或可讀取)至內部表(例如,正反器的內部暫存器)。LOC電路122可將與現用請求相關聯的所述一或多個LBA範圍和內部表中與其他未決命令(例如,正在被執行或等待執行的命令)相關聯的其他LBA範圍進行比較。LOC電路122可根據比較結果確定LBA範圍之間的重疊。在一些實施例中,LOC電路122可產生重疊計數,所述重疊計數可用於維護具有重疊LBA範圍的命令的執行次序序列。舉例而言,在一些實施例中,LOC電路122可包括選擇電路202、提取電路204及檢查電路206。
更詳細而言,參照圖2,在一些實施例中,命令管線電
路112可藉由儲存介面110自主機裝置102接收傳入命令(例如,命令訊框、提交佇列表項及/或類似物),例如(舉例而言)中斷命令(例如,SCSI中斷命令)或重新分派區塊命令(例如,SCSI重新分派區塊命令)。傳入命令可包括與所述命令相關聯的一或多個LBA範圍,使得儲存裝置104對與所述一或多個LBA範圍對應的一或多個邏輯區塊118執行與所述命令相關聯的操作。在一些實施例中,命令管線電路112可將命令發佈(例如,可傳送)(例如,經由通知)至儲存控制器114,使得儲存控制器114可使用例如韌體或軟體來處理所述命令。在此種情形中,儲存控制器114可根據所述命令及與所述命令相關聯的一或多個LBA範圍來更新儲存記憶體116中的LBA範圍表120。在另一實施例中,命令管線電路112可包括用於解析命令(例如,以確定命令的類型以及與所述命令相關聯的一或多個LBA範圍)的解析電路。在此種情形中,命令管線電路112可根據所述命令及與所述命令相關聯的一或多個LBA範圍來更新儲存記憶體116中的LBA範圍表120。在另一實施例中,命令管線電路112及儲存控制器114中的每一者可使用與傳入命令相關聯的LBA範圍來更新儲存記憶體116中的LBA範圍表120。在一些實施例中,命令管線電路112及/或儲存控制器114可將具有多個不連貫的LBA範圍的單個命令劃分成LBA範圍表120的各別表項。
舉例而言,圖3例示出根據本揭露一或多個示例性實施例的LBA範圍表的示例性格式。如圖3中所示,LBA範圍表120
可包括多個表項(例如,多個各別槽),每一表項對應於命令及與所述命令相關聯的LBA範圍。命令管線電路112及/或儲存控制器114可藉由向LBA範圍表120提供傳入命令的LBA範圍302來更新LBA範圍表120。舉例而言,傳入命令的LBA範圍302可定義LBA範圍的開始LBA及結束LBA。在另一實例中,傳入命令的LBA範圍302可定義開始LBA及LBA計數。然而,本揭露並非僅限於此。舉例而言,當LBA範圍包括單個LBA時,LBA範圍302可包括單個LBA(例如,代替開始LBA及結束LBA),或者開始LBA及結束LBA可包括與單個LBA對應的同一LBA。此外,如圖3中所示,具有多個不連貫的LBA範圍的單個命令(例如,命令2)可被劃分成LBA範圍表120的多個表項,使得同一命令的每一不連貫的LBA範圍在LBA範圍表120中具有其自己的表項。
再次參照圖2,在一些實施例中,命令管線電路112及/或儲存控制器114可向LOC電路122傳送重疊檢查請求。舉例而言,選擇電路202可自命令管線電路112及/或儲存控制器114接收重疊檢查請求。選擇電路202可選擇重疊檢查請求中合適的一者作為現用請求,使得LOC電路檢查與現用請求相關聯的一或多個LBA範圍是否和自LBA範圍表120加載的一或多個LBA範圍重疊。舉例而言,在一些實施例中,選擇電路202可對自命令管線電路112及/或儲存控制器114接收的多個重疊檢查請求進行彙集,且可根據合適的選擇邏輯自所述彙集選擇合適的重疊檢查請
求或期望的重疊檢查請求。舉例而言,選擇電路202可根據先進先出演算法(first in-first out algorithm)、後進後出演算法(last in-last out algorithm)、加權循環演算法(weighted round-robin algorithm)、與請求相關聯的命令類型、與請求相關聯的命令優先權、與請求源相關聯的優先權(例如,儲存控制器114可被賦予較高優先權)、與請求相關聯的特定LBA範圍及/或類似物而自從命令管線電路112及/或儲存控制器114接收的重疊檢查請求中選擇現用請求。然而,本揭露並非僅限於此,且在一些實施例中,可省略選擇電路202。舉例而言,在一些實施例中,LOC電路122可按照接收重疊檢查請求的次序來處置重疊檢查請求,且在此種情形中,可省略選擇電路202。
在一些實施例中,可依據例如原子性要求而以不同的方式處置具有重疊範圍的不同類型的命令。舉例而言,由於修改邏輯區塊的狀態的命令可能會影響原子性,因此可以和與寫入命令重疊的讀取命令不同的方式處置與另一讀取命令重疊的讀取命令。在此種情形中,舉例而言,命令管線電路112及/或儲存控制器114可根據(例如,依據)命令的類型將重疊檢查請求傳送至LOC電路122,及/或選擇電路202可根據(例如,依據)命令的類型選擇現用請求。然而,本揭露並非僅限於此。
在一些實施例中,LOC電路122可自LBA範圍表120提取(例如,可讀取或擷取)與現用請求相關聯的LBA範圍,且可將LBA範圍加載至LOC電路122的內部表(例如,正反器及/
或類似物的內部暫存器)中以與一或多個未決命令的一或多個LBA範圍進行比較。舉例而言,在一些實施例中,現用請求可包括儲存記憶體116的LBA範圍表120中的索引、指針及/或類似物,以指明與將被提取的現用請求相關聯的LBA範圍。在一些實施例中,提取電路204可包括內部表,以儲存所述一或多個未決命令的所述一或多個LBA範圍,可將所述一或多個LBA範圍和與現用請求相關聯的LBA範圍進行比較。
在一些實施例中,未決命令的LBA範圍可對應於已被檢查重疊的前面的現用請求,且因此可在先前已被加載至提取電路204的內部表中。在此種情形中,當未決命令中的未決命令的執行完成時,可自內部表清除(例如,可移除或刪除)未決命令,使得未決命令的LBA範圍不與後續現用請求進行比較且亦不用於阻止後續現用請求。然而,本揭露並非僅限於此,且在另一實施例中,提取電路204可自LBA範圍表120提取(例如,可讀取或可擷取)與現用請求相關聯的LBA範圍以及每次接收到新的現用請求時用於比較的未決命令的LBA範圍。在此種情形中,當未決命令中的未決命令的執行完成時,儲存控制器114及/或命令管線電路112可自LBA範圍表120清除(例如,可移除或可刪除)未決命令,使得未決命令的LBA範圍不被提取且不與所考慮的現用請求的LBA範圍進行比較。
在一些實施例中,如以下參照圖4更詳細地論述,LOC電路122可將與現用請求相關聯的LBA範圍和未決命令的LBA
範圍中的一或多者進行比較,以判斷與現用請求相關聯的LBA範圍和未決命令的LBA範圍中的所述一或多者之間是否存在重疊。舉例而言,檢查電路206可將現用請求的LBA範圍與未決命令的LBA範圍(例如,自LBA範圍表120提取)中的每一者進行比較,以判斷現用請求的LBA範圍是否與未決命令的LBA範圍中的任一者重疊。在一些實施例中,若現用請求的LBA範圍不與未決命令的LBA範圍中的任一者重疊,則可向與現用請求相關聯的重疊檢查請求的發起者(例如,向儲存控制器114及/或命令管線電路112)提供通知,使得可執行(例如,立即執行或繼續執行)與現用請求相關聯的命令。在此種情形中,在一些實施例中,發起者(例如,儲存控制器114及/或命令管線電路112)可向主機裝置102提供因應,以指示所述命令被成功執行。另一方面,若現用請求的LBA範圍與未決命令的LBA範圍中的任一者重疊,則可不向發起者提供通知,使得可阻止與現用請求相關聯的命令。在此種情形中,在一些實施例中,檢查電路206可產生重疊計數,以確定與現用請求相關聯的命令的執行次序序列。
圖4是根據本揭露一或多個示例性實施例的LOC電路的檢查電路的方塊圖。
簡言之,提取電路204可接收與自儲存控制器114或命令管線電路112接收(例如,經由選擇電路202)的重疊檢查請求對應的現用請求。在一些實施例中,現用請求可包括索引、指針及/或類似物,以指明與現用請求相關聯的一或多個LBA範圍在
LBA範圍表120中的位置。在一些實施例中,提取電路204可自LBA範圍表120提取(例如,可讀取或可擷取)與現用請求相關聯的所述一或多個LBA範圍(例如,現用範圍(Active Range)),且可在內部表(例如,正反器及/或類似物的內部暫存器)中加載與現用請求相關聯的現用範圍中的一或多者。提取電路204可向檢查電路206提供與現用請求相關聯的所述一或多個現用範圍以及與一或多個未決命令(例如,與正在被執行的命令或被阻止並等待執行的命令)相關聯的LBA範圍Range 1(範圍1)至Range N(範圍N)(其中N是自然數),且檢查電路206可檢查與現用請求相關聯的所述一或多個現用範圍和LBA範圍Range 1至Range N之間的重疊。舉例而言,在一些實施例中,檢查電路206可包括比較電路402、重疊位元映像404、偵測電路406及計數電路408。
更詳細而言,參照圖4,在一些實施例中,比較電路402可包括多個比較器Comparator 1(比較器1)至Comparator N(比較器N)。比較器Comparator 1至Comparator N中的每一者可接收現用範圍(例如,與現用請求相關聯的LBA範圍),以和與一或多個未決命令相關聯的LBA範圍Range 1至Range N中的對應一者進行比較。舉例而言,第一比較器Comparator 1可將有效範圍與所述一或多個未決命令中的第一LBA範圍Range 1進行比較,第二比較器Comparator 2可將現用範圍與所述一或多個未決命令中的第二LBA範圍Range 2進行比較,且以此類推,使得第N比較器Comparator N可將現用範圍與所述一或多個未決命令中的第
N(例如,最末)LBA範圍Range N進行比較。在一些實施例中,比較器Comparator 1至Comparator N可彼此同時(例如,同步或在同一時間)實行比較,但本揭露並非僅限於此。
在一些實施例中,比較器Comparator 1至Comparator N中的每一者可輸出比較結果,以指示現用範圍(例如,現用請求的LBA範圍)是否與所述一或多個未決命令的對應的LBA範圍Range 1至Range N重疊。在一些實施例中,比較器Comparator 1至Comparator N的比較結果可用於產生重疊位元映像404。舉例而言,在實施例中,若現用範圍與所述一或多個未決命令的對應的LBA範圍Range 1至Range N重疊,則對應的比較器Comparator 1至Comparator N可將重疊位元映像404中的對應位元(0/1)設定成重疊位準(例如,高位準)。另一方面,若現用範圍不與所述一或多個未決命令的對應的LBA範圍Range 1至Range N重疊,則對應的比較器Comparator 1至Comparator N可將重疊位元映像404中的對應位元(0/1)設定成非重疊位準(例如,低位準)。
在一些實施例中,偵測電路406可根據比較電路402的比較結果來偵測重疊。舉例而言,在一些實施例中,偵測電路406可根據重疊位元映像404輸出重疊偵測訊號。在此種情形中,若重疊位元映像404中的位元(0/1)中的任一者被設定成重疊位準(例如,高位準),則可輸出重疊訊號(例如,高位準訊號)作為重疊偵測訊號,以指示現用請求的現用範圍與未決命令的LBA範圍Range 1至Range N中的至少一者重疊。另一方面,若重疊位
元映像404中的位元(0/1)中的每一者被設定成非重疊位準(例如,低位準),則可輸出有效訊號(例如,低位準訊號)作為重疊偵測訊號,以指示現用請求的現用範圍不與未決命令的LBA範圍Range 1至Range N中的任一者重疊。
舉例而言,參照圖5,圖5示出根據本揭露一或多個示例性實施例的例示出偵測電路406的示意性電路圖。如圖5中所示,在一些實施例中,偵測電路406可包括一或多個邏輯閘。舉例而言,偵測電路406可包括或(OR)邏輯閘502。在此種情形中,或邏輯閘502可判斷重疊位元映像404中的位元(0/1)中的至少一者是否被設定成重疊位準(例如,高位準),且若位元(0/1)中的至少一者具有重疊位準(例如,高位準),則或邏輯閘502可輸出重疊訊號(例如,高位準訊號)作為重疊偵測訊號。另一方面,若重疊位元映像404中的位元(0/1)中的每一者被設定成非重疊位準(例如,低位準),則或邏輯閘502可輸出有效訊號(例如,低位準訊號)作為重疊偵測訊號。然而,本揭露並非僅限於此,且可根據本揭露的精神及範圍對偵測電路406進行各種修改。舉例而言,偵測電路406可包括(例如,可被實施成)各種合適的硬體結構、電子元件及/或組件,例如(舉例而言)其他各種合適的邏輯閘(例如,反及閘、非或閘(NOR gate)、異或閘(XOR gate)、非閘(NOT gate)、互斥或閘(EXOR gate)、互斥非或閘(EXNOR gate)及/或類似閘)、各種合適的開關、各種合適的電晶體、各種合適的電阻器、各種合適的電容器及/或類似物,如熟
習此項技術者根據本揭露的內容所知及/或藉由實踐本揭露的一或多個實施例所瞭解。
在一些實施例中,即使當所述多個不連貫的LBA範圍中的一或多個LBA範圍被阻止時,比較電路402仍可使得能夠執行具有多個不連貫的LBA範圍的命令。對於例示性實例,考慮具有兩個不連貫的LBA範圍的命令,使得所述兩個不連貫的LBA範圍彼此不重疊,且假設所述兩個不連貫的LBA範圍中的第一LBA範圍與未決命令的LBA範圍中的一或多者重疊且所述兩個不連貫的LBA範圍中的第二LBA範圍不與未決命令的LBA範圍中的任一者重疊。在此種情形中,若首先檢查第一LBA範圍,則可阻止第一LBA範圍與未決命令的一或多個LBA範圍重疊。然而,當隨後檢查同一命令的第二LBA範圍的重疊時,由於第二LBA範圍不與第一LBA範圍或未決命令的LBA範圍中的任一者重疊,因此即使所述命令的第一LBA範圍被阻止,仍可繼續執行同一命令的第二LBA範圍。因此,可改善效能。
再次參照圖4,在一些實施例中,計數電路408可追蹤重疊計數,以維護具有重疊LBA範圍的命令的執行次序序列。舉例而言,如以下將參照圖6更詳細地闡述,在一些實施例中,計數電路408可追蹤所考慮的現用請求的現用範圍與未決命令的LBA範圍之間的重疊範圍數目,且可產生與重疊範圍數目對應的重疊計數。在此種情形中,重疊計數可用於確定與現用請求對應的命令可被執行的次序。在完成未決命令中具有重疊範圍的一者
的執行之後,可遞減對應的請求的重疊計數,使得所述對應的請求的執行次序序列可得到維護。在此種情形中,當所述對應的請求的重疊計數遞減至0時,與對應的請求相關聯的命令可為具有相同重疊範圍的未決命令中將被執行的下一未決命令。
圖6是例示出根據本揭露一或多個示例性實施例的檢查電路的計數電路的示意性電路圖。為方便起見,計數電路408被示出為用於圖6中的3個位元的重疊位元映像404,但本揭露並非僅限於此。
參照圖6,在一些實施例中,用於3個位元的位元映像404的計數電路408可根據多個計數位元的二進制計數產生重疊計數。舉例而言,對於例示性的3個位元的重疊位元映像404,計數電路408可根據第一計數位元(例如,最低有效位元)S0及第二計數位元(例如,在此例示性的3個位元實例中的較高有效位元或最高有效位元)S1產生重疊計數。然而,本揭露並非僅限於此,且此項技術中具有通常知識者應理解,計數電路408可根據取決於位元映像404的位元數目的更多或更少的計數位元來產生重疊計數。在一些實施例中,計數電路408可包括具有彼此不同的電路結構的一或多個邏輯電路,以根據所述多個位元S0及S1產生重疊計數。舉例而言,計數電路408可包括為第一計數位元S0產生位元值的第一邏輯電路602以及為第二計數位元S1產生位元值的第二邏輯電路604。
在此實例中,第一邏輯電路602可依據重疊位元映像
404的位元B0、B1及B2中的一者或者所有位元B0、B1及B2是否被設定成具有重疊位準(例如,高位準)而輸出第一計數位元S0。第二邏輯電路604可依據位元B0、B1及B2中的至少兩者是否被設定成具有重疊位準(例如,高位準)而輸出第二計數位元S1。因此,在一些實施例中,第一邏輯電路602可具有與第二邏輯電路604的電路結構不同的電路結構。舉例而言,在實施例中,第一邏輯電路602可包括(例如,可被實施成)第一邏輯閘,且第二邏輯電路604可包括(例如,可被實施成)多個第二邏輯閘606、608及610以及第三邏輯閘612。
第一邏輯電路602的第一邏輯閘可依據重疊位元映像404的位元B0、B1及B2中的任何一者或全部位元B0、B1及B2是否具有重疊位準(例如,高位準)而將第一計數位元S0輸出為具有位元值。舉例而言,在實施例中,第一邏輯電路602的第一邏輯閘可被實施為異或閘,使得若重疊位元映像404的位元B0、B1及B2中的任何一者具有重疊位準(例如,高位準)或者若所有位元B0、B1及B2皆具有重疊位準(例如,高位準),則第一邏輯電路602將第一計數位元S0輸出為具有高位準(例如,1)。否則,第一邏輯電路602將第一計數位元S0輸出為具有低位準(例如,0)。
第二邏輯電路604可包括(例如,可被實施成)所述多個第二邏輯閘606、608及610以及第三邏輯閘612。所述多個第二邏輯閘606、608及610中的每一者可判斷重疊位元映像404的
位元B0、B1及B2中的位元中的兩個對應的位元是否具有重疊位準(例如,高位準),且第三邏輯閘612可根據第二邏輯閘606、608及610的輸出而輸出第二計數位元S1。舉例而言,在實施例中,第二邏輯閘606、608及610中的每一者可被實施為與閘,且第三邏輯閘612可被實施為或閘。在此種情形中,第二邏輯閘606、608及610中的每一者可對重疊位元映像404的不同組的位元B0、B1及B2實行與運算。舉例而言,第一-第二邏輯閘606可在重疊位元映像404的位元B0、B1及B2中的第一位元B0與第二位元B1之間實行與運算,第二-第二邏輯閘608可在重疊位元映像404的位元B0、B1及B2中的第二位元B1與第三位元B2之間實行與運算,且第三-第二邏輯閘610可在重疊位元映像404的位元B0、B1及B2中的第一位元B0與第三位元B2之間實行與運算。若第二邏輯閘606、608及610中的任何一或多者確定出重疊位元映像404的位元B0、B1及B2中的與其對應的兩個位元具有重疊位準(例如,高位準),則第三邏輯閘612可將第二計數位元S1輸出為具有高位準值。否則,第三邏輯閘612可將第二計數位元S1輸出為具有低位準(例如,0)。
作為例示性實例,考慮依序提交以進行重疊檢查的4個重疊LBA範圍,且假設所述4個重疊LBA範圍中的第一LBA範圍不與當前未決命令中的任一者重疊。在此種情形中,當檢查第一LBA範圍時,計數電路408可輸出為0的重疊計數(例如,S0=0、S1=0等),以指示不具有重疊,使得可繼續執行第一LBA
範圍。當檢查所述4個重疊LBA範圍中的第二LBA範圍時,第一LBA範圍現在可由提取電路204加載為未決命令的LBA範圍中的一者(例如,正在被執行的),使得第二LBA範圍與第一LBA範圍重疊。在此種情形中,計數電路408輸出具有值1的重疊計數(例如,S0=1且S1=0),以指示第二LBA範圍與未決命令的LBA範圍中的一者(例如,第一LBA範圍)重疊。
相似地,當檢查所述4個重疊LBA範圍中的第三LBA範圍時,第二LBA範圍可由提取電路204加載為未決命令的LBA範圍中的一者(例如,被阻止並等待執行),使得第三LBA範圍與第一LBA範圍及第二LBA範圍重疊。在此種情形中,計數電路408輸出具有值2的重疊計數(例如,S0=0且S1=1),以指示第三LBA範圍與未決命令的LBA範圍中的兩個LBA範圍(例如,第一LBA範圍及第二LBA範圍)重疊。此外,當檢查所述4個重疊LBA範圍中的第四LBA範圍時,第三LBA範圍可由提取電路204加載為未決命令的LBA範圍中的一者(例如,被阻止並等待執行),使得第四LBA範圍與第一LBA範圍、第二LBA範圍及第三LBA範圍重疊。在此種情形中,計數電路408輸出具有值3的重疊計數(例如,S0=1且S1=1),以指示第四LBA範圍與未決命令的LBA範圍中的三個LBA範圍(例如,第一LBA範圍、第二LBA範圍及第三LBA範圍)重疊。
在此例示性實例中,隨著第一LBA範圍、第二LBA範圍、第三LBA範圍及第四LBA範圍中的每一者的命令完成(例
如,成功執行及/或被提供至主機裝置102的因應),可使具有重疊範圍的其餘LBA範圍中的每一者的重疊計數遞減。一旦對應的命令的重疊計數遞減至0,則對應的命令可被解除阻止,使得可繼續執行對應的命令。舉例而言,當成功執行第一LBA範圍的命令時,第二LBA範圍的重疊計數可自1遞減至0,第三LBA範圍的重疊計數可自2遞減至1,且第四LBA範圍的重疊計數可自3遞減至2。在此種情形中,可將第二LBA範圍的命令解除阻止,使得可繼續執行第二LBA範圍的命令,且一旦成功執行第二LBA範圍的命令,便可使其餘的第三重疊LBA範圍及第四重疊LBA範圍中的每一者的重疊計數遞減。由於第三LBA範圍的重疊計數遞減至0,因此可將第三LBA範圍的命令解除阻止以繼續執行,且在成功執行第三LBA範圍的命令時,第四LBA範圍的重疊計數便可遞減至0,可因應於此而將第四LBA範圍解除阻止,且可繼續執行與第四LBA範圍相關聯的命令。
圖7是根據本揭露一或多個示例性實施例的具有重疊範圍的阻止命令的例示性實例的流程圖。
參照圖7,可由LOC電路122的提取電路204接收與第一命令(例如,讀取命令)對應的第一現用請求702。舉例而言,第一現用請求可對應於第一LBA範圍Range 1。提取電路204可自儲存記憶體116(例如,自LBA範圍表120)提取(例如,可讀取或可擷取)第一LBA範圍Range 1,且可將第一LBA範圍加載至提取電路204的內部表(例如,正反器的內部暫存器)中以
進行比較。在此例示性實例中,第一LBA範圍可不與任何其他範圍重疊,且因此可繼續執行第一LBA範圍。
在第一LBA範圍的第一命令未決(例如,正在被執行)時,提取電路204可接收與第二命令(例如,中斷命令)對應的第二現用請求704。第二現用請求704可對應於第二LBA範圍Range 2及第三LBA範圍Range 3。舉例而言,第二LBA範圍Range 2及第三LBA範圍Range 3可為同一第二命令的彼此不重疊的不連貫的LBA範圍。在此種情形中,提取電路204可自儲存記憶體116(例如,自LBA範圍表120)提取(例如,可讀取或可擷取)第二LBA範圍Range 2及第三LBA範圍Range 3中的每一者,且可同時(例如,同步或在同一時間)將第二LBA範圍Range 2及第三LBA範圍Range 3加載至內部表中。
在此例示性實例中,第二LBA範圍Range 2可與第一LBA範圍Range 1重疊,且因此可阻止第二命令的第二LBA範圍Range 2。舉例而言,可設定與第二LBA範圍Range 2相關聯的重疊計數(例如,藉由計數電路408),使得第二LBA範圍Range 2被阻止。另一方面,第三LBA範圍Range 3可不與任何其他範圍重疊,且因此即使同一命令的第二LBA範圍Range 2被阻止,仍可繼續執行第三LBA範圍Range 3。當與第一LBA範圍Range 1相關聯的第一命令完成時,可使第二LBA範圍Range 2的重疊計數遞減,且一旦第二LBA範圍Range 2的重疊計數遞減至0,便可將第二LBA範圍Range 2解除阻止以繼續執行。
仍參照圖7,儘管第三LBA範圍Range 3的第二命令未決(例如,正在被執行),提取電路204可接收與第三命令(例如,讀取命令)對應的第三現用請求706。第三現用請求706可對應於第四LBA範圍Range 4。在此種情形中,提取電路204可自儲存記憶體116(例如,自LBA範圍表120)提取(例如,可讀取或可擷取)第四LBA範圍Range 4,且可將第四LBA範圍Range 4加載至內部表中。第四LBA範圍Range 4可與第三LBA範圍Range 3重疊,且因此可被阻止。舉例而言,可設定與第四LBA範圍Range 4相關聯的重疊計數(例如,藉由計數電路408),使得第四LBA範圍Range 4被阻止。當與第三LBA範圍Range 3相關聯的第二命令完成時,可使第四LBA範圍Range 4的重疊計數遞減,且一旦第四LBA範圍Range 4的重疊計數遞減至0,便可將第四LBA範圍Range 4解除阻止以繼續執行。在此種情形中,當與第三LBA範圍Range 3對應的第二命令的一部分完成時,即使第二命令本身(例如,第二範圍Range 2及第三範圍Range 3兩者的第二命令704)未完成,仍可將第四LBA範圍Range 4解除阻止以繼續執行。
如上所述,根據本揭露的一或多個示例性實施例,儲存裝置包括LOC電路122,以使得能夠同時(例如,同步或在同一時間)對多個LBA或LBA範圍進行重疊檢查。在一些實施例中,LOC電路122可阻止具有重疊LBA或LBA範圍的命令的執行,同時容許不具有重疊LBA或LBA範圍的命令(例如,同一命令及/或後續命令)的執行。因此,可改善儲存裝置的效能。
在圖式中,為清晰起見,可誇大及/或簡化元件、層及區的相對大小。應理解,儘管在本文中可使用「第一(first)」、「第二(second)」、「第三(third)」等用語來闡述各種元件、組件、區、層及/或區段,然而該些元件、組件、區、層及/或區段不應受該些用語限制。該些用語僅用於區分各個元件、組件、區、層或區段。因此在不背離本揭露的精神及範圍的條件下,以下闡述的第一元件、組件、區、層或區段可被稱為第二元件、組件、區、層或區段。
應理解,當稱一元件或層位於另一元件或層「上(on)」、「連接至(connected to)」或「耦合至(coupled to)」另一元件或層時,所述元件或層可直接位於所述另一元件或層上、直接連接至或直接耦合至所述另一元件或層,或者可存在一或多個中間元件或層。另外,亦應理解,當稱一元件或層位於兩個元件或層「之間(between)」時,所述元件或層可為所述兩個元件或層之間的唯一元件或層,或者亦可存在一或多個中間元件或層。
本文中所使用的術語僅是出於闡述特定實施例的目的而並非旨在限制本揭露。除非上下文清楚地另外指明,否則本文中所使用的單數形式「一(a及an)」旨在亦包括複數形式。更應理解,當在本說明書中使用用語「包含(comprises、comprising)」、「包括(includes、including)」以及「具有(has、have及having)」時,是指明所陳述特徵、整數、步驟、操作、元件及/或組件的存在,但不排除一或多個其他特徵、整數、步驟、操作、元件、組
件及/或其群組的存在或添加。本文中所使用的用語「及/或(and/or)」包括相關列出項中的一或多個項的任意及所有組合。例如「...中的至少一者(at least one of)」等表達在位於一系列元件之後時修飾整個系列的元件而並非修飾所述一系列元件中的各別元件。
本文中所使用的用語「實質上(substantially)」、「大約(about)」及相似用語用作近似用語、而並非用作程度用語,且旨在考慮到此項技術中具有通常知識者將知的量測值或計算值的固有偏差。此外,在闡述本揭露的實施例時使用「可(may)」是指「本揭露的一或多個實施例」。本文中所使用的用語「使用(use)」、「正使用(using)」、及「被使用(used)」可被視為分別與用語「利用(utilize)」、「正利用(utilizing)」、及「被利用(utilized)」同義。
除非另外定義,否則本文中所使用的所有用語(包括技術用語及科學用語)的含義均與本揭露所屬技術中具有通常知識者所通常理解的含義相同。更應理解,用語(例如在常用詞典中所定義的用語)應被解釋為具有與其在相關技術的上下文及/或本說明書中的含義一致的含義,且除非在本文中明確定義,否則不應將其解釋為具有理想化或過於正式的意義。
儘管已闡述了一些示例性實施例,然而熟習此項技術者將容易地理解,在不背離本揭露的精神及範圍的條件下,可對示例性實施例進行各種潤飾。應理解,除非另外闡述,否則每一實
施例內的特徵或態樣的說明通常應被認為可用於其他實施例中的其他相似的特徵或態樣。因此,應理解,前述是各種示例性實施例的例示且不應該被視為受限於本文中所揭露的特定示例性實施例,且對所揭露的示例性實施例以及其他示例性實施例的各種潤飾旨在包括於如隨附申請專利範圍及其等效內容中所定義的本揭露的精神及範圍內。
100:儲存系統
102:主機裝置
104:儲存裝置
106:主機處理器
108:主機記憶體
110:儲存介面
112:命令管線電路
114:儲存控制器
116:儲存記憶體
118:邏輯區塊
120:邏輯區塊位址(LBA)範圍表
122:LBA重疊檢查(LOC)電路
Claims (18)
- 一種儲存裝置,包括:一或多個邏輯區塊,被配置成儲存自主機裝置接收的主機資料,所述一或多個邏輯區塊具有邏輯區塊位址(LBA);邏輯區塊位址範圍表,被配置成儲存一或多個邏輯區塊位址範圍,所述一或多個邏輯區塊位址範圍與藉由儲存介面自所述主機裝置接收的一或多個命令相關聯;以及重疊檢查電路,被配置成將與現用請求相關聯的邏輯區塊位址範圍和與所述一或多個命令相關聯的所述一或多個邏輯區塊位址範圍進行比較,並確定與所述現用請求相關聯的所述邏輯區塊位址範圍和與所述一或多個命令相關聯的所述一或多個邏輯區塊位址範圍中的任一者之間的重疊,以因應於確定出與所述現用請求相關聯的所述邏輯區塊位址範圍和與所述一或多個命令相關聯的所述一或多個邏輯區塊位址範圍中的至少一者重疊而阻止與所述現用請求相關聯的命令的執行,其中所述重疊檢查電路被配置成:根據與所述現用請求相關聯的所述邏輯區塊位址範圍和儲存在所述邏輯區塊位址範圍表中的所述一或多個邏輯區塊位址範圍的比較結果,來產生重疊位元映像;以及將用於與所述現用請求相關聯的所述邏輯區塊位址範圍的重疊計數值設定為對應於與所述現用請求相關聯的所述邏輯區塊位址範圍和與所述一或多個命令相關聯的所述一或多 個邏輯區塊位址範圍之間的重疊數目,所述重疊計數值是根據所述重疊位元映像的至少兩個位元間的邏輯運算結果來確定。
- 如請求項1所述的儲存裝置,其中所述重疊檢查電路被配置成因應於確定出與所述現用請求相關聯的所述邏輯區塊位址範圍不和與所述一或多個命令相關聯的所述一或多個邏輯區塊位址範圍中的任一者重疊而容許與所述現用請求相關聯的所述命令的執行。
- 如請求項2所述的儲存裝置,其中所述一或多個命令對應於因具有重疊邏輯區塊位址範圍而被所述重疊檢查電路阻止的未決命令或正在被執行的未決命令。
- 如請求項1所述的儲存裝置,其中所述現用請求對應於藉由所述儲存介面自所述主機裝置接收的傳入命令,且與所述現用請求相關聯的所述邏輯區塊位址範圍包括所述傳入命令的不連貫的邏輯區塊位址範圍。
- 如請求項4所述的儲存裝置,其中所述重疊檢查電路被配置成針對所述不連貫的邏輯區塊位址範圍中的至少第一邏輯區塊位址範圍而阻止所述傳入命令的執行,並針對同一所述傳入命令的所述不連貫的邏輯區塊位址範圍中的至少第二邏輯區塊位址範圍而容許所述傳入命令的執行。
- 如請求項1所述的儲存裝置,其中所述重疊檢查電路包括一或多個比較器,所述一或多個比較器被配置成將與所述現用請求相關聯的所述邏輯區塊位址範圍和與所述一或多個命令 相關聯的所述一或多個邏輯區塊位址範圍進行比較,且所述一或多個比較器中的每一者被配置成將與所述現用請求相關聯的所述邏輯區塊位址範圍和與所述一或多個命令相關聯的所述一或多個邏輯區塊位址範圍中的不同的一者進行比較。
- 如請求項1所述的儲存裝置,其中所述重疊檢查電路被配置成維護具有重疊邏輯區塊位址範圍的命令的執行次序序列。
- 如請求項1所述的儲存裝置,其中所述重疊檢查電路被配置成因應於所述一或多個命令中和與所述現用請求相關聯的所述邏輯區塊位址範圍具有重疊邏輯區塊位址範圍的命令的執行完成而遞減所述重疊計數值,且因應於所述重疊計數值遞減至臨限值而容許與所述現用請求相關聯的所述邏輯區塊位址範圍的執行。
- 如請求項1所述的儲存裝置,其中與所述現用請求相關聯的所述邏輯區塊位址範圍被登記至所述邏輯區塊位址範圍表,且所述重疊檢查電路被配置成自所述邏輯區塊位址範圍表擷取與所述現用請求相關聯的所述邏輯區塊位址範圍。
- 一種對與由主機裝置發至儲存裝置的命令相關聯的邏輯區塊位址(LBA)中的重疊進行檢查的方法,所述方法包括:藉由邏輯區塊位址範圍表儲存與藉由儲存介面自所述主機裝置接收的一或多個命令相關聯的一或多個邏輯區塊位址範圍; 由所述儲存裝置的重疊檢查電路將與現用請求相關聯的邏輯區塊位址範圍和與所述一或多個命令相關聯的所述一或多個邏輯區塊位址範圍進行比較;以及由所述重疊檢查電路確定與所述現用請求相關聯的所述邏輯區塊位址範圍和與所述一或多個命令相關聯的所述一或多個邏輯區塊位址範圍中的任一者之間的重疊;以及由所述重疊檢查電路因應於確定出與所述現用請求相關聯的所述邏輯區塊位址範圍和與所述一或多個命令相關聯的所述一或多個邏輯區塊位址範圍中的至少一者重疊而阻止與所述現用請求相關聯的命令的執行,其中所述確定包括:由所述重疊檢查電路根據與所述現用請求相關聯的所述邏輯區塊位址範圍和儲存在所述邏輯區塊位址範圍表中的所述一或多個邏輯區塊位址範圍的比較結果,來產生重疊位元映像;以及由所述重疊檢查電路將用於與所述現用請求相關聯的所述邏輯區塊位址範圍的重疊計數值設定為對應於與所述現用請求相關聯的所述邏輯區塊位址範圍和與所述一或多個命令相關聯的所述一或多個邏輯區塊位址範圍之間的重疊數目,所述重疊計數值是根據所述重疊位元映像的至少兩個位元間的邏輯運算結果來確定。
- 如請求項10所述的方法,更包括: 由所述重疊檢查電路因應於確定出與所述現用請求相關聯的所述邏輯區塊位址範圍不和與所述一或多個命令相關聯的所述一或多個邏輯區塊位址範圍中的任一者重疊而容許與所述現用請求相關聯的所述命令的執行。
- 如請求項11所述的方法,其中所述一或多個命令對應於因具有重疊邏輯區塊位址範圍而被所述重疊檢查電路阻止的未決命令或正在被執行的未決命令。
- 如請求項10所述的方法,其中所述現用請求對應於藉由所述儲存介面自所述主機裝置接收的傳入命令,且與所述現用請求相關聯的所述邏輯區塊位址範圍包括所述傳入命令的不連貫的邏輯區塊位址範圍。
- 如請求項13所述的方法,更包括:由所述重疊檢查電路針對所述不連貫的邏輯區塊位址範圍中的至少第一邏輯區塊位址範圍而阻止所述傳入命令的執行;以及由所述重疊檢查電路針對同一所述傳入命令的所述不連貫的邏輯區塊位址範圍中的至少第二邏輯區塊位址範圍而容許所述傳入命令的執行。
- 如請求項10所述的方法,其中所述重疊檢查電路包括一或多個比較器,且所述方法更包括:由所述一或多個比較器將與所述現用請求相關聯的所述邏輯區塊位址範圍和與所述一或多個命令相關聯的所述一或多個邏輯區塊位址範圍進行比較, 其中所述一或多個比較器中的每一者將與所述現用請求相關聯的所述邏輯區塊位址範圍和與所述一或多個命令相關聯的所述一或多個邏輯區塊位址範圍中的不同的一者進行比較。
- 如請求項10所述的方法,更包括:由所述重疊檢查電路維護具有重疊邏輯區塊位址範圍的命令的執行次序序列。
- 如請求項10所述的方法,更包括:由所述重疊檢查電路因應於所述一或多個命令中和與所述現用請求相關聯的所述邏輯區塊位址範圍具有重疊邏輯區塊位址範圍的命令的執行完成而遞減所述重疊計數值;以及由所述重疊檢查電路因應於所述重疊計數值遞減至臨限值而容許與所述現用請求相關聯的所述邏輯區塊位址範圍的執行。
- 如請求項10所述的方法,其中與所述現用請求相關聯的所述邏輯區塊位址範圍被登記至所述邏輯區塊位址範圍表,且所述方法更包括:由所述重疊檢查電路自所述邏輯區塊位址範圍表擷取與所述現用請求相關聯的所述邏輯區塊位址範圍。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202062994185P | 2020-03-24 | 2020-03-24 | |
US62/994,185 | 2020-03-24 | ||
US16/839,900 US11301370B2 (en) | 2020-03-24 | 2020-04-03 | Parallel overlap management for commands with overlapping ranges |
US16/839,900 | 2020-04-03 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202207041A TW202207041A (zh) | 2022-02-16 |
TWI847003B true TWI847003B (zh) | 2024-07-01 |
Family
ID=74859189
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW110100712A TWI847003B (zh) | 2020-03-24 | 2021-01-08 | 儲存裝置及對邏輯區塊位址中的重疊進行檢查的方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11301370B2 (zh) |
EP (1) | EP3885888B1 (zh) |
KR (1) | KR102706808B1 (zh) |
CN (1) | CN113448884B (zh) |
TW (1) | TWI847003B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11640264B2 (en) * | 2021-08-30 | 2023-05-02 | Western Digital Technologies, Inc. | Parallel commands overlap detection based on queue-depth |
US11868642B2 (en) * | 2021-08-31 | 2024-01-09 | Micron Technology, Inc. | Managing trim commands in a memory sub-system |
TWI769080B (zh) * | 2021-09-17 | 2022-06-21 | 瑞昱半導體股份有限公司 | 用於同步動態隨機存取記憶體之控制模組及其控制方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201104440A (en) * | 2009-04-09 | 2011-02-01 | Micron Technology Inc | Memory controllers, memory systems, solid state drives and methods for processing a number of commands |
US20110161552A1 (en) * | 2009-12-30 | 2011-06-30 | Lsi Corporation | Command Tracking for Direct Access Block Storage Devices |
US20150032936A1 (en) * | 2013-07-23 | 2015-01-29 | Jason K. Yu | Techniques for Identifying Read/Write Access Collisions for a Storage Medium |
CN105528309A (zh) * | 2014-10-17 | 2016-04-27 | 爱思开海力士有限公司 | 用于ssd控制器的lba阻止表格 |
US20190384719A1 (en) * | 2018-06-14 | 2019-12-19 | Western Digital Technologies, Inc. | Logical block addressing rangecollision crawler |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5548795A (en) * | 1994-03-28 | 1996-08-20 | Quantum Corporation | Method for determining command execution dependencies within command queue reordering process |
US6490635B1 (en) * | 2000-04-28 | 2002-12-03 | Western Digital Technologies, Inc. | Conflict detection for queued command handling in disk drive controller |
US8285937B2 (en) | 2010-02-24 | 2012-10-09 | Apple Inc. | Fused store exclusive/memory barrier operation |
US9274937B2 (en) | 2011-12-22 | 2016-03-01 | Longitude Enterprise Flash S.A.R.L. | Systems, methods, and interfaces for vector input/output operations |
KR101869059B1 (ko) * | 2012-02-28 | 2018-06-20 | 삼성전자주식회사 | 저장 장치 및 그것의 메모리 컨트롤러 |
WO2014078481A1 (en) | 2012-11-15 | 2014-05-22 | Violin Memory Inc. | Memorty array with atomic test and set |
US9304937B2 (en) | 2013-10-23 | 2016-04-05 | Netapp Inc. | Atomic write operations for storage devices |
US20160342545A1 (en) | 2014-02-12 | 2016-11-24 | Hitachi, Ltd. | Data memory device |
US20150253992A1 (en) * | 2014-03-10 | 2015-09-10 | Kabushiki Kaisha Toshiba | Memory system and control method |
US10678544B2 (en) | 2015-09-19 | 2020-06-09 | Microsoft Technology Licensing, Llc | Initiating instruction block execution using a register access instruction |
US9910786B2 (en) | 2015-11-03 | 2018-03-06 | Intel Corporation | Efficient redundant array of independent disks (RAID) write hole solutions |
US10922022B2 (en) * | 2019-03-13 | 2021-02-16 | Samsung Electronics Co., Ltd. | Method and system for managing LBA overlap checking in NVMe based SSDs |
-
2020
- 2020-04-03 US US16/839,900 patent/US11301370B2/en active Active
-
2021
- 2021-01-08 TW TW110100712A patent/TWI847003B/zh active
- 2021-03-02 CN CN202110230856.8A patent/CN113448884B/zh active Active
- 2021-03-04 EP EP21160693.4A patent/EP3885888B1/en active Active
- 2021-03-24 KR KR1020210038037A patent/KR102706808B1/ko active IP Right Grant
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201104440A (en) * | 2009-04-09 | 2011-02-01 | Micron Technology Inc | Memory controllers, memory systems, solid state drives and methods for processing a number of commands |
US20110161552A1 (en) * | 2009-12-30 | 2011-06-30 | Lsi Corporation | Command Tracking for Direct Access Block Storage Devices |
US20150032936A1 (en) * | 2013-07-23 | 2015-01-29 | Jason K. Yu | Techniques for Identifying Read/Write Access Collisions for a Storage Medium |
CN105528309A (zh) * | 2014-10-17 | 2016-04-27 | 爱思开海力士有限公司 | 用于ssd控制器的lba阻止表格 |
US20190384719A1 (en) * | 2018-06-14 | 2019-12-19 | Western Digital Technologies, Inc. | Logical block addressing rangecollision crawler |
Also Published As
Publication number | Publication date |
---|---|
JP2021152900A (ja) | 2021-09-30 |
EP3885888A1 (en) | 2021-09-29 |
TW202207041A (zh) | 2022-02-16 |
US11301370B2 (en) | 2022-04-12 |
US20210303457A1 (en) | 2021-09-30 |
EP3885888B1 (en) | 2024-04-17 |
CN113448884A (zh) | 2021-09-28 |
KR102706808B1 (ko) | 2024-09-19 |
CN113448884B (zh) | 2024-01-02 |
KR20210119333A (ko) | 2021-10-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI847003B (zh) | 儲存裝置及對邏輯區塊位址中的重疊進行檢查的方法 | |
US11126544B2 (en) | Method and apparatus for efficient garbage collection based on access probability of data | |
US10372446B2 (en) | Technology to dynamically modulate memory device read granularity | |
EP2546755A2 (en) | Flash controller hardware architecture for flash devices | |
CN110730945A (zh) | 可扩展的低时延存储接口 | |
TWI607448B (zh) | 資料寫入方法、記憶體控制電路單元與記憶體儲存裝置 | |
TW201423410A (zh) | 用於使用區域鎖以轉移具有多重處理堆疊之一儲存控制器中之輸入/輸出請求之方法及結構 | |
TW202015044A (zh) | 資料處理方法及使用所述方法的儲存控制器 | |
US20240061604A1 (en) | Storage device having a configurable command response trigger | |
US10733107B2 (en) | Non-volatile memory apparatus and address classification method thereof | |
US10606488B2 (en) | Selective data flush in a storage device | |
US20140281147A1 (en) | Memory system | |
US11934700B2 (en) | Fused command handling | |
US11604735B1 (en) | Host memory buffer (HMB) random cache access | |
US11366775B2 (en) | Data storage device with an exclusive channel for flag checking of read data, and non-volatile memory control method | |
US8516190B1 (en) | Reporting logical sector alignment for ATA mass storage devices | |
JP7572279B2 (ja) | オーバーラップする範囲を有するコマンドを管理するストレージ装置及びオーバーラップをチェックする方法 | |
TWI749490B (zh) | 寫入閃存管理表的電腦程式產品及方法及裝置 | |
TWI670599B (zh) | 記憶體管理方法以及儲存控制器 | |
KR20170042522A (ko) | 비식별 요청을 처리하는 저장 장치 및 그것의 동작 방법 | |
TWI835027B (zh) | 更新主機與閃存位址對照表的方法及電腦程式產品及裝置 | |
US11837275B2 (en) | Techniques for saturating a host interface | |
US20230153237A1 (en) | Method and device for storing data | |
US20240282381A1 (en) | Hybrid dynamic word line start voltage | |
KR20230144434A (ko) | 호스트 장치의 동작 방법 및 스토리지 장치의 동작 방법 |