TWI493351B - 通用串列匯流排主機控制方法和通用串列匯流排主機控制器 - Google Patents

通用串列匯流排主機控制方法和通用串列匯流排主機控制器 Download PDF

Info

Publication number
TWI493351B
TWI493351B TW098138781A TW98138781A TWI493351B TW I493351 B TWI493351 B TW I493351B TW 098138781 A TW098138781 A TW 098138781A TW 98138781 A TW98138781 A TW 98138781A TW I493351 B TWI493351 B TW I493351B
Authority
TW
Taiwan
Prior art keywords
endpoint
buffer
buffer unit
usb host
unit
Prior art date
Application number
TW098138781A
Other languages
English (en)
Other versions
TW201118587A (en
Inventor
Di Dai
Jiin Lai
Zhiqiang Hui
Shanna Pang
Original Assignee
Via Tech Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Via Tech Inc filed Critical Via Tech Inc
Priority to TW098138781A priority Critical patent/TWI493351B/zh
Publication of TW201118587A publication Critical patent/TW201118587A/zh
Application granted granted Critical
Publication of TWI493351B publication Critical patent/TWI493351B/zh

Links

Landscapes

  • Information Transfer Systems (AREA)

Description

通用串列匯流排主機控制方法和通用串列匯流排主機控制器
本發明係有關於一種通用串列匯流排(USB)3.0協定的USB主機控制器的下行週期/輸出傳輸的處理,並且具體涉及一種基於USB 3.0協定的USB主機控制方法和USB主機控制器,其能夠減少對系統記憶體的訪問次數,提高USB主機控制器的性能。
目前,已經制定了通用串列匯流排(USB)3.0協定。在USB 3.0協定中定義了NRDY(未就緒)/ERDY(就緒)機制。具體地,USB主機控制器連接到外部的系統記憶體,並且還經由USB匯流排連接到一個或多個USB設備,每個USB設備包括一個或多個端點。當USB主機控制器向某一個端點發送請求(例如輸入請求(IN request)或輸出請求(OUT request))以請求讀/寫資料時,如果該端點沒有準備好發送/接收所請求的資料,則該端點向USB主機控制器發送NRDY回應。當該端點隨後準備好發送/接收所請求的資料時,其向USB主機控制器發送ERDY請求,使得USB主機控制器重新開始執行先前由於NRDY回應而未能執行的對應傳輸。
傳統上,在處理輸出傳輸的過程中,USB主機控制器在其內部的緩衝器中分配一個緩衝單元,從系統記憶體讀取輸出資料,並且將該輸出資料寫入所分配的緩衝單元中。然後,USB主機控制器向端點發送該輸出資料。如果接收到來自該端點的NRDY回應,則USB主機控制器釋放所分配的緩衝單元,即刪除其中儲存的輸出資料。隨後,當接收到來自該端點的ERDY請求時,USB主機控制器再次在緩衝器中分配緩衝單元,從系統記憶體讀取將要發送的輸出資料,並暫存至所分配的緩衝單元,然後將該輸出資料發送給所述端點。之後,USB主機控制器再次釋放所分配的緩衝單元。
可以看到,在傳統的USB主機控制器中,每次從端點接收到NRDY回應,都釋放儲存輸出資料的緩衝單元,這使得每次接收到ERDY請求時,都需要從外部的系統儲存器重新讀取輸出資料,從而使USB主機控制器回應ERDY請求的時間過長,對系統記憶體的訪問次數過多,降低了性能。
因此,需要一種USB主機控制器和USB主機控制方法,其能夠減少USB主機控制器回應ERDY請求的時間,減少對系統記憶體的訪問次數,提高USB主機控制器的性能。
考慮到以上問題而做出了本發明。本發明的目的是提供一種USB主機控制器和USB主機控制方法,其能夠減少USB主機控制器回應ERDY請求的時間,減少對系統記憶體的訪問次數,提高USB主機控制器的性能。
根據本發明的一個方面,提供了一種USB主機控制方法,用於連接到包括一個或多個端點的USB設備並且包括緩衝器的USB主機控制器,該方法包括以下步驟:將要發送給第一端點的輸出資料儲存在緩衝器內的用於第一端點的一個或多個緩衝單元中;向第一端點發送所述輸出資料,並且當從第一端點接收到第一預定響應時,在所述一個或多個緩衝單元內設置偽釋放標記以及包括與第一端點對應的資訊標籤,而不釋放所述一個或多個緩衝單元。
根據本發明的另一方面,提供了一種USB主機控制器,連接到包括一個或多個端點的USB設備,該USB主機控制器包括,緩衝器以及控制單元。緩衝器包括一個或多個緩衝單元,用於儲存要發送給所述一個或多個端點的輸出資料。控制單元控制向所述一個或多個端點的輸出傳輸,其中,所述控制單元向第一端點發送輸出資料,並且當從第一端點接收到第一預定回應時,在所述緩衝單元中用於存放第一端點輸出資料的緩衝單元內設置偽釋放標記以及與第一端點對應的資訊標籤,而不釋放所述用於存放第一端點輸出資料的緩衝單元。
在根據本發明的USB主機控制器和USB主機控制方法中,當接收到端點發送的NRDY回應時,在儲存對應輸出資料的緩衝單元內設置預定標記,而不釋放該緩衝單元。這樣,當所述端點隨後發送ERDY請求時,可以將緩衝單元中的輸出資料直接發送給該端點,而不需要像傳統技術那樣再次訪問系統記憶體。由此,減少了USB主機控制器回應ERDY請求的時間,減少對系統記憶體的訪問次數,提高了USB主機控制器的性能。
為讓本發明之特徵和優點能更明顯易懂,下文特舉出較佳實施例,並配合所附圖式,作詳細說明如下:
首先,簡要描述本發明的原理。
在簡單的情況中,當執行對於端點的資料輸出傳輸時,將從系統記憶體讀取的要發送給該端點的輸出資料暫存在一個緩衝單元中。如果接收到來自該端點的NRDY響應,僅是將該緩衝單元標記為偽釋放緩衝單元,而不釋放該緩衝單元,即不刪除其中儲存的輸出資料,並且在該緩衝單元中設置包含與所述端點有關的資訊的標籤。當隨後從某一端點接收到ERDY請求時,將該ERDY請求中的端點資訊與輸出緩衝器內的各個偽釋放緩衝單元中設置的標籤進行比較,以查看是否存在與所述某一端點匹配的偽釋放緩衝單元。如果存在匹配的偽釋放緩衝單元,則將該匹配的偽釋放緩衝單元中的資料直接發送給該端點,然後釋放該偽釋放緩衝單元,即刪除其中儲存的輸出資料。否則,在輸出緩衝器中為所述某一端點分配緩衝單元,從系統記憶體讀取相應的輸出資料並將其儲存在所分配的緩衝單元中,然後將該輸出資料發送給所述某一端點。
在較為複雜的情況中,如果要發送給端點的輸出資料被儲存在多個緩衝單元中,則在接收到來自該端點的NRDY響應時,將所述多個緩衝單元都標記為偽釋放緩衝單元,並且按照輸出資料的發送順序對它們進行排序。當隨後接收到來自該端點的ERDY請求時,按照序號從小到大的順序將偽釋放緩衝單元中的資料發送給該端點。此外,當在處理對於某一端點的傳輸期間需要為該端點分配緩衝單元時,優先分配輸出緩衝器中未被標記為偽釋放緩衝單元的緩衝單元。如果未被標記為偽釋放緩衝單元的緩衝單元的空間不夠,則在用於任一其他端點的偽釋放緩衝單元中,按照序號從大到小的順序將緩衝單元分配給所述某一端點。
下面將參照附圖來更詳細地描述根據本發明實施例的USB主機控制器和USB主機控制方法。在附圖中,相同的參考標號自始至終表示相同的元件。
首先,參照第1圖來描述根據本發明實施例的USB主機控制器。應當注意,第1圖所示的USB主機控制器僅僅是與本發明的構思有關的基於USB 3.0協定的USB主機控制器的一部分。
如第1圖所示,USB主機控制器300連接到驅動單元100和系統記憶體200,並且還經由USB匯流排連接到USB設備400。USB設備400包括一個或多個端點(Endpoint)401-1、401-2、...401-n。應當注意,可以將一個或多個USB設備連接到USB主機控制器300,但是由於它們的結構和工作方式基本相同,因此為簡單起見,在第1圖中只示出一個USB設備400。
驅動單元100用於驅動USB主機控制器。在要執行輸出傳輸的情況下,驅動單元100通知USB主機控制器300向USB設備400中的端點輸出資料,並且將要輸出的資料儲存在系統記憶體200中。驅動單元100可以由硬體、軟體或者二者的組合形成,但優選地由諸如作業系統之類的軟體形成。
系統記憶體200位於USB主機控制器300外部,用於儲存要輸出到USB設備400中的端點的輸出資料。
USB主機控制器300包括控制單元301、緩衝器控制器302和輸出緩衝器303。
輸出緩衝器303可被劃分為多個預定大小的緩衝單元,每個緩衝單元內設置有一個標籤,該標籤包含多個標誌位元,包括有效位(VALID)、偽釋放標識(DTRDY)、設備位址、設備上下文索引(DCI)、和序號(SEQ)”。標籤內的各個標誌位元的寬度及含義如表1所示。
需要說明的是,上述表1中的各個標誌位元並不限於本實施例中所舉的寬度及取值。
控制單元301控制USB主機控制器300的總體操作。
USB主機控制器300執行下行週期/輸出傳輸的動機一般來自兩方面,一方面是當驅動模組100通知USB主機控制器300向USB設備400中的某個端點(為便於描述,假設為端點401-1)輸出資料時,控制單元301對要執行的關於各個端點的傳輸(包括對於端點401-1的資料輸出傳輸以及關於其他端點的傳輸)進行調度,以便確定所述資料輸出傳輸的執行順序,並且按照該順序執行對於端點401-1的資料輸出。另一方面是當控制單元301從USB設備400的某個端點(也假設為端點401-1)接收到ERDY請求時,控制單元301也對要執行的關於各個端點的傳輸(包括處理該ERDY請求並且向端點401-1發送資料的傳輸以及關於其他端點的傳輸)進行調度,以便確定處理該ERDY請求的順序,並且按照該順序處理來自端點401-1的ERDY請求。
無論執行下行週期/輸出傳輸的動機是來自哪一方面,當所調度的執行時刻來臨時,控制單元301向緩衝器控制器302發出緩衝單元分配請求,而後緩衝器控制器302首先確定在輸出緩衝器302內的偽釋放緩衝單元中是否存在具有與端點401-1對應的標籤的緩衝單元。為此,緩衝器控制器302將分配請求中包含的USB設備400的設備位址和端點401-1的DCI分別與各個偽釋放緩衝單元中的“設備位址”和“DCI”標誌位元進行比較,以便確定它們是否一致。
應當注意,對於驅動單元100通知USB主機控制器300向端點401-1輸出資料的情況,由於該輸出資料是第一次被發送給端點401-1,因此,在輸出緩衝器303中不存在由於NRDY回應而標記的偽釋放緩衝單元,因而也不存在具有與端點401-1對應的標籤的緩衝單元。只有在控制單元301接收到ERDY請求的這種情況下,由於該端點之前發送了NRDY回應,在輸出緩衝器303中才可能存在具有與該端點對應的標籤的偽釋放緩衝單元,而儲存在其中的資料就是ERDY請求所請求發送的輸出資料。因此,當確定存在具有與端點401-1對應的標籤的偽釋放緩衝單元時,控制單元301將儲存在偽釋放緩衝單元中的資料按照發送順序發送給端點401-1。
另一方面,如果在偽釋放緩衝單元中不存在具有與端點401-1對應的標籤的緩衝單元,則緩衝器控制器302確定在輸出緩衝器303中是否存在沒有被標記為偽釋放緩衝單元的空閒緩衝單元(即緩衝單元內的“有效位元”值為“1”)。如果存在空閒緩衝單元,則緩衝器控制器302在輸出緩衝器303中分配用於暫存對應端點401-1的輸出資料的緩衝單元。由於緩衝單元的大小是固定的,因此,如果輸出資料比較多,則需要多個緩衝單元來儲存該輸出資料;在這種情況下,控制單元301將依序向緩衝器控制器302發出與輸出資料的量相對應的數量的緩衝單元分配請求,使得緩衝器控制器302針對每個分配請求而分配一個緩衝單元,從而最終為端點401-1分配與輸出資料的量相對應的數量的緩衝單元。所有被分配的緩衝單元,其內部標籤的“有效位”都將會被設置成“0”,而於釋放之後,才會被重置成“1”。
在緩衝器控制器302分配了緩衝單元之後,控制單元301進行控制,將要發送給端點401-1的對應輸出資料按照發送順序從系統記憶體200讀出並且儲存到所分配的緩衝單元中,然後將按照發送順序將該輸出資料發送給端點401-1。
反之,如果在輸出緩衝器303中不存在上述空閒緩衝單元,這意味著,輸出緩衝器303中的緩衝單元均已被標記為偽釋放緩衝單元並且具有與其他端點相對應的標籤,則緩衝器控制器302忽略在這些緩衝單元內設置的標籤,並且從這些緩衝單元中,選擇用於某一端點的一個或多個緩衝單元,然後將所述一個或多個緩衝單元中序號最大的緩衝單元分配給端點401-1。此外,控制單元301還將所分配的緩衝單元內的“偽釋放標識”標誌位元修改為0,這使得在所分配的緩衝單元內設置的“設備位址”,“DCI”和“序號”標誌位元不再有效。隨後,控制單元301將要發送給端點401-1的對應輸出資料按照發送順序從系統記憶體200讀出並且儲存到所分配的緩衝單元中,然後將按照發送順序將該輸出資料發送給端點401-1。
在向端點401-1發送資料之後,控制單元301接收來自該端點的回應。如果接收到確認(ACK)回應,則控制單元301釋放所分配的緩衝單元,並且當存在其他要發送的資料時,繼續按照上述方式處理這些資料,直到處理了全部要發送的資料為止。如果從端點401-1接收到停滯(STALL)回應,這意味著發生了錯誤,則控制單元301執行與該停滯回應相關聯的其他處理,由於在這種情況下控制單元301執行的處理與傳統USB主機控制器相同,並且與本發明的構思無關,因此在這裏省略其詳細描述。
另一方面,如果從端點401-1接收到NRDY回應,則控制單元301將所分配的緩衝單元中的“偽釋放標識”標誌位元設置為“1”,即,將所分配的緩衝單元標記為偽釋放緩衝單元,而不是像傳統技術那樣釋放所分配的緩衝單元。此外,控制單元301將所分配的緩衝單元中的“設備位址”和“DCI”標誌位元分別設置為發送該NRDY回應的端點401-1所屬的USB設備400的設備位址以及端點401-1的DCI。所述“設備位址”和“DCI”共同形成指示端點401-1的標識,該標識將所述偽釋放緩衝單元與端點401-1相關聯。另外,控制單元301還根據輸出資料的發送順序,在先前分配給端點401-1的緩衝單元的序號的基礎上,對當前分配給端點401-1的緩衝單元進行排序,以便從先前分配給端點401-1的緩衝單元的序號開始按照從小到大的順序對當前分配的緩衝單元添加序號,該序號被保存到當前分配的緩衝單元內的“SEQ”標誌位元中。
可以看到,在根據本發明實施例的USB主機控制器中,當從USB設備中的端點接收到NRDY回應時,並不是像傳統技術那樣釋放儲存輸出資料的緩衝單元,而是在該緩衝單元內設置偽釋放標記以及指示相應端點的標籤。這樣,當從端點接收到ERDY請求時,可以根據所述標籤識別對應於所述端點的偽釋放緩衝單元,並且將儲存在其中的資料發送給所述端點,而不必再訪問系統記憶體。由此,減少了USB主機控制器回應ERDY請求的時間以及對系統記憶體的訪問次數,提高了USB主機控制器的性能。
下面,將參照第2A及2B圖來描述根據本發明實施例的USB主機控制方法的流程圖。
如第2A圖所示,在步驟S501,控制單元301確定是否從驅動單元100接收到向某個端點輸出資料的通知或者從某個端點接收到ERDY請求。在這裏,為了便於描述,假設所述某個端點為端點401-1。如果步驟S501的確定結果為否,則該過程返回步驟S501。反之,如果在步驟S501確定從驅動單元100接收到向端點401-1輸出資料的通知或者從端點401-1接收到ERDY請求,則在步驟S502,控制單元301對關於各個端點的傳輸(包括關於端點401-1的傳輸和關於其他端點的傳輸)進行調度,以便確定執行關於端點401-1的傳輸的順序。
然後,當所調度的執行時刻來臨時,在步驟S503,控制單元301向緩衝器控制器302發出緩衝單元分配請求,以請求緩衝器控制器302在輸出緩衝器303中分配用於端點401-1的緩衝單元。
接下來,在步驟S504,緩衝器控制器302確定在輸出緩衝器303內的偽釋放緩衝單元中是否存在具有與端點401-1對應的標籤的緩衝單元。如上文所述,緩衝器控制器302可以將所述分配請求中包含的設備位址和DCI分別與各個偽釋放緩衝單元中的“設備位址”和“DCI”標誌位元進行比較來執行步驟S504。
當在步驟S504確定存在具有與端點401-1對應的標籤的緩衝單元時,在步驟S505,緩衝器控制器302將這些緩衝單元中序號最小的緩衝單元分配給端點401-1。然後,該過程進行到步驟S510。
另一方面,如果在步驟S504確定不存在具有與端點401-1對應的標籤的緩衝單元,則在步驟S506中,緩衝器控制器302確定在輸出緩衝器303中是否存在沒有被標記為偽釋放緩衝單元的空閒緩衝單元(即緩衝單元內的“有效位元”值為“1”)。如果存在空閒緩衝單元,則在步驟S507(第2B圖),緩衝器控制器302將這些空閒控制單元之一分配給端點401-1。此外,緩衝器控制器302將所分配的緩衝單元內的“VALID”標誌位元設置為0,以表明該緩衝單元已被分配。反之,如果在步驟S506確定不存在所述空閒緩衝單元,也就是說,輸出緩衝器303中的緩衝單元均被標記為偽釋放緩衝單元並且具有與其他端點相對應的標籤,則在步驟S508,緩衝器控制器302忽略偽釋放緩衝單元的標籤,從這些偽釋放緩衝單元中任意選擇用於某一端點的一個或多個緩衝單元,並且將所述一個或多個緩衝單元中序號最大的緩衝單元分配給端點401-1。在這種情況下,控制單元301還將所分配的緩衝單元內的“偽釋放標識”標誌位元改變為0,以取消所分配的緩衝單元的偽釋放標識。
接下來,在步驟S509,控制單元301將要發送給端點401-1的對應輸出資料從系統記憶體200讀入在步驟S507或S508分配的緩衝單元。
在步驟S510,控制單元301將當前儲存在所分配的緩衝單元內的資料發送給端點401-1。
在步驟S511,控制單元301接收來自端點401-1的回應。然後,控制單元根據所接收的回應的類型而執行不同的處理。
具體地,當接收到ACK(確認)回應時,在步驟S512,控制單元301釋放所分配的緩衝單元。隨後,在步驟S513,控制單元301確定是否存在其他要發送的資料。如果存在其他要發送的資料,則該過程返回步驟S503並且依序執行上述步驟。反之,如果不存在要發送的資料,則該過程結束。
當在步驟S511接收到STALL(停滯)回應時,在步驟S514,控制單元301執行與該STALL回應相關聯的其他處理,然後該過程結束。由於上文所述的原因,在這裏省略其詳細描述。
當在步驟S511接收到NRDY回應時,在步驟S515,控制單元301將所分配的緩衝單元中的“偽釋放標識”標誌位元設置為“1”以將其標記為偽釋放緩衝器;在所分配的緩衝單元中設置指示發送NRDY回應的端點401-1的標籤,即,將所分配的緩衝單元中的“設備位址”和“DCI”標誌位元分別設置為端點401-1所屬的USB設備400的位址以及端點401-1的DCI;並且,根據輸出資料的發送順序,在先前分配給端點401-1的緩衝單元的序號的基礎上,對在步驟S507或S508分配的緩衝單元進行排序,以便從先前分配給端點401-1的緩衝單元的序號開始按照從小到大的順序對在步驟S507或S508分配的緩衝單元添加序號,該序號被保存到緩衝單元內的“SEQ”標誌位元中。然後,該過程進行到步驟S513,並且執行上文所述的處理。
可以看到,在根據本發明實施例的USB主機控制方法中,當從端點接收到NRDY回應時,僅僅將儲存輸出資料的緩衝單元標記為偽釋放緩衝單元,而不釋放該緩衝單元。因此,當隨後USB主機控制器從同一端點接收到ERDY請求時,可以直接將儲存在緩衝單元中的資料發送給該端點,而不需要訪問系統記憶體,這減少了USB主機控制器回應ERDY請求的時間,提高了USB主機控制器的性能。
上文描述的USB主機控制器和USB主機控制方法的實施例不是限制性的,也可以對它們做出各種改變。例如,儘管在上文中提到,在緩衝單元內設置的標籤包括“設備位址”和“DCI”,但是該標籤也可以包括任何其他能夠標識USB設備和端點的資訊。另外,對於驅動單元100通知USB主機控制器300向端點輸出資料的情況,在執行了步驟S503之後,也可以不執行步驟S504和S505,而是直接執行步驟S506。
下面,參照第3圖,針對一種特定的情況來示意性地說明在執行根據本發明實施例的USB主機控制方法時輸出緩衝器和緩衝單元的儲存狀態的變化。
如第3圖所示,在初始狀態1中,在輸出緩衝器中不存在為端點401-1分配的緩衝單元。
在操作1中,驅動單元100通知USB主機控制器300向端點401-1輸出資料,緩衝器控制器302在輸出緩衝器303中為端點401-1分配緩衝單元。因此,在狀態2中,輸出緩衝器303內的部分緩衝單元(如斜線部分所示)被分配給端點401-1。
在操作2中,控制單元301從系統記憶體200讀取要輸出到端點401-1的輸出資料,並將該輸出資料儲存到所分配的緩衝單元中。因此,在狀態3中,在所分配的緩衝單元中儲存了輸出資料(如斜線部分所示)。
在操作3中,控制單元301向端點401-1發送資料,並且接收來自端點401-1的NRDY響應。因此,控制單元301將所分配的緩衝單元標記為偽釋放緩衝單元,並且在其中設置相應的標籤和序號。因此,在狀態4中,分配給端點401-1的緩衝單元成為偽釋放緩衝單元,並且具有從小到大排序的序號(在第3圖所示的例子中,為“0”和“1”)。
在操作4中,由於需要為另一端點分配緩衝單元,並且在輸出緩衝器303中不存在空閒緩衝單元,因此,將用於端點401-1的一個緩衝單元分配給該另一端點。此時,將用於端點401-1的緩衝單元中序號最大的緩衝單元(序號為“1”的緩衝單元)分配給該另一端點。因此,在狀態5中,只有序號為“0”的緩衝單元用於端點401-1。
在操作5中,接收到來自端點401-1的ERDY請求,因此,如上文所述,緩衝器控制器302先確定在輸出緩衝器303內的偽釋放緩衝單元中是否存在具有與端點401-1對應的標籤的緩衝單元,若存在,則直接將該偽釋放緩衝單元中的資料發送給端點401-1,而後根據需要,再在輸出緩衝器303中重新分配緩衝單元,並且將相應的輸出資料從系統記憶體讀入該緩衝單元。此時,輸出緩衝器303回到狀態3。
在操作6中,將儲存在緩衝單元中的資料發送給端點401-1,從端點401-1接收到ACK回應,然後釋放為端點401-1分配的緩衝單元。此時,輸出緩衝器303狀態回到狀態1。
雖然本發明已以較佳實施例揭露如上,然其並非用以限定本發明,任何所屬技術領域中具有通常知識者,在不脫離本發明之精神和範圍內,當可作些許之更動與潤飾,因此本發明之保護範圍當視後附之申請專利範圍所界定者為準。
100...驅動單元
200...系統記憶體
300...USB主機控制器
301...控制單元
302...緩衝器控制器
303...輸出緩衝器
400...USB設備
401-1、401-2、...401-n...端點
S501~S515...步驟
第1圖是根據本發明實施例的USB主機控制器的方塊圖;
第2A及2B圖顯示根據本發明實施例的USB主機控制方法的流程圖;
第3圖是示意性地說明在執行根據本發明實施例的USB主機控制方法時輸出緩衝器和緩衝單元的儲存狀態的變化的圖。
100...驅動單元
200...系統記憶體
300...USB主機控制器
301...控制單元
302...緩衝器控制器
303...輸出緩衝器
400...USB設備
401-1、401-2、...401-n...端點

Claims (18)

  1. 一種USB主機控制方法,用於連接到一USB設備之一USB主機控制器,該USB主機控制器包括一緩衝器,該USB設備具有一個或多個端點,該方法包括以下步驟:將要發送給一第一端點的一第一輸出資料儲存在該緩衝器內的用於第一端點的一個或多個緩衝單元中;向該第一端點發送所述第一輸出資料,並且當從該第一端點接收到一第一預定響應時,在所述一個或多個緩衝單元內設置偽釋放標記以及與第一端點對應的資訊標籤,而不釋放所述一個或多個緩衝單元;當接收到向一第二端點發送一第二輸出資料的通知時,在該緩衝器中分配用於該第二端點的緩衝單元,其中,在該緩衝器中分配用於該第二端點的緩衝單元的步驟包括以下步驟:確定該緩衝器中是否存在空閒的緩衝單元;以及當不存在空閒的緩衝單元時,在用於任一其他端點的、包含所述偽釋放標記的一個或多個緩衝單元中分配用於該第二端點的緩衝單元。
  2. 如申請專利範圍第1項所述的USB主機控制方法,其中,當從該第一端點接收到該第一預定回應時,按照該第一輸出資料的發送順序,對所述一個或多個緩衝單元進行排序並且將序號設置到相應的緩衝單元中,該發送順序係為該USB主機控制器發送該第一輸出資料予該第一端點的順序。
  3. 如申請專利範圍第1項所述的USB主機控制方法, 其中,在該緩衝器中分配用於該第二端點的緩衝單元的步驟還包括以下步驟:當存在空閒的緩衝單元時,在空閒的緩衝單元中分配用於該第二端點的緩衝單元,其中上述空閒的緩衝單元是指不包含所述偽釋放標記的緩衝單元。
  4. 如申請專利範圍第1項所述的USB主機控制方法,其中,將用於任一其他端點的、包含所述偽釋放標記的一個或多個緩衝單元中序號最大的緩衝單元分配給該第二端點。
  5. 如申請專利範圍第1項所述的USB主機控制方法,還包括以下步驟:當從所述第一端點接收到一預定請求時,確定在該緩衝器內的包含所述偽釋放標記的緩衝單元中是否存在具有與該第一端點對應的資訊標籤的緩衝單元;以及當存在具有與該第一端點對應的資訊標籤的緩衝單元時,將儲存在具有與該第一端點對應的資訊標籤的緩衝單元內的輸出資料發送給該第一端點。
  6. 如申請專利範圍第5項所述的USB主機控制方法,其中確定在該緩衝器內的包含所述偽釋放標記的緩衝單元中是否存在具有與該第一端點對應的資訊標籤的緩衝單元的步驟還包括以下步驟:將所述預定請求中包含的該第一端點所屬的USB設備的設備位址和該第一端點的設備上下文索引與包含所述偽釋放標記的緩衝單元中的資訊標籤進行比較。
  7. 如申請專利範圍第5項所述的USB主機控制方法,其中,所述第一預定回應為未就緒(NRDY)回應,所述預定請求為就緒(ERDY)請求。
  8. 如申請專利範圍第1項所述的USB主機控制方法,還包括以下步驟:當從該第一端點接收到一第二預定響應時,釋放所述一個或多個緩衝單元。
  9. 如申請專利範圍第1項所述的USB主機控制方法,其中,所述與該第一端點對應的資訊標籤至少包括該第一端點所屬的USB設備的設備位址、以及第一端點的設備上下文索引。
  10. 一種USB主機控制器,連接到包括一個或多個端點的USB設備,該USB主機控制器包括:一緩衝器,包括一個或多個緩衝單元,用於儲存要發送給所述一個或多個端點的輸出資料;一控制單元,用於控制向所述一個或多個端點的輸出傳輸;以及一緩衝器控制器,用於在USB主機控制器接收到向一第二端點發送一第二輸出資料的通知時,在該緩衝器中分配用於該第二端點的緩衝單元,其中,所述控制單元向一第一端點發送一第一輸出資料,並且當從該第一端點接收到一第一預定回應時,在所述緩衝單元中用於存放該第一端點之該第一輸出資料的緩衝單元內設置偽釋放標記以及與該第一端點對應的資訊標籤,而不釋放所述用於存放該第一端點的該第一輸出資料 的緩衝單元;其中,該緩衝器控制器按照以下方式分配用於該第二端點的緩衝單元:確定緩衝器中是否存在空閒的緩衝單元;以及當不存在空閒的緩衝單元時,在用於任一其他端點的、包含所述偽釋放標記的一個或多個緩衝單元中分配用於該第二端點的緩衝單元。
  11. 如申請專利範圍第10項所述的USB主機控制器,其中,當從該第一端點接收到該第一預定回應時,該控制單元按照該第一輸出資料的發送順序,對所述用於存放該第一端點的該第一輸出資料的緩衝單元進行排序並且將序號設置到相應的緩衝單元中,該發送順序係為該USB主機控制器發送該第一輸出資料予該第一端點的順序。
  12. 如申請專利範圍第10項所述的USB主機控制器,其中,該緩衝器控制器按照以下方式分配用於該第二端點的緩衝單元:當存在空閒的緩衝單元時,在空閒的緩衝單元中分配用於該第二端點的緩衝單元,其中上述空閒的緩衝單元是指不包含所述偽釋放標記的緩衝單元。
  13. 如申請專利範圍第10項所述的USB主機控制器,其中,該緩衝器控制器將用於任一其他端點的、包含所述偽釋放標記的一個或多個緩衝單元中序號最大的緩衝單元分配給該第二端點。
  14. 如申請專利範圍第10項所述的USB主機控制器, 其中,當從所述第一端點接收到預定請求時,控制單元確定在緩衝器內的包含所述偽釋放標記的緩衝單元中是否存在具有與第一端點對應的資訊標籤的緩衝單元;以及當存在具有與第一端點對應的資訊標籤的緩衝單元時,控制單元將儲存在具有與第一端點對應的資訊標籤的緩衝單元內的輸出資料發送給第一端點。
  15. 如申請專利範圍第14項所述的USB主機控制器,其中,該控制單元將所述預定請求中包含的第一端點所屬的USB設備的設備位址和第一端點的設備上下文索引與包含所述偽釋放標記的緩衝單元中的資訊標籤進行比較,以確定在該緩衝器內的包含所述偽釋放標記的緩衝單元中是否存在具有與該第一端點對應的資訊標籤的緩衝單元。
  16. 如申請專利範圍第14項所述的USB主機控制器,其中,所述第一預定回應為未就緒(NRDY)回應,所述預定請求為就緒(ERDY)請求。
  17. 如申請專利範圍第10項所述的USB主機控制器,其中,當從該第一端點接收到一第二預定響應時,該控制單元釋放所述一個或多個緩衝單元。
  18. 如申請專利範圍第10項所述的USB主機控制器,其中,所述與該第一端點有關的資訊包括該第一端點所屬的USB設備的設備位址、以及該第一端點的設備上下文索引。
TW098138781A 2009-11-16 2009-11-16 通用串列匯流排主機控制方法和通用串列匯流排主機控制器 TWI493351B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
TW098138781A TWI493351B (zh) 2009-11-16 2009-11-16 通用串列匯流排主機控制方法和通用串列匯流排主機控制器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
TW098138781A TWI493351B (zh) 2009-11-16 2009-11-16 通用串列匯流排主機控制方法和通用串列匯流排主機控制器

Publications (2)

Publication Number Publication Date
TW201118587A TW201118587A (en) 2011-06-01
TWI493351B true TWI493351B (zh) 2015-07-21

Family

ID=44935737

Family Applications (1)

Application Number Title Priority Date Filing Date
TW098138781A TWI493351B (zh) 2009-11-16 2009-11-16 通用串列匯流排主機控制方法和通用串列匯流排主機控制器

Country Status (1)

Country Link
TW (1) TWI493351B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9195497B2 (en) * 2012-03-21 2015-11-24 Microchip Technology Incorporated Microcontroller with context switch

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200627158A (en) * 2005-01-28 2006-08-01 Megaforce Co Ltd Method and system applied to duplicate data between USB devices
US20070150631A1 (en) * 2005-12-22 2007-06-28 Intuitive Surgical Inc. Multi-priority messaging
TW200842601A (en) * 2006-12-31 2008-11-01 Sandisk Corp Method and apparatus for performing full transfer automation in a USB controller

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200627158A (en) * 2005-01-28 2006-08-01 Megaforce Co Ltd Method and system applied to duplicate data between USB devices
US20070150631A1 (en) * 2005-12-22 2007-06-28 Intuitive Surgical Inc. Multi-priority messaging
TW200842601A (en) * 2006-12-31 2008-11-01 Sandisk Corp Method and apparatus for performing full transfer automation in a USB controller

Also Published As

Publication number Publication date
TW201118587A (en) 2011-06-01

Similar Documents

Publication Publication Date Title
US7975120B2 (en) Dynamic allocation of message buffers
US7373465B2 (en) Data processing system configuring and transmitting access request frames with a field in channel command words to accommendate a plurality of logical device address data therein
US9734085B2 (en) DMA transmission method and system thereof
EP2849077A1 (en) Method for writing data into storage device and storage device
KR20160049200A (ko) 데이터 저장 장치의 작동 방법, 이를 포함하는 모바일 컴퓨팅 장치, 및 이의 작동 방법
TWI326028B (en) Method for flash memory data management
TWI547870B (zh) 用於在多節點環境中對i/o 存取排序的方法和系統
US7603488B1 (en) Systems and methods for efficient memory management
US8417853B2 (en) Universal serial bus host control methods and universal serial bus host controllers
CN111290983A (zh) Usb传输设备及传输方法
TWI493351B (zh) 通用串列匯流排主機控制方法和通用串列匯流排主機控制器
US20190294366A1 (en) Storage system
TWI582599B (zh) 資料傳輸方法、記憶體控制器、資料傳輸系統
CN101261611A (zh) 一种外围设备间的数据传输装置和传输方法
JP2020144410A (ja) メモリコントローラ
CN106681804B (zh) 储存装置、对应于储存装置的主机以及其任务执行方法
US20160085683A1 (en) Data receiving device and data receiving method
CN105022707B (zh) 接口单元装置
US6877039B2 (en) Simplified pipeline writes over a network
JP4690271B2 (ja) データ転送バッファ制御装置及びデータ転送制御方法
CN114731282B (zh) 处理非缓存写数据请求的方法、缓存器和节点
JP6011727B2 (ja) データ転送装置、データ転送方法及び情報処理装置
US11240178B2 (en) Data transmission method and data transmission system
JP2017162399A (ja) 記憶装置
KR102036124B1 (ko) 저장 명령을 효율적으로 처리하는 방법 및 장치