專(zhuān)利名稱(chēng):存儲(chǔ)器系統(tǒng)、主機(jī)控制器以及dma的控制方法
技術(shù)領(lǐng)域:
本發(fā)明涉及適用于例如安全數(shù)字(SD )卡、并具有高級(jí)直接存儲(chǔ)器存取(ADMA)的主機(jī)控制器、存儲(chǔ)器系統(tǒng)以及DMA的控制方法。
背景技術(shù):
近來(lái),SD卡例如SD存儲(chǔ)卡在作為主機(jī)設(shè)備的便攜電話(huà)、數(shù)碼相機(jī)等中廣泛使用。 該SD卡經(jīng)由主機(jī)控制器與主機(jī)設(shè)備連接,通過(guò)主機(jī)控制器控制主機(jī)設(shè)備與SD存儲(chǔ)卡之間的數(shù)據(jù)傳送。設(shè)置于主機(jī)設(shè)備的系統(tǒng)存儲(chǔ)器通過(guò)分頁(yè)(paging)來(lái)管理。因此,系統(tǒng)存儲(chǔ)器上的數(shù)據(jù)以頁(yè)為單位被斷片地管理。為了對(duì)存儲(chǔ)卡高效地進(jìn)行數(shù)據(jù)的讀/寫(xiě),使主機(jī)控制器具有DMA,并且使DMA能夠進(jìn)行以頁(yè)為單位管理的數(shù)據(jù)傳送。即,通過(guò)使用作為數(shù)據(jù)傳送列表的描述符,能夠?qū)υ谙到y(tǒng)存儲(chǔ)器上斷片化了的數(shù)據(jù)進(jìn)行DMA傳送。但是,以往的DMA為了在頁(yè)的邊界處生成新的系統(tǒng)地址而產(chǎn)生了中斷。因此,打亂了 CPU的操作。為了解決該問(wèn)題而開(kāi)發(fā)了 ADMA。ADMA具有對(duì)應(yīng)于SD卡的一個(gè)讀/寫(xiě)命令、通過(guò)分頁(yè)對(duì)斷片地配置在系統(tǒng)存儲(chǔ)器上的數(shù)據(jù)區(qū)域進(jìn)行數(shù)據(jù)傳送的能力。因此,ADMA通過(guò)讀入系統(tǒng)存儲(chǔ)器上的描述符,從而可以沒(méi)有CPU中斷地控制主機(jī)控制器與系統(tǒng)存儲(chǔ)器之間的數(shù)據(jù)傳送。主機(jī)驅(qū)動(dòng)器通過(guò)設(shè)定主機(jī)控制器內(nèi)的寄存器組,來(lái)控制對(duì)存儲(chǔ)卡的命令的發(fā)布,控制主機(jī)控制器與存儲(chǔ)卡之間的數(shù)據(jù)傳送,并使用對(duì)CPU的中斷。如以往那樣,在總線(xiàn)性能低的情況下,使用這樣的方法沒(méi)有問(wèn)題。但是,近來(lái)隨著總線(xiàn)性能的提高、高速數(shù)據(jù)傳送成為可能,存在主機(jī)驅(qū)動(dòng)器的處理出現(xiàn)開(kāi)銷(xiāo)(overhead)這樣的問(wèn)題。因?yàn)榇鎯?chǔ)卡的區(qū)域不一定總是連續(xù)使用的,所以需要分割為多個(gè)存儲(chǔ)器命令??刂浦鳈C(jī)驅(qū)動(dòng)器向存儲(chǔ)卡發(fā)布命令的方式需要在數(shù)據(jù)傳送過(guò)程中使主機(jī)CPU產(chǎn)生中斷,從而執(zhí)行主機(jī)驅(qū)動(dòng)器,直到響應(yīng)中斷為止花費(fèi)了一定程度的時(shí)間。因此,即使使用高速總線(xiàn)也存在由于驅(qū)動(dòng)器處理的等待時(shí)間影響而使性能降低這樣的問(wèn)題。因此,通過(guò)能夠利用DMA處理在數(shù)據(jù)傳送中需要主機(jī)驅(qū)動(dòng)器處理的部分,可望高效地實(shí)施數(shù)據(jù)傳送。
發(fā)明內(nèi)容
本發(fā)明的實(shí)施方式提供了能夠高效地實(shí)施數(shù)據(jù)傳送的主機(jī)控制器、存儲(chǔ)器系統(tǒng)以及DMA的控制方法。一般地,根據(jù)一個(gè)實(shí)施例,存儲(chǔ)器系統(tǒng)具有主機(jī)控制器和DMA電路。主機(jī)控制器具有控制對(duì)設(shè)備的命令發(fā)布的寄存器組、和訪(fǎng)問(wèn)系統(tǒng)存儲(chǔ)器的直接存儲(chǔ)器存取(DMA)電路, 控制系統(tǒng)存儲(chǔ)器以及存儲(chǔ)設(shè)備之間的傳送。第一描述符至第四描述符存儲(chǔ)在所述系統(tǒng)存儲(chǔ)器上。第一描述符包括表示多個(gè)第二描述符的多個(gè)指針的集合。所述多個(gè)第二描述符的每個(gè)包括第三描述符和第四描述符。所述第三描述符包括作為經(jīng)由所述主機(jī)控制器的所述寄存器組對(duì)所述存儲(chǔ)設(shè)備的命令發(fā)布所需要的信息的命令序號(hào)、命令操作模式、參數(shù),以及作為數(shù)據(jù)傳送所需要的信息的塊長(zhǎng)、塊數(shù)的信息。所述第四描述符包括配置在所述系統(tǒng)存儲(chǔ)器上的多個(gè)數(shù)據(jù)的地址和大小的信息。由本提案改良的改良版ADMA電路將所述第一描述符的開(kāi)頭作為起點(diǎn)而將構(gòu)成所述第二描述符的所述第三描述符的內(nèi)容設(shè)定于所述寄存器組中,按照所述第四描述符的內(nèi)容從所述系統(tǒng)存儲(chǔ)器讀入并傳送數(shù)據(jù)。根據(jù)本發(fā)明的實(shí)施方式,能夠提供可以高效地實(shí)施數(shù)據(jù)傳送的主機(jī)控制器、存儲(chǔ)器系統(tǒng)以及DMA的控制方法。
圖1是概略地表示實(shí)施方式的存儲(chǔ)器系統(tǒng)的構(gòu)成圖。圖2是概略地表示系統(tǒng)存儲(chǔ)器和存儲(chǔ)卡的存儲(chǔ)映射的圖。圖3是表示實(shí)施方式的描述符的構(gòu)造的圖。圖4是概略地表示圖1所示的ADMA的構(gòu)成圖。圖5是表示ADMA的操作的流程圖。
具體實(shí)施例方式以下,參照附圖對(duì)實(shí)施方式進(jìn)行說(shuō)明。以下說(shuō)明的ADMA表示由本提案改良的改良版ADMA。圖1概略地表示本實(shí)施方式的存儲(chǔ)器系統(tǒng)。本實(shí)施方式通過(guò)擴(kuò)展使系統(tǒng)存儲(chǔ)器的數(shù)據(jù)傳送為可能的描述符,在DMA傳送中能夠由主機(jī)控制器發(fā)布多條SD命令,從而降低由主機(jī)驅(qū)動(dòng)器的處理引起的開(kāi)銷(xiāo)。圖1所示的系統(tǒng)控制器11控制與CPU 12、系統(tǒng)存儲(chǔ)器13以及SD主機(jī)控制器14 的接口。系統(tǒng)存儲(chǔ)器13存儲(chǔ)主機(jī)驅(qū)動(dòng)器21、描述符表22以及數(shù)據(jù)23。在系統(tǒng)存儲(chǔ)器13 上通過(guò)操作系統(tǒng)(OS)確保用于存儲(chǔ)這些主機(jī)驅(qū)動(dòng)器21、描述符表22以及數(shù)據(jù)23所需要的區(qū)域。主機(jī)驅(qū)動(dòng)器21例如是SD主機(jī)控制器14用的OS固有的驅(qū)動(dòng)器,由CPU 12來(lái)執(zhí)行。 主機(jī)驅(qū)動(dòng)器21在執(zhí)行后述的ADMA之前生成描述符表22。該描述符表22是將系統(tǒng)存儲(chǔ)器 13與SD卡之間的數(shù)據(jù)傳送所需要的信息制成列表(list)所得到的,按SD主機(jī)控制器14 能夠解析的格式來(lái)描述。對(duì)描述符表22的構(gòu)造稍后進(jìn)行描述。SD主機(jī)控制器14具有使用SD命令在系統(tǒng)存儲(chǔ)器13與SD卡之間雙向地進(jìn)行數(shù)據(jù)傳送的功能。SD主機(jī)控制器14主要包括系統(tǒng)總線(xiàn)接口(I/F)電路31、存儲(chǔ)卡I/F電路 32、含有多個(gè)寄存器的寄存器組33、ADMA 34、計(jì)時(shí)器35。系統(tǒng)總線(xiàn)I/F電路31通過(guò)系統(tǒng)總線(xiàn)與系統(tǒng)控制器11連接。存儲(chǔ)卡I/F電路32 能夠通過(guò)未圖示的SD總線(xiàn)接口與SD卡、例如SD存儲(chǔ)卡15、SDI0卡16連接。SD總線(xiàn)接口并不限定于以往的4位型,也能夠適用于使用了 LVDS方式的UHS-II等。在UHS-II中命令以包形式進(jìn)行傳送。SD主機(jī)控制器14的寄存器組33被分類(lèi)為例如未圖示的SD命令產(chǎn)生部、響應(yīng)部、緩沖數(shù)據(jù)端口部、主機(jī)控制部、中斷控制部、ADMA部等多個(gè)部分。SD命令的發(fā)布所需要的信息例如命令序號(hào)、命令模式以及變量,和數(shù)據(jù)傳送所需要的信息例如塊長(zhǎng)、塊數(shù)被設(shè)定于寄存器組33的SD命令產(chǎn)生部中。SD命令產(chǎn)生部通過(guò)設(shè)定這些信息來(lái)對(duì)SD卡發(fā)布命令。根據(jù)該命令,從SD卡提供的響應(yīng)由寄存器組33內(nèi)的響應(yīng)部接收。ADMA ;34為不經(jīng)由CPU 12而在SD卡與系統(tǒng)存儲(chǔ)器13之間傳送數(shù)據(jù)的電路。該 ADMA 34按照存儲(chǔ)在系統(tǒng)存儲(chǔ)器13上的描述符表22的內(nèi)容執(zhí)行數(shù)據(jù)傳送。計(jì)時(shí)器35為檢測(cè)超時(shí)錯(cuò)誤的裝置。例如在從讀命令發(fā)布到結(jié)束所設(shè)定的時(shí)間內(nèi)讀命令的操作沒(méi)有完成的情況下,計(jì)數(shù)器35檢測(cè)到超時(shí)錯(cuò)誤。該超時(shí)錯(cuò)誤通過(guò)中斷通知到主機(jī)CPU12,由主機(jī)驅(qū)動(dòng)器來(lái)處理。圖2表示系統(tǒng)存儲(chǔ)器13的分頁(yè)管理和SD物理地址的關(guān)系的例子。系統(tǒng)存儲(chǔ)器13 通過(guò)分頁(yè)例如按每4千字節(jié)(kByte)的小區(qū)域單位來(lái)進(jìn)行管理。從主機(jī)CPU 12執(zhí)行的應(yīng)用程序,通過(guò)由主機(jī)CPU 12管理的分頁(yè)功能,利用邏輯地址訪(fǎng)問(wèn)系統(tǒng)存儲(chǔ)器13。因此,如邏輯地址系統(tǒng)存儲(chǔ)器映射(map)所示,可見(jiàn)數(shù)據(jù)被配置在連續(xù)的地址區(qū)域。但是,在系統(tǒng)存儲(chǔ)器13中實(shí)際存儲(chǔ)的數(shù)據(jù)的位置是任意的,如物理地址系統(tǒng)存儲(chǔ)器映射所示那樣是斷片的。 這些數(shù)據(jù)通過(guò)地址和數(shù)據(jù)長(zhǎng)度(length)來(lái)管理。數(shù)據(jù)長(zhǎng)度是可變的。另外,存儲(chǔ)于系統(tǒng)存儲(chǔ)器13的數(shù)據(jù)的物理地址與邏輯地址的關(guān)系由未圖示的頁(yè)面表來(lái)管理。另一方面,存儲(chǔ)于SD存儲(chǔ)卡15的數(shù)據(jù)以例如512字節(jié) 數(shù)兆字節(jié)的頁(yè)面單位(塊單位)進(jìn)行管理,與系統(tǒng)存儲(chǔ)器13完全獨(dú)立。因此,在使SD存儲(chǔ)卡15存儲(chǔ)系統(tǒng)存儲(chǔ)器13 上的數(shù)據(jù)的情況下,如SD物理地址存儲(chǔ)器映射所示,系統(tǒng)存儲(chǔ)器13上的數(shù)據(jù)通過(guò)與系統(tǒng)存儲(chǔ)器13上不同的大小來(lái)存儲(chǔ)。SD存儲(chǔ)卡15內(nèi)的數(shù)據(jù)被保持在按每條命令所指定的連續(xù)的存儲(chǔ)區(qū)域,具有由命令指定的地址,數(shù)據(jù)長(zhǎng)度是可變的并由別的命令指定。DMA傳送是由物理地址直接訪(fǎng)問(wèn)系統(tǒng)存儲(chǔ)器13。因此,通過(guò)在系統(tǒng)存儲(chǔ)器13上制作作為傳送列表的描述符,能夠執(zhí)行ADMA。圖3表示本實(shí)施方式的描述符。該描述符在系統(tǒng)存儲(chǔ)器13的描述符表22內(nèi)制作。本實(shí)施方式的描述符是擴(kuò)展以往的描述符得到的,通過(guò)分層結(jié)構(gòu)構(gòu)成。通過(guò)使用本實(shí)施方式的描述符,能夠完全由硬件來(lái)執(zhí)行ADMA進(jìn)行的系統(tǒng)存儲(chǔ)器13與SD存儲(chǔ)卡15 之間的數(shù)據(jù)傳送。因此,沒(méi)有必要在數(shù)據(jù)傳送中對(duì)主機(jī)CPU 12進(jìn)行中斷。錯(cuò)誤處理請(qǐng)求由中斷進(jìn)行通知,但因?yàn)榘l(fā)生概率非常小,所以沒(méi)有問(wèn)題。如圖3所示,第一描述符(綜合描述符)包括指向多個(gè)第二描述符(部分描述符) 的指針的集合。各第二描述符(部分描述符)包括第三描述符(SD命令描述符)和第四描述符 (系統(tǒng)存儲(chǔ)器描述符)的對(duì)。第三描述符的內(nèi)容包括用于發(fā)布SD命令的信息。即,第三描述符的內(nèi)容包括例如命令序號(hào)、命令模式、參數(shù),作為數(shù)據(jù)傳送所需要的信息的塊長(zhǎng)、塊數(shù)。命令模式例如表示讀 /寫(xiě)。通過(guò)將該第三描述符寫(xiě)入SD主機(jī)控制器14的寄存器組33中的SD命令產(chǎn)生部,從而發(fā)布一條SD命令。第四描述符(系統(tǒng)存儲(chǔ)器描述符)的內(nèi)容包括表示系統(tǒng)存儲(chǔ)器13上的各數(shù)據(jù)的位置的地址、和表示數(shù)據(jù)長(zhǎng)度的長(zhǎng)度(length),表示以斷片方式配置的多個(gè)數(shù)據(jù)的集合。由于第三描述符與一個(gè)讀/寫(xiě)命令對(duì)應(yīng),能夠指定SD存儲(chǔ)卡的某一個(gè)連續(xù)區(qū)域。在如圖2所示被分割為多個(gè)區(qū)域的情況下,需要對(duì)各個(gè)區(qū)域設(shè)置第三描述符。以達(dá)到與各第三描述符相同的數(shù)據(jù)傳送長(zhǎng)度對(duì)對(duì)應(yīng)的第四描述符進(jìn)行編程。第一至第四描述符分別具有屬性信息Att。各屬性信息Att包含例如用于識(shí)別描述符的種類(lèi)的信息、以及表示描述符的結(jié)束位置的結(jié)束位。另外,第三描述符因?yàn)槠涓袷脚c其他的描述符不同,所以其屬性信息Att可以至少與開(kāi)頭的命令序號(hào)對(duì)應(yīng)設(shè)置,也可以與其他的描述符同樣地對(duì)每行都設(shè)置。圖4表示ADMA 34的概略構(gòu)成。ADMA 34包括系統(tǒng)地址控制部34a、數(shù)據(jù)緩沖器 34b、SD命令控制部34c以及緩沖存儲(chǔ)器34d。系統(tǒng)地址控制部3 管理系統(tǒng)存儲(chǔ)器13的地址。具體而言,管理存儲(chǔ)在系統(tǒng)存儲(chǔ)器13中的第一至第四描述符的讀入。即,系統(tǒng)地址控制部3 首先設(shè)定第一描述符(綜合描述符)的開(kāi)頭地址作為初始值。由此能夠從系統(tǒng)存儲(chǔ)器13讀出第一描述符(綜合描述符)的信息。因?yàn)樵诘谝幻枋龇袑?xiě)入了多個(gè)第二描述符的指針,所以讀入各指針指示的第二描述符的地址,按照該地址讀入第二描述符。即,將作為構(gòu)成第二描述符的第三描述符的SD命令描述符傳送到SD命令控制部34c。進(jìn)而,依次讀入在構(gòu)成第二描述符的第四描述符中描述的數(shù)據(jù)的地址以及數(shù)據(jù)長(zhǎng)度,按照該地址以及數(shù)據(jù)長(zhǎng)度,在存儲(chǔ)器寫(xiě)時(shí)從系統(tǒng)存儲(chǔ)器13讀出數(shù)據(jù),將其傳送到數(shù)據(jù)緩沖器34b。在存儲(chǔ)器讀時(shí)將數(shù)據(jù)從數(shù)據(jù)緩沖器34b傳送到系統(tǒng)存儲(chǔ)器13。為了執(zhí)行這些操作,系統(tǒng)地址控制部3 具有多個(gè)寄存器34a_l 34a_4以及選擇這些寄存器的輸出信號(hào)的多路復(fù)用器(MPX) 34a_5,以保持第一描述符(綜合描述符)的開(kāi)頭地址、第二描述符(部分描述符)的指針、數(shù)據(jù)的地址以及數(shù)據(jù)長(zhǎng)度。SD命令控制部;Mc在SD命令產(chǎn)生部中依次產(chǎn)生用于設(shè)定值的寄存器地址,并且將作為第三描述符的SD命令描述符所包含的寄存器設(shè)定信息依次設(shè)定于主機(jī)控制器14的寄存器組33中的SD命令產(chǎn)生部中。寄存器組33的SD命令產(chǎn)生部在寄存器的設(shè)定完成時(shí)發(fā)布SD命令。在存儲(chǔ)器寫(xiě)的情況下,緩沖存儲(chǔ)器34d讀入由系統(tǒng)地址控制部3 指定的系統(tǒng)存儲(chǔ)器13上的數(shù)據(jù),暫時(shí)保持供給來(lái)的數(shù)據(jù)。數(shù)據(jù)緩沖器34b所保持的數(shù)據(jù)與發(fā)布的SD命令同步地被傳送到SD存儲(chǔ)卡15。另外,在存儲(chǔ)器讀的情況下,緩沖存儲(chǔ)器34d暫時(shí)保持與發(fā)布的SD命令同步地從作為存儲(chǔ)器設(shè)備的SD存儲(chǔ)卡15讀入的數(shù)據(jù),將數(shù)據(jù)傳送到由系統(tǒng)地址控制部3 指定的系統(tǒng)存儲(chǔ)器13上的位置。在上述構(gòu)成中,參照?qǐng)D5對(duì)使用了擴(kuò)展描述符的ADMA 34的操作進(jìn)行說(shuō)明。為了在系統(tǒng)存儲(chǔ)器13與SD存儲(chǔ)卡15之間進(jìn)行數(shù)據(jù)傳送,主機(jī)驅(qū)動(dòng)器21在系統(tǒng)存儲(chǔ)器13上制作圖3所示那樣的擴(kuò)展描述符。第一描述符的開(kāi)頭地址由主機(jī)驅(qū)動(dòng)器21設(shè)定于系統(tǒng)地址控制部34a的寄存器34a_l中。然后,當(dāng)通過(guò)主機(jī)驅(qū)動(dòng)器21啟動(dòng)ADMA 34時(shí),系統(tǒng)地址控制部3 基于寄存器 34a_l所保持的第一描述符的開(kāi)頭地址,讀入第一描述符(綜合描述符)的開(kāi)頭所記載的第二描述符指針(部分描述符指針),將其保持在寄存器34a_2中。(STll)。接著,通過(guò)系統(tǒng)地址控制部3 讀入處于第二描述符指針?biāo)甘镜奈恢玫牡诙枋龇?ST12)。
第二描述符的開(kāi)頭所描述的第三描述符(SD命令描述符)被供給到SD命令控制部34c。SD命令控制部3 將第三描述符所描述的數(shù)據(jù)寫(xiě)入到構(gòu)成SD主機(jī)控制器14的寄存器組33的SD命令產(chǎn)生部中。于是,通過(guò)SD命令產(chǎn)生部對(duì)SD存儲(chǔ)卡15發(fā)布命令(ST13)。接著,通過(guò)系統(tǒng)地址控制部3 讀入第四描述符(系統(tǒng)存儲(chǔ)器描述符)。系統(tǒng)地址控制部3 將第四描述符所描述的地址以及數(shù)據(jù)長(zhǎng)度分別保持在寄存器34a_3 (地址)和寄存器34a_4(長(zhǎng)度)中。在存儲(chǔ)器寫(xiě)的情況下,系統(tǒng)地址控制部3 從系統(tǒng)存儲(chǔ)器13將寄存器34a_3(地址)的地址作為開(kāi)頭地址讀出數(shù)據(jù),并將其傳送到數(shù)據(jù)緩沖器34b。另外, 在存儲(chǔ)器讀的情況下,系統(tǒng)地址控制部3 將寄存器34a_3 (地址)的地址作為開(kāi)頭地址, 將數(shù)據(jù)緩沖器34b的數(shù)據(jù)寫(xiě)入到系統(tǒng)存儲(chǔ)器13中(ST14)。在存儲(chǔ)器寫(xiě)的情況下,在數(shù)據(jù)緩沖器34b內(nèi),從系統(tǒng)存儲(chǔ)器13供給的斷片的數(shù)據(jù)設(shè)為連續(xù)的數(shù)據(jù)。第四描述符(系統(tǒng)存儲(chǔ)器描述符)包括以地址和數(shù)據(jù)長(zhǎng)度的對(duì)構(gòu)成的多個(gè)數(shù)據(jù),ADMA依次重復(fù)這種操作來(lái)進(jìn)行系統(tǒng)存儲(chǔ)器與數(shù)據(jù)緩沖器34b之間的數(shù)據(jù)傳送。然后,ADMA將數(shù)據(jù)緩沖器34b所保持的數(shù)據(jù)傳送到SD存儲(chǔ)卡15 (ST15)。與發(fā)布的命令(讀/寫(xiě)命令)同步地,ADMA訪(fǎng)問(wèn)系統(tǒng)存儲(chǔ)器13上的數(shù)據(jù),經(jīng)由數(shù)據(jù)緩沖器34b在取得同步時(shí)執(zhí)行兩者的數(shù)據(jù)傳送??倲?shù)據(jù)傳送量必須在存儲(chǔ)設(shè)備側(cè)和系統(tǒng)存儲(chǔ)器側(cè)設(shè)定為相同的值。當(dāng)基于一個(gè)第二描述符的數(shù)據(jù)的傳送完成時(shí),判斷全部的第一描述符的執(zhí)行是否結(jié)束(ST16)。其結(jié)果,在全部的第一描述符的執(zhí)行沒(méi)有結(jié)束的情況下,控制移至步驟 ST12,按照第一描述符所描述的部分描述符指針,讀入下一個(gè)第二描述符,執(zhí)行上述的操作 (ST16-ST12)。在各描述符中設(shè)置所述屬性信息Att中的結(jié)束位,通過(guò)該結(jié)束位,能夠指定描述符程序的結(jié)束位置。當(dāng)對(duì)應(yīng)于下一個(gè)第二描述符,第三描述符被設(shè)定于SD主機(jī)控制器14的寄存器時(shí), 發(fā)布SD命令,按照第四描述符對(duì)數(shù)據(jù)進(jìn)行傳送。例如在存儲(chǔ)器寫(xiě)的情況下,在最終數(shù)據(jù)被讀入到數(shù)據(jù)緩沖器34b之后,通過(guò)讀入下一個(gè)第三描述符,在對(duì)系統(tǒng)存儲(chǔ)器的DMA傳送中也能夠發(fā)布下一次傳送的SD命令。在該情況下,因?yàn)榭床坏矫畎l(fā)布時(shí)間,所以進(jìn)一步高速操作成為可能。另一方面,在執(zhí)行了第一描述符所描述的全部?jī)?nèi)容的情況下,SD主機(jī)控制器14產(chǎn)生ADMA完成中斷(ST17)。由此,CPU 12 (主機(jī)驅(qū)動(dòng)器21)能夠得知ADMA的處理正常結(jié)束了。在沒(méi)有發(fā)生錯(cuò)誤的情況下,主機(jī)CPU 12從ADMA的啟動(dòng)到結(jié)束沒(méi)有必要涉及傳送,因此不會(huì)發(fā)生因主機(jī)驅(qū)動(dòng)器引起的性能降低。另外,在數(shù)據(jù)傳送中能夠準(zhǔn)備下一個(gè)描述符,因此,描述符制作時(shí)間不會(huì)影響到傳送性能。主機(jī)驅(qū)動(dòng)器在傳送完成時(shí)指示文件系統(tǒng)更新信息。由此傳送到SD存儲(chǔ)卡的數(shù)據(jù)得以確定。根據(jù)上述實(shí)施方式,為了在系統(tǒng)存儲(chǔ)器13與SD存儲(chǔ)卡15之間進(jìn)行數(shù)據(jù)傳送,通過(guò)主機(jī)驅(qū)動(dòng)器21在系統(tǒng)存儲(chǔ)器13內(nèi)生成擴(kuò)展描述符。該擴(kuò)展描述符包含作為表示第二描述符的位置的指針的集合的第一描述符。在通過(guò)主機(jī)驅(qū)動(dòng)器21啟動(dòng)ADMA 34時(shí),基于第一描述符的開(kāi)頭地址的內(nèi)容依次將第二描述符的內(nèi)容取入ADMA 34中,通過(guò)ADMA 34按照第二描述符所描述的第三、第四描述符的內(nèi)容在系統(tǒng)存儲(chǔ)器13與SD存儲(chǔ)卡15之間執(zhí)行數(shù)據(jù)傳送。因此,主機(jī)驅(qū)動(dòng)器21在由ADMA 34進(jìn)行的數(shù)據(jù)傳送中與數(shù)據(jù)傳送沒(méi)有任何關(guān)系。因此,通過(guò)ADMA 34使得高速的數(shù)據(jù)傳送成為可能。另外,ADMA 34在啟動(dòng)后,通過(guò)將第三描述符設(shè)定于寄存器組33的SD命令產(chǎn)生部中來(lái)產(chǎn)生命令,通過(guò)ADMA 34僅由硬件便能夠執(zhí)行系統(tǒng)存儲(chǔ)器13與存儲(chǔ)卡15之間的數(shù)據(jù)傳送。因此,與通過(guò)主機(jī)驅(qū)動(dòng)器21的情況相比,能夠顯著高速化。進(jìn)而,為了在數(shù)據(jù)傳送中操作主機(jī)驅(qū)動(dòng)器,通常通過(guò)中斷來(lái)啟動(dòng)。因此,如果不能略去中斷響應(yīng)時(shí)間,則會(huì)引起數(shù)據(jù)傳送性能的降低。但是,通過(guò)使用本方式,能夠避免這樣的性能降低。以上,說(shuō)明了某些實(shí)施方式,但是這些實(shí)施方式是作為例子而舉出的,沒(méi)有限定發(fā)明范圍的意圖。這些新的實(shí)施方式,能夠以其他的各種各樣的方式來(lái)實(shí)施,在不脫離發(fā)明的要旨的范圍內(nèi)能夠進(jìn)行各種省略、置換、變更。這些實(shí)施方式及其變形,包含于發(fā)明的范圍或要旨,并且包含于權(quán)利要求所記載的發(fā)明及其同等的范圍內(nèi)。
權(quán)利要求
1.一種存儲(chǔ)器系統(tǒng),包括主機(jī)控制器,其具有控制對(duì)設(shè)備的命令發(fā)布的寄存器組、和訪(fǎng)問(wèn)系統(tǒng)存儲(chǔ)器的直接存儲(chǔ)器存取(DMA)電路,所述主機(jī)控制器控制系統(tǒng)存儲(chǔ)器以及存儲(chǔ)設(shè)備之間的傳送;存儲(chǔ)在所述系統(tǒng)存儲(chǔ)器上的第一描述符,所述第一描述符包括表示多個(gè)第二描述符的多個(gè)指針的集合;構(gòu)成所述多個(gè)第二描述符的每個(gè)的第三描述符,所述第三描述符包括作為經(jīng)由所述主機(jī)控制器的所述寄存器組對(duì)所述存儲(chǔ)設(shè)備的命令發(fā)布所需要的信息的命令序號(hào)、命令操作模式、參數(shù),以及作為數(shù)據(jù)傳送所需要的信息的塊長(zhǎng)、塊數(shù)的信息;以及構(gòu)成所述多個(gè)第二描述符的每個(gè)的第四描述符,所述第四描述符包括配置在所述系統(tǒng)存儲(chǔ)器上的多個(gè)數(shù)據(jù)的地址和大小的信息;所述DMA電路將所述第一描述符的開(kāi)頭作為起點(diǎn)而將構(gòu)成所述第二描述符的所述第三描述符的內(nèi)容設(shè)定于所述寄存器組中,按照所述第四描述符的內(nèi)容傳送所述系統(tǒng)存儲(chǔ)器與所述主機(jī)控制器之間的數(shù)據(jù)。
2.根據(jù)權(quán)利要求1所述的系統(tǒng),其中,所述系統(tǒng)存儲(chǔ)器保持主機(jī)驅(qū)動(dòng)器;所述主機(jī)驅(qū)動(dòng)器制作包含傳送信息的描述符,具有僅指示所述DMA電路的啟動(dòng)的功能,通過(guò)中斷來(lái)再次啟動(dòng),進(jìn)行接下來(lái)的數(shù)據(jù)傳送的啟動(dòng)或錯(cuò)誤處理。
3.根據(jù)權(quán)利要求2所述的系統(tǒng),其中, 所述DMA電路包括系統(tǒng)地址控制部,其控制所述系統(tǒng)存儲(chǔ)器的地址,并讀出所述各描述符; SD命令控制部,其將從所述系統(tǒng)存儲(chǔ)器讀出的所述第三描述符的內(nèi)容設(shè)定于所述主機(jī)控制器的所述寄存器組中;以及數(shù)據(jù)緩沖器,其保持從所述系統(tǒng)存儲(chǔ)器或存儲(chǔ)設(shè)備讀出的數(shù)據(jù)。
4.根據(jù)權(quán)利要求3所述的系統(tǒng),其中,所述主機(jī)控制器在全部訪(fǎng)問(wèn)了所述第一描述符內(nèi)的多個(gè)指針的情況下,產(chǎn)生表示數(shù)據(jù)傳送的結(jié)束的中斷信號(hào)。
5.根據(jù)權(quán)利要求4所述的系統(tǒng),其中,所述第一至第四描述符的每個(gè)具有包含用于識(shí)別描述符的種類(lèi)的信息、以及表示描述符的結(jié)束位置的信息的屬性信息。
6.一種主機(jī)控制器,包括控制對(duì)設(shè)備的命令發(fā)布的寄存器組;和訪(fǎng)問(wèn)系統(tǒng)存儲(chǔ)器的直接存儲(chǔ)器存取(DMA)電路; 所述主機(jī)控制器控制系統(tǒng)存儲(chǔ)器、以及存儲(chǔ)設(shè)備之間的傳送; 所述主機(jī)控制器讀入第一描述符、第三描述符和第四描述符,所述第一描述符存儲(chǔ)在所述系統(tǒng)存儲(chǔ)器上,并且包括表示多個(gè)第二描述符的多個(gè)指針的集合;所述第三描述符構(gòu)成所述多個(gè)第二描述符的每個(gè),并且包括作為經(jīng)由所述主機(jī)控制器的所述寄存器組對(duì)所述存儲(chǔ)設(shè)備的命令發(fā)布所需要的信息的命令序號(hào)、命令操作模式、參數(shù),以及作為數(shù)據(jù)傳送所需要的信息的塊長(zhǎng)、塊數(shù)的信息;所述第四描述符構(gòu)成所述多個(gè)第二描述符的每個(gè),并且包括配置在所述系統(tǒng)存儲(chǔ)器上的多個(gè)數(shù)據(jù)的地址和大小的信息;以及所述DMA電路將所述第一描述符的開(kāi)頭作為起點(diǎn)而將構(gòu)成所述第二描述符的所述第三描述符的內(nèi)容設(shè)定于所述寄存器組中,按照所述第四描述符的內(nèi)容從所述系統(tǒng)存儲(chǔ)器讀入并傳送數(shù)據(jù)。
7.根據(jù)權(quán)利要求6所述的主機(jī)控制器,其中,所述系統(tǒng)存儲(chǔ)器保持主機(jī)驅(qū)動(dòng)器;所述主機(jī)驅(qū)動(dòng)器制作包含傳送信息的描述符,具有僅指示所述DMA電路的啟動(dòng)的功能,通過(guò)中斷來(lái)再次啟動(dòng),進(jìn)行接下來(lái)的數(shù)據(jù)傳送的啟動(dòng)或錯(cuò)誤處理。
8.根據(jù)權(quán)利要求7所述的主機(jī)控制器,其中, 所述DMA電路包括系統(tǒng)地址控制部,其控制所述系統(tǒng)存儲(chǔ)器的地址,并讀出所述各描述符; SD命令控制部,其將從所述系統(tǒng)存儲(chǔ)器讀出的所述第三描述符的內(nèi)容設(shè)定于所述主機(jī)控制器的所述寄存器組中;以及數(shù)據(jù)緩沖器,其保持從所述系統(tǒng)存儲(chǔ)器讀出的數(shù)據(jù)。
9.根據(jù)權(quán)利要求8所述的主機(jī)控制器,其中,所述主機(jī)控制器在全部訪(fǎng)問(wèn)了所述第一描述符內(nèi)的多個(gè)指針的情況下,產(chǎn)生表示數(shù)據(jù)傳送的結(jié)束的中斷信號(hào)。
10.根據(jù)權(quán)利要求9所述的主機(jī)控制器,其中,所述第一至第四描述符的每個(gè)具有包含用于識(shí)別描述符的種類(lèi)的信息、以及表示描述符的結(jié)束位置的信息的屬性信息。
11.一種DMA的控制方法,包括從存儲(chǔ)器讀入在第一描述符所描述的多個(gè)第二描述符指針中記載于開(kāi)頭的第二描述符指針;從所述存儲(chǔ)器讀入由所述讀入的第二描述符指針?biāo)硎镜牡诙枋龇?從所述存儲(chǔ)器讀入在所述第二描述符的開(kāi)頭描述的第三描述符,將第三描述符的內(nèi)容寫(xiě)入寄存器并發(fā)布命令;從所述存儲(chǔ)器讀入第四描述符,在系統(tǒng)存儲(chǔ)器與緩沖器之間傳送由在所述第四描述符描述的地址所表示的數(shù)據(jù);以及重復(fù)上述操作,在全部的數(shù)據(jù)傳送結(jié)束的情況下,產(chǎn)生中斷。
12.根據(jù)權(quán)利要求11所述的方法,其中, 所述DMA由主機(jī)驅(qū)動(dòng)器來(lái)啟動(dòng)。
13.根據(jù)權(quán)利要求11所述的方法,其中, 所述中斷由包括所述DMA的控制器來(lái)產(chǎn)生。
14.根據(jù)權(quán)利要求13所述的方法,其中,所述第一至第四描述符的每個(gè)具有包含用于識(shí)別描述符的種類(lèi)的信息、以及表示描述符的結(jié)束位置的信息的屬性信息。
全文摘要
本發(fā)明公開(kāi)了存儲(chǔ)器系統(tǒng)、主機(jī)控制器以及DMA的控制方法。根據(jù)一個(gè)實(shí)施方式,主機(jī)控制器具有發(fā)布命令的寄存器組以及直接存儲(chǔ)器存取(DMA),對(duì)系統(tǒng)存儲(chǔ)器以及存儲(chǔ)設(shè)備進(jìn)行訪(fǎng)問(wèn)。第一至第四描述符被存儲(chǔ)在系統(tǒng)存儲(chǔ)器上,為表示多個(gè)第二描述符的多個(gè)指針的集合,第三、第四描述符構(gòu)成多個(gè)第二描述符,包含作為存儲(chǔ)設(shè)備的命令發(fā)布所需要的信息的命令序號(hào)、命令操作模式、參數(shù)、塊長(zhǎng)、塊數(shù)以及多個(gè)數(shù)據(jù)的地址和大小的信息。DMA將第一描述符的開(kāi)頭作為起點(diǎn)而將構(gòu)成第二描述符的第三描述符的內(nèi)容設(shè)定于寄存器組中,按照第四描述符的內(nèi)容在系統(tǒng)存儲(chǔ)器與主機(jī)控制器之間傳送數(shù)據(jù)。
文檔編號(hào)G06F13/28GK102411549SQ20111006631
公開(kāi)日2012年4月11日 申請(qǐng)日期2011年3月18日 優(yōu)先權(quán)日2010年9月22日
發(fā)明者藤本曜久 申請(qǐng)人:株式會(huì)社東芝