專利名稱:存儲設備、主機控制器和存儲系統(tǒng)的制作方法
技術領域:
此處描述的實施例一般涉及被應用于例如SD 卡并且具有高級直接存儲訪問 (ADMA)的存儲系統(tǒng)。
背景技術:
最近,諸如SD存儲卡的SD卡被廣泛用于作為主機裝置的例如蜂窩電話和數(shù)字照相機中。這種SD存儲卡通過主機控制器被連接到主機裝置,并且主機控制器控制主機裝置與SD存儲卡之間的數(shù)據(jù)傳輸。作為使用總線接口的主機_設備通信方法,存在一種方法,通過該方法,主機向設備傳送命令,并且通過接收來自該設備的響應來檢查該命令是否被該設備接受。也有可能通過使用特定的讀/寫命令來實現(xiàn)數(shù)據(jù)傳輸,或者使用錯誤檢測,該錯誤檢測使用循環(huán)冗余校驗(CRC)碼來檢測由噪聲之類引起的傳輸錯誤。即使當噪聲發(fā)生在相同環(huán)境中并且由噪聲引起的比特錯誤的發(fā)生概率保持不變時,比特錯誤發(fā)生的時間間隔也隨著總線傳輸速率的增加而縮短。因此,預測到比特錯誤以例如每幾秒鐘至幾分鐘一比特的比率發(fā)生。這使得在高速總線中支持協(xié)議的重傳功能是重要的。如果在使用常規(guī)命令協(xié)議時通過經由CRC碼等進行校驗發(fā)生了一定錯誤(包括比特錯誤)時,主機必須通過中止命令來臨時停止傳輸并且重試命令。這中斷了數(shù)據(jù)傳輸并且降低了傳輸效率。尤其是像這樣由噪聲引起的中斷發(fā)生在使用硬件的直接存儲器訪問 (DMA)傳輸期間時,由驅動器進行處理是必要的,并且DMA的效果有所降低。在使用高速總線的數(shù)據(jù)傳輸中由于噪聲之類而發(fā)生的傳輸錯誤引起了相同的問題;如果通過CRC碼等進行校驗,在數(shù)據(jù)傳輸期間由于噪聲而發(fā)生了比特錯誤,則主機必須中斷數(shù)據(jù)傳輸一次,然后重試該數(shù)據(jù)傳輸。這種開銷在高速總線中是無法忽略的。
發(fā)明內容
該實施例提供了一種存儲系統(tǒng)、一種主機控制器,以及一種能夠(甚至當錯誤發(fā)生在命令響應序列中時)通過防止中斷數(shù)據(jù)傳輸來增加數(shù)據(jù)傳輸效率的存儲系統(tǒng)。一般地,根據(jù)一個實施例,主機控制器包括命令生成器和檢測器。所述命令生成器生成在自變量中具有重傳標志的命令,并且將所生成的命令傳送到存儲設備。如果在限定的時間內無法識別來自所述存儲設備的響應,則所述檢測器檢測到超時。當傳送初始命令時,所述主機控制器對所述重傳標志進行清零(clear)并且傳送所述命令。如果所述檢測器檢測到超時,則所述主機控制器設置所述重傳標志,并且向所述設備重傳與所述初始命令相同的命令。如果接收到與所述初始命令或重傳的命令相對應的正常響應,則所述主機控制器識別出所述命令被正確地執(zhí)行。本發(fā)明的實施例可以實現(xiàn)一種存儲設備、一種主機控制器以及一種能夠甚至當在命令響應序列中發(fā)生錯誤時通過防止中斷數(shù)據(jù)傳輸來增加數(shù)據(jù)傳輸效率的存儲系統(tǒng)。
圖1是示意性地示出了根據(jù)實施例的存儲系統(tǒng)的框圖;圖2是示意性地示出了系統(tǒng)存儲器和存儲卡的存儲映射的視圖;圖3是示出了根據(jù)實施例的描述符的結構的視圖;圖4是示意性地示出了圖1所示的ADMA的框圖;圖5A是示意性地示出了命令分組的格式的視圖,并且圖5B是示意性地示出了響應分組的格式的視圖;圖6是示出了主機控制器的操作流程的流程圖;以及圖7是示出了設備的操作流程的流程圖。
具體實施例方式下面將參照附圖解釋實施例。圖1示意性地示出了根據(jù)該實施例的存儲系統(tǒng)。在該實施例中,命令的自變量具有重傳標志。該實施例具有的流程是如果響應于初始命令而發(fā)生了錯誤,則主機控制器設置重傳標志,并且重傳與初始命令相同的命令。因此,即使當因為噪聲在數(shù)據(jù)傳輸期間發(fā)生了錯誤時,也有可能防止數(shù)據(jù)傳輸?shù)闹袛?,并且防止?shù)據(jù)傳輸效率的降低。圖1所示的系統(tǒng)控制器11被安裝在諸如蜂窩電話這樣的主機裝置中,并且控制與主機裝置的CPU 12、系統(tǒng)存儲器13和SD主機控制器14的接口。系統(tǒng)存儲器13存儲了主機驅動器21、描述符表格22和數(shù)據(jù)23。操作系統(tǒng)(OS) 保證了在系統(tǒng)存儲器13上存儲主機驅動器21、描述符表格22和數(shù)據(jù)23所必要的區(qū)域。主機驅動器21是OS唯一的驅動器,其被提供用于例如SD主機控制器14,并且由 CPU 12來執(zhí)行。主機驅動器21在執(zhí)行ADMA(隨后予以描述)之前生成描述符表格22。描述符表格22是用于在系統(tǒng)存儲器13與SD卡之間進行數(shù)據(jù)傳輸所必要的信息列表。描述符表格22的結構隨后將予以描述。SD主機控制器14具有以下功能通過使用SD命令,在系統(tǒng)存儲器13與SD卡之間雙向傳輸數(shù)據(jù)。SD主機控制器14主要包括系統(tǒng)總線接口(I/F)電路31、存儲卡I/F電路32、包括多個寄存器的寄存器組33、ADMA34和計時器35。系統(tǒng)總線I/F電路31經由系統(tǒng)總線被連接到系統(tǒng)控制器11。存儲卡I/F電路32 可經由SD總線接口(未示出)而連接到SD卡(諸如SD存儲卡15和SDIO卡16)。SD存儲卡15和SDIO卡16被設置成由從SD主機控制器14提供的命令來控制,并且響應于所接收到的命令,在預設的限定時間內向SD主機控制器14返回響應。SD存儲卡15包括CPU 15a、RAM 15b、ROM 15c、緩沖器(BUF) 15d、接口(I/F) 15e、NAND 存儲器的接口(NI/F) 15f, 以及NAND存儲器(NAND) 15g。CPU 15a由在自變量中具有重傳標志的命令來控制,并且響應于所接收到的命令,在限定時間內傳送響應。CPU 15a還檢測比特錯誤。SD主機控制器14的寄存器組33被分類為多個單元(未示出),諸如SD命令生成單元、響應單元、緩沖器數(shù)據(jù)端口單元、主機控制單元、中斷控制單元和ADMA單元。用于發(fā)出SD命令所必要的信息(諸如命令編號、命令模式和自變量)以及用于傳輸數(shù)據(jù)所必要的信息(諸如塊長度和塊計數(shù))被設置在寄存器組33的SD命令生成單元中。當這些信息段被設置時,SD命令生成單元向SD卡發(fā)出命令。寄存器組33中的響應單元接收從SD卡提供的響應于該命令的響應。ADMA 34是用于在SD卡和系統(tǒng)存儲器13之間傳輸數(shù)據(jù)而沒有CPU12的任何干預的電路。ADMA 34根據(jù)系統(tǒng)存儲器13上的描述符表格22中所描述的內容來執(zhí)行數(shù)據(jù)傳輸。計時器35檢測超時錯誤。例如,如果自發(fā)出命令以來在經過了預設的限定時間或預設的時鐘數(shù)之內未能接收到任何響應,則計時器35檢測到超時錯誤。當檢測到其重傳標志被設置成“0”的命令的響應超時錯誤時,并不通知主機CPU 12,但是SD主機控制器14發(fā)出其重傳標志被設置成“1”的相同命令。當檢測到其重傳標志被設置成“1”的命令的響應超時錯誤時,通過中斷來通知主機CPU 12,并且由主機驅動器來進行處理。即使在檢測到其重傳標志被設置成“0”的命令的響應超時錯誤時,也有可能通過主機驅動器來重傳該命令。 然而,性能是下降的。在重傳命令中,當再次檢測到響應超時錯誤時,傳輸被中斷并且由主機驅動器來執(zhí)行錯誤處理。圖2示出了 SD物理地址與系統(tǒng)存儲器13的頁面調度管理(paging management) 之間的關系的例子。通過針對每個小區(qū)域(例如4k字節(jié)區(qū)域)的頁面調度來管理系統(tǒng)存儲器13。通過使用由主機CPU 12管理的頁面調度功能,由主機CPU 12執(zhí)行的應用通過邏輯地址來訪問系統(tǒng)存儲器13。因此,如通過邏輯地址系統(tǒng)存儲映射所指示的,數(shù)據(jù)明顯地被安排在連續(xù)地址區(qū)域中。然而,系統(tǒng)存儲器13中實際記錄數(shù)據(jù)的位置是任意的,并且如物理地址系統(tǒng)存儲映射所指示的那樣被分片。通過地址和數(shù)據(jù)長度來管理這些數(shù)據(jù),并且數(shù)據(jù)長度是可變的。而且,系統(tǒng)存儲器13中所存儲的數(shù)據(jù)的邏輯地址和物理地址之間的關系由頁表(未示出)來管理。另一方面,針對具有例如512字節(jié)到幾兆字節(jié)并且完全獨立于系統(tǒng)存儲器13的每個頁面(每個塊)來管理SD存儲卡13中所存儲的數(shù)據(jù)。因此,當系統(tǒng)存儲器13上的數(shù)據(jù)要被存儲在SD存儲卡15中時,如SD物理地址存儲映射所指示的,以不同于系統(tǒng)存儲器13 上的數(shù)據(jù)的尺寸來存儲系統(tǒng)存儲器13上的數(shù)據(jù)。SD存儲卡15中的數(shù)據(jù)被保存在為每個命令指定的存儲區(qū)域中,并且具有由該命令指定的地址,而且數(shù)據(jù)長度是可變的。DMA傳輸通過物理地址而直接訪問系統(tǒng)存儲器13。相應地,可以通過形成作為在系統(tǒng)存儲器13上的傳輸列表的描述符來執(zhí)行DMA。圖3示出了根據(jù)該實施例的描述符。該描述符被形成在系統(tǒng)存儲器13的描述符表格22中。該實施例的描述符擴展了常規(guī)描述符,并具有層次結構。當使用該實施例的描述符時,系統(tǒng)存儲器13與SD存儲卡15之間通過ADMA所實現(xiàn)的數(shù)據(jù)傳輸完全可由硬件來執(zhí)行。這消除了對于在數(shù)據(jù)傳輸期間中斷主機CPU 12的需要。盡管對存儲器寫入錯誤等的處理請求是通過中斷來通知的,但卻不會產生問題,因為其發(fā)生的概率非常低。如圖3所示,第一描述符(完整描述符(integrated descriptor))是針對多個第二描述符(局部描述符(partial descriptor))的一組指針。每個第二描述符(局部描述符)是一對第三描述符(SD命令描述符)和第四描述符(系統(tǒng)存儲器描述符)。由用于發(fā)出SD命令的信息來形成第三描述符的內容。也就是說,由例如命令編號、命令模式、自變量以及塊長度和塊計數(shù)作為數(shù)據(jù)傳輸所必要的信息來形成第三描述符的內容。命令模式指示例如讀/寫。通過在SD主機控制器14的寄存器組33的SD命令生成單元中寫入第三描述符,發(fā)出一個SD命令。第四描述符(系統(tǒng)存儲器描述符)的內容是由指示系統(tǒng)存儲器13上的每個數(shù)據(jù)的位置的地址以及指示數(shù)據(jù)長度的長度來形成的,并且指示了一組多個分片數(shù)據(jù)。第一到第四描述符分別具有屬性信息Att。每個屬性信息Att含有例如用于標識描述符的類型的信息,以及指示了該描述符的結束位置的結束比特。要注意,第三描述符具有不同于其它描述符的格式,因此可以根據(jù)至少第一命令編號來形成屬性信息Att。圖4示出了 ADMA 34的布置的概況。ADMA 34包括系統(tǒng)地址控制器34a、數(shù)據(jù)緩沖器34b、SD命令控制器34c和緩沖存儲器34d。系統(tǒng)地址控制器34a管理系統(tǒng)存儲器13中的地址。更具體地,系統(tǒng)地址控制器34a 管理系統(tǒng)存儲器13中所存儲的第一到第四描述符的加載。也就是說,系統(tǒng)地址控制器34a 在初始加載第一描述符(完整描述符)的起始地址的內容,即,來自系統(tǒng)存儲器13的第二描述符的地址,并且根據(jù)該地址來加載第二描述符。然后,系統(tǒng)地址控制器34a將SD命令描述符作為形成第二描述符的第三描述符而傳輸?shù)絊D命令控制器34c。此外,系統(tǒng)地址控制器34a順序地加載形成第二描述符的在第四描述符中所描述的數(shù)據(jù)的地址和數(shù)據(jù)長度。 根據(jù)所加載的地址和數(shù)據(jù)長度,系統(tǒng)地址控制器34a從系統(tǒng)存儲器13讀出數(shù)據(jù),并且在實現(xiàn)存儲器寫入時向數(shù)據(jù)緩沖器34b傳輸該數(shù)據(jù)。在實現(xiàn)存儲器讀取時,系統(tǒng)地址控制器34a 將數(shù)據(jù)從數(shù)據(jù)緩沖器34b傳輸?shù)较到y(tǒng)存儲器13。為了執(zhí)行這些操作,系統(tǒng)地址控制器34a包括多個寄存器34a_l到34a_4,以及用于從這些寄存器選擇輸出信號的多路復用器(MPX) 34a_5,以便保存第一描述符(完整描述符)的起始地址、到第二描述符(局部描述符)的指針,以及數(shù)據(jù)的地址和數(shù)據(jù)長度。SD命令控制器34c順序地生成寄存器地址,用于在SD命令生成單元中設置值,并且在主機控制器14的寄存器組33的SD命令生成單元中順序地設置在SD命令描述符中所含的作為第三描述符的寄存器設置信息。當寄存器的設置完成時,寄存器組33的SD命令生成單元生成SD命令。在存儲器寫入中,緩沖存儲器34d將數(shù)據(jù)加載到由系統(tǒng)地址控制器34a所指定的系統(tǒng)存儲器13中,并且臨時保存所提供的數(shù)據(jù)。同步于所發(fā)出的SD命令,數(shù)據(jù)緩沖器34b 中所保存的數(shù)據(jù)被傳輸?shù)絊D存儲卡15。在存儲器讀取中,同步于所發(fā)出的SD命令,緩沖存儲器34d臨時保存從作為存儲設備的SD存儲卡15加載的數(shù)據(jù),并將該數(shù)據(jù)傳輸?shù)较到y(tǒng)存儲器13上由系統(tǒng)地址控制器 34a所指定的位置。通過這種方式,緩沖存儲器34b在系統(tǒng)存儲器13 (其操作于不同頻率上)與存儲卡15或SDIO卡16之間傳遞數(shù)據(jù)。
圖5A和圖5B示出了從SD主機控制器14發(fā)出的命令的例子,以及從SD存儲卡15 輸出的響應的例子。圖5A示出了命令示例,而圖5B示出了響應示例。圖5A中示出的命令分組包括命令編號51、自變量52、通過該自變量所確定的附加信息53,以及諸如CRC這樣的錯誤檢測信息54。一比特重傳標志52a,例如,被分配為該自變量的一部分。當重傳標志為“0”時,它指示初始生成的命令。當重傳標記為“1”時,它指示重傳的命令,所述重傳的命令是與初始生成的命令相同的命令。圖5B所示的響應分組包括錯誤狀態(tài)信息55、附加信息56,以及諸如CRC這樣的錯誤檢測信息57。錯誤狀態(tài)信息55是當接收到響應時的錯誤信息。盡管錯誤也發(fā)生在未能接收到響應時,然而該錯誤被SD主機控制器14的計時器35檢測為超時錯誤。計時器通過特定時間或特定時鐘計數(shù)來控制對超時的檢測。下面將解釋上述配置中SD主機控制器14和SD存儲卡15的命令和響應。圖6示出了 SD主機控制器14的命令發(fā)布流程。當初始發(fā)出命令時,SD主機控制器14在自變量52中的重傳標志52a被清零的狀態(tài)下(即,在其中設置了“0”的狀態(tài)下)生成該命令,并且將該命令傳送到例如作為設備的 SD 存儲卡 15 (Sll)。在生成該命令之后,SD主機控制器14等待來自SD存儲卡15的響應(S12)。也就是說,在生成該命令之后,SD主機控制器14等待響應,并且如果在計時器35中預設的限定時間內未能接收到任何響應,則確定是否發(fā)生了超時(S12)。通過使得響應超時短于數(shù)據(jù)超時,可以減少當未能接收到任何響應時的損失時間。如果在超時之前接收到響應(S13),則SD主機控制器14基于該響應中所含的錯誤狀態(tài)信息55來確定是否存在錯誤(S14)。如果沒有錯誤,則SD主機控制器14確定操作是正常的。因此,可以(在例如該命令是數(shù)據(jù)傳輸命令時)開始數(shù)據(jù)傳輸。在步驟S14中,如果響應中所含的錯誤狀態(tài)信息55指示了錯誤,則主機將其解釋為命令傳輸錯誤,并且確定命令發(fā)布計時或者命令自變量是錯誤的。該錯誤不是由噪聲引起的錯誤,并且需要主機程序的糾正。另一方面,如果在步驟S12中檢測到響應的超時,則SD主機控制器14設置“1”作為該命令的自變量52中的重傳標志52a,并且發(fā)出與前一命令相同的命令(S15)。當重傳該命令時,SD主機控制器14再次等待來自SD存儲卡15的響應(S16)。如果可以在計時器35中所設置的限定時間內接收到響應(S17),則SD主機控制器14基于錯誤狀態(tài)信息55來確定是否存在錯誤(S18)。如果沒有錯誤,則SD主機控制器14確定操作是正常的。如果在步驟S16中檢測到響應的超時,則SD主機控制器14將此視為命令傳輸錯誤。如上所述,如果諸如SD存儲卡15這樣的設備無法識別初始發(fā)出的命令或者SD主機控制器14因為噪聲之類而無法接收到響應,則有可能設置重傳標志52a并且重新發(fā)出與前一命令具有相同內容的命令。這使得在諸如SD存儲卡15這樣的設備無法識別命令或者 SD主機控制器14因為噪聲之類而無法接收到響應時有可能免除錯誤。圖7示出了設備的命令處理流程的例子。
當接收到命令時(S21),諸如SD存儲卡15這樣的設備確定該命令中是否發(fā)生了 CRC錯誤(S22)。如果已經發(fā)生了 CRC錯誤,則無法指定命令編號,所以設備將該命令作為無法識別的命令而忽略,并且不返回響應。因此,在該情況下,SD主機控制器14的計時器 35在經過了限定時間之后輸出超時錯誤。另一方面,如果確定CRC是正常的,則該設備檢查該命令的自變量52中所含的重傳標志52a的狀態(tài)(S23)。也就是說,該設備確定重傳標志是否為“ 1”。當SD主機控制器 14初始發(fā)出命令時,重傳標志被重置為“0”。如果重傳標志為“0”,則該過程進展到正常的命令處理流程,并且該設備確定所接收到的命令是否是可執(zhí)行的(S26)。也就是說,命令是否可執(zhí)行是基于命令編號和設備的狀態(tài)來確定的。如果確定命令是不可執(zhí)行的,則該設備終止該過程而不向SD主機控制器14 返回任何響應。在這種情況下,SD主機控制器14甚至在經過了計時器35中所預設的時間之后也無法從該設備接收到任何響應,因此計時器35輸出超時錯誤。另一方面,如果在步驟S26中確定命令是可執(zhí)行的,則該設備確定自變量是否正確(S27)。如果確定自變量是正確的,則該設備向SD主機控制器14返回正常響應(S28), 并執(zhí)行命令(S29)。如果在步驟S27中自變量不正確,則該設備向SD主機控制器14返回錯誤響應 (S30)。然而,當需要長時間來檢查自變量是否正確時,也有可能返回正常響應而不等待檢查結果。當通過錯誤的自變量返回正常響應時,有可能因為發(fā)生了另一錯誤因素(諸如存儲器訪問錯誤)而告知自變量中的錯誤。自變量中的錯誤不是該實施例中命令重傳的對象,主機驅動器應當設置正確的自變量。此外,如果在步驟S23中重傳標志為“1”,這表明設備無法識別初始(先前緊接的)命令,或者設備返回了對初始命令的響應但SD主機控制器14無法正確地接收到該響應。如果重傳標志為“1”,則該設備檢查命令是否正被執(zhí)行(S24)。也就是說,如果在步驟 S28中該設備返回了對初始命令的響應但SD主機控制器14無法正確地接收到該響應,則有可能初始命令正被執(zhí)行,因為它被正確地識別。因此,檢查設備是否正在執(zhí)行初始命令。如果命令正被執(zhí)行,則該設備繼續(xù)正被執(zhí)行的處理,并向SD控制器14返回正常響應(S25)。如果在步驟S24中確定設備沒有在執(zhí)行命令,則控制進展到步驟S26,并且上述操作被執(zhí)行。如果對重傳的命令檢測到響應錯誤(當自變量不恰當時)或響應超時,則SD主機控制器14向CPU 12生成中斷,并通知它錯誤的發(fā)生。在上面提到的實施例中,重傳標志52a是在命令的自變量52中形成的。如果響應于初始命令在設備中發(fā)生錯誤,則SD主機控制器14在重傳標志中設置“1”,并且重傳與初始命令相同的命令。如果重傳標志為“0”,或者如果重傳標志為“1”并且沒有在執(zhí)行對應于初始命令的處理,則該設備確定命令處理是否是可執(zhí)行的。如果命令處理是可執(zhí)行的,則該設備執(zhí)行命令處理。如上所述,使用了可發(fā)出兩次相同命令的流程。因此,即使在設備無法識別初始命令或者SD主機控制器14無法接收到來自設備的任何響應時,也可以通過重傳該命令來消除錯誤。這使得有可能避免CPU 12的中斷,并且提高數(shù)據(jù)傳輸效率,因為不需要中斷數(shù)據(jù)傳輸。
另外,設備可以通過檢查重傳標志的內容來確定所傳送的命令是初始命令還是重傳的命令。此外,如果命令是重傳的命令,則設備確定是否正在根據(jù)初始命令來執(zhí)行處理, 并且如果正在執(zhí)行處理,則繼續(xù)操作。這使得有可能通過防止中斷數(shù)據(jù)傳輸來防止降低數(shù)據(jù)傳輸效率,并且防止重新執(zhí)行該命令,從而提高命令處理速度。相應地,即使在執(zhí)行ADMA 34期間因為噪聲而發(fā)生了比特錯誤時,也可以在沒有中斷的情況下執(zhí)行對ADMA 34的操作。當ADMA 34正在以例如約3Gbps來執(zhí)行高速數(shù)據(jù)傳輸時,可能以每幾秒鐘一比特的比率發(fā)生比特錯誤。然而,該實施例可以執(zhí)行數(shù)據(jù)傳輸,而不被重傳命令中斷數(shù)據(jù)傳輸, 由此增加數(shù)據(jù)傳輸速率。同樣,根據(jù)該實施例,只需要在命令重傳中重傳相同的命令。這促進了通過硬件來執(zhí)行操作,并且允許ADMA在不使用任何主機驅動器的情況下重傳命令。要注意,在以上說明中,重傳標志具有一個比特,但實施例不限于此。例如,通過由計數(shù)器或多個比特來形成重傳標志,可以多次重傳命令。此外,已在上述實施例中解釋了使用ADMA的數(shù)據(jù)傳輸。然而,實施例不限于此,也可以使用另一種傳輸方法。在該情況中,如果在命令的傳輸期間發(fā)生錯誤,則僅僅有必要重傳與上述相同的命令,并且通過眾所周知的方法來重傳數(shù)據(jù)。盡管已描述了特定實施例,但是這些實施例僅通過示例方式予以呈現(xiàn),而不旨在限制本發(fā)明的范圍。事實上,此處描述的新穎的實施例可以通過多種其它形式來體現(xiàn);此外,在不背離本發(fā)明精神的情況下,可以在此處描述的實施例的形式上作出各種省略、替換和變化。所附權利要求及其等同物旨在涵蓋落入本發(fā)明范圍和精神內的這種形式或修改。
權利要求
1.一種設備,其包括傳輸單元,其由在自變量中具有重傳標志的命令來控制,并且在限定時間內傳送對所接收到的命令的響應;以及錯誤檢測單元,其檢測比特錯誤,其中,如果所述命令是不可識別或不可執(zhí)行的,則所述設備通過不返回響應來指示沒有執(zhí)行所述命令;如果所述命令是可識別的、所述命令的自變量中所含的重傳標志被設置并且所述命令正在被執(zhí)行,則所述設備通過返回正常響應來指示繼續(xù)進行正被執(zhí)行的處理;如果所述命令是可識別的、所述重傳標志被設置并且所述命令不是正在被執(zhí)行,或者如果所述命令是可識別的并且所述重傳標志未被設置而所述命令能夠被執(zhí)行,則所述設備通過返回正常響應來指示所述命令被執(zhí)行;并且如果所述命令無法被執(zhí)行,則所述設備通過返回錯誤響應來指示所述命令無法被執(zhí)行。
2.根據(jù)權利要求1所述的設備,其中,所述設備是存儲設備。
3.根據(jù)權利要求1所述的設備,其中,所述設備是I/O設備。
4.一種主機控制器,其包括命令生成單元,其生成在自變量中具有重傳標志的命令,所述命令生成單元向設備傳送所生成的命令;以及檢測器,其被配置以便如果在限定時間內無法識別來自所述設備的響應,則檢測到超時,其中,當傳送初始命令時,所述主機控制器通過對所述重傳標志進行清零來傳送命令, 如果所述檢測器檢測到超時,則所述主機控制器設置所述重傳標志并且向所述設備重傳與所述初始命令相同的命令,并且如果接收到與所述初始命令和重傳的命令之一相對應的正常響應,則所述主機控制器識別出所述命令被正確地執(zhí)行,并且如果所述檢測器檢測到與重傳的命令相對應的超時,則所述主機控制器通過中斷來通知CPU,所述中斷指示即使所述命令被重傳,也無法執(zhí)行所述命令。
5.根據(jù)權利要求4所述的主機控制器,其進一步包括連接到系統(tǒng)存儲器和所述設備的直接存儲訪問(DMA)控制器。
6.根據(jù)權利要求5所述的主機控制器,其中,所述DMA控制器包括連接到所述系統(tǒng)存儲器的系統(tǒng)地址控制器,所述系統(tǒng)地址控制器接收來自所述系統(tǒng)存儲器的描述符;連接到所述系統(tǒng)地址控制器的命令控制器;以及連接到所述系統(tǒng)存儲器和所述設備的數(shù)據(jù)緩沖器。
7.一種系統(tǒng),其包括 主機控制器,其生成在自變量中具有重傳標志的命令,并且傳送所生成的命令;以及接收來自所述主機控制器的命令的設備,如果所述命令是可識別的,則所述設備在限定時間內向所述主機控制器返回響應并執(zhí)行所述命令,并且如果所述命令是不可識別或不可執(zhí)行的,則所述設備通過不返回響應來指示所述命令沒有被執(zhí)行,所述主機控制器進一步包括檢測器,如果在限定時間內無法識別來自所述設備的響應,則所述檢測器檢測到超時,當傳送初始命令時,所述主機控制器通過對所述重傳標志進行清零來傳送所述命令,如果所述檢測器檢測到超時,則所述主機控制器設置所述重傳標志并且向所述設備重傳與所述初始命令相同的命令,并且如果接收到與所述初始命令和重傳的命令之一相對應的正常響應,則所述主機控制器識別出所述命令被正確地執(zhí)行,并且如果所述檢測器檢測到與重傳的命令相對應的超時,則所述主機控制器通過中斷來通知 CPU,所述中斷指示S卩使所述命令被重傳,也無法執(zhí)行所述命令。
8.根據(jù)權利要求7所述的系統(tǒng),其中,所述重傳標志包括至少一個比特。
9.根據(jù)權利要求7所述的系統(tǒng),其中所述主機控制器包括直接存儲訪問(DMA)控制器,并且所述DMA控制器基于系統(tǒng)存儲器中所存儲的描述符的描述來傳輸數(shù)據(jù)。
10.根據(jù)權利要求9所述的系統(tǒng),其中,所述DMA控制器包括連接到所述系統(tǒng)存儲器的系統(tǒng)地址控制器,所述系統(tǒng)地址控制器接收來自所述系統(tǒng)存儲器的描述符;連接到所述系統(tǒng)地址控制器的命令控制器;以及連接到所述系統(tǒng)存儲器和所述設備的數(shù)據(jù)緩沖器。
11.根據(jù)權利要求7所述的系統(tǒng),其中,所述設備是存儲設備。
12.根據(jù)權利要求7所述的系統(tǒng),其中,所述設備是I/O設備。
全文摘要
本發(fā)明提供了一種存儲設備、主機控制器和存儲系統(tǒng)。根據(jù)一個實施例,主機控制器具有命令生成器和檢測器。所述命令生成器生成在自變量中具有重傳標志的命令,并且向存儲設備傳送所生成的命令。如果在限定時間內無法識別來自所述存儲設備的響應,則所述檢測器檢測到超時。當傳送初始命令時,所述主機控制器對所述重傳標志進行清零并且傳送所述命令。如果所述檢測器檢測到超時,則所述主機控制器設置所述重傳標志,并且向所述設備重傳與所述初始命令相同的命令。如果接收到與所述初始命令或重傳的命令相對應的正常響應,則所述主機控制器識別出所述命令被正確地執(zhí)行。
文檔編號G06F13/28GK102436430SQ20111006631
公開日2012年5月2日 申請日期2011年3月18日 優(yōu)先權日2010年9月29日
發(fā)明者藤本曜久 申請人:株式會社 東芝