JP2008287600A - ホスト装置、情報処理装置、電子機器、プログラム及びリード制御方法 - Google Patents

ホスト装置、情報処理装置、電子機器、プログラム及びリード制御方法 Download PDF

Info

Publication number
JP2008287600A
JP2008287600A JP2007133230A JP2007133230A JP2008287600A JP 2008287600 A JP2008287600 A JP 2008287600A JP 2007133230 A JP2007133230 A JP 2007133230A JP 2007133230 A JP2007133230 A JP 2007133230A JP 2008287600 A JP2008287600 A JP 2008287600A
Authority
JP
Japan
Prior art keywords
data
buffer
command
read
storage device
Prior art date
Legal status (The legal status 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 status listed.)
Withdrawn
Application number
JP2007133230A
Other languages
English (en)
Inventor
Shinsuke Kubota
慎介 久保田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Seiko Epson Corp
Original Assignee
Seiko Epson Corp
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 Seiko Epson Corp filed Critical Seiko Epson Corp
Priority to JP2007133230A priority Critical patent/JP2008287600A/ja
Priority to US12/122,210 priority patent/US20080288675A1/en
Publication of JP2008287600A publication Critical patent/JP2008287600A/ja
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Systems (AREA)

Abstract

【課題】 コマンドの種類が多くなってもコード量又はハードウェア量の増加を抑えることができるホスト装置等を提供する。
【解決手段】 ホスト装置500は、記憶デバイスコントローラに対し、記憶デバイスをアクセスするためのコマンドの発行制御を行うコマンド発行制御部と、前記コマンドに対応した前記記憶デバイスからのレスポンスの受信検出を行うレスポンス検出部と、前記記憶デバイスのリードデータ又はライトデータが格納される前記記憶デバイスコントローラのバッファのリード制御又はライト制御を行うバッファデータ制御部とを含み、前記コマンド発行制御部が前記コマンドの発行制御を行った後に、前記バッファデータ制御部が、前記コマンドに対応して所定のデータサイズ単位で1又は複数回の前記リード制御又はライト制御を行う。
【選択図】 図7

Description

本発明は、ホスト装置、情報処理装置、電子機器、プログラム及びリード制御方法に関する。
近年、パーソナルコンピュータやその周辺機器(例えばプリンタ装置、スキャナ装置又は複合機)に限らず、携帯電話機、携帯情報端末(Personal Digital Assistant:PDA)やオーディオプレーヤ等の携帯型の情報機器、ロボット装置、デジタルカメラ、ビデオカメラ、全地球測位システム(Global Positioning System:GPS)装置、テレビ受信装置、プロジェクタ等の電子機器に、データストレージ用途にフラッシュメモリカードが使用される機会が多くなっている。
フラッシュメモリカードには、その用途に応じて、種々の規格、バージョンが規定されている。例えば動画データ、静止画データ又は音楽データを携帯するために可搬性に優れ、大容量のフラッシュメモリとして、MMC(MultiMediaCard)規格、SD(Secure Digital)規格に準拠したフラッシュメモリカード、又はSDIO(SD Input/Output)規格に準拠したI/Oデバイスがある。また、例えば携帯機器や家庭用電化製品の小型化により小型のコネクタ形状や高速なデータ転送が可能なHDD装置として、CE−ATA(Consumer Electronics-AT Attachment)規格に準拠した記憶装置がある。
このように、携帯型のデータストレージ用途は今後もますます広がり、用途に応じた最適な規格が順次策定されていく傾向にある。
このようなフラッシュメモリカード等は、カードコントローラとの間で、その規格で定められた仕様のカードバスを介して接続され、カードコントローラが、カードバスを介してその規格で規定されたコマンド(制御コマンド)を発行することでアクセスされる。
フラッシュメモリカードにアクセスするためにコマンドを発行する技術については、例えば特許文献1に開示されている。特許文献1には、コマンドの使用の追加や変更に対して対処が容易なデータプロセッサが開示されている。
特許文献1に開示された技術では、データプロセッサのインタフェース動作において、インタフェース制御対象機器の動作を制御するための第1の制御情報と、該インタフェース制御対象の機器との間のインタフェース動作を制御するための第2の制御情報とを対応させて、それぞれ別個に定義するようにしている。そのため、特許文献1に開示された技術では、インタフェース制御対象機器にアクセスするためのコマンドや機能や動作に追加や変更があったときに第1又は第2の制御情報を修正できるようにしている。
特開2002−342256号公報
しかしながら、MMC規格やSD規格等には、レスポンスの有無や、転送データの制御の有無、転送データを制御する場合には転送データの制御方向(書き込み、データの読み出し)等に応じてコマンドの種類が多い。そのため、一般的には、カードコントローラを制御するホスト装置では、ソフトウェア処理においてコマンドの種類毎にコマンドを発行する関数(ハードウェア処理においてはコマンドを発行する回路)を設ける必要があり、コマンドを発行する関数のコード量の削減が求められている。従って、コマンドの発行関数(発行回路)を汎用化して、コマンドの種類が多くなっても、コード量(ハードウェア量)の増加を抑えることが望ましい。
また、カードバスは、転送同期クロックとしての転送クロックが伝送されるクロックライン、コマンドやそのレスポンスが伝送されるコマンドライン、転送データが伝送されるデータラインを有する。種々の事情によりデータ転送を中断させる場合、転送クロックを停止させることで、コマンドやレスポンス、転送データの伝送が中断される。しかしながら、カードコントローラを制御するホスト装置における転送データの制御の方法によっては、転送データのあふれ等を防止するためにフラッシュメモリカード等との間のデータ転送を中断させる必要が生じる場合がある(特に、リード転送時)。このようデータ転送の中断は、フラッシュメモリカードのアクセス時間を長くしてしまうばかり、転送の中断によってレスポンスが返信されずに転送を完了させることできない事態に陥ることもある。また、このアクセス時間を短縮するためにカードコントローラやホスト装置でのバッファを大容量化する必要が生じる。
本発明は、以上のような技術的課題に鑑みてなされたものであり、その目的とするところは、コマンドの種類が多くなってもコード量又はハードウェア量の増加を抑えることができるホスト装置、情報処理装置、電子機器、プログラム及びリード制御方法を提供することにある。
また本発明の他の目的は、小容量のバッファでもデータ転送を中断させることなく記憶デバイスからのリード動作を実現できるホスト装置、情報処理装置、電子機器、プログラム及びリード制御方法を提供することにある。
上記課題を解決するために本発明は、
記憶デバイスにアクセスする記憶デバイスコントローラを制御するためのホスト装置であって、
前記記憶デバイスコントローラに対し、前記記憶デバイスをアクセスするためのコマンドの発行制御を行うコマンド発行制御部と、
前記コマンドに対応した前記記憶デバイスからのレスポンスの受信検出を行うレスポンス検出部と、
前記記憶デバイスのリードデータ又はライトデータが格納される前記記憶デバイスコントローラのバッファのリード制御又はライト制御を行うバッファデータ制御部とを含み、
前記コマンド発行制御部が前記コマンドの発行制御を行った後に、前記バッファデータ制御部が、前記コマンドに対応して所定のデータサイズ単位で1又は複数回の前記リード制御又はライト制御を行うホスト装置に関係する。
本発明においては、コマンド発行制御部により発行されるコマンドの種類に応じて、レスポンスの受信の有無、ライトデータの出力の有無、リードデータの入力の有無等の制御シーケンスが異なる場合であっても、コマンド発行制御、レスポンスの受信制御(受信検出)及びFIFOデータの入出力制御の各制御を分離させたので、該コマンドに応じて必要な制御のみを機能させれば済む。従って、本発明によれば、コマンド毎に、コマンド発行制御部、レスポンス検出部及びFIFOデータ制御部を共用化できることになる。
また本発明に係るホスト装置では、
前記バッファデータ制御部が、
前記バッファから読み出したデータを所与のメモリに格納すると共に、前記コマンドを発行してから前記記憶デバイスコントローラに前記コマンドに対応した前記記憶デバイスからのレスポンスの受信が完了するまでの間において前記メモリに格納されるデータのサイズを事前リードサイズとして求め、
前記レスポンスの受信完了後に、前記事前リードサイズ分だけシフトさせた前記メモリの記憶領域から順に前記バッファから読み出したデータを格納する制御を行うことができる。
本発明によれば、レスポンスの受信完了までバッファからデータを読み出すことができ、バッファがフルになる事態を回避できるようになる。そして、バッファがフルになることで転送クロックを停止させることなく、レスポンスの受信完了後は、継続してバッファからのデータの読み出しができ、このリード動作による転送時間を短縮できる。更に、バッファを小容量化できるため、記憶デバイスコントローラの低コスト化にも寄与できるようになる。
また本発明に係るホスト装置では、
前記記憶デバイスコントローラが、前記記憶デバイスに対して転送同期クロックとしての転送クロックを出力すると共に、前記バッファがフルのときに該転送クロックの出力を停止する場合に、
前記バッファデータ制御部が、
前記バッファがフルのときに前記バッファからデータを読み出し、該データのサイズを加算して前記事前リードサイズを更新することができる。
また本発明に係るホスト装置では、
前記バッファデータ制御部が、
前記バッファがフルであり、且つ前記コマンドにより指定される前記記憶デバイスから読む出すべきデータサイズが前記バッファに蓄積可能なデータサイズ以上であるとき、前記バッファからデータを読み出し、前記事前リードサイズを更新することができる。
また本発明に係るホスト装置では、
前記バッファデータ制御部が、
前記バッファに蓄積可能なデータサイズ単位で、該バッファからデータを読み出すことができる。
上記のいずれかの発明によれば、バッファの読み出し制御、例えば事前リードサイズの管理制御を簡素化できる上に、不要な読み出し制御を回避できるようになる。
また本発明は、
前記記憶デバイスからのデータがバッファリングされるバッファを有する前記記憶デバイスコントローラと、
前記記憶デバイスコントローラに対してコマンドの発行を制御する上記のいずれか記載の記憶デバイスコントローラとを含む情報処理装置に関係する。
本発明によれば、コマンドの種類が多くなってもコード量又はハードウェア量の増加を抑えることができるホスト装置が適用された情報処理装置を提供できる。或いは、本発明によれば、記憶デバイスコントローラのバッファが小容量であっても、データ転送を中断させることなく記憶デバイスからのリード動作を実現できるホスト装置が適用された情報処理装置を提供できる。
また本発明は、
前記記憶デバイスが挿抜される記憶デバイス装着部と、
上記記載の情報処理装置とを含む電子機器に関係する。
本発明によれば、コマンドの種類が多くなってもコード量又はハードウェア量の増加を抑えることができるホスト装置が適用された電子機器を提供できる。或いは、本発明によれば、記憶デバイスコントローラのバッファが小容量であっても、データ転送を中断させることなく記憶デバイスからのリード動作を実現できるホスト装置が適用された電子機器を提供できる。
また本発明は、
記憶デバイスにアクセスする記憶デバイスコントローラを制御するためのプログラムであって、
前記記憶デバイスコントローラに対し、前記記憶デバイスをアクセスするためのコマンドの発行制御を行うコマンド発行制御部と、
前記コマンドに対応した前記記憶デバイスからのレスポンスの受信検出を行うレスポンス検出部と、
前記記憶デバイスのリードデータ又はライトデータが格納される前記記憶デバイスコントローラのバッファのリード制御又はライト制御を行うバッファデータ制御部としてコンピュータを機能させ、
前記コマンド発行制御部が前記コマンドの発行制御を行った後に、前記バッファデータ制御部が、前記コマンドに対応して所定のデータサイズ単位で1又は複数回の前記リード制御又はライト制御を行うプログラムに関係する。
本発明によれば、コマンドの種類が多くなってもコード量又はハードウェア量の増加を抑えることができる、記憶デバイスにアクセスするための記憶デバイスコントローラを制御するプログラムを提供できる。
また本発明に係るプログラムでは、
前記バッファデータ制御部が、
前記バッファから読み出したデータを所与のメモリに格納すると共に、前記コマンドを発行してから前記記憶デバイスコントローラに前記コマンドに対応した前記記憶デバイスからのレスポンスの受信が完了するまでの間において前記メモリに格納されるデータのサイズを事前リードサイズとして求め、
前記レスポンスの受信完了後に、前記事前リードサイズ分だけシフトさせた前記メモリの記憶領域から順に前記バッファから読み出したデータを格納することができる。
また本発明に係るプログラムでは、
前記記憶デバイスコントローラが、前記記憶デバイスに対して転送同期クロックとしての転送クロックを出力すると共に、前記バッファがフルのときに該転送クロックの出力を停止する場合に、
前記バッファデータ制御部が、前記バッファがフルのときに前記バッファからデータを読み出し、該データのサイズを加算して前記事前リードサイズを更新することができる。
また本発明に係るプログラムでは、
前記バッファデータ制御部が、
前記バッファがフルであり、且つ前記コマンドに指定される前記記憶デバイスから読む出すべきデータサイズが前記バッファに蓄積可能なデータサイズ以上であるとき、前記バッファからデータを読み出し、前記事前リードサイズを更新することができる。
また本発明に係るプログラムでは、
前記バッファデータ制御部が、
前記バッファに蓄積可能なデータサイズ単位で、該バッファからデータを読み出すことができる。
上記のいずれかの発明によれば、記憶デバイスコントローラのバッファが小容量であっても、データ転送を中断させることなく記憶デバイスからのリード動作を実現できるプログラムを提供できる。
また本発明は、
記憶デバイスからのリードデータをバッファリングする記憶デバイスコントローラに対するリード制御方法であって、
前記記憶デバイスコントローラに対し、前記記憶デバイスをアクセスするためのコマンドの発行制御を行うコマンド発行制御ステップと、
前記コマンドに対応した前記記憶デバイスからのレスポンスの受信検出を行うレスポンス検出ステップと、
前記記憶デバイスのリードデータ又はライトデータが格納される前記記憶デバイスコントローラのバッファのリード制御又はライト制御を行うバッファデータ制御ステップとを含み、
前記バッファデータ制御ステップは、
前記コマンドの発行制御を行った後に、前記コマンドに対応して前記バッファデータ制御部が所定のデータサイズ単位で1又は複数回の前記リード制御又はライト制御を行うリード制御方法に関係する。
本発明によれば、コマンドの種類が多くなってもコード量又はハードウェア量の増加を抑えることができる、記憶デバイスにアクセスするためのリード制御方法を提供できる。
また本発明に係るリード制御方法では、
前記バッファデータ制御ステップは、
前記バッファから読み出したデータを所与のメモリに格納すると共に、前記コマンドを発行してから前記記憶デバイスコントローラに前記コマンドに対応した前記記憶デバイスからのレスポンスの受信が完了するまでの間において前記メモリに格納されるデータのサイズを事前リードサイズとして求め、
前記レスポンスの受信完了後に、前記事前リードサイズ分だけ補正した前記メモリの記憶領域から順番に前記バッファから読み出したデータを格納することができる。
また本発明に係るリード制御方法では、
前記記憶デバイスコントローラが、前記記憶デバイスに対して転送同期クロックとしての転送クロックを出力すると共に、前記バッファがフルのときに該転送クロックの出力を停止する場合に、
前記バッファデータ制御ステップが、
前記バッファがフルのときに前記バッファからデータを読み出し、該データのサイズを加算して前記事前リードサイズを更新することができる。
また本発明に係るリード制御方法では、
前記バッファデータ制御ステップが、
前記バッファがフルであり、且つ前記コマンドに指定される前記記憶デバイスから読む出すべきデータサイズが前記バッファに蓄積可能なデータサイズ以上であるとき、前記バッファからデータを読み出し、前記事前リードサイズを更新することができる。
また本発明に係るリード制御方法では、
前記バッファデータ制御ステップが、
前記バッファに蓄積可能なデータサイズ単位で、該バッファからデータを読み出すことができる。
上記のいずれかの発明によれば、記憶デバイスコントローラのバッファが小容量であっても、データ転送を中断させることなく記憶デバイスからのリード動作を実現できるリード制御方法を提供できる。
以下、本発明の実施の形態について図面を用いて詳細に説明する。なお、以下に説明する実施の形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また以下で説明される構成のすべてが本発明の必須構成要件であるとは限らない。
1. 情報処理装置
図1に、本実施形態におけるホスト装置が適用された電子機器の構成例のブロック図を示す。
図1の構成を有する電子機器としては、例えばパーソナルコンピュータ、その周辺機器(例えばプリンタ装置、スキャナ装置又は複合機)、携帯電話機、携帯情報端末、オーディオプレーヤ、ロボット装置、デジタルカメラ、ビデオカメラ、GPS装置、テレビ受信装置、プロジェクタ等がある。
電子機器10は、情報処理装置としてのホストシステム100と、メモリカード(広義には記憶デバイス、記憶装置)200とを含み、ホストシステム100とメモリカード200とがカードバス20を介して接続されている。電子機器10では、メモリカード200に対する制御コマンドを発行することにより、メモリカード200にデータを書き込んだり、メモリカード200からデータを読み出したりすることができる。メモリカード200は、例えばフラッシュメモリカード、I/OデバイスやHDD装置であってもよい。
ホストシステム100は、ホスト装置126と、カードコントローラ(記憶デバイスコントローラ、メモリコントローラ)130とを含む。ホスト装置126は、中央演算処理装置(Central Processing Unit:CPU)110と、メモリ120とを含む。CPU110、メモリ120及びカードコントローラ130は、システムバス122を介して接続されている。従って、CPU110は、システムバス122を介してメモリ120又はカードコントローラ130にアクセスできる。そして、CPU110が、メモリ120に格納されたプログラムを読み込んで該プログラムに対応した処理を実行することにより、メモリカード200に対して制御コマンドを発行する制御やメモリカード200に書き込みや読み出しされるデータを制御するホスト装置としての機能を実現する。カードコントローラ130とメモリカード200とは、カードバス20を介して接続され、CPU110が、カードコントローラ130からメモリカード200に対して発行する制御コマンドを生成する制御を行う。メモリカード200を「デバイス」と定義すると、カードコントローラ130はホスト側を制御する「ホストコントローラ」と定義することができる。
カードバス20は、転送クロックCLKが伝送されるクロックライン、制御コマンドCMD及びレスポンスが伝送されるコマンドライン、例えば4ビット(又は8ビット)の転送データDAT0−DAT3が伝送されるデータラインを有する。本実施形態では、カードコントローラ130が、転送クロックCLKに同期してコマンドCMDを発行する。そして、転送クロックCLKに同期して例えば4ビットの転送データDAT0−DAT3が送受信される。また、コマンドCMDの種類によっては、メモリカード200が制御コマンドCMDに対するレスポンスとして、例えばコマンドラインを用いてレスポンスを返すことができる。
以下では、メモリカード200がSD規格に準拠したフラッシュメモリカードであり、カードバス20にはSD規格に準拠したシーケンスで制御コマンドやレスポンス、転送データの送受信が行われるものとする。
図2(A)に、本実施形態における制御コマンドの説明図を示す。
制御コマンドは、例えば48ビット長のデータであり、スタートビットS(「0」)、カードコントローラ130によりセットされる転送ビット「1」に続き、45ビットのコマンドデータ、エンドビットE「1」で構成されている。コマンドデータの末尾の7ビットは、CRC(Cyclic Redundancy Check)データである。コマンドデータは、コマンド、アドレス情報やパラメータ情報を含むことができ、図2(A)のような構造のデータがコマンドラインを伝送される。
図2(B)に、図2(A)の制御コマンドに対応してメモリカード200から送信されるレスポンスの説明図を示す。
レスポンスは、スタートビット「S」が「0」、エンドビット「E」が「1」で挟まれた所定ビットのレスポンスデータである。図2(B)に示すようなレスポンスが、コマンドラインを介して受信される。メモリカード200は、例えば転送ビットに「0」を設定することで、上記のコマンドラインを介してレスポンスをカードコントローラ130に返信できる。
図3に、図1のカードコントローラ130の構成例のブロック図を示す。
カードコントローラ130は、制御インタフェース(InterFace:I/F)回路132、FIFO(First-In First-Out)I/F回路134、コントローラ制御レジスタ部136、クロック制御部138、制御ロジック部140、FIFO(FIFOメモリ、バッファ)146、ドライバ部148を含む。制御ロジック部140は、コマンドシーケンサ142、データシーケンサ144を含む。
制御I/F回路132は、システムバス122を介してCPU110やメモリ120との間で送受信される制御信号や制御データのインタフェース処理を行う。CPU110は、制御I/F回路132を介してコントローラ制御レジスタ部136の各制御レジスタに制御データを設定できる。
FIFOI/F回路134は、システムバス122を介してCPU110やメモリ120との間で送受信される制御信号や制御データのインタフェース処理を行う。システムバス122を介してメモリ120から読み出されたデータは、FIFO146においてバッファリングされた後、制御ロジック部140に供給される。また、メモリカード200から読み出されたデータは、FIFO146においてバッファリングされた後に、システムバス122を介してCPU110又はメモリ120に出力される。なお、FIFO146は、いわゆる先入れ先出し構造を有する必要はなく、ランダムアクセスが可能なメモリであってもよい。
コントローラ制御レジスタ部136は、1又は複数の制御レジスタを有し、各制御レジスタにはカードコントローラ130を制御するための制御データが設定される。コントローラ制御レジスタ部136の各制御レジスタに設定された制御データに対応した制御信号に基づいて、カードコントローラ130の各部が制御される。
クロック制御部138は、カードコントローラ130の各部にクロックを供給すると共に、カードバス20を構成するクロックラインに転送クロックCLKを出力する制御を行う。
コマンドシーケンサ142は、コントローラ制御レジスタ部136の制御レジスタの制御データに基づいて、カードバス20を構成するコマンドラインを介してメモリカード200に対してコマンドを発行する制御を行う。
データシーケンサ144は、コントローラ制御レジスタ部136の制御レジスタの制御データに基づいて、カードバス20を構成するデータラインを介してメモリカード200との間でデータを送受信する制御を行う。
ドライバ部148は、コマンドシーケンサ142の制御結果に基づいてコマンドラインの信号の入出力制御を行う。また、データシーケンサ144の制御結果に基づいてデータラインの信号の入出力制御を行う。
図4に、図3のコントローラ制御レジスタ部136の構成の概要を示す。
コントローラ制御レジスタ部136は、コマンド指定レジスタ150、引数設定レジスタ152、コマンドタイプ設定レジスタ154、レスポンス指定レジスタ156、転送タイプ設定レジスタ158、転送カウント数設定レジスタ160を含むことができる。コントローラ制御レジスタ部136のコマンド指定レジスタ150、引数設定レジスタ152、コマンドタイプ設定レジスタ154、レスポンス指定レジスタ156、転送タイプ設定レジスタ158及び転送カウント数設定レジスタ160の各制御レジスタにはアドレスが割り当てられており、例えば該アドレスをインクリメント(又は所定のアドレス値を加算)するだけ各制御レジスタに順番にアクセスできるようになっている。
CPU110は、システムバス122を介して、メモリカード200に対して発行するコマンドの種類を指定するコマンド指定情報と該コマンドのパラメータであるパラメータ情報とをコントローラ制御レジスタ部136に設定することができる。パラメータ情報は、引数情報、コマンドタイプ情報、レスポンス指定情報、転送タイプ情報、転送カウント数情報を含むことができる。
コマンド指定情報は、コマンド指定レジスタ150に設定される。コマンド指定レジスタ150に設定されたコマンド指定情報に基づいて、制御信号cmd_indexが出力される。制御信号cmd_indexにより指定されるコマンドインデックスが、SD規格におけるコマンド(例えばSD Specifications, Part 1, Physical Layer Specification Version 2.00, May 9, 2006, 4.7.4 Detailed Command Descriptionを参照)のインデックスとなる。例えば制御信号cmd_indexにより指定されるコマンドインデックスが「0」を指定するとき、カードコントローラ130は、メモリカード200に対して、アイドルステートに遷移させるコマンドCMD0を発行する制御を行う。
パラメータ情報のうち引数情報は、引数設定レジスタ152に設定される。引数設定レジスタ152に設定された引数情報に基づいて、制御信号argが出力される。制御信号argにより指定される引数情報が、SD規格におけるコマンドの引数となる。制御信号argにより指定される引数を用いて、カードコントローラ130は、メモリカード200に対して、上記の引数を有する例えばコマンドCMD2(コマンドインデックスが例えば「2」)を発行する制御を行う。
パラメータ情報のうちコマンドタイプ情報が、コマンドタイプ設定レジスタ154に設定される。コマンドタイプ設定レジスタ154に設定されたコマンドタイプ情報に基づいて、制御信号typeが出力される。コマンドタイプ情報は、停止コマンドか否かを示す情報と、例えばSD規格におけるACMDか否か(CMDかACMDか)を示す情報とを含む。
パラメータ情報のうちレスポンス指定情報が、レスポンス指定レジスタ156に設定される。レスポンス指定レジスタ156に設定されたレスポンス指定情報に基づいて、制御信号respが出力される。制御信号respにより指定されるレスポンス指定情報が、コマンドのレスポンスタイプとなる。レスポンスタイプは、レスポンスの有無だけでなく、レスポンスがある場合のレスポンスシーケンスの種類を特定する情報である。ここで、例えばSD規格においてR1以外のレスポンスタイプが指定される場合であっても、シーケンスがR1と実質的に同じであるR6やR7のレスポンスタイプをR1として指定すればよい。例えば制御信号respにより指定されるレスポンス指定情報が「R1b」を指定(コマンドインデックスが例えば「7」)するとき、カードコントローラ130は、メモリカード200に対して、例えばメモリカード200がビジー状態となるレスポンスを受け取る、例えばコマンドCMD7を発行する制御を行う。
パラメータ情報のうち転送タイプが、転送タイプ設定レジスタ158に設定される。転送タイプ設定レジスタ158に設定された転送タイプ情報に基づいて、制御信号tran_typeが出力される。制御信号tran_typeにより指定される転送タイプ情報が、SD規格におけるコマンドの転送タイプとなる。転送タイプ情報は、Single転送、Muliple転送、Stream転送、Infinite転送の他、転送方向や制御コマンドCMD12を伴うか否かの情報を含む。
パラメータ情報のうち転送カウント数情報が、転送カウント数設定レジスタ160に設定される。転送カウント数設定レジスタ160に設定された転送カウント数に基づいて、制御信号cntが出力される。制御信号cntにより指定される転送カウント数に基づいて、カードコントローラ130は、メモリカード200との間のデータ転送を繰り返す。
カードコントローラ130は、図4に示すようなコントローラ制御レジスタ部136の各制御レジスタの制御データを用いて、メモリカード200に対して制御コマンドを発行することができる。
図5に、図3のドライバ部148の構成の概要を示す。
ドライバ部148は、クロックラインを駆動して転送クロックSDCLKを出力するドライバと、コマンドラインに接続される第1の入出力ドライバと、データラインに接続される第2の入出力ドライバとを含む。
第1の入出力ドライバは、コマンドシーケンサ142によって制御されコマンドラインを駆動して制御コマンドを出力する出力ドライバと、コマンドラインを介して入力されるレスポンスを受信するための入力ドライバとを含む。コントローラ制御レジスタ部136の制御レジスタの内容に基づいてコマンドシーケンサ142によって生成された制御コマンドが、第1の入出力ドライバの出力ドライバによりコマンドラインに出力される。そして、該制御コマンドに対応してメモリカード200から出力されたレスポンスが、第1の入出力ドライバの入力ドライバで受信される。
第2の入出力ドライバは、データシーケンサ144によって制御されデータラインを駆動して転送データを出力する出力ドライバと、データラインを介して入力される転送データを受信するための入力ドライバとを含む。コントローラ制御レジスタ部136の制御レジスタの内容に基づいて、FIFOI/F回路134からのデータがデータシーケンサ144の制御により、転送データとして第2の入出力ドライバの出力ドライバを介してデータラインに出力される。そして、メモリカード200から出力されたレスポンスが、第1の入出力ドライバの入力ドライバで受信される。
図6に、図1のメモリカード200の構成例のブロック図を示す。
メモリカード200は、カードI/F回路210、カードI/F制御回路220、カード制御レジスタ部230、メモリI/F回路240、メモリコア部250を含む。
カードI/F回路210は、カードバス20を伝送される信号のインタフェース処理を行う。カードI/F制御回路220は、カードI/F回路210を制御してカードバス20に信号を出力する制御を行ったり、カードバス20からの信号を入力する制御を行ったりする。
カード制御レジスタ部230は、複数の制御レジスタを有する。例えば、カード制御レジスタ部230は、動作条件レジスタ(Operation Conditions Resister:OCR)、カード識別レジスタ(Card IDentification register:CID)、カード特性データレジスタ(Card-Specific Data register:CSD)、相対カードアドレスレジスタ(Relative Card Address register:RCA)、ドライバステージレジスタ(Driver Stage Register:DSR)、SDコンフィギュレーションレジスタ(SD Configuration Register:SCR)、SDステータスレジスタ(SD Status Register:SSR)、カードステータスレジスタ(Card Status Register:CSR)等を含む。カードI/F制御回路220は、カード制御レジスタ部230の設定データに基づいてメモリカード200の各部を制御すると共に、その制御結果をカード制御レジスタ部230に格納する制御を行う。
メモリI/F回路240は、カードI/F制御回路220の制御により、メモリコア部250のメモリ素子にデータを書き込んだり、メモリコア部250のメモリ素子からデータを読み出したりする制御を行う。
メモリコア部250は、複数のメモリ素子を有する。メモリI/F回路240は、予め割り当てられたアドレスに対応したメモリ素子からデータを読み出したり、該アドレスに対応したメモリ素子にデータを書き込んだりすることができる。
2. ホスト装置
ここで、図1のホスト装置126に適用可能な本実施形態におけるホスト装置について説明する。
図7に、本実施形態におけるホスト装置の構成の概要を示す。
ホスト装置500は、コマンド発行制御部510、レスポンス検出部520、FIFOデータ制御部(広義にはバッファデータ制御部)530、メモリ540を含む。
コマンド発行制御部510、レスポンス検出部520及びFIFOデータ制御部530の機能は、図1のCPU110及びメモリ120により実現される。より具体的には、CPU110が、メモリ120に格納されたプログラムを読み込み該プログラムに対応した処理を実行することで、コマンド発行制御部510、レスポンス検出部520及びFIFOデータ制御部530の機能を実現する。メモリ540の機能は、図1のメモリ120によって実現される。
コマンド発行制御部510は、カードコントローラ130に対し、メモリカード200をアクセスするためのコマンドの発行制御を行う。より具体的には、上位アプリケーションプログラムのからの指示で、図4のカードコントローラ130のコントローラ制御レジスタ部136にコマンド指定情報及びパラメータ情報を設定し、メモリカード200に対してコマンドを発行する制御を行う。
レスポンス検出部520は、コマンド発行制御部510により発行されたコマンドに対応したメモリカード200からのレスポンスの受信検出を行う。より具体的には、コマンド発行制御部510により発行されたコマンドが、メモリカード200からのレスポンスを受信すべきコマンドのとき、レスポンス検出部520は、カードコントローラ130により受信されたレスポンスの有無を検出する。カードコントローラ130はメモリカード200からのレスポンスを受信すると、ホスト装置500に対して割り込みを発生させたり、或いは図示しないステータスレジスタのフラグを設定したりすることで、ホスト装置500に対してメモリカード200からのレスポンスが受信されたことを通知できる。レスポンス検出部520は、このようなカードコントローラ130からの割り込み通知やステータスレジスタの内容をポーリングすることで、メモリカード200がカードコントローラ130にレスポンスを出力したか否かを検出できる。
FIFOデータ制御部530は、コマンド発行制御部510により発行されたコマンドがライトコマンドであるとき、メモリカード200に対して出力すべきライトデータをカードコントローラ130のFIFO146に書き込むライト制御を行う。より具体的には、ライトコマンドが発行されたとき、FIFOデータ制御部530は、メモリ540に格納されたライトデータをFIFO146に書き込む制御を行う。
また、FIFOデータ制御部530は、コマンド発行制御部510により発行されたコマンドがリードコマンドであるとき、メモリカード200から読み出すべきリードデータをカードコントローラ130のFIFO146から読み出すリード制御を行う。より具体的には、リードコマンドが発行されたとき、FIFOデータ制御部530は、FIFO146からのリードデータをメモリ540に書き込む制御を行う。
そして、コマンド発行制御部510がコマンドの発行制御を行った後に、FIFOデータ制御部530が、コマンドに対応して所定のデータサイズ単位で1又は複数回のリード制御又はライト制御を行う。即ち、コマンド発行制御部510が所与のコマンドを発行する場合、該コマンドがレスポンスを受信すべきときにはコマンド発行制御後にレスポンス検出部520によりレスポンスの受信検出を行う。また、該コマンドがライトデータを出力すべきときにはコマンド発行制御後にFIFOデータ制御部530が1又は複数回ライトデータをFIFO146に書き込む制御を行う。更に、該コマンドがリードデータを入力すべきときにはコマンド発行制御後にFIFOデータ制御部530が1又は複数回リードデータをFIFO146から読み出す制御を行う。このように、コマンド発行制御部510により発行されるコマンドの種類に応じて、レスポンスの受信の有無、ライトデータの出力の有無、リードデータの入力の有無等の制御シーケンスが異なる場合であっても、コマンド発行制御、レスポンスの受信制御(受信検出)及びFIFOデータの入出力制御の各制御を分離させたので、該コマンドに応じて必要な制御のみを機能させれば済む。即ち、コマンド毎に、コマンド発行制御部510、レスポンス検出部520及びFIFOデータ制御部530を共用化できることになる。なお、コマンド発行制御部510がレスポンス検出部520を含んだり、FIFOデータ制御部530がレスポンス検出部520を含んだりしてもよい。
ところで、カードコントローラ130のFIFO146のデータの蓄積状態によって、データ転送効率の低下や、転送を完了できなくなる事態を招く場合がある。例えば、ライト動作においてカードコントローラ130のFIFO146がフルになったときには、カードコントローラ130からメモリカード200に対してデータを出力するため転送クロックCLKを停止させる必要はない。これに対して、リード動作においてカードコントローラ130のFIFO146がフルになったときには、カードコントローラ130側でメモリカード200からの転送データを受信してしまうとデータの取りこぼしが発生するため、カードコントローラ130は転送クロックCLKを停止させてメモリカード200からのリードデータの送出を停止させる必要がある。このとき、レスポンスもまたカードコントローラ130側で受信できなくなる。このため、カードコントローラ130のFIFO146のデータを読み出すホスト装置500としては、できるだけFIFO146がフルとならないようにリード制御を行うことが望ましい。
ところが、MMC規格、SD規格、SDIO規格又はCE−ATA規格等では、次のようなカードバス仕様がある。
図8に、上述のMMC規格等のカードバス仕様の説明図を示す。
図8は、転送クロックCLKが伝送されるクロックライン、コマンド及びレスポンスが伝送されるコマンドライン、転送データDAT0−3が伝送されるデータラインのタイミングの一例を示している。
カードコントローラ130がコマンドラインを介してコマンド(リードコマンド)を発行すると、上述のMMC規格等では、該コマンドのエンドビットを基準に転送クロックCLKの最低2クロックの相当する期間Tdat後にメモリカード200がデータを出力できる。その一方、上述のMMC規格等では、コマンドのエンドビットを基準に転送クロックCLKの最大64クロックに相当する期間Tres後まで、メモリカード200はレスポンスを返す必要がない。従って、図8に示すとおり、データラインに転送データが読み出されてからレスポンスのスタートビットがカードコントローラ130側で検出されるまでの間、転送データはカードコントローラ130においてバッファリングされる。
カードコントローラ130にバッファリングされた転送データはホスト装置126が読み出さないと、カードコントローラ130のFIFO146がフルになって、転送クロックCLKの出力を停止させてしまう。この期間に、転送クロックの出力を停止させると、レスポンスのスタートビットまでも受信できなくなる可能性がある。
そこで、本実施形態では、図8のような場合でも転送クロックを停止させることなく、確実にレスポンスを受信できるように制御可能なホスト装置を提供する。そのため、発行したコマンドに対応するレスポンスが受信される前にデータの受信が開始されても、その後にデータ転送を継続できるように、レスポンスの受信前の受信データのサイズを事前リードサイズとして求める。即ち、ホスト装置500は、レスポンスを受信するまでの間にFIFO146にバッファリングされたデータを読み出しながら事前リードサイズを更新しておき、レスポンスの受信が完了すると該事前リードサイズを用いてFIFO146からのデータの読み出しを継続させる。
より具体的には、ホスト装置500のFIFOデータ制御部530は、FIFO146から読み出したデータをメモリ540に格納すると共に、コマンドを発行してからカードコントローラ130に該コマンドに対応したメモリカード200からのレスポンスの受信が完了するまでの間においてメモリ540に格納されるデータのサイズを事前リードサイズとして求める。そして、レスポンスの受信完了後に、この事前リードサイズ分だけシフトさせたメモリ540の記憶領域から順に、FIFO146から読み出したデータを格納する制御を行う。こうすることで、レスポンスの受信完了までFIFO146からデータを読み出すことができ、FIFO146がフル状態になる事態を回避できる。そして、レスポンスの受信完了後は、継続してFIFO146からのデータの読み出しができ、このリード動作による転送時間を短縮できる。
2.1 コマンド発行制御部
図7のコマンド発行制御部510は、MMC規格、SD規格、SDIO規格及びCE−ATA規格等の種々のコマンドに応じたパラメータ情報の設定を簡素化するために、コマンドテーブルを有し、該コマンドテーブルに登録されたコマンド設定情報をそのまま図4のコントローラ制御レジスタ部136に設定することで、複雑なコマンド発行制御の簡素化を図る。
図9に、本実施形態におけるコマンドテーブルの構成の概要を示す。
図9に示すように、コマンドテーブルは複数のブロックを有し、各ブロックにはテーブルインデックスが割り当てられている。そして、ブロック毎に、コマンドのコマンド設定情報が登録される。
図9では、例えばテーブルインデックス「0」に対応するブロックに、SD規格の制御コマンドCMD0を発行するためのコマンド設定情報が登録されている。同様に、例えばテーブルインデックス「1」に対応するブロックに、SD規格の制御コマンドCMD1を発行するためのコマンド設定情報が登録されている。また、同様に、例えばテーブルインデックス「3」に対応するブロックに、MMC規格の制御コマンドCMD3を発行するためのコマンド設定情報が登録され、テーブルインデックス「4」に対応するブロックに、SD規格の制御コマンドCMD3を発行するためのコマンド設定情報が登録される。
そして、図9に示すように、テーブルインデックスとコマンドインデックスとが異なることが望ましい。即ち、テーブルインデックスの番号とコマンドインデックスの番号とを揃える必要がない。こうすることで、テーブルインデックスを把握しておけば、コマンド設定情報が登録されるブロックを新規に追加したり変更したりしても、制御コマンドの生成処理が複雑化することがなくなる。
更に、コマンドテーブルには、種々の規格の制御コマンドのコマンド設定情報が混在して各テーブルに登録されていてもよい。即ち、第1の規格で規定された制御コマンドに対応したコマンド設定情報と、第2の規格で規定された制御コマンドに対応したコマンド設定情報とを含むことが望ましい。図9に示すように例えばSD規格の制御コマンド、SD規格と下位互換のMMC規格の制御コマンド等の他、更にSDIO規格の制御コマンドやCE−ATA規格の制御コマンドが混在することが望ましい。こうすることで、複数の規格のうちいずれかの規格の制御コマンドを発行するために、テーブルインデックスを指定するだけでよいので、従来の制御コマンドの生成処理に比べて処理の簡素化やプログラムコード量の削減を図ることができる。
図10に、図9のコマンドテーブルの各ブロックに登録されるコマンド設定情報の一例を示す。
各ブロックには、コマンド設定情報が登録される。そして、各コマンド設定情報は、コマンド指定情報としてのコマンドインデックスとパラメータ情報との組み合わせごとに設けられる。各ブロックには、コマンドインデックスの他に、コマンド引数情報、コマンドタイプ(コマンドタイプ情報)、レスポンスタイプ、レスポンスデータポインタ、転送タイプ情報、転送カウント数情報が登録される。レスポンスデータポインタは、メモリカード200からのレスポンスのデータが格納されるメモリ540(メモリ120)の記憶領域を指定する情報である。レスポンスデータポインタを除く、コマンド指定情報及びパラメータ情報は、そのままコントローラ制御レジスタ部136の各制御レジスタに設定される。
ここで、各コマンド設定情報のコマンド指定情報及びパラメータ情報が格納される順番が、当該コマンド指定情報及びパラメータ情報が設定されるカードコントローラ130のコントローラ制御レジスタ部136の制御レジスタを特定するアドレスの順番と同じであることが望ましい。また、各コマンド設定情報のコマンド指定情報及びパラメータ情報の各情報のビットの並びが、当該情報が設定されるカードコントローラ130のコントローラ制御レジスタ部136の制御レジスタのビットフィールドの並びと同じであることが望ましい。
こうすることで、図10の各情報は、レスポンスデータポインタを除き、加工処理やビット操作を行うことなく、図4のコントローラ制御レジスタ部136の各制御レジスタにそのまま設定できる。従って、制御コマンドの生成処理の簡素化を図ることができる。
2.2 処理例
図11に、図7のホスト装置500の処理例のフロー図を示す。
図7のホスト装置500が図1のホスト装置126に適用される場合、図1に示すメモリ120に図11の処理を実行するためのプログラムが格納されており、CPU110がメモリ120からプログラムを読み出して該プログラムに対応した処理を実行することで、CPU110がカードコントローラ130を制御して図11の処理が行われるようになっている。
まず、ホスト装置500は、パラメータであるリトライ回数を初期化して、該リトライ回数を「0」に設定する(ステップS10)。
次に、ホスト装置500は、コマンド発行制御部510において、コマンド(リードコマンド)の発行制御を行う(ステップS11)。そして、ホスト装置500は、パラメータである事前リードサイズを初期化して、該事前リードサイズを「0」に設定する(ステップS12)。ホスト装置500では、例えばFIFOデータ制御部530が事前リードサイズの管理を行う。
次に、ホスト装置500は、レスポンス検出部520において、ステップS10において発行したコマンド(リードコマンド)に対応したメモリカード200からのレスポンスの受信完了を待つ(ステップS13)。レスポンスの受信完了は、レスポンスの正常なエンドビットの受信を検出することで認識できる。これにより、メモリカード200は、カードコントローラ130に対し、転送クロックに同期させてリードデータの出力を開始する。カードコントローラ130では、FIFO146にリードデータのバッファリングが開始される。
ステップS13において、メモリカード200からのレスポンスの受信完了が検出されないとき(ステップS13:N)、ホスト装置500は、例えばレスポンス検出部520において物理層エラーが発生したか否かを判別する(ステップS14)。この物理層エラーとしては、レスポンス検出部520において検出可能なレスポンスのCRCエラーがある。
ステップS14において、物理層エラーの発生が検出されないとき(ステップS14:N)、FIFOデータ制御部530は、カードコントローラ130のFIFO146がフルであるか否かを判別する(ステップS15)。
ステップS15において、FIFO146がフルではないと判別されたとき(ステップS15:N)、ステップS13に戻ってレスポンスの受信完了を検出する。ステップS15において、FIFO146がフルであると判別されたとき(ステップS15:Y)、ステップS11において発行したコマンドで処理すべきデータサイズのうち未処理データのサイズが、FIFO146のフルサイズ(FIFO146が蓄積可能なデータサイズ)以上であるか否かを判別する(ステップS16)。
ステップS16において、未処理データのサイズがFIFO146のフルサイズ以上ではないと判別されたとき(ステップS16:N)、ステップS13に戻ってレスポンスの受信完了を検出する。
ステップS16において、未処理データのサイズがFIFO146のフルサイズ以上であると判別されたとき(ステップS16:Y)、FIFOデータ制御部530は、FIFO146のフルサイズであるFIFOサイズ分だけFIFO146からデータを読み出す制御を行い(ステップS17)、FIFO146からのデータをメモリ540に格納する制御を行う。FIFO146からのデータがメモリ540に格納される記憶領域は、メモリ540のバッファポインタによって管理される。その後、FIFOデータ制御部530は、このバッファポインタをFIFO146の読み出し分だけシフトし(ステップS18)、事前リードサイズに読み出したサイズ分だけ加算して更新し(ステップS19)、ステップS13に戻る。
このように、FIFO146がフルになり、且つ未処理のデータサイズがFIFOのフルサイズ以上のときにのみFIFO146のデータを読み出す制御を行うようにしたので、FIFO146の読み出し制御(事前リードサイズの管理制御)を簡素化できる上に、不要な読み出し制御を回避できるようになる。
一方、ステップS14において、物理層エラーの発生が検出されたとき(ステップS14:Y)、既に受信データを受信済みのとき(ステップS20:Y)、所与のエラー処理を行って(ステップS21)、一連の処理を終了する(エンド)。ここで、エラー処理は、ホスト装置500が、物理層エラーが発生した場合に処理すべき割り込みハンドラの処理を行う。ステップS20において、既に受信データを受信済みではないとき(ステップS20:N)、ホスト装置500は、リトライ回数をインクリメントし(ステップS21)、インクリメント後のリトライ回数が所与の閾値回数以下であるか否かを判別する(ステップS23)。
ステップS23において、インクリメント後のリトライ回数が所与の閾値回数以下であると判別されたとき(ステップS23:Y)、ホスト装置500は、ステップS13に戻ってレスポンスの受信完了を検出する。
ステップS23において、インクリメント後のリトライ回数が所与の閾値回数より大きいと判別されたとき(ステップS23:N)、ホスト装置500は、エラー処理を行って(ステップS24)、一連の処理を終了する(エンド)。ここで、エラー処理は、ホスト装置500が、物理層エラーが発生した場合の無限ループを防止するための割り込みハンドラの処理を行う。
また、ステップS13において、メモリカード200からのレスポンスの受信完了が検出されたとき(ステップS13:Y)、ホスト装置500は、FIFOデータ制御部530において、事前リードサイズ分だけシフトさせたバッファポインタ(アドレス)から順に、FIFO146から読み出したデータを格納する制御を行い(ステップS25)、事前リードサイズをクリアして(ステップS26)、一連の処理を終了する(エンド)。
図12に、図11のステップS11の処理例のフロー図を示す。
図7のホスト装置500が図1のホスト装置126に適用される場合、図1に示すメモリ120に図12の処理を実行するためのプログラムが格納されており、CPU110がメモリ120からプログラムを読み出して該プログラムに対応した処理を実行することで、CPU110がカードコントローラ130を制御して図12の処理が行われるようになっている。
ホスト装置500のコマンド発行制御部510は、上位アプリケーションからの指示で発行したい制御コマンドに対応したコマンドテーブルのテーブルインデックスを指定し(ステップS40)、該テーブルインデックスにより特定されるブロックのコマンド設定情報の中からコマンドインデックスをコントローラ制御レジスタ部136のコマンド指定レジスタ150に設定する(ステップS41)。
次に、CPU110は、該テーブルインデックスにより特定されるブロックのコマンド設定情報の中から引数情報をコントローラ制御レジスタ部136の引数設定レジスタ152に設定し、コマンドタイプをコントローラ制御レジスタ部136のコマンドタイプ設定レジスタ154に設定し、レスポンスタイプをコントローラ制御レジスタ部136のレスポンス指定レジスタ156に設定する(ステップS42)。また、CPU110は、転送タイプ情報を転送タイプ設定レジスタ158に設定すると共に、転送カウント数情報を転送カウント数設定レジスタ160に設定する。
次に、CPU110は、カードコントローラ130のコントローラ制御レジスタ部136の図示しない制御コマンド発行指示レジスタをアクセスして制御コマンドの発行指示を行い(ステップS44)、一連の処理を終了する(エンド)。
以上のように、ホスト装置500は、カードコントローラ130のFIFO146のリードデータの読み出し制御を行う。
図13に、本実施形態における効果の説明図を示す。
図13に示すように、本実施形態では、リードコマンドを発行後にレスポンスが返ってくる場合に、該レスポンスのエンドビットを受信するまでの期間T1では、事前リードサイズを更新しながらカードコントローラ130のFIFO146から、メモリカード200のリードデータを読み出す制御が行われる。期間T1で読み出されたリードデータは、メモリ540に格納される。
そして、レスポンスのエンドビットを受信後の期間T2では、この事前リードサイズを用いてFIFO146からメモリカード200のリードデータを読み出す制御が継続して行われる。より具体的には、期間T2では、期間T1で求めた事前リードサイズをメモリ540のオフセットとして補正したアドレスを開始アドレスとして、順番に、FIFO146からのリードデータがメモリ540に継続して格納される。
図14に、メモリ540のアドレスの説明図を示す。
図14に示すように、メモリ540の記憶領域を指定するアドレスの昇順方向が矢印DIRの場合に、図14の期間T1では、データの先頭位置を示す開始アドレスADSから順番にデータを格納する。このとき、データを格納する毎に、格納データサイズ分だけ事前リードサイズを増分して更新する。
期間T2では、開始アドレスADSを基準に事前リードサイズ分だけオフセットを持たせたアドレスAD1から順にデータの最終位置を示す終了アドレスADEまでのデータを、FIFO146からのリードデータとして読み出してメモリ540に格納していく。
以上説明したように、本実施形態によれば、レスポンスの受信完了までFIFO146からデータを読み出すことができ、FIFO146がフル状態になる事態を回避できる。そのため、FIFO146がフルになることで転送クロックを停止させることなく、レスポンスの受信完了後は、継続してFIFO146からのデータの読み出しができ、このリード動作による転送時間を短縮できる。更に、FIFO146を小容量化できるため、カードコントローラ130の低コスト化にも寄与できるようになる。
3. 電子機器
次に、本実施形態におけるホスト装置が適用される電子機器の構成例を示す。
図15に、本実施形態における電子機器としてのデジタルスチルカメラの構成例のブロック図を示す。
図15において、図1と同一部分には同一符号を付し、適宜説明を省略する。
電子機器10は、電荷結合素子(Charge Coupled Device:以下、CCD)イメージセンサ800、AD変換器、メモリ820、クロック生成回路830、ホストシステム100、ソケット(スロット、メモリ装着部、カード装着部、メモリカード装着部、記憶デバイス装着部)840を含む。
CCDイメージセンサ800は、複数の受光素子を有し、各受光素子に光が入射することにより発生した電荷を読み出して、画像を電気信号に変換する。CCDイメージセンサ800によって電気信号に変換された画像データは、AD変換器810によりデジタル信号に変換された後、メモリ820にバッファリングされる。
クロック生成回路830は、電子機器10の基本クロックやホストシステム100の基本クロックを生成する。
図15のプログラムメモリ120は、図1のメモリ120として機能する。
ソケット840には、メモリカード200が挿抜される。メモリカード200がソケット840に挿入された状態で、カードバス20を介してカードコントローラ130とメモリカード200との間でSD規格に従ったアクセスが行われる。
ホストシステム100の制御により、メモリ820に蓄えられた画像データをメモリカード200に書き込んだり、メモリカード200から画像データを読み出してメモリ820に蓄積させたりできる。
図15のような電子機器10によれば、メモリカード200からのデータの読み出し時に転送クロックを停止させることなく、短時間でリードデータを取得できるようになる。
なお、本発明は上述した実施の形態に限定されるものではなく、本発明の要旨の範囲内で種々の変形実施が可能である。本実施形態におけるメモリカードは、フラッシュメモリカードに限定されるものではない。本実施形態におけるメモリカードに代えて、I/Oデバイス、HDD装置、DVD装置、又は光ディスク装置であってもよい。
更に、コマンドは、上述の実施形態において説明したものに限定されるものではなく、例えばSD規格と同様の思想に基づく規格やSD規格を発展させた規格のライト動作、例えばMMC規格と同様の思想に基づく規格やMMC規格を発展させた規格のライト動作、例えばSDIO規格と同様の思想に基づく規格やSDIO規格を発展させた規格のライト動作、例えばCE−ATA規格と同様の思想に基づく規格やCE−ATA規格を発展させた規格のライト動作にも本発明は適用できる。
また、本発明のうち従属請求項に係る発明においては、従属先の請求項の構成要件の一部を省略する構成とすることもできる。また、本発明の1の独立請求項に係る発明の要部を、他の独立請求項に従属させることもできる。
本実施形態におけるホスト装置が適用された電子機器の構成例のブロック図。 図2(A)は制御コマンドの説明図。図2(B)はレスポンスの説明図。 図1のカードコントローラの構成例のブロック図。 図3のコントローラ制御レジスタ部の構成の概要を示す図。 図3のドライバ部の構成の概要を示す図。 図1のメモリカードの構成例のブロック図。 本実施形態におけるホスト装置の構成の概要を示す図。 MMC規格等のカードバス仕様の説明図。 本実施形態におけるコマンドテーブルの構成の概要を示す図。 図9のコマンドテーブルの各ブロックに登録されるコマンド設定情報の一例を示す図。 図7のホスト装置の処理例のフロー図。 図11のステップS11の処理例のフロー図。 本実施形態における効果の説明図。 メモリのアドレスの説明図。 本実施形態における電子機器としてのデジタルスチルカメラの構成例のブロック図。
符号の説明
10 電子機器、 20 カードバス、 100 ホストシステム、 110 CPU、
120、540、820 メモリ、 122 システムバス、
130 カードコントローラ、 132 制御I/F回路、
134 FIFOI/F回路、 136 コントローラ制御レジスタ部、
138 クロック制御部、 140 制御ロジック部、 142 コマンドシーケンサ、
144 データシーケンサ、 146 FIFO、 148 ドライバ部、
150 コマンド指定レジスタ、 152 引数設定レジスタ、
154 コマンドタイプ設定レジスタ、 156 レスポンス指定レジスタ、
158 転送タイプ設定レジスタ、 160 転送カウント数設定レジスタ、
200 メモリカード、 210 カードI/F回路、
220 カードI/F制御回路、 230 カード制御レジスタ部、
240 メモリI/F回路、 250 メモリコア部、 500 ホスト装置、
510 コマンド発行制御部、 520 レスポンス検出部、
530 FIFOデータ制御部、 800 CCDイメージセンサ、
810 AD変換器、 830 クロック生成回路、 840 ソケット

Claims (17)

  1. 記憶デバイスにアクセスする記憶デバイスコントローラを制御するためのホスト装置であって、
    前記記憶デバイスコントローラに対し、前記記憶デバイスをアクセスするためのコマンドの発行制御を行うコマンド発行制御部と、
    前記コマンドに対応した前記記憶デバイスからのレスポンスの受信検出を行うレスポンス検出部と、
    前記記憶デバイスのリードデータ又はライトデータが格納される前記記憶デバイスコントローラのバッファのリード制御又はライト制御を行うバッファデータ制御部とを含み、
    前記コマンド発行制御部が前記コマンドの発行制御を行った後に、前記バッファデータ制御部が、前記コマンドに対応して所定のデータサイズ単位で1又は複数回の前記リード制御又はライト制御を行うことを特徴とするホスト装置。
  2. 請求項1において、
    前記バッファデータ制御部が、
    前記バッファから読み出したデータを所与のメモリに格納すると共に、前記コマンドを発行してから前記記憶デバイスコントローラに前記コマンドに対応した前記記憶デバイスからのレスポンスの受信が完了するまでの間において前記メモリに格納されるデータのサイズを事前リードサイズとして求め、
    前記レスポンスの受信完了後に、前記事前リードサイズ分だけシフトさせた前記メモリの記憶領域から順に前記バッファから読み出したデータを格納する制御を行うことを特徴とするホスト装置。
  3. 請求項2において、
    前記記憶デバイスコントローラが、前記記憶デバイスに対して転送同期クロックとしての転送クロックを出力すると共に、前記バッファがフルのときに該転送クロックの出力を停止する場合に、
    前記バッファデータ制御部が、
    前記バッファがフルのときに前記バッファからデータを読み出し、該データのサイズを加算して前記事前リードサイズを更新することを特徴とするホスト装置。
  4. 請求項3において、
    前記バッファデータ制御部が、
    前記バッファがフルであり、且つ前記コマンドにより指定される前記記憶デバイスから読む出すべきデータサイズが前記バッファに蓄積可能なデータサイズ以上であるとき、前記バッファからデータを読み出し、前記事前リードサイズを更新することを特徴とするホスト装置。
  5. 請求項4において、
    前記バッファデータ制御部が、
    前記バッファに蓄積可能なデータサイズ単位で、該バッファからデータを読み出すことを特徴とするホスト装置。
  6. 前記記憶デバイスからのデータがバッファリングされるバッファを有する前記記憶デバイスコントローラと、
    前記記憶デバイスコントローラに対してコマンドの発行を制御する請求項1乃至5のいずれか記載の記憶デバイスコントローラとを含むことを特徴とする情報処理装置。
  7. 前記記憶デバイスが挿抜される記憶デバイス装着部と、
    請求項6記載の情報処理装置とを含むことを特徴とする電子機器。
  8. 記憶デバイスにアクセスする記憶デバイスコントローラを制御するためのプログラムであって、
    前記記憶デバイスコントローラに対し、前記記憶デバイスをアクセスするためのコマンドの発行制御を行うコマンド発行制御部と、
    前記コマンドに対応した前記記憶デバイスからのレスポンスの受信検出を行うレスポンス検出部と、
    前記記憶デバイスのリードデータ又はライトデータが格納される前記記憶デバイスコントローラのバッファのリード制御又はライト制御を行うバッファデータ制御部としてコンピュータを機能させ、
    前記コマンド発行制御部が前記コマンドの発行制御を行った後に、前記バッファデータ制御部が、前記コマンドに対応して所定のデータサイズ単位で1又は複数回の前記リード制御又はライト制御を行うことを特徴とするプログラム。
  9. 請求項8において、
    前記バッファデータ制御部が、
    前記バッファから読み出したデータを所与のメモリに格納すると共に、前記コマンドを発行してから前記記憶デバイスコントローラに前記コマンドに対応した前記記憶デバイスからのレスポンスの受信が完了するまでの間において前記メモリに格納されるデータのサイズを事前リードサイズとして求め、
    前記レスポンスの受信完了後に、前記事前リードサイズ分だけシフトさせた前記メモリの記憶領域から順に前記バッファから読み出したデータを格納することを特徴とするプログラム。
  10. 請求項9において、
    前記記憶デバイスコントローラが、前記記憶デバイスに対して転送同期クロックとしての転送クロックを出力すると共に、前記バッファがフルのときに該転送クロックの出力を停止する場合に、
    前記バッファデータ制御部が、前記バッファがフルのときに前記バッファからデータを読み出し、該データのサイズを加算して前記事前リードサイズを更新することを特徴とするプログラム。
  11. 請求項10において、
    前記バッファデータ制御部が、
    前記バッファがフルであり、且つ前記コマンドに指定される前記記憶デバイスから読む出すべきデータサイズが前記バッファに蓄積可能なデータサイズ以上であるとき、前記バッファからデータを読み出し、前記事前リードサイズを更新することを特徴とするプログラム。
  12. 請求項11において、
    前記バッファデータ制御部が、
    前記バッファに蓄積可能なデータサイズ単位で、該バッファからデータを読み出すことを特徴とするプログラム。
  13. 記憶デバイスからのリードデータをバッファリングする記憶デバイスコントローラに対するリード制御方法であって、
    前記記憶デバイスコントローラに対し、前記記憶デバイスをアクセスするためのコマンドの発行制御を行うコマンド発行制御ステップと、
    前記コマンドに対応した前記記憶デバイスからのレスポンスの受信検出を行うレスポンス検出ステップと、
    前記記憶デバイスのリードデータ又はライトデータが格納される前記記憶デバイスコントローラのバッファのリード制御又はライト制御を行うバッファデータ制御ステップとを含み、
    前記バッファデータ制御ステップは、
    前記コマンドの発行制御を行った後に、前記コマンドに対応して前記バッファデータ制御部が所定のデータサイズ単位で1又は複数回の前記リード制御又はライト制御を行うことを特徴とするリード制御方法。
  14. 請求項13において、
    前記バッファデータ制御ステップは、
    前記バッファから読み出したデータを所与のメモリに格納すると共に、前記コマンドを発行してから前記記憶デバイスコントローラに前記コマンドに対応した前記記憶デバイスからのレスポンスの受信が完了するまでの間において前記メモリに格納されるデータのサイズを事前リードサイズとして求め、
    前記レスポンスの受信完了後に、前記事前リードサイズ分だけ補正した前記メモリの記憶領域から順番に前記バッファから読み出したデータを格納することを特徴とするリード制御方法。
  15. 請求項14において、
    前記記憶デバイスコントローラが、前記記憶デバイスに対して転送同期クロックとしての転送クロックを出力すると共に、前記バッファがフルのときに該転送クロックの出力を停止する場合に、
    前記バッファデータ制御ステップが、
    前記バッファがフルのときに前記バッファからデータを読み出し、該データのサイズを加算して前記事前リードサイズを更新することを特徴とするリード制御方法。
  16. 請求項15において、
    前記バッファデータ制御ステップが、
    前記バッファがフルであり、且つ前記コマンドに指定される前記記憶デバイスから読む出すべきデータサイズが前記バッファに蓄積可能なデータサイズ以上であるとき、前記バッファからデータを読み出し、前記事前リードサイズを更新することを特徴とするリード制御方法。
  17. 請求項16において、
    前記バッファデータ制御ステップが、
    前記バッファに蓄積可能なデータサイズ単位で、該バッファからデータを読み出すことを特徴とするリード制御方法。
JP2007133230A 2007-05-18 2007-05-18 ホスト装置、情報処理装置、電子機器、プログラム及びリード制御方法 Withdrawn JP2008287600A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2007133230A JP2008287600A (ja) 2007-05-18 2007-05-18 ホスト装置、情報処理装置、電子機器、プログラム及びリード制御方法
US12/122,210 US20080288675A1 (en) 2007-05-18 2008-05-16 Host device, information processor, electronic apparatus, program, and method for controlling reading

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007133230A JP2008287600A (ja) 2007-05-18 2007-05-18 ホスト装置、情報処理装置、電子機器、プログラム及びリード制御方法

Publications (1)

Publication Number Publication Date
JP2008287600A true JP2008287600A (ja) 2008-11-27

Family

ID=40028675

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007133230A Withdrawn JP2008287600A (ja) 2007-05-18 2007-05-18 ホスト装置、情報処理装置、電子機器、プログラム及びリード制御方法

Country Status (2)

Country Link
US (1) US20080288675A1 (ja)
JP (1) JP2008287600A (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
BR112012013357A2 (pt) * 2009-12-04 2016-03-01 Napatech As conjunto para receber e encaminhar pacotes de dados, aparelho para receber e armazenar dados para uso no conjunto e método para operar o conjunto
WO2011067408A1 (en) 2009-12-04 2011-06-09 Napatech A/S An apparatus and a method of receiving and storing data packets controlled by a central controller
US8526363B2 (en) * 2010-01-13 2013-09-03 Sony Corporation Method and system for transferring data between wireless devices
WO2011132204A2 (en) * 2010-04-20 2011-10-27 Ajay Sethi Fetch engine
JP2013029884A (ja) * 2011-07-26 2013-02-07 Ricoh Co Ltd データ転送装置、画像投影装置、データ転送方法およびプログラム
TWI549137B (zh) * 2014-09-18 2016-09-11 宏碁股份有限公司 記憶體晶片、其資料讀取方法以及資料儲存系統
CN113590520B (zh) * 2021-06-15 2024-05-03 珠海一微半导体股份有限公司 Spi系统自动写入数据的控制方法及spi系统

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3552213B2 (ja) * 2001-08-31 2004-08-11 株式会社東芝 Sdメモリカードホストコントローラ及びクロック制御方法
JP2005101766A (ja) * 2003-09-22 2005-04-14 Matsushita Electric Ind Co Ltd 電子装置及びその制御方法
EP1794681B1 (en) * 2004-10-01 2008-09-17 Matsushita Electric Industrial Co., Ltd. Memory card controller, memory card drive device, and computer program
US7596643B2 (en) * 2007-02-07 2009-09-29 Siliconsystems, Inc. Storage subsystem with configurable buffer

Also Published As

Publication number Publication date
US20080288675A1 (en) 2008-11-20

Similar Documents

Publication Publication Date Title
JP2008287600A (ja) ホスト装置、情報処理装置、電子機器、プログラム及びリード制御方法
US9563368B2 (en) Embedded multimedia card and method of operating the same
US7028109B2 (en) Data transfer control device including buffer controller with plurality of pipe regions allocated to plurality of endpoints
JP3870717B2 (ja) データ転送制御装置及び電子機器
US7051124B2 (en) Data transfer control device, electronic equipment, and data transfer control method
US8635386B2 (en) Communication control device, data communication method and program
JP3632695B2 (ja) データ転送制御装置、電子機器及びデータ転送制御方法
JP2004070571A (ja) データ転送制御システム、電子機器、プログラム及びデータ転送制御方法
JP2007011788A (ja) メモリカード及びそのホスト機器
JP4452690B2 (ja) 電子装置、その制御方法、ホスト装置及びその制御方法
US11010094B2 (en) Task management method and host for electronic storage device
US20070079015A1 (en) Methods and arrangements to interface a data storage device
US7469304B2 (en) Data transfer control device, electronic equipment, and method for a data transfer through a bus, the data transfer control device including a register and a packet buffer that are commonly used during a host operation and a peripheral operation
US20030101308A1 (en) Bus system and bus interface for connection to a bus
KR101662729B1 (ko) 시리얼 인터페이스 프로토콜을 사용하여 호스트와 인터페이스하는 비휘발성 메모리 기반 저장 장치의 커맨드 처리 방법 및 상기 방법을 수행하기 위한 메모리 컨트롤러
JPWO2012081085A1 (ja) 割込み要因管理装置及び割込み処理システム
JP2007072532A (ja) 複数チップの起動方法
US7043589B2 (en) Bus system and bus interface
JP4431768B2 (ja) 携帯型電子装置、読み出し方法及び書き込み方法
US9621334B2 (en) Data transmission method and system
US20080133792A1 (en) Information processing device, method and program for displaying number of transferred data
JP2008276650A (ja) 制御コマンド生成装置、情報処理装置、電子機器及びプログラム
US7921238B2 (en) USB host system and method for transferring transfer data
JP2010015431A (ja) ホストコントローラ、情報処理装置及び電子機器
JP2004185584A (ja) カードアダプタ制御装置、usbコントローラー、カードアダプタ

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080922

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090406

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090519

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20090717