存儲卡控制器、存儲卡驅動設備、以及電腦程式的製作方法
2023-05-10 22:51:31 2
專利名稱:存儲卡控制器、存儲卡驅動設備、以及電腦程式的製作方法
技術領域:
本發明涉及存儲卡驅動設備,其控制主設備和一個或多個存儲卡之間的數據傳輸,並尤其涉及改進控制大規模數據傳輸的技術。
背景技術:
在專業視頻設備領域中,要處理大量的高質量運動圖像(movingpicture)數據。有鑑於此,在存儲卡被用作專業視頻設備的記錄介質的情況下,推薦使用能夠容納多個存儲卡的存儲卡驅動設備。日本專利申請公開No.2002-189992記載了關於通過安裝多個存儲卡來構造存儲卡陣列的常規技術。
下列描述涉及採用SD存儲卡(下文中稱為「SD卡」)作為存儲卡的PC卡型存儲卡驅動設備。
為了使用PC卡型存儲卡驅動設備,該存儲卡驅動設備經由卡總線而連接到視頻設備(「主設備」),並且由主設備使用ATA命令利用與訪問普通PC卡相同的過程來請求讀取和寫入數據(下文中,統稱為「數據傳輸」)。通常,使用ATA命令的控制指示了從中開始數據傳輸的頭邏輯地址和要傳輸的扇區數量。
另一方面,當向與數據傳輸有關的SD卡發指令時,需要使用SD命令。通過使用SD命令進行控制,從發出開始數據傳輸的SD命令(下文中稱為「傳輸開始命令」)開始直到發出結束數據傳輸的SD命令(下文中稱為「傳輸結束命令」)為止,其間連續地執行數據傳輸。
設備接口的這種差異要求存儲卡驅動設備以圖8所示的方式控制SD卡的操作。
圖8是示出PC卡型存儲卡驅動設備從存儲卡讀取數據的示例性操作的時序圖。在層(a)示出的定時A[1]、A[2]、A[3]和A[4],主設備向存儲卡驅動設備發出ATA命令。作為響應,如層(c)所示,在定時S[1]、S[2]、S[3]和S[4],存儲卡驅動設備解釋ATA命令,並向SD卡聲明(assert)傳輸開始命令和從中開始讀操作的邏輯地址。
一接收到傳輸開始命令,在層(e)所示的定時(加黑部分),SD卡將頭邏輯地址轉換為物理地址,之後,在層(f)所示的定時,從所轉換的物理地址讀取記錄在內部非易失性存儲器中的數據並傳輸所讀取的數據。
當從SD卡傳輸了由ATA命令所請求的數據量時,在層(c)的定時(加黑部分),存儲卡驅動設備向SD卡發出傳輸結束命令以便終止SD卡的讀操作,並且如層(b)所示向主設備發出傳輸結束中斷。因而能夠執行主設備和SD卡之間的同步數據傳輸。
作為每當從主設備發出了請求進行數據傳輸的ATA命令時存儲卡驅動設備通過在合適的定時發出傳輸開始和結束命令(SD命令)來控制SD卡的操作的結果,可以與安裝在存儲卡驅動設備中的多個SD卡執行數據傳輸,其中主設備將所述多個SD卡視為一個PC卡。
發明內容
本發明解決的問題然而,因為每當發出ATA命令時,都要求存儲卡驅動設備進行處理以將ATA命令轉換為SD命令以及存儲卡進行處理以將邏輯地址轉換為物理地址,所以與直接從SD卡讀取數據相比引起了額外開銷,其降低了傳輸速率。
附帶地,高質量運動圖像數據的大小可能從幾百兆字節到幾十億字節。實質上,通過使用SD命令進行控制,當讀取寫入到存儲卡的連續區域中的大規模數據時,存儲卡驅動設備只需發出指定頭地址的傳輸開始命令,而當讀取到數據的結尾時,只需發出傳輸結束命令。
然而,通過使用ATA命令進行控制,在任何一次可傳輸的數據被限制為最大64千字節。因而,在從SD卡讀取大規模數據(諸如高質量運動圖像數據)時,主設備竟要重複發出即使不上千也是成百的ATA命令。即使多個ATA命令請求的數據傳輸涉及存儲卡的一個連續區域,為了同步主設備和存儲卡的讀操作,每當讀取了64千字節的數據時,就要求存儲卡驅動設備終止存儲卡中的數據傳輸操作。
結果,與直接從SD卡讀取數據相比,當讀取大規模數據時額外開銷對傳輸速率的影響是很顯著的。尤其在多個存儲卡被排成陣列並且並行地執行數據讀取的情況下,隨著被排成陣列的存儲卡數量的增加,響應於單個ATA命令而從每個存儲卡讀取的數據長度進一步減小,加劇了額外開銷對傳輸速率的影響。
本發明的目的是提供一種存儲卡控制器、一種存儲卡驅動設備和一種電腦程式,其能夠在主設備使用具有短的可讀數據長度的命令來指示讀取大規模數據的情況下,抑制額外開銷對讀取傳輸速率的影響,同時同步主設備和一個或多個存儲卡。
解決問題的手段為了達到上述目的,屬於本發明的一種存儲卡控制器控制主設備和存儲卡之間的數據傳輸,所述主設備通過發出指定數據量的命令來請求數據傳輸,所述存儲卡從接收到傳輸開始指令開始執行傳輸操作直到接收到傳輸結束指令。所述存儲卡控制器包括接收單元,用於從主設備順序地接收命令;暫停單元,用於當作為傳輸操作的結果所傳輸的數據量達到了由第n個請求數據傳輸的命令所指定的數據量時,使存儲卡暫停傳輸操作;以及恢復單元,用於當傳輸操作處於暫停狀態時如果接收到的第n個命令的下一個命令請求關於與第n個命令所請求的數據傳輸的結束地址連續的地址的數據傳輸,則使存儲卡恢復暫停的傳輸操作。
本發明的效果根據該結構,由於在連續地從主設備發出請求關於存儲卡的連續區域的數據傳輸的命令的情況下,不需要每當接收到命令就發出傳輸開始指令,因此屬於本發明的存儲卡控制器能夠減小代表額外開銷的處理的量,這種處理諸如由存儲卡控制器來轉換命令和由存儲卡來轉換地址。另一方面,從響應於一個命令的數據傳輸完成開始直到主設備發出下一個命令為止,存儲卡的數據傳輸被暫停,這一事實意味著主設備和存儲卡之間的數據傳輸的同步沒有丟失。
換句話說,可以抑制代表額外開銷的處理對傳輸速率的影響,同時同步主設備和存儲卡。
這裡,數據傳輸可以是從存儲卡讀取數據,並且存儲卡的傳輸操作可以是數據讀操作。
由於當從存儲卡讀取數據時發給存儲卡的傳輸開始指令的數量被減少了,該結構能夠抑制額外開銷對傳輸速率的影響,同時同步主設備和存儲卡。
這裡,數據讀操作的暫停和恢復可以分別通過暫停和恢復向存儲卡提供時鐘信號來控制。
該結構允許存儲卡的讀操作被迅速暫停和恢復。因此能夠抑制暫停和恢復讀操作的處理對傳輸速率的不利影響。
這裡,該存儲卡控制器還可以包括指令發出單元,其用於分別通過向存儲卡發出傳輸開始指令和傳輸結束指令來控制數據讀操作的開始和結束。如果在數據讀操作處於暫停狀態的情況下經過了預定時間段,則恢復單元通過恢復提供時鐘信號來使存儲卡取消暫停狀態,並且指令發出單元可以通過發出傳輸結束指令來使存儲卡終止數據讀操作。
假設當讀取記錄在存儲卡的連續區域中的大規模數據時,將頻繁地從主設備發出命令。這種情況是,假定如果出現了在讀取大規模數據完成後的預定時間段或更長時間內沒有命令從主設備發出的情況,則因此存儲卡控制器使存儲卡終止暫停的讀操作。假設讀操作已經被終止,那麼隨後發出的命令(其不大可能與第n個命令有連續性)可被迅速地處理。由於讀操作沒有被暫停比預定時間段更長的時間,因此也穩定了存儲卡操作。
這裡,如果隨後的命令不需要訪問存儲卡,則暫停單元可以維持數據讀操作的暫停狀態。
如果在其之後的下一個命令請求關於與響應於第n個命令所執行的數據傳輸的結束地址相連續的地址的數據傳輸,那麼該結構使得發給存儲卡的傳輸開始指令減少,從而能夠抑制額外開銷對傳輸速率的影響。
這裡,該存儲卡控制器還可以包括指令發出單元,其用於分別通過向存儲卡發出傳輸開始指令和傳輸結束指令來控制數據讀操作的開始和結束。如果下一個命令請求數據寫入和數據讀取之一以便從與第n個命令所請求的數據讀取的結束地址不連續的地址讀取數據,則恢復單元可以通過恢復提供時鐘信號來使存儲卡取消數據讀操作的暫停狀態,並且指令發出單元可以在通過發出傳輸結束指令而使存儲卡終止數據讀操作之後,響應於該下一個命令而發出傳輸開始指令。
通過即使在隨後並未發出請求關於與響應於第n個命令所執行的數據傳輸的結束地址相連續的地址的數據傳輸的命令的情況下也僅發出傳輸結束指令,該結構防止了傳輸速率的極大減小。
這裡,數據傳輸可以是將數據寫入到存儲卡,並且存儲卡的傳輸操作可以是數據寫操作。
該結構使得當向存儲卡寫入數據時發給存儲卡的傳輸開始指令被減少,同時還能同步主設備和存儲卡,從而能夠抑制額外開銷對寫傳輸速率的影響。
這裡,數據寫操作的暫停和恢復可以分別通過暫停和恢復對存儲卡提供寫數據來控制。
該結構允許迅速地暫停和恢復存儲卡的寫操作。由此可以抑制暫停和恢復寫操作的處理對傳輸速率的不利影響。
這裡,該存儲卡控制器還可以包括指令發出單元,其用於如果在數據寫操作處於暫停狀態的情況下經過了預定時間段,則通過發出傳輸結束指令來使存儲卡終止該數據寫操作。
假設當向存儲卡的連續區域寫入大規模數據時,從主設備頻繁地發出命令。這種情況是,假定如果出現了在寫入大規模數據完成後的預定時間段或更長時間內沒有命令從主設備發出的情況,則因此存儲卡控制器使存儲卡終止暫停的寫操作。假設寫操作已經被終止,那麼隨後發出的命令(其不大可能與第n個命令有連續性)可被迅速地處理。由於寫操作沒有被暫停比預定時間段更長的時間,因此也穩定了存儲卡操作。
這裡,如果隨後的命令不需要訪問存儲卡,則暫停單元可以維持數據讀操作的暫停狀態。
如果在其之後的下一個命令請求關於與響應於第n個命令所執行的數據傳輸的結束地址相連續的地址的數據傳輸,那麼該結構使得發給存儲卡的傳輸開始指令減少,從而能夠抑制額外開銷對傳輸速率的影響。
這裡,該存儲卡控制器還可以包括指令發出單元,其用於如果下一個命令請求數據讀取和數據寫入之一以便將數據寫入到與第n個命令所請求的數據寫入的結束地址不連續的地址,則在通過發出傳輸結束指令而使存儲卡終止數據寫操作之後,響應於該下一個命令而向存儲卡發出傳輸開始指令。
通過即使在隨後並未發出請求關於與響應於第n個命令所執行的數據傳輸的結束地址相連續的地址的數據傳輸的命令的情況下也僅發出傳輸結束指令,該結構防止了傳輸速率的極大減小。
為了達到上述目的,屬於本發明的一種存儲卡驅動設備包括如上所述的存儲卡控制器、用於連接到主設備的第一接口、以及用於容納一個或多個存儲卡的第二接口。這裡,該存儲卡控制器基於從第一接口輸入的命令來訪問安裝在第二接口中的一個或多個存儲卡。
根據該結構,由於在連續地從主設備發出請求關於存儲卡的連續區域的數據傳輸的命令的情況下,不需要每當接收到命令就發出傳輸開始指令,因此屬於本發明的存儲卡驅動設備能夠減小代表額外開銷的處理的量,這種處理諸如由存儲卡控制器來轉換命令和由存儲卡來轉換地址。另一方面,從響應於一個命令的數據傳輸完成開始直到主設備發出下一個命令為止,存儲卡的數據傳輸被暫停,這一事實意味著主設備和存儲卡之間的數據傳輸的同步沒有丟失。
換句話說,可以抑制代表額外開銷的處理對傳輸速率的影響,同時同步主設備和存儲卡。
為了達到上述目的,屬於本發明的一種電腦程式是用於存儲卡控制器的,該存儲卡控制器控制主設備和存儲卡之間的數據傳輸,該主設備通過發出指定數據量的命令來請求數據傳輸,該存儲卡從接收到傳輸開始指令時開始執行傳輸操作直到接收到傳輸結束指令。該電腦程式控制存儲卡控制器的處理器來執行以下步驟當作為傳輸操作的結果所傳輸的數據量達到了由第n個請求數據傳輸的命令所指定的數據量時,使存儲卡暫停傳輸操作;以及如果當傳輸操作處於暫停狀態時接收到的第n個命令的下一個命令請求關於與第n個命令所請求的數據傳輸的結束地址連續的地址的數據傳輸,則使存儲卡恢復所暫停的傳輸操作。
根據該結構,在連續地從主設備發出請求關於存儲卡的連續區域的數據傳輸的命令的情況下,屬於本發明的電腦程式能夠實現控制以減小代表額外開銷的處理的量,這種處理諸如由存儲卡控制器來轉換命令和由存儲卡來轉換地址。另一方面,從響應於一個命令的數據傳輸完成開始直到主設備發出下一個命令為止,該電腦程式實現控制以暫停存儲卡的數據傳輸,這一事實意味著主設備和存儲卡之間的數據傳輸的同步沒有丟失。
換句話說,可以抑制代表額外開銷的處理對傳輸速率的影響,同時同步主設備和存儲卡。
圖1示出了使用屬於本發明的存儲卡驅動設備的視頻/播放系統;圖2示出了組成屬於本發明的視頻/播放系統的設備的內部結構;圖3示出了存儲卡驅動器200的詳細結構;圖4是示出屬於本實施例的存儲卡控制器的處理過程的流程圖;圖5示出了存儲卡驅動器200的處理序列;圖6是示出屬於本實施例的存儲卡控制器的示例性讀操作的時序圖;圖7是示出屬於本實施例的變型的存儲卡控制器控制數據傳輸的處理過程的流程圖;以及圖8是示出傳統的存儲卡控制器的示例性操作的時序圖。
具體實施例方式
下面描述了屬於本發明的存儲卡驅動設備的一個實施例。首先,先描述了使用屬於本發明的存儲卡驅動設備的視頻/播放系統。圖1示出了使用屬於本發明的存儲卡驅動設備的視頻/播放系統。圖1所示的視頻/播放系統以等同於數字錄像帶的視頻和音頻質量將視頻和音頻拍攝記錄在存儲卡上作為運動圖像數據,並且播放所記錄的運動圖像數據。
諸如具有PCMCIA卡槽的個人計算機或攝像機這樣的視頻設備可以被用作主設備,其用於記錄視頻和顯示運動圖像數據。SD卡被用作存儲卡。
在圖1中,屬於本發明的存儲卡驅動設備是存儲卡驅動器200。存儲卡驅動器200配備有4個能容納SD卡的SD卡槽。其中安裝有SD卡300a到300d的存儲卡驅動器200被插入到主設備100a或主設備100b的PCMCIA卡槽中以便使用。
圖2示出了涉及組成屬於本發明的視頻/播放系統的設備的數據傳輸的內部結構。主設備100a配備有視頻信號輸入/輸出(IO)單元101、信號處理單元102、和驅動器控制單元103。這些組成的組件被用來請求存儲卡驅動器200執行數據傳輸,諸如寫入和讀取運動圖像數據。雖然這裡示出了主設備100a的內部結構,但是主設備100b也具有相同的結構。
響應於諸如記錄和播放這樣的操作狀態,視頻信號IO單元101控制向包括在主設備中的攝像機模塊和顯示模塊進行的視頻信號輸入和從該攝像機模塊和顯示模塊進行的視頻信號輸出。信號處理單元102是一個編解碼器,其用於編碼從視頻信號IO單元101輸入的視頻信號以便生成運動圖像數據、並且解碼從SD卡讀取的運動圖像數據以便生成視頻信號。驅動器控制單元103用於通過發出ATA命令來控制存儲卡驅動器200,並且使用卡總線標準將數據發送到存儲卡驅動器200的外部接口1以及從其接收數據。通常,請求數據傳輸的ATA命令包括指定諸如讀取或寫入這樣的操作的命令部分、數據傳輸所針對的頭扇區的邏輯地址、和將要傳輸的扇區數量。這裡,主設備100a和100b將排列在存儲卡驅動器200中的4個SD卡識別一個虛擬驅動器,並在使用虛擬驅動器上的邏輯地址確定數據傳輸所針對的頭扇區的邏輯地址和要傳輸的扇區數量之後發出ATA命令。這裡所稱的扇區與SD卡上的記錄塊一一對應。ATA命令最初被設計用於磁碟介質,這也是為什麼主設備100a和100b使用扇區來指定數據傳輸目的地等的原因。
存儲卡驅動器200配備有外部接口1和存儲卡控制器2。
外部接口1用於使用卡總線標準將數據傳輸到主設備中的驅動器控制單元103,以及從其接收數據。
存儲卡控制器2用於響應從主設備接收的ATA命令,控制安裝在SD卡槽中的SD卡300a到300d。SD命令被用於由存儲卡控制器2對SD卡300a到300d進行控制。為了開始數據傳輸,存儲卡控制器2將ATA命令示出的邏輯地址轉換為SD卡中的邏輯地址,並將指示開始數據傳輸(例如寫入或讀取)並帶有所轉換的邏輯地址的SD命令發給SD卡。如果SD命令指示開始寫入,那麼寫數據就順序地被傳輸到SD卡。為了結束數據傳輸,存儲卡控制器2將指示結束數據傳輸的停止(STOP)命令發給SD卡,並向主設備聲明一個傳輸結束中斷,以示出數據傳輸的完成。
存儲卡控制器2用於控制向SD卡提供時鐘信號。存儲卡控制器2能夠通過暫停提供時鐘信號來中斷SD卡的操作,並通過恢復提供時鐘信號來恢復所中斷的操作。
通過在並行工作的SD卡300a到300d上將數據條帶化(striping),存儲卡控制器2以25Mbps的帶寬來傳輸數據。這裡,「條帶化」是指將分成記錄塊的數據並行寫入多個存儲卡。由於在本實施例中排列了四個SD卡,因此將要寫入的數據分成四份。
特別地,存儲卡控制器2通過分配卡號0到3來管理SD卡300a到300d。當寫入數據時,存儲卡控制器2使用把要被寫入的每個扇區的扇區號除以4所得的餘數作為寫卡號,並將數據寫入到使用該寫卡號管理的SD卡中。當讀取數據時,存儲卡控制器2使用把要從中讀取數據的每個扇區的扇區號除以4所得的餘數作為讀卡號,並且從使用該讀卡號管理的SD卡中讀取數據。作為條帶化的結果,SD卡300a到300d組成了一個虛擬驅動器。如果要傳輸的扇區數量大於或等於排成陣列的存儲卡的數量,則利用條帶化增加了數據傳輸效率。
SD卡300a到300d是具有內建的可重寫非易失性存儲器的存儲卡,其與時鐘信號同步地將數據記錄到該非易失性存儲器中和播放其中的數據。通過從存儲卡驅動器200發出的SD命令來控制SD卡300a到300d的操作。
當從存儲卡控制器2發出寫開始命令時,SD卡300a到300d讀取示出非易失性存儲器中邏輯地址和物理地址之間的對應關係的相關性表,將與SD命令一起聲明的邏輯地址轉換為物理地址,並從所轉換的物理地址開始寫入經由存儲卡控制器2傳輸的數據。當在寫操作期間從存儲卡控制器2發出停止命令時,SD卡300a到300d終止該數據寫操作,並根據寫入的結果該更新相關性表。
當從存儲卡控制器2發出讀開始命令時,SD卡300a到300d讀取示出非易失性存儲器中邏輯地址和物理地址之間的對應關係的相關性表,將與SD命令一起聲明的邏輯地址轉換為物理地址,從所轉換的物理地址開始讀取該非易失性存儲器中記錄的數據,並將所讀取的數據傳輸到存儲卡控制器2。當在讀操作期間從存儲卡控制器2發出停止命令時,SD卡300a到300d終止該數據讀操作。這完成了對使用屬於本發明的存儲卡控制器的視頻/播放系統的說明。
接下來給出對屬於本發明的存儲卡驅動器200的詳細內部結構的說明。圖3示出了存儲卡驅動器200的詳細結構。
外部接口1內部配備有PCI目標(target)3和PCI總線主控(busmaster)4。PCI目標3負責將ATA命令發送到主設備100a和100b以及從其接收ATA命令。PCI總線主控4使用直接存儲器訪問(DMA)傳輸來將數據發送到主設備100a和100b以及從其接收數據。這裡,使用DMA傳輸是為了獲得高傳輸速率,儘管其它傳輸技術也可以用於發送和接收數據。
存儲卡控制器2配備有命令分析單元5、命令存儲單元6、命令轉換單元7和數據存儲器11。
命令分析單元5分析PCI目標3接收的ATA命令,並從命令中分離出頭扇區的邏輯地址和將要傳輸的扇區數量。命令存儲單元6存儲和臨時保存先前接收的ATA命令。數據存儲器11是PCI總線主控4和SD卡之間的緩衝存儲器。
命令轉換單元7在內部配備有連續性檢查單元8、命令開始/結束控制單元9、和時鐘開始/結束控制單元10。命令轉換單元7通過控制SD命令的發出和給SD卡提供時鐘這二者來控制SD卡300a的操作,其中所述SD命令與命令分析單元5所分析的ATA命令對應。注意,雖然在圖3中只描述了屬於與SD卡300a的接口的結構以便避免使該圖複雜化,但是在存儲卡控制器2中給每個SD卡300a到300d都提供了一個與命令轉換單元7相似的結構。正是這些單元實現了條帶化控制。
連續性檢查單元8判斷隨後發出的ATA命令是否請求關於連續扇區的數據讀取,並取決於判斷結果,使命令開始/結束控制單元9和時鐘開始/結束控制單元10執行處理來控制SD卡300a的操作。
命令開始/結束控制單元9通過根據ATA命令的類型發出SD命令使SD卡300a開始和終止寫或讀操作。
時鐘開始/結束控制單元10通過分別在讀操作期間暫停或恢復給SD卡300a提供時鐘信號來使SD卡300a暫停或恢復該讀操作。這裡,時鐘開始/結束控制單元10從前一個ATA命令所請求的數據已被讀取時暫停提供時鐘信號直到接收到後一個命令。這完成了對屬於本發明的存儲卡驅動器200的詳細內部結構的說明。
下面是參照圖4對上述存儲卡控制器2進行的詳細處理的說明。圖4是示出存儲卡控制器2的處理過程的流程圖。
加電之後,存儲卡控制器2在由步驟S1和S16組成的循環中等待PCI目標3接收ATA命令,並一旦接收到ATA命令(步驟S1=是),就執行從步驟S2向前的處理。
在步驟S2,命令分析單元5分析所接收的ATA命令,並獲取數據傳輸所針對的頭扇區的邏輯地址和要傳輸的扇區數量。以下,X[I]被用於表示從加電之後所接收的第I(I是自然數)個ATA命令的分析所獲得的傳輸目的地邏輯地址,並且Y[I]被用於表示要被傳輸的扇區數量。
在步驟S3,連續性檢查單元8判斷是否正在給SD卡提供時鐘信號。
如果在步驟S3判定時鐘信號正在被提供給SD卡(步驟S3=否),那麼命令開始/結束控制單元9取決於ATA命令的請求,發出SD命令給SD卡,指示從邏輯地址X[I]開始寫入或讀取(步驟S4)。
如果在步驟S4發出的SD命令是寫開始命令(步驟S5=否),那麼響應於該命令,SD卡開始寫操作,並且通過步驟S6到S8,存儲卡控制器2控制SD卡中的寫操作。
在步驟S6到S8,命令開始/結束控制單元9監控在寫操作期間提供給SD卡的數據量,並且當所提供的數據量達到了從ATA命令所獲得的扇區數量Y[I]時(步驟S6=是),命令開始/結束控制單元9發出SD命令給SD卡以便停止寫操作(步驟S7)。一旦SD卡響應於停止命令已經終止了寫操作並更新了示出邏輯地址和物理地址之間的對應關係的相關性表,那麼存儲卡控制器2向主設備聲明一個中斷,示出命令執行的完成(步驟S8)。在步驟S6到S8執行之後,處理返回到步驟S1和S16的循環。
如果在步驟S4發出的SD命令是讀開始命令(步驟S5=是),那麼響應於該命令,SD卡開始讀操作,並且通過步驟S9到S11,存儲卡控制器2控制SD卡中的讀操作。
在步驟S9到S11,時鐘開始/結束控制單元10監控在讀操作期間從SD卡讀取和傳輸的數據量,並且當所讀取的數據量達到了從ATA命令所獲得的扇區數量Y[I]時(步驟S9=是),時鐘開始/結束控制單元10停止給SD卡提供時鐘信號,對傳輸目的地的邏輯地址X[I]和扇區數量Y[I]進行求和,並將所計算的值記錄在命令存儲單元6作為連續開始地址Z(步驟S10)。這裡,連續開始地址Z的值被保存在命令存儲單元6直到步驟S10的處理下一次執行並被通知新的值。注意將連續開始地址Z記錄到命令存儲單元6的處理可以在SD卡的讀操作期間執行,即,在所讀取的數據量達到扇區數量Y[I]之前。這使得連續開始地址Z的計算和記錄在不影響傳輸速率的情況下執行。
一旦暫停提供時鐘信號並且SD卡暫停讀操作的執行,存儲卡控制器2向主設備聲明中斷,示出命令執行的完成(步驟S11)。在步驟S6到S8執行之後,處理返回到步驟S1和S16的循環。
如果在步驟S6到S8執行之後接收到新的ATA命令(步驟S1=是),假設在步驟S10暫停給SD卡提供時鐘信號,那麼在步驟S3的判斷之後執行步驟S12到S15。
在步驟S12,為了判斷作為當前處理的一部分所接收到的新ATA命令是否是請求數據的讀命令,其中所述數據是如果SD卡中所暫停的讀操作被恢復就將被讀取的數據,連續性檢查單元8判斷是否下麵條件(1)和(2)都滿足。
(1)作為當前ATA命令處理的一部分所接收的新ATA命令請求讀操作。
(2)在處理前一個ATA命令過程中當步驟S10被執行時記錄到命令存儲單元6的連續開始地址Z與基於作為當前處理的一部分所接收的新ATA命令在步驟S2所獲取的傳輸目的地的邏輯地址X[I]相匹配。
如果連續性檢查單元8通知上述條件(1)和(2)都滿足(步驟S12=是),那麼時鐘開始/結束控制單元10恢復給SD卡提供時鐘信號(步驟S13)。一旦恢復時鐘信號的提供,在SD卡中暫停的讀操作就被恢復。作為響應,存儲卡控制器2通過步驟S9到S11控制SD卡中的讀操作。
如果上述條件(1)和(2)中的一個或兩個不滿足(步驟S12=否),即,如果作為當前處理的一部分而接收到的新ATA命令不是請求數據的讀操作,其中所述數據是如果SD卡中所暫停的讀操作被恢復就將被讀取的數據,那麼連續性檢查單元8判斷下麵條件(3)是否滿足(步驟S14)。
(3)作為當前處理的一部分所接收到的ATA命令請求要求對SD卡進行存儲器訪問。
如果連續性檢查單元8通知上述條件(3)滿足(步驟S14=是),那麼時鐘開始/結束控制單元10恢復給SD卡提供時鐘信號,並且命令開始/結束控制單元9發出SD命令給SD卡,以便停止所述讀操作(步驟S15)。一旦響應於步驟S15的執行,SD卡終止所暫停的讀操作,那麼存儲卡控制器2按照順序執行從步驟S4開始的處理。
如果上述條件(3)不滿足(步驟S14=否),那麼存儲卡控制器2首先執行ATA命令所請求的處理(即,不導致對SD卡進行存儲器訪問的處理)而不恢復給SD卡提供時鐘信號,然後在步驟S11向主設備聲明一個中斷,示出命令執行的完成,之後,在步驟S1和S16的循環中等待下一個ATA命令。
注意,特別地,不需要對SD卡進行存儲器存取的ATA命令包括諸如識別設備(IDENTIFY DEVICE)命令這樣的命令。
在上述處理流程中,在步驟S11向主設備聲明示出命令執行完成的中斷之後,處理移動到步驟S1和S16的循環,同時對SD卡的時鐘信號提供處於暫停狀態。如果在對SD卡的時鐘信號提供處於暫停狀態的情況下沒有在預定時間段內(例如,1秒)接收到下一個ATA命令(步驟S16=是),那麼時鐘開始/結束控制單元10恢復給SD卡提供時鐘信號並且命令開始/結束控制單元9向SD卡發出停止讀操作的命令,使得在SD卡中所暫停的讀操作被終止(步驟S17)。
這完成了對存儲卡控制器2中執行的詳細處理的說明。存儲卡控制器2進行的上述處理過程可以通過實現專用的硬體、或通過使微處理器執行以描述性計算機語言描述的該處理過程來實現。
接下來參照圖5和6給出了如上所述構成的存儲卡驅動器200的操作實例。圖5示出了存儲卡驅動器200的處理序列,而圖6是示出詳細的讀操作的時序圖。
在圖5和6中,A[k](k是自然數)示出了加電之後存儲卡驅動器200所接收的第k個ATA命令,DAT[k]示出了與第k個ATA命令同步的數據傳輸,並且S[k]示出了與第k個ATA命令相對應的發給SD卡的SD命令。
在圖6中,層(a)示出了在主設備中發出ATA命令的處理的定時,層(b)示出了出現中斷的定時,所述中斷示出了與ATA命令對應的數據傳輸的完成,層(c)示出了在存儲卡驅動器200中發出SD命令的處理的定時,層(d)示出了給SD卡提供時鐘信號,層(e)示出了在SD卡中諸如從邏輯地址到物理地址的轉換這樣的處理的定時,而層(f)示出了數據傳輸的定時。
儘管四個ATA命令A[1]到A[4]都請求數據讀取,但是A[1]到A[3]所請求的數據形成了一連串運動圖像數據,這些數據記錄在具有連續邏輯地址的SD卡記錄區域中。因而,利用ATA命令A[2]和A[3],讀開始扇區的扇區號與前一個ATA命令(即分別是A[1]和A[2])進行的讀取的結束扇區的扇區號連續。另一方面,ATA命令A[4]請求讀取與A[1]到A[3]不相關的數據,並因而A[4]的讀開始扇區的扇區號與A[3]進行的讀取的結束扇區的扇區號不連續。
首先描述了響應於主設備發出的ATA命令A[1]的一連串操作。A[1]由讀命令、開始地址和要讀取的扇區數量組成。一旦接收到A[1],存儲卡驅動器200分析A[1]並向SD卡發出由讀開始命令和開始地址組成的S[1]。一旦接收到S[1],SD卡在執行內部處理(例如,邏輯地址到物理地址的轉換)之後執行DAT[I]。一旦開始了DAT[I],存儲卡驅動器200使用時鐘開始/結束控制單元10監控所傳輸的數據量,並且一旦DAT[I]所傳輸的數據量達到了從A[1]獲取的要讀取的扇區數量,那麼存儲卡驅動器200暫停給SD卡提供時鐘信號並向主設備聲明一個中斷。此時,時鐘開始/結束控制單元10也計算A[1]的開始扇區的扇區號和所讀取的扇區數量之和,並將結果記錄在命令存儲單元6。上述一連串序列執行的結果,在主設備中完成了響應於A[1]的數據讀取,並且由於繼續暫停時鐘提供,因此保持SD卡中讀操作的暫停狀態,防止進一步讀取數據。因此能夠維持主設備和SD卡之間數據傳輸的同步。
作為中斷的結果,主設備檢測到響應於A[1]的DAT[1]的傳輸結束,然後,該主設備發出A[2]。接收到A[2]的存儲卡驅動器200在命令分析單元5和連續性檢查單元8中分析A[2]以檢查A[1]和A[2]之間的連續性。這裡,連續性檢查確定了A[2]是讀命令並且A[2]的開始扇區號等於記錄在命令存儲單元6中的A[1]的開始扇區號和所讀取的扇區數量之和。存儲卡驅動器200在確定了A[1]和A[2]的連續性之後,使用時鐘開始/結束控制單元10恢復給SD卡提供時鐘信號。一旦恢復了提供時鐘信號,SD卡中所暫停的讀操作就被恢復,導致與A[2]對應的DAT[2]被執行。一旦開始了DAT[2],存儲卡驅動器200使用時鐘開始/結束控制單元10監控所傳輸的數據量,並且當所傳輸的數據量達到從A[2]獲取的要讀取的扇區數量時,存儲卡驅動器200暫停給SD卡提供時鐘信號並且向主設備聲明一個中斷。此時,時鐘開始/結束控制單元10記錄A[2]的開始地址和讀取的扇區數量之和。作為上述一連串序列的結果,在主設備中完成了響應於A[2]的數據讀取,並且再次暫停了SD卡中的讀操作,防止進一步讀取數據。
主設備檢測到響應於A[2]的DAT[2]的傳輸處理的完成,然後該主設備發出A[3],之後,主設備、存儲卡驅動器200和SD卡處理與響應與A[2]的序列相似的序列。結果,A[3]的開始地址和讀取的扇區數量之和被記錄在命令存儲單元6,SD卡中的讀操作被暫停,並且向主設備聲明響應於A[3]的中斷。
作為以上述狀態的處理所聲明的中斷的結果,檢測到響應於A[3]的DAT[3]的完成之後,主設備發出A[4]。接收到A[4]的存儲卡驅動器200在命令分析單元5和連續性檢查單元8中分析A[4]以檢查A[3]和A[4]之間的連續性。然而,由於A[4]的開始扇區號不等於記錄在命令存儲單元6中的A[3]的開始扇區號和讀取的扇區數量之和,因此儘管A[4]是讀操作,但是A[3]和A[4]的連續性未被確定。有鑑於此,存儲卡驅動器200發出停止命令給SD卡,同時恢復提供時鐘信號。這導致SD卡中暫停的讀操作被終止。存儲卡驅動器200然後向SD卡發出由讀開始命令和開始地址組成的S[4]。接收到S[4]的SD卡在執行諸如邏輯地址到物理地址的轉換這樣的內部處理之後執行DAT[4]。一旦開始了DAT[4],存儲卡驅動器200使用時鐘開始/結束控制單元10監控所傳輸的數據量,並且當DAT[4]所傳輸的數據量達到從A[4]獲取的要讀取的扇區數量時,存儲卡驅動器200暫停給SD卡提供時鐘信號並且向主設備聲明一個中斷。此時,時鐘開始/結束控制單元10也計算A[4]的開始扇區號和讀取的扇區數量之和,並更新命令存儲單元6中的記錄。作為上述一連串序列的結果,在主設備中完成了響應於A[4]的數據讀取,並且暫停了SD卡中的讀操作,防止進一步讀取數據。
在本實例中,在A[4]之後主設備不發出任何新ATA命令。存儲卡驅動器200測量從暫停給SD卡提供時鐘開始所經過的時間。由於沒有接收到更多ATA命令,當預定時間段過去時,存儲卡驅動器200向SD卡發出停止命令,同時恢復給SD卡提供時鐘信號。這導致了SD卡中暫停的讀操作被終止。作為該序列的結果,SD卡等待SD命令,同時被提供著時鐘信號。這完成了對存儲卡驅動器200的示例性操作的說明。
在上述實例中,代表數據傳輸額外開銷的處理(諸如存儲卡驅動器200發出SD命令和SD卡中的地址轉換)出現在響應於A[1]和A[4]執行的一連串序列中。然而,代表這些額外開銷的處理沒有出現在響應於A[2]和A[3]執行的一連串序列中。
這裡,從發出A[1]直到聲明與A[1]對應的中斷之間的一連串處理操作所花費的時間是(u+t),其中u是存儲卡驅動器200發出SD命令和在SD卡中轉換地址需要的時間,t是DAT[1]到DAT[4]中的每個所表示的數據傳輸所需要的時間。相比之下,使用A[2]和A[3]時,從發出各個命令直到聲明對應的中斷的一連串處理操作花費的時間只有t。
因而與圖8所示的傳統操作相比,對應於A[1]和A[3]的一連串處理操作被縮短了2u。
尤其是,在如圖1所示安裝了多個SD卡的情況下,由於因條帶化導致由一個ATA命令從一個SD卡讀取的扇區數量與所安裝SD卡的數量成反比而減少,因此數據傳輸所需要的時間t也將減少。結果是減少了u和t之間的差,其中u取常量值而不管安裝的SD卡的數量,t與安裝的SD卡的數量成反比而減少。這裡,以安裝的SD卡的數量t=u為例,根據圖8所示的常規操作執行對應於A[1]-A[3]的一連串處理操作需要的時間段為6u,然而根據本實施例該處理在時間段4u內就完成了。在傳輸速率方面對這些結果進行比較得到了6u/4u,這示出屬於本實施例的存儲卡驅動器200在傳輸速率上達到了比現有技術50%的提高。
根據本實施例,其讀開始扇區與前一個ATA命令的讀結束扇區連續的ATA命令(如A[2]和A[3]的情況那樣)的數量越大,在傳輸速率的改進上就會獲得越大的功效。例如,在八個ATA命令具有與前一個ATA命令的讀結束扇區相連續的讀開始扇區的情況下,當安裝的SD卡的數量t=u時,在傳輸速率上達到比現有技術78%的提高。
根據上述的本實施例,在讀取記錄在具有連續的邏輯地址的SD卡記錄區域中的運動圖像數據期間,當運動圖像數據的大小超過響應於一個ATA命令可讀的64千字節時,主設備請求進行由多個ATA命令分割的運動圖像數據讀取。然而,在SD卡中,由於存儲卡控制器2控制給SD卡提供時鐘信號,上述操作是作為一個連續的讀操作來處理的。
結果,代表額外開銷的處理對讀取速率的不利影響是可以得到抑制的,因而可以提高讀速率,其中所述額外開銷諸如從ATA命令到SD命令的轉換、以及從邏輯地址到物理地址的轉換。
此外,根據本實施例,對記錄在連續區域中的大規模數據的讀取被主設備當作響應於多個ATA命令的多個讀操作來處理了,而SD卡處理該數據,將其作為由一對傳輸開始和停止命令控制的連續讀操作。然而,由於在主設備不能處理數據傳輸期間SD卡中的讀操作被暫停,因此沒有丟失主設備和SD卡之間的讀操作的同步。
注意雖然本實施例中的說明涉及提高在SD卡的讀操作期間的傳輸速率的結構,但是本發明同樣地可以應用於控制SD卡的寫操作。
下面描述了提高讀取和寫入的傳輸速率的變型。圖7是示出屬於本實施例的變型的存儲卡控制器控制數據傳輸的處理過程的流程圖。與圖4所述的流程圖相比,圖7所示的流程圖包含步驟S18,而步驟S5到S8的處理過程被移除,並且步驟S12的判斷被改為步驟S19的判斷。
從而,即使在給SD卡提供時鐘信號的同時接收到的ATA命令請求寫入或讀取,也會在首先在步驟S18中將該ATA命令的類型作為讀請求或寫請求之一記錄在命令存儲單元6後,通過步驟S9到S11控制數據傳輸。
當在對SD卡的時鐘提供處於暫停狀態的情況下接收到一個ATA命令時,在步驟S19判斷的連續性的條件改為下面的(A)和(B),同時,如果這些條件都滿足那麼執行步驟S13。
(A)作為當前處理的一部分所接收到的新ATA命令的類型與記錄在命令存儲單元6中的前一個處理的ATA命令的類型匹配。
(B)當在處理前一個ATA命令的過程中執行了步驟S10時記錄在命令存儲單元6中的連續性開始地址Z與基於作為當前處理的一部分所接收到的新ATA命令而在步驟S2所獲取的傳輸目的地的邏輯地址X[I]相匹配。
結果,即使是在請求了寫入或讀取的情況下,當連續發出關於連續扇區的相同類型的ATA命令時,該變型也能夠提高寫入和讀取的傳輸速率。
其它變型雖然已經基於上述實施例描述了本發明,但是本發明當然不局限於上述實施例。下面的情況也包含在本發明之內。
(1)本發明可以是上述示出的方法。這些方法可以是計算機實現的電腦程式,或由電腦程式組成的數位訊號。
本發明也可以是記錄了這些電腦程式或數位訊號的計算機可讀記錄介質,其例子包括軟盤、硬碟、CD-ROM、MO、DVD、DVD-ROM、DVD-RAM、BD(Blu-ray Disc藍光碟)和半導體存儲器等。可替換地,本發明可以是記錄在記錄介質上的電腦程式或數位訊號。
本發明可以是通過電信電路、無線或電纜通信電路或網際網路所代表的網絡來傳送電腦程式或數位訊號的介質。
本發明可以是配備有微處理器和存儲器的計算機系統,其中存儲器存儲了電腦程式並且微處理器根據所述電腦程式來工作。
通過被記錄在記錄介質中並傳輸到另一個獨立的計算機系統或者通過經由網絡進行傳輸,所述電腦程式或數位訊號可以在該另一個獨立的計算機系統中實施。
(2)在上述實施例中,存儲卡驅動設備被描述為使用SD卡作為存儲卡。然而,不管使用什麼類型的存儲卡,倘若該存儲卡需要其規格與主設備發出的那些命令不同的命令,本發明必然展現與上述實施例相似的效果。
(3)在上述實施例中,執行超時處理,存儲卡驅動設備據此來測量從暫停給SD卡提供時鐘信號時開始所經過的時間,並且一旦經過了預定時間段,就令存儲卡終止數據傳輸操作。然而,可以在從接收到最後處理的ATA命令開始經過預定時間段之後執行超時處理。
(4)在上述實施例中,存儲卡驅動設備經由卡總線連接到主設備,然而到主設備的連接可以經由PCI總線或SCSI等。
(5)在實施例的上述變型中,描述了這樣的結構,其中存儲卡驅動設備也通過暫停給SD卡提供時鐘信號使SD卡暫停寫操作。然而,寫操作的暫停也可以通過暫停給SD卡提供寫數據來執行。
(6)本發明可以是上述實施例和變型的任意組合。
工業實用性例如,本發明可以應用於控制從/到SD卡的數據傳輸的PC卡型存儲卡驅動設備。
權利要求
1.一種存儲卡控制器,用於控制主設備和存儲卡之間的數據傳輸,所述主設備通過發出指定數據量的命令來請求數據傳輸,所述存儲卡從接收到傳輸開始指令時開始執行傳輸操作直到接收到傳輸結束指令,所述存儲卡控制器包括接收單元,用於順序地接收來自所述主設備的命令;暫停單元,用於當作為所述傳輸操作的結果所傳輸的數據量達到了由第n個請求數據傳輸的命令所指定的數據量時,使所述存儲卡暫停所述傳輸操作;以及恢復單元,用於如果當所述傳輸操作處於暫停狀態時接收到的所述第n個命令的下一個命令請求關於與所述第n個命令所請求的數據傳輸的結束地址連續的地址的數據傳輸,則使所述存儲卡恢復所暫停的傳輸操作。
2.如權利要求1所述的存儲卡控制器,其中,所述數據傳輸是從所述存儲卡讀取數據,並且所述存儲卡的傳輸操作是數據讀操作。
3.如權利要求2所述的存儲卡控制器,其中,所述數據讀操作的暫停和恢復分別通過暫停和恢復給所述存儲卡提供時鐘信號來控制。
4.如權利要求3所述的存儲卡控制器,還包括指令發出單元,其用於分別通過向所述存儲卡發出所述傳輸開始指令和所述傳輸結束指令來控制所述數據讀操作的開始和結束,其中如果在所述數據讀操作處於所述暫停狀態的情況下經過了預定時間段,則所述恢復單元通過恢復提供所述時鐘信號來使所述存儲卡取消所述暫停狀態,並且所述指令發出單元通過發出所述傳輸結束指令來使所述存儲卡終止所述數據讀操作。
5.如權利要求3所述的存儲卡控制器,其中,如果所述下一個命令不需要訪問所述存儲卡,則所述暫停單元保持所述數據讀操作的暫停狀態。
6.如權利要求3所述的存儲卡控制器,還包括指令發出單元,其用於分別通過向所述存儲卡發出所述傳輸開始指令和所述傳輸結束指令來控制所述數據讀操作的開始和結束,其中如果所述下一個命令請求數據寫入和數據讀取之一以便從與所述第n個命令所請求的數據讀取的結束地址不連續的地址讀取數據,則所述恢復單元通過恢復提供所述時鐘信號來使所述存儲卡取消所述數據讀操作的暫停狀態,並且所述指令發出單元在通過發出所述傳輸結束指令而使所述存儲卡終止所述數據讀操作之後,響應於所述下一個命令而發出所述傳輸開始指令。
7.如權利要求1所述的存儲卡控制器,其中,所述數據傳輸是將數據寫入到所述存儲卡,並且所述存儲卡的傳輸操作是數據寫操作。
8.如權利要求7所述的存儲卡控制器,其中,所述數據寫操作的暫停和恢復分別通過暫停和恢復給所述存儲卡提供寫數據來控制。
9.如權利要求8所述的存儲卡控制器,還包括指令發出單元,其用於如果在所述數據寫操作處於所述暫停狀態的情況下經過了預定時間段,則通過發出所述傳輸結束指令來使所述存儲卡終止所述數據寫操作。
10.如權利要求8所述的存儲卡控制器,其中,如果所述下一個命令不需要訪問所述存儲卡,則所述暫停單元保持所述數據寫操作的暫停狀態。
11.如權利要求8所述的存儲卡控制器,還包括指令發出單元,其用於如果所述下一個命令請求數據讀取和數據寫入之一以便將數據寫入到與所述第n個命令所請求的數據寫入的結束地址不連續的地址,則在通過發出所述傳輸結束指令而使所述存儲卡終止所述數據寫操作之後,響應於所述下一個命令而向所述存儲卡發出所述傳輸開始指令。
12.一種存儲卡驅動設備,包括如權利要求1所述的存儲卡控制器;第一接口,用於連接到主設備;以及第二接口,用於容納一個或多個存儲卡,其中所述存儲卡控制器基於從所述第一接口輸入的命令來訪問安裝在所述第二接口中的一個或多個存儲卡。
13.一種用於存儲卡控制器的電腦程式,所述存儲卡控制器控制主設備和存儲卡之間的數據傳輸,所述主設備通過發出指定數據量的命令來請求數據傳輸,所述存儲卡從接收到傳輸開始指令時開始執行傳輸操作直到接收到傳輸結束指令,所述電腦程式控制所述存儲卡控制器的處理器來執行以下步驟當作為所述傳輸操作的結果所傳輸的數據量達到了由第n個請求數據傳輸的命令所指定的數據量時,使所述存儲卡暫停所述傳輸操作;以及如果當所述傳輸操作處於暫停狀態時接收到的所述第n個命令的下一個命令請求關於與所述第n個命令所請求的數據傳輸的結束地址連續的地址的數據傳輸,則使所述存儲卡恢復所暫停的傳輸操作。
全文摘要
一種用於控制主設備和存儲卡之間的數據傳輸的存儲卡控制器,所述主設備通過發出指定數據量的命令來請求數據傳輸,所述存儲卡從接收到傳輸開始指令開始執行傳輸操作直到接收到傳輸結束指令。所述存儲卡控制器配備有時鐘開始/結束控制單元10,當作為傳輸操作的結果從存儲卡傳輸的數據量達到了從主設備接收到的第n個命令所指定的數據量時,所述時鐘開始/結束控制單元暫停向存儲卡提供時鐘信號,並且如果在向SD卡提供時鐘信號處於暫停狀態的情況下,接收到的下一個命令將與第n個命令請求的數據傳輸的結束地址相連續的地址指定為開始地址,那麼所述時鐘開始/結束控制單元恢復向存儲卡提供時鐘信號。
文檔編號G06F13/40GK101069167SQ200580041498
公開日2007年11月7日 申請日期2005年9月29日 優先權日2004年10月1日
發明者大塚健, 藤原成悟 申請人:松下電器產業株式會社