TWI625628B - 由主機到設備控制器傳輸命令的方法及使用該方法的系統 - Google Patents
由主機到設備控制器傳輸命令的方法及使用該方法的系統 Download PDFInfo
- Publication number
- TWI625628B TWI625628B TW105125784A TW105125784A TWI625628B TW I625628 B TWI625628 B TW I625628B TW 105125784 A TW105125784 A TW 105125784A TW 105125784 A TW105125784 A TW 105125784A TW I625628 B TWI625628 B TW I625628B
- Authority
- TW
- Taiwan
- Prior art keywords
- segment
- command
- segments
- device controller
- host
- Prior art date
Links
Abstract
本發明揭露一種由主機到設備控制器傳輸命令的方法及使用該方法的系統。該方法包含步驟:A.決定一區段大小;B.分割一命令為複數個分段,每一分段具有的大小與該區段大小相同,如果最後一個分段小於一個區段則補齊至一區段大小;C.依序分佈該些分段至n群中,其中n為大於2的整數;D.如果分佈循環結束而仍有餘留分段待分佈,則繼續維持步驟C中相同的分佈順序;E.在所有分段分佈後,重建每一群的分段為一子命令;及F.同步提供該些子命令到一設備控制器。
Description
本發明關於一種用於由主機到設備控制器傳輸命令的方法與系統,特別是關於一種藉分割每一命令為數個子命令,用於由主機到設備控制器傳輸命令的方法與系統。
傳統上,當一主機傳輸命令到一設備中時,必須通過一傳輸介面,一次傳輸作業傳輸一個命令。隨著命令傳輸科技的發展,主機可以傳送多個命令,例如命令佇列,而設備控制器也能處理二個或多個命令。因此,主機可以將一個命令分割成二個或多個子命令並發送到設備控制器,進而讓命令處理的速度可以加快。
命令傳輸的過程如第1圖所繪示。當主機開機時或命令傳輸前,主機驅動程式401經由一介面發送一辨認命令到該設備控制器402,用來辨認一獨立儲存設備(硬碟(Hard Disk Drive,HDD)、固態硬碟(Solid State Drive,SSD)或記憶卡)或設備控制器管理的儲存設備的資訊。該辨認命令與其它稍
後會提及的命令可符合某一總線協議。對非揮發性記憶體架構的儲存設備來說,該總線協議可以是由非揮發性記憶體高速(Non Volatile Memory Express)標準所發展的協議。非揮發性記憶體高速標準描述PCIe架構SSD的暫存器介面、命令組與特徵組。於是,該設備控制器402發送回關於儲存設備的設備資訊給主機驅動程式401。設備資訊可包含儲存設備單元大小,如快閃記憶體頁與塊的大小、快閃記憶體的種類、最快傳輸速度等等。依照該設備資訊,主機驅動程式401可提供一準備執行命令的位址給設備控制器402。設備控制器402能讀取該位址的命令並執行之。
如上所述,因為主機驅動程式401能分割命令為數個(至少二個)子命令,以便設備控制器402能從不同位址讀取子命令,並於單個處理器不同的作業程序(task)或是多個處理器執行之。這是可行的,但沒有實現它具體可行的方法。本發明揭露關於前述需求的解決方案。
本段文字提取和編譯本發明的某些特點。其它特點將被揭露於後續段落中。其目的在涵蓋附加的申請專利範圍之精神和範圍中,各式的修改和類似的排列。
為了滿足上述需求,本發明提供之用於由主機到設備控制器傳輸命令的方法包含步驟:A.決定一區段大小;B.分割一命令為數個分段,每一分段具有的大小與該區段大小相
同,如果最後一個分段小於一個區段則補齊至一區段大小;C.依序分佈該些分段至n群中,其中n為大於2的整數;D.如果分佈循環結束而仍有餘留分段待分佈,則繼續維持步驟C中相同的分佈順序;E.在所有分段分佈後,重建每一群的分段為一子命令;及F.同步提供該些子命令到一設備控制器。
依照該方法,一命令最後分割的分段的大小必須與該區段大小相同。該區段大小可與一非揮發性記憶體晶片的一頁或是多頁相同。n為正整數且可大於等於2,n亦可為由該設備控制器所能同步取得並執行的子命令的最大數目。該些子命令提供方法為發送一主機中子命令位址到設備控制器而取得。如果非揮發性記憶體高速規範用於命令傳輸,該些位址可為提交佇列。
本發明的另一種態樣是使用前述方法的系統,該系統包含:一主機,安裝一驅動程式,具有一記憶體,用以儲存命令與子命令,其中該驅動程式用以決定一區段大小;分割一命令為複數個分段,每一分段具有的大小與該區段大小相同,如果最後一個分段小於一個區段則補齊至一區段大小;依序分佈該些分段至n群中,其中n為大於2的整數;如果分佈循環結束而仍有餘留分段待分佈,則繼續依序分佈該些分段至n群中,並維持相同的分佈順序;在所有分段分佈於該記憶體後,重建每一群中該些分段為一子命令;及同步提供該些子命令;及一儲存設備,遠距或近端連接到該主機,用於儲
存資料供存取,包含:數個非揮發性記憶體晶片;及一設備控制器,連接到該主機,用以同步自該主機取得該些子命令及執行該些子命令。
依照本發明,一命令最後分割的分段的大小必須與該區段大小相同。該區段大小可與該些非揮發性記憶體晶片的一頁或多頁相同。N可為整數且大於等於2,n亦可為由該設備控制器所能同步取得並執行的子命令的最大數目。該些子命令提供方法為發送該主機中子命令位址到設備控制器而取得。如果非揮發性記憶體高速規範用於命令傳輸,該些位址為提交佇列。該設備控制器與驅動程式設定同步執行來自一命令的所有子命令以便該設備控制器能在該些子命令執行之後反饋該主機。
本發明利用子命令大小較小及同步執行設備控制器中作業程序或多個處理器的優點,執行該些子命令的時間短於執行原始命令的時間,儲存被存取的整體表現可以提升。
10‧‧‧系統
100‧‧‧主機
110‧‧‧中央處理單元
115‧‧‧驅動程式
120‧‧‧RAM模組
130‧‧‧PCIe控制器
200‧‧‧儲存設備
210‧‧‧設備控制器
220‧‧‧揮發性記憶體單元
230‧‧‧非揮發性記憶體晶片
300‧‧‧PCIe總線
401‧‧‧主機驅動程式
402‧‧‧設備控制器
501‧‧‧命令1
502‧‧‧分割後之命令1
503‧‧‧子命令1
504‧‧‧子命令2
505‧‧‧命令2
506‧‧‧分割後之命令2
507‧‧‧子命令1
508‧‧‧子命令2
509‧‧‧子命令3
C1‧‧‧命令
C2‧‧‧命令
SC1-1‧‧‧子命令
SC1-2‧‧‧子命令
SC2-1‧‧‧子命令
SC2-2‧‧‧子命令
第1圖繪示一命令傳輸的相關前案。
第2圖為依照本發明一種用於由主機到設備控制器傳輸命令的方法的流程圖。
第3圖繪示使用該方法的一系統。
第4圖顯示一RAM模組中的資料結構。
第5圖顯示一命令如何被分割。
第6圖顯示二個形成的子命令。
第7圖顯示另一個命令如何被分割。
第8圖顯示三個形成的子命令。
本發明將藉由參照下列的實施方式而更具體地描述。
請參閱第2圖,第2圖為依照本發明一種用於由主機到設備控制器傳輸命令的方法的流程圖。該方法可藉由一系統來實現,該系統具有主機與設備控制器,用來執行讀寫命令到設備控制器管理的儲存設備中。要注意的是該系統可以指的是個人電腦、平板電腦、智慧型手機或用於特殊作業的獨立電子設備,如控制器車設備的車用電腦,主機與儲存設備整合為一體。該系統也可具有主機與可拆卸地連接的儲存設備。舉例來說,數位相機中的中央處理單元(Central Processing Unit)與該中央處理單元經由連接器間接連接的記憶卡。此外,本發明提及的系統也可以指的是客戶端電腦與遠端資料中心的雲端儲存設備(虛擬或實體)。讀寫命令可經由區域網路(Local Area Network)或網際網路傳送與接收。處理命令傳輸的方式對所有應用的態樣都一樣。一實施例將在下方利用本地應用來說明。
第3圖顯示一系統10,其具有應用本發明揭露方法的一主機100與一儲存設備200。主機100與儲存設備200設置於一機殼(未繪示)中並經由一PCI(Peripheral Component Interconnect)express(PCIe)總線300連接。主機100具有一中央處理單元110、一RAM模組120與一PCIe控制器130,它也可能具有其它未於本發明範圍內的電子元件或設備,因此,不對該些電子元件或設備進行進一步說明。主機100安裝一驅動程式115,該驅動程式115在中央處理單元100上電後啟動運作。驅動程式115的主要功能包括:決定一區段大小;分割一命令為數個分段,每一分段具有的大小與該區段大小相同,如果最後一個分段小於一個區段則補齊至一區段大小;依序分佈該些分段至n群中,其中n為大於2的整數;如果分佈循環結束而仍有餘留分段待分佈,則繼續依序分佈該些分段至n群中,並維持相同的分佈順序;在所有分段分佈於記憶體後,重建每一群的分段為一子命令;及同步提供該些子命令到一設備控制器。每一功能的細節將於後說明。RAM模組120用來儲存命令與子命令。PCIe控制器130負責與一設備控制器210,透過PCIe總線300通聯。
儲存設備200於本地端連接到主機100,用以儲存資料於機殼內供存取。當然,如上所述,在其它實施例中,儲存設備200可遠端將由網際網路連接到主機100。依照本發明,儲存設備200應為非揮發性記憶體型儲存設備,諸如SSD或
eMMC。因而,儲存設備200可具有數個非揮發性記憶體晶片230,用以儲存資料。實作上,每一非揮發性記憶體晶片230可以是NAND快閃記憶體晶片、NOR快閃記憶體晶片,或電荷缺陷儲存式快閃記憶體晶片。儲存設備200也具有一揮發性記憶體單元220,如一動態隨機存取記憶體(Dynamic Random Access Memory,DRAM)模組。揮發性記憶體單元220能用來暫時保存某些來自主機100,用於執行命令的重要資料。舉例來說,揮發性記憶體單元220可具有用於映射實體位址與對應邏輯位址的映射表以供存取作業執行。儲存設備200具有設備控制器210。儲存設備200利用設備控制器210,經由PCIe總線300以連接至主機100。設備控制器210能同步取得由一命令產生的子命令並執行該些子命令。以下為說明系統10如何由揭露的方法所運作的一例子。
要強調的是本發明提供的方法是由驅動程式115與設備控制器210所實現。如果本發明進行商業化,驅動程式115應該與設備控制器210同時販售,不然系統10無法工作。依照該方法,一第一步驟為決定一區段大小(S01)。區段大小為一命令(讀取或寫入)分割的單元大小,區段大小建議相同於非揮發性記憶體晶片230的頁(page)或多頁的大小。常用的頁大小為4kB,本實施例使用4kB為區段大小。區段大小由驅動程式115設定。
第二步驟為分割一命令為數個分段,每一分段具有的大小與該區段大小相同(S02)。為了能有較佳的理解,請見第5圖,該圖顯示一命令如何被分割。一命令1(501)具有18kB的大小,佔據RAM模組120中0到17的位址。因為區段大小為4kB,由命令1(501)分割的4個位址中的資料形成分段,分割後之命令1(502)包含:一第一分段(從0到3)、一第二分段(從4到7)、一第三分段(從8到11)、一第四分段(從12到15)與一第五分段(從16到17)。在多數情形下,一命令最後分割的分段(如第五分段)大小可能小於該區段大小,所以將第五分段補齊到4kB。
接著,依序分佈該些分段至n群中,其中n為大於2的整數(S03)。如第6圖所示的分布結果,n設為2以便形成兩群。第一分段分佈到第一群,接著第二分段分佈到第二群。如果分佈循環結束而還有分段餘留待分佈,就維持步驟S03中相同的分佈順序(S04)。第三分段分佈到第一群,第四分段分佈到第二群且最終第五分段分佈到第一群。第一群依序具有第一分段、第三分段與第五分段。第二群依序具有第二分段與第四分段。分佈的結果顯示於第6圖中。
下一個步驟為在所有分段分佈後,重建每一群的分段為一子命令(S05)。如第6圖所示,上方顯示的第一群重建為一子命令1(503),下方顯示的第二群重建為一子命令2(504)。
該方法最後的步驟為同步提供該子命令1(503)與該子命令2(504)給設備控制器210(S06),這意味子命令1(503)與子命令2(504)不應為設備控制器210分別取得,因為它們同屬一命令。子命令應佇列於RAM模組120中。請見第4圖。第4圖顯示RAM模組120中的資料結構。二命令C1與C2依照中央處理單元110原定計畫而佇列。在驅動程式115處理後,命令C1分割為子命令SC1-1與SC1-2。命令C2分割為子命令SC2-1與SC2-2。依照非揮發性記憶體高速規範,子命令SC1-1、SC1-2、SC2-1與SC2-2視為各別的提交佇列。接著,子命令的提供方法為藉由主機100中子命令的發送位址(RAM模組120)給設備控制器210而取得。因非揮發性記憶體高速規範用於命令傳輸,該些位址在本例中為提交佇列。
由步驟S01到步驟S06,所有的步驟能由驅動程式115完成。也就是說,當驅動程式115由步驟S01到步驟S06執行時,所有必要的計算由中央處理單元110執行,相關的資料儲存於RAM模組120中。設備控制器210與驅動程式115必須設定同步執行一命令的子命令,以便設備控制器210在子命令執行之後能反饋主機100。同時,在運作過程中,區段大小與數字n對設備控制器21與驅動程式115來說應該是相同的。
依照本發明,n為由該設備控制器210所能同步取得並執行的子命令的最大數目。如果設備控制器210能同步處理2個命令,n為2;如果設備控制器210同步處理4個命令,n為4;
以此類推。最後,n應為大於或等於2的正整數。在本實施例中,使用n=2。在接下來的實施例中,一個例子顯示本方法如何應用在n為3的情況。
請見第7圖與第8圖。第8圖顯示一命令分割形成3個子命令,第7圖顯示分段分佈的結果。命令2(505)具有19kB的大小,佔據RAM模組120從0到18的位址。在步驟S01中,區段大小決定為3kB,而非前個實施例中的4kB。接著,在步驟S02中,命令2分割為7個分段,分割後之命令2(506)包含:一第一分段(從0到2)、一第二分段(從3到5)、一第三分段(從6到8)、一第四分段(從9到11)、一第五分段(從12到14)、一第六分段(從5到17)與一第七分段(18)。由於第七分段為最後分段且小於區段大小,所以需要補滿一個區段大小(從18到20)。
接著,在步驟S03中,命令依序分佈到3群中:一第一群,一第二群與一第三群。第一分段分佈到第一群,第二分段分佈到第二群,第三分段分佈到第三群。在分佈循環結束後,維持步驟S03中相同的分佈順序於第一循環後的所有分佈。第四分段分佈到第一群,第五分段分佈到第二群,第六分段分佈到第三群及最後第七分段分佈到第一群。第一群依序具有第一分段、第四分段與第七分段。第二群依序具有第二分段與第五分段。第三群依序具有第三分段與第六分段。
在步驟S05重建步驟之後,於第8圖中,第一群重建為一子命令1(507),第二群重建為一子命令2(508),第三群重建為一子命令3(509)。3個子命令由設備控制器210取得,因而可能要3個作業程序同步運作該3個子命令,以便原來的命令能依此更快速地執行。
要強調的是雖然上述實施例使用非揮發性記憶體高速規範,然而,實作上,本發明能應用其它的規範,該些規範允許多個命令收發於主機與設備控制器之間。舉例來說,通用快閃儲存設備(Universal Flash Storage)規範。
雖然本發明已以實施方式揭露如上,然其並非用以限定本發明,任何所屬技術領域中具有通常知識者,在不脫離本發明之精神和範圍內,當可作些許之更動與潤飾,因此本發明之保護範圍當視後附之申請專利範圍所界定者為準。
Claims (15)
- 一種由主機到設備控制器傳輸命令的方法,包含步驟:A.決定一區段大小;B.分割一命令為複數個分段,每一分段具有的大小與該區段大小相同,如果最後一個分段小於一個區段則補齊至一區段大小;C.依序分佈該些分段至n群中,其中n為大於2的整數;D.如果分佈循環結束而仍有餘留分段待分佈,則繼續維持步驟C中相同的分佈順序;E.在所有分段分佈後,重建每一群的分段為一子命令;及F.同步提供該些子命令到一設備控制器。
- 如申請專利範圍第1項所述的方法,其中一命令最後分割的分段的大小與該區段大小相同。
- 如申請專利範圍第1項所述的方法,其中該區段大小與一非揮發性記憶體晶片的一頁或是多頁相同。
- 如申請專利範圍第1項所述的方法,其中n為正整數且大於等於2。
- 如申請專利範圍第4項所述的方法,其中n為由該設備控制器所能同步取得並執行的子命令的最大數目。
- 如申請專利範圍第1項所述的方法,其中該些子命令提供方法為發送一主機中子命令位址到設備控制器而取得。
- 如申請專利範圍第6項所述的方法,其中如果非揮發性記憶體高速(Non Volatile Memory Express)規範用於命令傳輸,該些位址為提交佇列。
- 一種由主機到設備控制器傳輸命令的系統,包含:一主機,安裝一驅動程式,具有一記憶體,用以儲存命令與子命令,其中該驅動程式用以決定一區段大小;分割一命令為複數個分段,每一分段具有的大小與該區段大小相同,如果最後一個分段小於一個區段則補齊至一區段大小;依序分佈該些分段至n群中,其中n為大於2的整數;如果分佈循環結束而仍有餘留分段待分佈,則繼續依序分佈該些分段至n群中,並維持相同的分佈順序;在所有分段分佈於該記憶體後,重建每一群中該些分段為一子命令;及同步提供該些子命令;及一儲存設備,遠距或近端連接到該主機,用於儲存資料供存取,包含:複數個非揮發性記憶體晶片;及一設備控制器,連接到該主機,用以同步自該主機取得該些子命令及執行該些子命令。
- 如申請專利範圍第8項所述的系統,其中一命令最後分割的分段的大小與該區段大小相同或較小。
- 如申請專利範圍第8項所述的系統,其中該區段大小與該 些非揮發性記憶體晶片的一頁相同。
- 如申請專利範圍第8項所述的系統,其中n為整數且大於等於2。
- 如申請專利範圍第11項所述的系統,其中n為由該設備控制器所能同步取得並執行的子命令的最大數目。
- 如申請專利範圍第8項所述的系統,其中該些子命令提供方法為發送該主機中子命令位址到設備控制器而取得。
- 如申請專利範圍第13項所述的系統,其中如果非揮發性記憶體高速規範用於命令傳輸,該些位址為提交佇列。
- 如申請專利範圍第8項所述的系統,其中該設備控制器與驅動程式設定同步執行來自一命令的所有子命令以便該設備控制器能在該些子命令執行之後反饋該主機。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW105125784A TWI625628B (zh) | 2016-08-12 | 2016-08-12 | 由主機到設備控制器傳輸命令的方法及使用該方法的系統 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW105125784A TWI625628B (zh) | 2016-08-12 | 2016-08-12 | 由主機到設備控制器傳輸命令的方法及使用該方法的系統 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201805820A TW201805820A (zh) | 2018-02-16 |
TWI625628B true TWI625628B (zh) | 2018-06-01 |
Family
ID=62014360
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW105125784A TWI625628B (zh) | 2016-08-12 | 2016-08-12 | 由主機到設備控制器傳輸命令的方法及使用該方法的系統 |
Country Status (1)
Country | Link |
---|---|
TW (1) | TWI625628B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111326161B (zh) * | 2020-02-26 | 2023-06-30 | 北京声智科技有限公司 | 一种声纹确定方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110231624A1 (en) * | 2010-03-18 | 2011-09-22 | Kabushiki Kaisha Toshiba | Controller, data storage device, and program product |
CN101652765B (zh) * | 2007-04-20 | 2013-02-13 | 媒体逻辑股份公司 | 设备控制方法 |
TW201428617A (zh) * | 2012-06-15 | 2014-07-16 | Soft Machines Inc | 具備使用分散結構的動態派遣窗之虛擬載入儲存佇列 |
US20150100765A1 (en) * | 2012-06-15 | 2015-04-09 | Soft Machines, Inc. | Disambiguation-free out of order load store queue |
-
2016
- 2016-08-12 TW TW105125784A patent/TWI625628B/zh not_active IP Right Cessation
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101652765B (zh) * | 2007-04-20 | 2013-02-13 | 媒体逻辑股份公司 | 设备控制方法 |
US20110231624A1 (en) * | 2010-03-18 | 2011-09-22 | Kabushiki Kaisha Toshiba | Controller, data storage device, and program product |
TW201428617A (zh) * | 2012-06-15 | 2014-07-16 | Soft Machines Inc | 具備使用分散結構的動態派遣窗之虛擬載入儲存佇列 |
US20150100765A1 (en) * | 2012-06-15 | 2015-04-09 | Soft Machines, Inc. | Disambiguation-free out of order load store queue |
Also Published As
Publication number | Publication date |
---|---|
TW201805820A (zh) | 2018-02-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9607120B2 (en) | Implementing system irritator accelerator FPGA unit (AFU) residing behind a coherent attached processors interface (CAPI) unit | |
CN107430566B (zh) | 直接存储器访问描述符处理 | |
CN104951252A (zh) | 一种数据访问方法及PCIe存储设备 | |
TWI636366B (zh) | 資料冗餘的處理方法及其相關電腦系統 | |
US9542122B2 (en) | Logical block addresses used for executing host commands | |
US10467052B2 (en) | Cluster topology aware container scheduling for efficient data transfer | |
EP3223162B1 (en) | Configurable on-chip interconnection system and method and apparatus for implementing same, and storage medium | |
US10592113B2 (en) | Method for transferring command from host to device controller and system using the same | |
US10318474B1 (en) | Data storage system with heterogenous parallel processors | |
JP2019133662A (ja) | キーバリューアクセスを含むマシンラーニングのためのシステム及び方法 | |
EP3465450B1 (en) | Improving throughput in openfabrics environments | |
US11275632B2 (en) | Broadcast command and response | |
TWI625628B (zh) | 由主機到設備控制器傳輸命令的方法及使用該方法的系統 | |
US20170047119A1 (en) | Data Storage Method, Storage Apparatus, and Computing Device | |
US10168937B2 (en) | Storage space allocation | |
US11301256B2 (en) | System and method for page-conscious GPU instruction | |
US20150278299A1 (en) | External merge sort method and device, and distributed processing device for external merge sort | |
EP2620876A1 (en) | Method and apparatus for data processing, pci-e bus system and server | |
US20160170892A1 (en) | Expression pattern matching in a storage subsystem | |
US10108340B2 (en) | Method and system for a common processing framework for memory device controllers | |
WO2022063273A1 (zh) | 一种基于numa属性的资源分配方法及装置 | |
US9965193B2 (en) | Apparatus, system, and method of sequencing, shadowing, and queuing operations in a non-volatile storage memory | |
CN109032522B (zh) | 固态硬盘的数据读取方法以及固态硬盘 | |
US9886196B2 (en) | Method and system for efficient common processing in memory device controllers | |
CN105867847A (zh) | 访存控制方法、装置及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |