TWI692721B - 指令處理方法及使用所述方法的儲存控制器 - Google Patents
指令處理方法及使用所述方法的儲存控制器 Download PDFInfo
- Publication number
- TWI692721B TWI692721B TW107139069A TW107139069A TWI692721B TW I692721 B TWI692721 B TW I692721B TW 107139069 A TW107139069 A TW 107139069A TW 107139069 A TW107139069 A TW 107139069A TW I692721 B TWI692721 B TW I692721B
- Authority
- TW
- Taiwan
- Prior art keywords
- queue
- command
- read
- instruction
- write
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/524—Deadlock detection or avoidance
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Multi Processors (AREA)
Abstract
本發明提出一種指令處理方法及儲存控制器。指令處理方法包括:藉由儲存控制器的指令處理池接收多個讀取修改寫入指令,每個讀取修改寫入指令包括成對的讀取指令及寫入指令;指令處理池鎖定佇列並將指令處理池中的讀取修改寫入指令的待處理的第一讀取指令傳送到佇列;當與讀取修改寫入指令的第二寫入指令的成對的第二讀取指令為待處理時,則指令處理池不鎖定佇列且第二寫入指令不被傳送到佇列;以及當與讀取修改寫入指令的第三寫入指令的成對的第三讀取指令不為待處理時,指令處理池鎖定佇列並第三寫入指令被傳送到佇列。
Description
本發明是有關於一種指令處理方法及使用所述方法的儲存控制器,且特別是有關於一種能避免死結的指令處理方法及使用所述方法的儲存控制器。
在基於反及閘快閃記憶體(NAND flash)的儲存裝置的技術領域中,反及閘快閃記憶體的顆粒(die)通常會形成一個二維陣列用於大容量需求及高速存取需求。為了處理複雜且低延遲的資料存取,現有的儲存控制器幾乎採用多個中央處理器(Central Processing Unit,CPU)及多個指令佇列以控制反及閘快閃記憶體的顆粒的讀取、程式化及抹除等操作。在現有的儲存控制器的設計中,一個指令佇列通常設計來排程一個顆粒的讀取命令、程式化命令及抹除命令等。多個中央處理器會用於處理同時從主機系統所接收的讀取命令、程式化命令及抹除命令等。
邏輯轉實體表項目(L2P table entry)所定址(addressed)的資料大小通常會大於邏輯區塊位址(Logic Block Address,LBA)的大小。在此,邏輯轉實體表項目也可稱為邏輯區塊數(Logic Block Number,LBN)。舉例來說,常見的邏輯區塊位址大小為512位元組(bytes)且一個邏輯轉實體表項目所定址的資料大小為4096位元組。也就是說,連續的八個512位元組的邏輯區塊位址構成一個邏輯區塊數。在這種情況下,當寫入指令對應的寫入資料大小不是4096位元組的倍數,或是寫入指令的結束邏輯區塊位址沒有對齊在8的倍數上的時候,快閃記憶體轉譯層(Flash Translation Layer,FTL)必須執行讀取修改寫入(Read-Modify-Write,RMW)程序。
讀取修改寫入程序包括以下步驟:從實體位址讀取對應的邏輯區塊數資料(LBN data)到隨機存取記憶體(Random Access Memory,RAM);將對應邏輯區塊位址的最新資料從主機寫入隨機存取記憶體;以及將新的邏輯區塊數資料寫入實體位址。在讀取修改寫入程序的以上三個步驟中,有兩個實體位址存取操作。也就是第一個步驟中的讀取操作及第三個步驟中的程式化操作。因此,當儲存控制器的兩個中央處理器同時執行讀取修改寫入程序時,就可能發生死結(deadlock)。
以圖1為例,儲存控制器100可耦接到快閃記憶體陣列150。快閃記憶體陣列150可分別對應到指令佇列110,例如D11對應Q11、D21對應Q21、D2n對應Q2n等等。儲存控制器100具有多個處理器120。處理器120會將指令傳送到指令佇列110。每個D11到D2n可包括一到多個邏輯單元號(Logic Unit Number,LUN),而一個邏輯單元號可為一個顆粒。
舉例來說,CPU-A會執行讀取修改寫入程序以從D11讀取資料、修改資料並程式化資料到D12。CPU-B會執行讀取修改寫入程序以從D12讀取資料、修改資料並程式化資料到D11。因此,CPU-A會傳送一個讀取指令(即,RA11)到Q11並傳送一個程式化指令(即,PA12)到Q12。RA11代表由CPU-A傳送讀取指令到指令佇列Q11。PA12代表由CPU-A傳送程式化指令到指令佇列Q12。此外,CPU-B會傳送讀取指令(即,RB12)到Q12並傳送程式化指令(即,PB11)到Q11。值得注意的是,程式化指令只有在儲存控制器100修改資料後才會有效。指令佇列Q11、Q12、…、Q2n的資源會被處理器CPU-A、CPU-B、…、CPU-C所使用,因此CPU-A、CPU-B、…、CPU-C會競爭指令佇列110的資源。當CPU-A在CPU-B之前得到Q12的使用權且CPU-B在CPU-A之前得到Q11的使用權時,PA12會比RB12先進入Q12且PB11會比RA11先進入Q11。如此一來,就會發生死結。因此,如何設計一個儲存控制器讓執行多個讀取修改寫入程序時不會發生死結,是本領域技術人員應致力的目標。
本發明提供一種指令處理方法及使用所述方法的儲存控制器,讓執行多個讀取修改寫入程序時不會發生死結。
本發明提出一種指令處理方法,用於讓快閃記憶體的儲存控制器不發生死結。指令處理方法包括:藉由儲存控制器的指令處理池接收多個讀取修改寫入指令,每個讀取修改寫入指令包括成對的讀取指令及寫入指令;指令處理池鎖定佇列並將指令處理池中的讀取修改寫入指令的待處理(pending)的第一讀取指令傳送到佇列,其中佇列對應快閃記憶體的邏輯單元號;當與讀取修改寫入指令的第二寫入指令的成對的第二讀取指令為待處理時,則指令處理池不鎖定佇列且第二寫入指令不被傳送到佇列;以及當與讀取修改寫入指令的第三寫入指令的成對的第三讀取指令不為待處理時,指令處理池鎖定佇列且第三寫入指令被傳送到佇列。
在本發明的一實施例中,當指令處理池鎖定佇列時,只有指令處理池的讀取修改寫入指令能被傳送到佇列。
在本發明的一實施例中,當讀取指令或寫入指令在指令處理池中且尚未被傳送到佇列,則讀取指令或寫入指令為待處理;當讀取指令或寫入指令從指令處理池傳送到佇列,則讀取指令或寫入指令不為待處理。
在本發明的一實施例中,指令處理池接收到對應第一佇列的第四讀取指令及對應第二佇列的第四寫入指令,並接收到對應第二佇列的第五讀取指令及對應第一佇列的第五寫入指令,其中第四讀取指令與第四寫入指令成對且第五讀取指令與第五寫入指令成對,其中第一佇列對應第四讀取指令及第五寫入指令存取的第一邏輯單元號,且第二佇列對應第四寫入指令及第五讀取指令存取的第二邏輯單元號。
在本發明的一實施例中,當指令處理池同時鎖定第一佇列及第二佇列時,第四讀取指令及第五讀取指令分別被傳送到第一佇列及第二佇列,接著第四寫入指令及第五寫入指令分別被傳送到第二佇列及第一佇列。
在本發明的一實施例中,當指令處理池依序鎖定第一佇列、第二佇列及第一佇列時,第四讀取指令被傳送到第一佇列,接著第五讀取指令與第四寫入指令以隨機順序被傳送到第二佇列,接著第五寫入指令被送到第一佇列。
在本發明的一實施例中,當指令處理池依序鎖定第二佇列、第一佇列及第二佇列時,第五讀取指令被傳送到第二佇列,接著第四讀取指令與第五寫入指令以隨機順序被傳送到第一佇列,接著第四寫入指令被傳送到第二佇列。
本發明提出一種儲存控制器,包括多個指令佇列;多個處理器,執行多個讀取修改寫入指令;以及指令處理池。指令處理池接收讀取修改寫入指令,每個讀取修改寫入指令包括成對的讀取指令及寫入指令;指令處理池鎖定佇列且處理器將指令處理池中的讀取修改寫入指令的待處理的第一讀取指令傳送到佇列,其中佇列對應快閃記憶體的邏輯單元號;當與讀取修改寫入指令的第二寫入指令的成對的第二讀取指令為待處理時,則指令處理池不鎖定佇列且第二寫入指令不被傳送到佇列;以及當與讀取修改寫入指令的第三寫入指令的成對的第三讀取指令不為待處理時,指令處理池鎖定佇列且第三寫入指令被傳送到佇列。
在本發明的一實施例中,當指令處理池鎖定佇列時,只有指令處理池的讀取修改寫入指令能被傳送到佇列。
在本發明的一實施例中,當讀取指令或寫入指令在指令處理池中且尚未被傳送到佇列,則讀取指令或寫入指令為待處理;當讀取指令或寫入指令從指令處理池傳送到佇列,則讀取指令或寫入指令不為待處理。
在本發明的一實施例中,指令處理池接收到對應第一佇列的第四讀取指令及對應第二佇列的第四寫入指令,並接收到對應第二佇列的第五讀取指令及對應第一佇列的第五寫入指令,其中第四讀取指令與第四寫入指令成對且第五讀取指令與第五寫入指令成對,其中第一佇列對應第四讀取指令及第五寫入指令存取的第一邏輯單元號,且第二佇列對應第四寫入指令及第五讀取指令存取的第二邏輯單元號。
在本發明的一實施例中,當指令處理池同時鎖定第一佇列及第二佇列時,第四讀取指令及第五讀取指令分別被傳送到第一佇列及第二佇列,接著第四寫入指令及第五寫入指令分別被傳送到第二佇列及第一佇列。
在本發明的一實施例中,當指令處理池依序鎖定第一佇列、第二佇列及第一佇列時,第四讀取指令被傳送到第一佇列,接著第五讀取指令與第四寫入指令以隨機順序被傳送到第二佇列,接著第五寫入指令被送到第一佇列。
在本發明的一實施例中,當指令處理池依序鎖定第二佇列、第一佇列及第二佇列時,第五讀取指令被傳送到第二佇列,接著第四讀取指令與第五寫入指令以隨機順序被傳送到第一佇列,接著第四寫入指令被傳送到第二佇列。
基於上述,本發明的指令處理方法及使用所述方法的儲存控制器透過一個暫存讀取修改寫入指令的指令處理池來排程指令到佇列。指令處理池會鎖定佇列並將指令處理池中待處理的讀取指令傳送到佇列。當與寫入指令的成對的讀取指令為待處理時,則指令處理池不鎖定佇列且第二寫入指令不被傳送到佇列。當與寫入指令的成對的讀取指令不為待處理時,指令處理池鎖定佇列且寫入指令被傳送到佇列。根據本發明的指令處理方法,就能讓儲存控制器在處理讀取修改寫入指令時不發生死結。
為讓本發明的上述特徵和優點能更明顯易懂,下文特舉實施例,並配合所附圖式作詳細說明如下。
圖2為根據本發明一實施例的儲存控制器的示意圖。
請參照圖2,本發明的儲存控制器200包括指令佇列210、處理器220及指令處理池230。儲存控制器200耦接到快閃記憶體陣列250。指令佇列210、處理器220與快閃記憶體陣列250與指令佇列110、處理器120與快閃記憶體陣列150類似,因此不再贅述。每個D11到D2n可包括一到多個邏輯單元號(Logic Unit Number,LUN),而一個邏輯單元號可為一個顆粒。
在一實施例中,當儲存控制器200接收到一寫入指令且此寫入指令需轉化(transform)為讀取修改寫入指令時,則此寫入指令可儲存在指令處理池230中。舉例來說,當一個儲存裝置的快閃記憶體轉換層(Flash Translation Layer,FTL)表格所定址的資料大小為4千位元組(KiloByte,KB)但儲存裝置提供給主機系統存取的一個邏輯區塊位址(Logic Block Address,LBA)為512位元組(Byte),且一個寫入指令所寫入的資料大小不為4KB的倍數或一個寫入指令寫入LBA的起始位置不為8的倍數時,則此寫入指令的部分寫入位址會被轉化為讀取修改寫入指令。當指令處理池230中的一個讀取修改寫入指令的讀取指令還沒被傳送到對應的指令佇列210時,則此讀取指令為待處理。類似地,當指令處理池230中的一個讀取修改寫入指令的寫入指令還沒被傳送到對應的指令佇列210時,則此寫入指令為待處理。相反地,當指令處理池230中的一個讀取修改寫入指令的讀取指令已經被傳送到對應的指令佇列210時,則此讀取指令不為待處理(not pending)。當指令處理池230中的一個讀取修改寫入指令的寫入指令已經被傳送到對應的指令佇列210時,則此寫入指令不為待處理。
指令處理池230可根據以下三個規則來發佈讀取指令及寫入指令(即,將讀取修改寫入指令的讀取指令及寫入指令傳送到對應的指令佇列210)。
[規則1]
指令處理池230鎖定指令佇列210的其中之一並將指令處理池230中的讀取修改寫入指令的待處理的第一讀取指令傳送到指令佇列210。
[規則2]
當與指令處理池230中的讀取修改寫入指令的第二寫入指令的成對的第二讀取指令為待處理時,則指令處理池230不鎖定指令佇列210且第二寫入指令不被傳送到指令佇列210。
[規則3]
當與指令處理池230中的讀取修改寫入指令的第三寫入指令的成對的第三讀取指令不為待處理時,指令處理池230鎖定指令佇列210的其中之一且第三寫入指令被傳送到指令佇列210。
值得注意的是,在本實施例中,只要儲存控制器200接收到讀取修改寫入指令,就會將讀取修改寫入指令傳送到指令處理池230。也就是說,指令處理池230會暫存所有的讀取修改寫入指令。
至於讀取修改寫入指令以外的指令,處理器220發佈這些指令到指令佇列210。
因此,根據本發明一實施例設置的指令處理池230可將多個讀取修改寫入指令的讀取指令及寫入指令依照上述三個規則傳送到指令佇列210而不發生死結。
圖3為根據本發明一實施例的指令處理方法的範例。
請參照圖3,CPU-A將包括RA11-PA12的讀取修改寫入指令放置到指令處理池330中。CPU-B將包括RB12-PB11的讀取修改寫入指令放置到指令處理池330中。指令處理池330會鎖定指令佇列Q11及Q12。RA11、PA12、RB12、PB11的定義已於上文中說明,因此不再贅述。
在圖3中,指令處理池330同時鎖定指令佇列Q11及Q12。首先,RA11及RB12會根據規則1分別被傳送到Q11及Q12。在RA11及RB12被傳送到Q11及Q12之後,PA12及PB11會根據規則3分別被傳送到Q12及Q11。因此,在本範例中死結不會發生。
圖4A及圖4B為根據本發明另一實施例的指令處理方法的範例。
請參照圖4A及圖4B,CPU-A將包括RA11-PA12的讀取修改寫入指令放置到指令處理池330中。CPU-B將包括RB12-PB11的讀取修改寫入指令放置到指令處理池330中。指令處理池330會鎖定指令佇列Q11及Q12。
在圖4A及圖4B中,指令處理池330依序鎖定Q11、Q12、Q11。首先,當Q11被鎖定時,RA11會根據規則1被傳送到Q11。當Q12被鎖定時,RB12及PA12可根據規則1及規則3以任意順序(或隨機順序)被傳送到Q12。圖4A繪示了RB12比PA12先被傳送到Q12。圖4B繪示了PA12比RB12先被傳送到Q12。最後,當Q11再次被鎖定時,PB11根據規則3被傳送到Q11。因此,不論在圖4A或圖4B的情況中,死結都不會發生。
圖5A及圖5B為根據本發明另一實施例的指令處理方法的範例。
請參照圖5A及圖5B,CPU-A將包括RA11-PA12的讀取修改寫入指令放置到指令處理池330中。CPU-B將包括RB12-PB11的讀取修改寫入指令放置到指令處理池330中。指令處理池330會鎖定指令佇列Q11及Q12。
在圖5A及圖5B中,指令處理池330依序鎖定Q12、Q11、Q12。首先,當Q12被鎖定時,RB12會根據規則1被傳送到Q12。當Q11被鎖定時,RA11及PB11可根據規則1及規則3以任意順序(或隨機順序)被傳送到Q11。圖5A繪示了RA11比PB11先被傳送到Q11。圖5B繪示了PB11比RA11先被傳送到Q11。最後,當Q12再次被鎖定時,PA12根據規則3被傳送到Q12。因此,不論在圖5A或圖5B的情況中,死結都不會發生。
綜上所述,本發明的指令處理方法及使用所述方法的儲存控制器透過一個暫存讀取修改寫入指令的指令處理池來排程指令到佇列。指令處理池會鎖定佇列並將指令處理池中待處理的讀取指令傳送到佇列。當與寫入指令的成對的讀取指令為待處理時,則指令處理池不鎖定佇列且第二寫入指令不被傳送到佇列。當與寫入指令的成對的讀取指令不為待處理時,指令處理池鎖定佇列且寫入指令被傳送到佇列。根據本發明的指令處理方法,就能讓儲存控制器在處理讀取修改寫入指令時不發生死結。
雖然本發明已以實施例揭露如上,然其並非用以限定本發明,任何所屬技術領域中具有通常知識者,在不脫離本發明的精神和範圍內,當可作些許的更動與潤飾,故本發明的保護範圍當視後附的申請專利範圍所界定者為準。
100、200、300、400、500:儲存控制器
110、210:指令佇列
120、220:處理器
130、230、330、430、530:指令處理池
150、250:快閃記憶體陣列
圖1為習知的儲存控制器發生死結的示意圖。 圖2為根據本發明一實施例的儲存控制器的示意圖。 圖3為根據本發明一實施例的指令處理方法的範例。 圖4A及圖4B為根據本發明另一實施例的指令處理方法的範例。 圖5A及圖5B為根據本發明另一實施例的指令處理方法的範例。
200:儲存控制器
210:指令佇列
220:處理器
230:指令處理池
250:快閃記憶體陣列
Claims (14)
- 一種指令處理方法,用於讓一快閃記憶體的一儲存控制器不發生死結,包括:藉由該儲存控制器的一指令處理池接收多個讀取修改寫入(Read-Modify-Write,RMW)指令,每個該些讀取修改寫入指令包括成對的一讀取指令及一寫入指令;該指令處理池鎖定一佇列並將該指令處理池中的該讀取修改寫入指令的待處理(pending)的一第一讀取指令傳送到該佇列,其中該佇列對應該快閃記憶體的一邏輯單元號;當與該些讀取修改寫入指令的一第二寫入指令的成對的一第二讀取指令為待處理時,則該指令處理池不鎖定該佇列且該第二寫入指令不被傳送到該佇列;以及當與該些讀取修改寫入指令的一第三寫入指令的成對的一第三讀取指令不為待處理時,該指令處理池鎖定該佇列且該第三寫入指令被傳送到該佇列。
- 如申請專利範圍第1項所述的指令處理方法,其中當該指令處理池鎖定該佇列時,只有該指令處理池的該些讀取修改寫入指令能被傳送到該佇列。
- 如申請專利範圍第1項所述的指令處理方法,其中當該讀取指令或該寫入指令在該指令處理池中且尚未被傳送到該佇列,則該讀取指令或該寫入指令為待處理;當該讀取指令或該寫 入指令從該指令處理池傳送到該佇列,則該讀取指令或該寫入指令不為待處理。
- 如申請專利範圍第1項所述的指令處理方法,其中該指令處理池接收到對應一第一佇列的一第四讀取指令及對應一第二佇列的一第四寫入指令,並接收到對應該第二佇列的一第五讀取指令及對應一第一佇列的一第五寫入指令,其中該第四讀取指令與該第四寫入指令成對且該第五讀取指令與該第五寫入指令成對,其中該第一佇列對應該第四讀取指令及該第五寫入指令存取的一第一邏輯單元號,且該第二佇列對應該第四寫入指令及該第五讀取指令存取的一第二邏輯單元號。
- 如申請專利範圍第4項所述的指令處理方法,其中當該指令處理池同時鎖定該第一佇列及該第二佇列時,該第四讀取指令及該第五讀取指令分別被傳送到該第一佇列及該第二佇列,接著該第四寫入指令及該第五寫入指令分別被傳送到該第二佇列及該第一佇列。
- 如申請專利範圍第4項所述的指令處理方法,其中當該指令處理池依序鎖定該第一佇列、該第二佇列及該第一佇列時,該第四讀取指令被傳送到該第一佇列,接著該第五讀取指令與該第四寫入指令以一隨機順序被傳送到該第二佇列,接著該第五寫入指令被送到該第一佇列。
- 如申請專利範圍第4項所述的指令處理方法,其中當該指令處理池依序鎖定該第二佇列、該第一佇列及該第二佇列時, 該第五讀取指令被傳送到該第二佇列,接著該第四讀取指令與該第五寫入指令以一隨機順序被傳送到該第一佇列,接著該第四寫入指令被傳送到該第二佇列。
- 一種儲存控制器,包括:多個指令佇列;多個處理器,執行多個讀取修改寫入指令;以及一指令處理池,其中該指令處理池接收該些讀取修改寫入指令,每個該些讀取修改寫入指令包括成對的一讀取指令及一寫入指令;該指令處理池鎖定一佇列且該些處理器將該指令處理池中的該讀取修改寫入指令的待處理的一第一讀取指令傳送到該佇列,其中該佇列對應該快閃記憶體的一邏輯單元號;當與該些讀取修改寫入指令的一第二寫入指令的成對的一第二讀取指令為待處理時,則該指令處理池不鎖定該佇列且該第二寫入指令不被傳送到該佇列;以及當與該些讀取修改寫入指令的一第三寫入指令的成對的一第三讀取指令不為待處理時,該指令處理池鎖定該佇列且該第三寫入指令被傳送到該佇列。
- 如申請專利範圍第8項所述的儲存控制器,其中當該指令處理池鎖定該佇列時,只有該指令處理池的該些讀取修改寫入指令能被傳送到該佇列。
- 如申請專利範圍第8項所述的儲存控制器,其中當該讀取指令或該寫入指令在該指令處理池中且尚未被傳送到該佇列,則該讀取指令或該寫入指令為待處理;當該讀取指令或該寫入指令從該指令處理池傳送到該佇列,則該讀取指令或該寫入指令不為待處理。
- 如申請專利範圍第8項所述的儲存控制器,其中該指令處理池接收到對應一第一佇列的一第四讀取指令及對應一第二佇列的一第四寫入指令,並接收到對應該第二佇列的一第五讀取指令及對應一第一佇列的一第五寫入指令,其中該第四讀取指令與該第四寫入指令成對且該第五讀取指令與該第五寫入指令成對,其中該第一佇列對應該第四讀取指令及該第五寫入指令存取的一第一邏輯單元號,且該第二佇列對應該第四寫入指令及該第五讀取指令存取的一第二邏輯單元號。
- 如申請專利範圍第11項所述的儲存控制器,其中當該指令處理池同時鎖定該第一佇列及該第二佇列時,該第四讀取指令及該第五讀取指令分別被傳送到該第一佇列及該第二佇列,接著該第四寫入指令及該第五寫入指令分別被傳送到該第二佇列及該第一佇列。
- 如申請專利範圍第11項所述的儲存控制器,其中當該指令處理池依序鎖定該第一佇列、該第二佇列及該第一佇列時,該第四讀取指令被傳送到該第一佇列,接著該第五讀取指令與該 第四寫入指令以一隨機順序被傳送到該第二佇列,接著該第五寫入指令被送到該第一佇列。
- 如申請專利範圍第11項所述的儲存控制器,其中當該指令處理池依序鎖定該第二佇列、該第一佇列及該第二佇列時,該第五讀取指令被傳送到該第二佇列,接著該第四讀取指令與該第五寫入指令以一隨機順序被傳送到該第一佇列,接著該第四寫入指令被傳送到該第二佇列。
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| TW107139069A TWI692721B (zh) | 2018-11-02 | 2018-11-02 | 指令處理方法及使用所述方法的儲存控制器 |
| US16/253,234 US10649695B1 (en) | 2018-11-02 | 2019-01-22 | Command processing method and storage controller using the same |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| TW107139069A TWI692721B (zh) | 2018-11-02 | 2018-11-02 | 指令處理方法及使用所述方法的儲存控制器 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| TWI692721B true TWI692721B (zh) | 2020-05-01 |
| TW202018496A TW202018496A (zh) | 2020-05-16 |
Family
ID=70459826
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW107139069A TWI692721B (zh) | 2018-11-02 | 2018-11-02 | 指令處理方法及使用所述方法的儲存控制器 |
Country Status (2)
| Country | Link |
|---|---|
| US (1) | US10649695B1 (zh) |
| TW (1) | TWI692721B (zh) |
Families Citing this family (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR20210063724A (ko) * | 2019-11-25 | 2021-06-02 | 에스케이하이닉스 주식회사 | 메모리 시스템 |
| US11573891B2 (en) | 2019-11-25 | 2023-02-07 | SK Hynix Inc. | Memory controller for scheduling commands based on response for receiving write command, storage device including the memory controller, and operating method of the memory controller and the storage device |
| KR102456176B1 (ko) | 2020-05-21 | 2022-10-19 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 및 그 동작 방법 |
| US11687450B2 (en) * | 2020-05-19 | 2023-06-27 | SK Hynix Inc. | Storage device for translating address and operating method thereof |
| US11513736B2 (en) * | 2021-03-08 | 2022-11-29 | Western Digital Technologies, Inc. | Revised host command generation for unaligned access |
| US12223168B1 (en) * | 2023-07-31 | 2025-02-11 | Dell Products L.P. | Quality of service (QoS) enforcement with low contention command processing |
Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20040243739A1 (en) * | 2003-06-02 | 2004-12-02 | Emulex Corporation | Method and apparatus for local and distributed data memory access ("DMA") control |
| US8332542B2 (en) * | 2009-11-12 | 2012-12-11 | International Business Machines Corporation | Communication with input/output system devices |
| WO2014025731A1 (en) * | 2012-08-10 | 2014-02-13 | International Business Machines Corporation | Interaction of transactional storage accesses with other atomic semantics |
| US9128924B2 (en) * | 2010-06-03 | 2015-09-08 | Qualcomm Incorporated | Method and apparatus for wireless broadband systems direct data transfer |
Family Cites Families (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6694390B1 (en) * | 2000-09-11 | 2004-02-17 | Intel Corporation | Managing bus transaction dependencies |
| US6877085B2 (en) * | 2001-11-30 | 2005-04-05 | Broadcom Corporation | Mechanism for processing speclative LL and SC instructions in a pipelined processor |
| US7124128B2 (en) * | 2003-06-17 | 2006-10-17 | International Business Machines Corporation | Method, system, and program for managing requests to tracks subject to a relationship |
| US9304936B2 (en) * | 2013-12-09 | 2016-04-05 | International Business Machines Corporation | Bypassing a store-conditional request around a store queue |
-
2018
- 2018-11-02 TW TW107139069A patent/TWI692721B/zh active
-
2019
- 2019-01-22 US US16/253,234 patent/US10649695B1/en active Active
Patent Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20040243739A1 (en) * | 2003-06-02 | 2004-12-02 | Emulex Corporation | Method and apparatus for local and distributed data memory access ("DMA") control |
| US8332542B2 (en) * | 2009-11-12 | 2012-12-11 | International Business Machines Corporation | Communication with input/output system devices |
| US9128924B2 (en) * | 2010-06-03 | 2015-09-08 | Qualcomm Incorporated | Method and apparatus for wireless broadband systems direct data transfer |
| WO2014025731A1 (en) * | 2012-08-10 | 2014-02-13 | International Business Machines Corporation | Interaction of transactional storage accesses with other atomic semantics |
Also Published As
| Publication number | Publication date |
|---|---|
| US10649695B1 (en) | 2020-05-12 |
| US20200142636A1 (en) | 2020-05-07 |
| TW202018496A (zh) | 2020-05-16 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| TWI692721B (zh) | 指令處理方法及使用所述方法的儲存控制器 | |
| TWI696919B (zh) | 以輔助處理器記憶體進行儲存裝置的直接輸入輸出操作的計算系統操作方法、計算系統、車輛及電腦可讀媒體 | |
| US9304938B2 (en) | Storage device and data transferring method thereof | |
| US9858008B2 (en) | Method to reduce flash memory IOs with host maintained address mapping table | |
| TWI624791B (zh) | 用於在多緒處理單元中改善性能之技術 | |
| US8990462B2 (en) | Storage device, computing system including the same and data transferring method thereof | |
| US8010740B2 (en) | Optimizing memory operations in an electronic storage device | |
| KR102353782B1 (ko) | NVMe 기반 솔리드 스테이트 드라이브에서 읽기 버퍼 사이즈 요구량을 감소하는 방법 | |
| JP5826471B2 (ja) | 自律的サブシステムアーキテクチャー | |
| KR20160096279A (ko) | 가상화 기능을 지원하는 스토리지 장치 및 사용자 장치 | |
| US12271628B2 (en) | Non-volatile memory-based storage device, device controller and method thereof | |
| CN101430651A (zh) | 一种异构多核体系中外设的访问方法 | |
| US11074010B2 (en) | Storage system and control method thereof | |
| US11573743B2 (en) | Pointer dereferencing within memory sub-system | |
| KR20200017364A (ko) | PCIe 메모리 요청들의 라우팅을 촉진하기 위해 NVMe 물리적 영역 페이지 목록 포인터들 및 데이터 포인터들을 수정 | |
| TW201923591A (zh) | 電腦記憶體內容移動 | |
| CN114080587A (zh) | 输入-输出存储器管理单元对访客操作系统缓冲区和日志的访问 | |
| TWI540511B (zh) | 用以存取虛擬機器之電腦系統及方法 | |
| CN109983443A (zh) | 实现分叉非易失性存储器快速驱动器的技术 | |
| US10592113B2 (en) | Method for transferring command from host to device controller and system using the same | |
| TWI867129B (zh) | 在虛擬機器間無需複製而移動資料的處理器、資料處理系統及非暫態機器可讀取媒體 | |
| US12260122B2 (en) | Storage controller providing status information of zone region, method of operating the same, and method of operating electronic device having the same | |
| EP3270293B1 (en) | Two stage command buffers to overlap iommu map and second tier memory reads | |
| US11550740B2 (en) | Data storage device with an exclusive channel for flag checking of read data, and non-volatile memory control method | |
| CN111176728B (zh) | 指令处理方法及使用所述方法的存储控制器 |