(57)【要約】【課題】ＵＦＳＨＣＩ規格の文言を直接ＵＦＳホストに実装すると、ＵＦＳデバイスの読み書き動作が固まったり、データの内容が破壊されたりする不具合が発生する場合がある。【解決手段】半導体装置はユニバーサルフラッシュストレージ（ＵＦＳ）デバイスとの間のデータ転送を行うＵＦＳホストコントローラを有する。半導体装置は、前記ＵＦＳホストコントローラを処理可能状態にするランストップレジスタと、前記ＵＦＳホストコントローラに転送を指示するドアベルレジスタと、前記ＵＦＳホストコントローラが転送要求の処理が実行可能かどうかを示すレディビットと、を備える。前記ＵＦＳホストコントローラは、前記データ転送が仕掛中に前記ランストップレジスタがクリアされた場合、前記データ転送が完了するまで次のデータ転送の登録を防止する。【選択図】図１０
2019185544.tif 000002
【特許請求の範囲】
【請求項１】
ユニバーサルフラッシュストレージ（ＵＦＳ）デバイスとの間のデータ転送を行うＵＦＳホストコントローラを有する半導体装置であって、
前記ＵＦＳホストコントローラを処理可能状態にするランストップレジスタと、
前記ＵＦＳホストコントローラに転送を指示するドアベルレジスタと、
前記ＵＦＳホストコントローラが転送要求の処理が実行可能かどうかを示すレディビットと、
を備え、
前記ＵＦＳホストコントローラは、前記データ転送が仕掛中に前記ランストップレジスタがクリアされた場合、前記データ転送が完了するまで次のデータ転送の登録を防止する半導体装置。
【請求項２】
請求項１の半導体装置において、
前記ＵＦＳホストコントローラは、前記データ転送が仕掛中に前記ランストップレジスタがクリアされた場合、前記レディビットをクリアする半導体装置。
【請求項３】
請求項２の半導体装置において、
前記ＵＦＳホストコントローラは、前記データ転送が仕掛中に前記ランストップレジスタがクリアされた場合、前記データ転送が完了するまで前記レディビットをセットしない半導体装置。
【請求項４】
請求項１の半導体装置において、
前記データ転送が仕掛中に前記ランストップレジスタをクリアしようとしても、前記ＵＦＳホストコントローラは、前記データ転送が完了するまで前記ランストップレジスタをクリアしない半導体装置。
【請求項５】
請求項４の半導体装置において、
前記ＵＦＳホストコントローラは、前記ランストップレジスタのクリア情報を前記データ転送が仕掛中保持し、前記データ転送が完了後、前記ランストップレジスタをクリアする半導体装置。
【請求項６】
請求項１の半導体装置において、
さらに、前記ランストップレジスタの値に拘わらず転送状態を保持する内部ドアベルレジスタを備え、
前記ＵＦＳホストコントローラは、前記ランストップレジスタの書き込みの際に、前記内部ドアベルレジスタの値を前記ドアベルレジスタに書き戻す半導体装置。
【請求項７】
請求項６の半導体装置において、
前記内部ドアベルレジスタは、前記ドアベルレジスタがセットされるときセットされ、前記データ転送が仕掛中に前記ランストップレジスタがクリアされるときもセット状態が保持され、
前記ドアベルレジスタは、前記ランストップレジスタがセットされるとき、前記内部ドアベルレジスタによってセットされる半導体装置。
【請求項８】
請求項１の半導体装置において、
さらに、前記ランストップレジスタおよび前記ドアベルレジスタに書き込みを行うＣＰＵを備える半導体装置。
【請求項９】
ユニバーサルフラッシュストレージ（ＵＦＳ）デバイスとの間でデータ転送を行う半導体装置であって、
ＣＰＵと、
転送制御ユニットと、
前記転送制御ユニットを処理可能状態にするランストップレジスタと、
前記転送制御ユニットに転送を指示するドアベルレジスタと、
前記転送制御ユニットが転送要求の処理が実行可能かどうかを示すレディビットと、
を備え、
前記データ転送が仕掛中に前記ＣＰＵが前記ランストップレジスタをクリアする場合、前記転送制御ユニットは、前記データ転送が完了するまで前記ＣＰＵによる次のデータ転送の登録を防止する半導体装置。
【請求項１０】
請求項９の半導体装置において、
前記データ転送が仕掛中に前記ＣＰＵによって前記ランストップレジスタがクリアされる場合、前記転送制御ユニットは前記レディビットをクリアする半導体装置。
【請求項１１】
請求項１０の半導体装置において、
前記データ転送が仕掛中に前記ＣＰＵによって前記ランストップレジスタがクリアされた場合、前記転送制御ユニットは前記データ転送が完了するまで前記レディビットをセットしない半導体装置。
【請求項１２】
請求項９の半導体装置において、
前記データ転送が仕掛中に前記ＣＰＵが前記ランストップレジスタをクリアしようとしても、前記転送制御ユニットは前記データ転送が完了するまで前記ランストップレジスタをクリアしない半導体装置。
【請求項１３】
請求項１２の半導体装置において、
前記転送制御ユニットは、前記ランストップレジスタのクリア情報を前記データ転送が仕掛中保持し、前記データ転送が完了後、前記ランストップレジスタをクリアする半導体装置。
【請求項１４】
請求項９の半導体装置において、
さらに、前記ランストップレジスタの値に拘わらず転送状態を保持する内部ドアベルレジスタを備え、
前記ＣＰＵが前記ランストップレジスタへ書き込む際に、前記転送制御ユニットは前記内部ドアベルレジスタの値を前記ドアベルレジスタに書き戻す半導体装置。
【請求項１５】
請求項１４の半導体装置において、
前記ＣＰＵが前記ドアベルレジスタをセットするとき、前記内部ドアベルレジスタはセットされ、前記データ転送が仕掛中に前記ＣＰＵが前記ランストップレジスタをクリアするとき、前記内部ドアベルレジスタはセット状態を保持し、
前記ＣＰＵが前記ランストップレジスタをセットするとき、前記ドアベルレジスタは前記内部ドアベルレジスタによってセットされる半導体装置。
【請求項１６】
ユニバーサルフラッシュストレージ（ＵＦＳ）デバイスと、
前記ＵＦＳデバイスとの間のデータ転送を制御するＵＦＳホストと、
を備え、
前記ＵＦＳホストは、
ＣＰＵと、
ＵＦＳホストコントローラと、
前記ＵＦＳホストコントローラを処理可能状態にするランストップレジスタと、
前記ＵＦＳホストコントローラに転送を指示するドアベルレジスタと、
前記ＵＦＳホストコントローラが転送要求の処理が実行可能かどうかを示すレディビットと、
を備え、
前記データ転送が仕掛中に前記ＣＰＵが前記ランストップレジスタをクリアする場合、前記ＵＦＳホストコントローラは、前記データ転送が完了するまで前記ＣＰＵによる次のデータ転送の登録を防止するＵＦＳシステム。
【請求項１７】
請求項１６のＵＦＳシステムにおいて、
前記データ転送が仕掛中に前記ＣＰＵによって前記ランストップレジスタがクリアされる場合、前記ＵＦＳホストコントローラは前記レディビットをクリアするＵＦＳシステム。
【請求項１８】
請求項１６のＵＦＳシステムにおいて、
前記データ転送が仕掛中に前記ＣＰＵが前記ランストップレジスタをクリアしようとしても、前記ＵＦＳホストコントローラは前記データ転送が完了するまで前記ランストップレジスタをクリアしないＵＦＳシステム。
【請求項１９】
請求項１６のＵＦＳシステムにおいて、
さらに、前記ランストップレジスタの値に拘わらず転送状態を保持する内部ドアベルレジスタを備え、
前記ＣＰＵが前記ランストップレジスタへ書き込む際に、前記ＵＦＳホストコントローラは前記内部ドアベルレジスタの値を前記ドアベルレジスタに書き戻すＵＦＳシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は半導体装置に関し、例えばフラッシュメモリに対して読み書きするホストコントローラを備える半導体装置に適用可能である。
【背景技術】
【０００２】
スマートフォンやタブレット、デジカメ、カーナビなどには、ＯＳ（Operating System）などのデータを格納するストレージとして、電子デバイス技術合同協議会（ＪＥＤＥＣ：Joint Electron Device Engineering Council）によって規定された組み込みマルチメディアカード（ｅＭＭＣ：embedded Multi-Media Card）の規格に準拠したフラッシュメモリが広く用いられている。ｅＭＭＣ規格はパラレルインタフェースを使用していて、動作周波数を上げるのが困難であり、後継規格として、ＪＥＤＥＣで規定されたユニバーサルフラッシュストレージ （ＵＦＳ：Universal Flash Storage）規格（非特許文献１）が策定されている。ＵＦＳ規格は、ホスト（Host）とフラッシュメモリ（デバイス（Device））との間でやり取りするプロトコルや電気的特性を定義している規格である。この規格に加え、ＯＳやドライバの再利用性を高めるために、ユニバーサルフラッシュストレージホストコントローラインタフェース（ＵＦＳＨＣＩ：Universal Flash Storage Host Controller Interface）規格（非特許文献２）が策定されている。ＵＦＳＨＣＩ規格はソフトウェアとのインタフェースとなるレジスタとソフトウェアから指示される転送とデータの制御を定義している。特許文献１にはホストとデバイスを備えるＵＦＳシステムが開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特表２０１６−５３９４２９号公報
【非特許文献】
【０００４】
【非特許文献１】JEDEC STANDARD Universal Flash Storage (UFS) Version 2.1 (JESD220C)
【非特許文献２】JEDEC STANDARD Universal Flash Storage Host Controller Interface (UFSHCI) Version 2.1 (JESD223C)
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ＵＦＳＨＣＩ規格の文言を直接ＵＦＳ規格およびＵＦＳＨＣＩ規格の両規格に準拠するホスト（ＵＦＳホストという。）に実装すると、ＵＦＳ規格に準拠するフラッシュメモリ等のデバイス（ＵＦＳデバイスという。）の読み書き動作が固まったり、データの内容が破壊されたりする不具合が発生する場合がある。
【課題を解決するための手段】
【０００６】
本開示のうち代表的なものの概要を簡単に説明すれば下記の通りである。
すなわち、半導体装置はユニバーサルフラッシュストレージ（ＵＦＳ）デバイスとの間のデータ転送を行うＵＦＳホストコントローラを有する。半導体装置は、前記ＵＦＳホストコントローラを処理可能状態にするランストップレジスタと、前記ＵＦＳホストコントローラに転送を指示するドアベルレジスタと、前記ＵＦＳホストコントローラが転送要求の処理が実行可能かどうかを示すレディビットと、を備える。前記ＵＦＳホストコントローラは、前記データ転送が仕掛中に前記ランストップレジスタがクリアされた場合、前記データ転送が完了するまで次のデータ転送の登録を防止する。
【発明の効果】
【０００７】
上記半導体装置によれば、不具合を回避することができる。
【図面の簡単な説明】
【０００８】
【図１】実施形態のＵＦＳシステムの構成を示すブロック図
【図２】図１のレジスタ群に含まれるレジスタを示す図
【図３】１６Ｋバイトのライト動作を示すフロー図
【図４】図３のライト動作におけるレジスタおよびＵＴＰ転送要求記述の値を示す図
【図５】図３のライト動作の途中でアボートを行った場合の例を示すフロー図
【図６】図５のライト動作におけるレジスタおよびＵＴＰ転送要求記述の値を示す図
【図７】図４のライト動作の途中でランストップレジスタをクリアした場合の例を示すフロー図
【図８】図７のライト動作におけるレジスタおよびＵＴＰ転送要求記述の値を示す図
【図９】比較例のランストップレジスタおよびドアベルレジスタ並びにそれらの制御系を示す論理回路図
【図１０】第一実施例のランストップレジスタ、ドアベルレジスタおよびレディビット並びにそれらの制御系を示す論理回路図
【図１１】第一実施例において図３のライト動作の途中でランストップレジスタをクリアした場合の例を示すフロー図
【図１２】図１１のライト動作におけるレジスタおよびＵＴＰ転送要求記述の値を示す図
【図１３】第二実施例のランストップレジスタおよびドアベルレジスタ並びにそれらの制御系を示す論理回路図
【図１４】第二実施例において図３のライト動作の途中でランストップレジスタをクリアした場合の例を示すフロー図
【図１５】図１４のライト動作におけるレジスタおよびＵＴＰ転送要求記述の値を示す図
【図１６】第三実施例のランストップレジスタおよびドアベルレジスタ並びにそれらの制御系を示す論理回路図
【図１７】第三実施例において図４のライト動作の途中でランストップレジスタをクリアした場合の例を示すフロー図
【図１８】図１７のライト動作におけるレジスタおよびＵＴＰ転送要求記述の値を示す図
【発明を実施するための形態】
【０００９】
以下、実施形態、実施例および比較例について、図面を用いて説明する。ただし、以下の説明において、同一構成要素には同一符号を付し繰り返しの説明を省略することがある。
【００１０】
まず、ＵＦＳ規格およびＵＦＳＨＣＩ規格に準拠するシステム（ＵＦＳシステムという。）について図１を用いて説明する。図１は実施形態のＵＦＳシステムの構成を示すブロック図である。
【００１１】
ＵＦＳシステム１はＵＳＦホスト１０とＵＦＳデバイス２０を備える。ＵＦＳホスト１０はＣＰＵ１１とメモリ１２とＵＦＳホストコントローラ１３とバス１４とを一つの半導体チップに備える半導体装置である。ＵＦＳホストコントローラ１３はＵＦＳ規格とＵＦＳＨＣＩ規格に準拠し、レジスタ群（ＨＣＲＥＧ）１５と転送制御ユニット（ＨＣ）１６と転送プロトコルユニット（ＵＴＰ）１７と通信インタフェース（ＵＩＣ）１８とを備える。通信インタフェース１８はＵｎｉＰｒｏ規格に準拠するリンク層とＭ−ＰＨＹ規格に準拠する物理層で構成されている。ＵＦＳデバイス２０は通信インタフェースを含むコントローラとフラッシュメモリで構成されている。
【００１２】
ＵＦＳホスト１０のソフトウェア（アプリケーションやドライバ）はメモリ１２または図示していないメモリに格納されてＣＰＵ１１で実行される。ＣＰＵ１１はＵＦＳホストコントローラ１３と通信するため、メモリマップＩ／Ｏ空間に配置されるレジスタ群１５と共にメモリ１２内のＵＴＰ転送要求記述（UTP Transfer Request Descriptor）を使用する。レジスタ群について図２を用いて説明する。
【００１３】
図２は図１のレジスタ群に含まれるレジスタを示す図である。
【００１４】
レジスタ群１５は、ＵＦＳＨＣＩ規格で定義されているレジスタを備えるが、本開示に主に関連するのは、図２に示すように、ランストップ（Run-Stop）レジスタ１５１と、ドアベル（Door bell）レジスタ１５２と、である。その他に、ホストコンローラステータスレジスタ１５３のレディビット１５３１と、ベースアドレス（Base Address）レジスタ１５４と、リクエストクリアレジスタ１５５と、が関連する。
【００１５】
ランストップレジスタ１５１は非特許文献２の２３頁の５．４．５に定義されるＵＴＲＬＲＳＲ（UTP Transfer Request List Run-Stop Register）である。ドアベルレジスタ１５２は非特許文献２の２３頁の５．４．３に定義されるＵＴＲＬＤＢＲ（UTP Transfer Request List Door Bell Register）である。ホストコンローラステータスレジスタ１５３のレディビット１５３１は非特許文献２の１７頁の５．３．３に定義されるＨＣＳ（Host Controller Status）のＵＴＲＬＲＤＹ（UTP Transfer Request List Ready）である。ベースアドレスレジスタ１５４は非特許文献２の２２頁の５．４．１に定義されるＵＴＲＬＢＡ（UTP Transfer Request List Base Address）である。リクエストクリアレジスタ１５５は非特許文献２の２３頁の５．４．４に定義されるＵＴＲＬＣＬＲ（UTP Transfer Request List Clear Register）である。以下では、本開示に主に関連するその一部の定義について説明する。
【００１６】
ランストップレジスタ１５１は３２ビット長のレジスタであるが、ビット０のみが使用される。ランストップレジスタ１５１は、ＣＰＵ１１によって、転送制御ユニット１６を処理可能状態（転送を行う状態）にする際に１が書かれ、転送を実施しない状態にする際に０が書かれる。ランストップレジスタ１５１が０にクリアされても、転送制御ユニット１６はすべての転送要求が完了するまで転送を行い、その後停止する。ランストップレジスタ１５１はレディビット１５３１が１にセットされている場合のみ、１にセットされる。
【００１７】
ドアベルレジスタ１５２は、転送する内容を用意・登録できたら、ＣＰＵ１１が本レジスタに１をセットし、転送制御ユニット１６に転送開始を指示するレジスタである。ドアベルレジスタ１５２は３２ビットで構成され、３２個の転送を登録可能である。登録した転送が完了すると、転送制御ユニット１６が当該のビットを０にクリアする。ドアベルレジスタ１５２はランストップレジスタ１５１が１にセットされている場合のみ、１または０にセットされる。ＣＰＵ１１によってランストップレジスタ１５１が１から０に書かれるとき、ドアベルレジスタ１５２は０にクリアされる。
【００１８】
レディビット１５３１はホストコントーラステータスレジスタ１５３のビット１に配置され、ＵＦＳホストコントローラ１３がＵＴＰ転送要求の処理が実行可能かどうかを示すビットであり、転送制御ユニット１６によって設定される。
【００１９】
ベースアドレスレジスタ１５４はＵＴＰ転送要求リストのためのベース物理アドレスであり、実行するコマンドをフェッチするときに使用される。
【００２０】
リクエストクリアレジスタ１５５は、転送要求が中断（アボート）されたことを意味するタスク管理レスポンスをＵＦＳホスト１０のソフトウェアが受信するとき、すなわち、ＵＴＰ転送要求が完了しないと予想されるときにＵＦＳホスト１０のソフトウェアによって使用される。
【００２１】
非特許文献２の６頁の４．２に示されるように、メモリ１２内にＵＴＰ転送要求リスト（UTP Transfer Request List）およびＵＴＰ管理要求リスト（UTP Task Management Request List）が格納される。ＵＴＰ転送要求リストは３２個までＵＴＰ転送要求記述を格納可能であり、各ＵＴＰ転送要求記述はコマンド（Command UPIU）、レスポンス（Response UPIU）、データバッファ（Data Buffer）をアクセスするためのベースアドレスを含む物理領域記述テーブル（PRDT:Physical Region Descrition Table）をアクセスするためのアドレス情報が含まれる。ＵＴＰタスク管理要求リストは３２個までＵＴＰタスク管理要求およびＵＴＰタスク管理レスポンスを格納可能である。
【００２２】
次に、転送プロトコルユニット１７のプロトコル情報ユニットについて説明する。ＵＦＳホスト１０とＵＦＳデバイス２０との間の通信は一連のメッセージに分割される。これらのメッセージは、非特許文献１の規格で定義されているＵＦＳプロトコル情報ユニット（ＵＰＩＵ：UFS Protocol Information Units）にフォーマットされている。ＵＰＩＵにはコマンド（Command）、データ出力（Data Out UPIU）、レスポンス（Response UPIU）、タスク管理要求（Task Management Request UPIU）、タスク管理レスポンス（Task Management Response UPIU）、ＲＴＴ（Ready To Transfer）等がある。
【００２３】
本開示で説明するＵＰＩＵは、全てタスクタグ（Task Tag）フィールドを有しており、ＵＰＩＵに載せられたタスクタグと一致するＵＰＩＵ（受信データ・レスポンス）のみ転送対象とし、タスクタグが異なるＵＰＩＵは破棄される。タスクタグはインクリメントする番号で、異なるトランザクションで共通のタスクタグを使用することはできない。
【００２４】
本実施形態は、ＵＦＳデバイス２０へのライト（書込み）動作の中断時に関わるものである。ＵＦＳホスト１０が、データをＵＦＳデバイス２０に書き込む際の動作例について図３、４を用いて説明する。図３は１６Ｋバイトのライト動作を示すフロー図である。図４は図３のライト動作におけるレジスタおよびＵＴＰ転送要求記述の値を示す図である。
【００２５】
ステップＳ１：ランストップレジスタ１５１に１を書き、転送を実施することを転送制御ユニット１６に通知する。ランストップレジスタ１５１に１を書く前に、転送制御ユニット１６の準備ができているかどうかを、ホストコントローラステータスレジスタ１５３のレディビット１５３１を読み確認する。レディビット１５３１が１の時のみランストップレジスタ１５１に１を書き込める。
【００２６】
ステップＳ２（ドアベル登録）：アプリケーションを実行するＣＰＵ１１が、書き込むデータと書き込む内容（サイズなど）等の転送内容が記載されるＵＴＰ転送要求リスト（UTP Transfer Request List）をメモリ１２上に用意する。図４に示すように、本例では、ＵＴＰ転送要求リストの一つのＵＴＰ転送要求記述には転送内容１が記載されている。ドライバを実行するＣＰＵ１１が、ベースアドレス１５４にＵＴＰ転送要求リストのアドレスを記載し、ドアベルレジスタ１５２に１をセットすることにより転送開始の指示を行う。この際、ＣＰＵ１１は、ＵＴＰ転送要求リストの記載した場所（スロット）に対応するドアベルレジスタ１５２に１を書いて転送起動する。
【００２７】
ステップＳ３（ドアベル通知）：ドアベルレジスタ１５２およびベースアドレス１５４に書き込まれた内容は転送制御ユニット１６に通知される。
【００２８】
ステップＳ４（転送指示）：レジスタ群１５の内容を基に、転送制御ユニット１６は、ＵＴＰ転送要求記述を取得し、転送プロトコルユニット１７に転送を指示すると共に、ライトデータの準備を行う（メモリ１２からデータを読み出し、転送プロトコルユニット１７に渡す）。
【００２９】
ステップＳ５：転送プロトコルユニット１７は、ＵＦＳデバイス２０にライトを指示する。これは、ＳＣＳＩ規格で規定されたＷＲＩＴＥ６コマンドを、ＵＦＳ規格で定められたコマンド（Command UPIU）に記載して送信する。コマンド（Command UPIU）は、通信インタフェース（ＵＩＣ）１８を通じてＵＦＳデバイス２０に送信される。この例では、ライトするサイズを１６Ｋバイトとする。
【００３０】
ステップＳ６：ＵＦＳデバイス２０は、ＷＲＩＴＥ６コマンド受信後、書き込みの準備ができると、書き込めるサイズをＲＴＴ（Ready To Transfer UPIU）でＵＦＳホスト１０に通知する。この例では、ＵＦＳデバイス２０は８ＫバイトをＲＴＴでＵＦＳホスト１０に通知することとする。２個のＲＴＴで、合計１６Ｋバイトのライトが実施される。
【００３１】
ステップＳ７：転送プロトコルユニット１７は、ＲＴＴで指示されたサイズのデータを、データ出力（Data Out UPIU）に付加し、ＵＦＳデバイス２０に送信する。この例では、８Ｋバイトのデータ出力（Data Out UPIU）を２個送信している。
【００３２】
ステップＳ８：ＵＦＳデバイス２０は、ＵＦＳホスト１０から指示されたサイズの書き込みが完了すると、レスポンス（Response UPIU）を送信する。
【００３３】
ステップＳ９：転送プロトコルユニット１７は、レスポンス（Response UPIU）を受信すると、転送完了を転送制御ユニット１６に通知する。
【００３４】
ステップＳ１０：転送制御ユニット１６は、転送完了通知を受け取ると、ドアベルレジスタ１５２を０にクリアする。このクリアで、ＣＰＵ１１への割り込みがアサートされる。
【００３５】
ステップＳ１１：ＣＰＵ１１は、割り込みが入ると、転送が完了したことを認識する。
【００３６】
ＵＦＳホスト１０のソフトウェアが、何らかの理由で、既に開始した転送を中断したい場合、タスク管理（Task Management Request UPIU）でアボート（ABORT）をＵＦＳデバイス２０に通知した後、レジスタ群１５内のリクエストクリアレジスタ１５５に０を書き、転送を中断することができる。この動作について図５、６を用いて説明する。図５は図３のライト動作の途中でアボートを行った場合の例を示すフロー図である。図６は図５のライト動作におけるレジスタおよびＵＴＰ転送要求記述の値を示す図である。
【００３７】
ステップＳ１〜ステップＳ７は、図３のライト動作と同じである。
【００３８】
ステップＳ８Ａ：この例では、ドアベルレジスタ１５２の登録後、アプリケーションを実行するＣＰＵ１１が転送の中断を意図し、アボート（ABORT）のタスク管理要求（Task Management Request UPIU）を登録する。
【００３９】
ステップＳ９Ａ：ＵＦＳデバイス２０は、アボートのタスク管理要求（Task Management Request UPIU）を受け付け、転送の中断を受信し、中断を受け付けたら、アボートのタスク管理レスポンス（Task Management Response UPIU）を送信し、アプリケーションを実行するＣＰＵ１１に中断完了を通知する。ＵＦＳ規格上、転送完了を通知する前に、ＲＴＴでリクエストしたデータは、全て受信しなければならない（非特許文献１の７３頁、１５２１〜１５２４行）。また、中断後は、新たなＲＴＴの発行は禁じられている。本例では、１回目のＲＴＴのみが通知される。
【００４０】
ステップＳ１０Ａ：中断完了を通知されたアプリケーションを実行するＣＰＵ１１は、リクエストクリアレジスタ１５５をクリアする。
【００４１】
ステップＳ１１Ａ：ドアベルレジスタ１５２のクリアは転送制御ユニット１６に通知される。
【００４２】
ステップＳ１２Ａ：転送制御ユニット１６は、リクエストクリアレジスタ１５５のクリア通知を受け、転送プロトコルユニット１７に転送中止指示を出す。
【００４３】
ステップＳ１３Ａ：転送プロトコルユニット１７は、転送受信したＲＴＴで指示されたサイズのデータを付加したデータ出力（Data Out UPIU）を送信するまで待ち、送信が完了すると、転送完了通知を転送制御ユニット１６に通知する。本例では、ステップＳ７においてデータ出力（Data Out UPIU）が送信されている。
【００４４】
ステップＳ１４Ａ：転送制御ユニット１６は、ドアベルレジスタ１５２をクリアする。
【００４５】
ステップＳ１５Ａ：ドアベルレジスタ１５２がクリアされると、アプリケーションを実行するＣＰＵ１１に転送完了割り込みが通知される。
【００４６】
ステップＳ１６Ａ：この例では、ＷＲＩＴＥ６のレスポンス（Response UPIU）が、ドアベルレジスタ１５２のクリア後にＵＦＳデバイス２０より送信されるが、このレスポンス（Response UPIU）は、転送プロトコルユニット１７より、無視される。
【００４７】
本願発明者が見出した不具合について以下説明する。  
非特許文献２の２３頁の５．４．３の最後の一文に、ホストソフトウェアによってＵＴＲＬＲＳＲ（ランストップレジスタ）が１から０に書かれると、ＵＴＲＬＤＢＲ（ドアベルレジスタ）はクリアされると定義されている。一方で、非特許文献２の２３頁の５．４．５では、ＵＴＲＬＲＳＲが０にクリアされても、登録してある転送は実行してしまうと定義されている。
【００４８】
これらの定義では、ＵＦＳデバイス２０へのライト動作中にランストップレジスタをクリアすると、転送制御ユニット１６、メモリ上の転送内容、ＵＦＳデバイス２０の間に情報の矛盾が生じ、動作が固まったり、データの内容が破壊されたりする。転送制御ユニット１６や転送プロトコルユニット１７の実装に依存し、不具合の内容は異なる。
【００４９】
転送制御ユニット１６および転送プロトコルユニット１７が次のドアベル登録を受け付ける例について図７、８を用いて説明する。図７は図４のライト動作の途中でランストップレジスタをクリアした場合の例を示すフロー図である。図８は図７のライト動作におけるレジスタおよびＵＴＰ転送要求記述の値を示す図である。図１０は比較例のランストップレジスタおよびドアベルレジスタ並びにそれらの制御系を示す論理回路図である。
【００５０】
ステップＳ１〜ステップＳ５は、図４のライト動作と同じである。
【００５１】
ステップＳ６Ｂ：アプリケーションを実行するＣＰＵ１１が、ランストップレジスタ１５１に０を書きこみ、転送中止を指示する。
【００５２】
ステップＳ７Ｂ：転送制御ユニット１６が、非特許文献２の２３頁の５．４．３の定義に従い、ドアベルレジスタ１５２をクリアする。規格上、すぐにクリアすると記載があるため、図９に示すような構成をとると考えられる。
【００５３】
ランストップレジスタ１５１を構成するフリップフロップＦＦ１の出力に、フリップフロップＦＦ２とアンドゲートＡＮ１とにより構成される立下り検出回路を設け、立下り検出回路はランストップレジスタ１５１の出力が１から０への立下りを検出し、１クロックサイクルの間１を出力するパルス信号（ＲＴＫＰ）を発生させる。アンドゲートＡＮ１の入力端子の○は反転信号が入力されることを表している。パルス信号（ＲＴＫＰ）がオアゲートＯＲ１を介してフリップフロップＦＦ３のクリア端子に入力され、ドアベルレジスタ１５２はクリアされる。ドアベルレジスタ１５２は、転送制御ユニット１６からの転送完了通知パルス信号（ＴＫＴＰ）によってもクリアされる。ランストップレジスタ１５１およびドアベルレジスタ１５２はそれぞれのライトイネーブル（ＷＥ）信号が１のとき、ライトデータ（Write Data）が書き込まれる。なお、図１０のランストップレジスタ１５１はイネーブル端子（en）付きのＤ型フリップフロップで構成され、ドアベルレジスタ１５２はセット端子（set）およびクリア端子（clear）付きＤ型フリップフロップで構成され、フリップフロップＦＦ１はＤ型フリップフロップで構成される。図９のフリップフロップの三角形はクロック入力端子を表しており、図示しないクロック信号が入力されている。
【００５４】
転送制御ユニット１６は、非特許文献２の２３頁の５．４．５の定義の通り、ランストップレジスタ１５１が０でも仕掛中の転送要求（outstanding transfer request）を継続する必要があるため、転送プロトコルユニット１７には特に通知を行わない。
【００５５】
ステップＳ８Ｂ：ランストップレジスタ１５１が０となっても、ＵＦＳデバイス２０には通知されないため、ＵＦＳデバイス２０は通常動作を続け、ＲＴＴを発行する。
【００５６】
ステップＳ９Ｂ：転送プロトコルユニット１７はＲＴＴ分のデータをデータ出力（Data Out UPIU）で送信する。
【００５７】
ステップＳ１０Ｂ：アプリケーションを実行するＣＰＵ１１がランストップレジスタ１５１に１を書きこむ。
【００５８】
ステップＳ１１Ｂ：ステップＳ２と同様に、アプリケーションを実行するＣＰＵ１１が、ＵＴＰ転送要求記述と、ドアベルレジスタ１５２に転送を登録する。この時点で、図８に示すように、ＵＴＰ転送要求記述には転送内容２が書かれ、転送プロトコルユニット１７が転送実施中の内容（転送内容１）とＵＴＰ転送要求記述の内容（転送内容２）に齟齬が生じる。
【００５９】
ステップＳ１２Ｂ：ドアベルレジスタ１５２のクリアは転送制御ユニット１６に通知される。
【００６０】
ステップＳ１３Ｂ：転送制御ユニット１６がドアベルレジスタ１５２のクリア通知を受け取り、次の転送を転送プロトコルユニット１７に指示する。
【００６１】
ステップＳ１４Ｂ：転送プロトコルユニット１７は、転送制御ユニット１６からの指示を受け取り、ＷＲＩＴＥ６コマンドを発行する。
【００６２】
ステップＳ１５Ｂ：ステップＳ１２Ｂに並行して、ＵＦＳデバイス２０が次のＲＴＴを発行する。この後、ＵＦＳデバイス２０は、データ出力（Data Out UPIU）待ちのため、ステップＳ１４ＢのＷＲＩＴＥ６コマンドは受け付けられない。
【００６３】
ステップＳ１６Ｂ：ＲＴＴが転送プロトコルユニット１７に届くが、このＲＴＴはタスクタグが異なるので、破棄される。この後、転送プロトコルユニット１７は、ＲＴＴ待ちとなる（ステップＳ１７Ｂ）。
【００６４】
以上の動作では、転送完了待ちのまま処理が固まる不具合となる。また、転送内容２が書かれた時点では、まだ転送内容１の転送が実施中であり、仮に転送が完了していた場合、結果を転送内容２のＵＴＰ転送要求記述に書き込むことになり、間違った転送結果をアプリケーションに報告することになる。
【００６５】
実施形態では、アプリケーションがランストップレジスタに０を書いた後、仕掛中の転送が完了するまで、次の転送を登録することをガードする。
【００６６】
これにより、仕掛中の転送が完了してから次の転送を登録するため、次の転送登録が仕掛中の転送と被らず、転送制御ユニット１６内部やＵＦＳデバイス２０の転送状態が一意になり、情報が壊れることがなく、動作が固まることもなくなる。
【実施例１】
【００６７】
実施形態の第一実施例について図１０〜１２を用いて説明する。図１０は第一実施例のランストップレジスタ、ドアベルレジスタおよびレディビット並びにそれらの制御系を示す論理回路図である。図１１は第一実施例において図３のライト動作の途中でランストップレジスタをクリアした場合の例を示すフロー図である。図１２は図１１のライト動作におけるレジスタおよびＵＴＰ転送要求記述の値を示す図である。
【００６８】
第一実施例では、図９の比較例の回路に加え、転送制御ユニット１６からの転送が仕掛中であることを示す転送仕掛フラグ（ＴＳＦ）がセットされているときにパルス信号（ＲＴＫＰ）が生成される（アンドゲートＡＮ３が１になる）と１にセットされるフリップフロップＦＦ４を備え、フリップフロップＦＦ４が１にセットされることによりレディビット１５３１を構成するフリップフロップＦＦ５は０にクリアされる。フリップフロップＦＦ４は１にセットされてから１クロック後に０にクリアされる。
【００６９】
フリップフロップＦＦ５は、非特許文献２の１７頁の５．３．３に規定されるように、以下のいずれかの条件が満たされる場合も、すなわち、オアゲートＯＲ２＝１のとき、０にクリアされる。
（１）ＵＦＳデバイス２０が検出されないことを示すパルス信号（ＮＤＰ）が１のとき
（２）ＵＴＰ転送要求リストが満杯であることを示す信号（ＴＲＬＦ）が１のとき
（３）ＵＦＳホストコントローラ１３またはＵＦＳデバイス２０にエラーがあることを示すパルス信号（ＥＲＲ）が１のとき
逆に、フリップフロップＦＦ５は、以下のすべての条件が満たされる場合、すなわち、アンドゲートＡＮ５＝１のとき、１にセットされる。
（１）アンドゲートＡＮ４の出力が１のとき（ランストップレジスタ１５１がセットされているときまたはフリップフロップＦＦ４が０にクリアされているとき）
（２）ＵＦＳデバイス２０の存在が検出される信号（ＤＰ）が１のとき
（３）ＵＴＰ転送要求リストが満杯でないことを示す信号（ＮＴＲＬＦ）が１のとき
（４）ＵＦＳホストコントローラ１３およびＵＦＳデバイス２０にエラーがないことを示す信号（ＮＥＲＲ）が１のとき
なお、図１１のフリップフロップＦＦ４およびレディビット１５３１を構成するフリップフロップＦＦ５はセット端子（set）およびクリア端子（clear）付きＤ型フリップフロップで構成される。図１０のフリップフロップの三角形もクロック入力端子を表しており、図示しないクロック信号が入力されている。
【００７０】
これにより、ランストップレジスタ１５１に０を書かれた時に、仕掛中の転送がある場合は、仕掛中の転送が完了するまでレディビット１５３１を１にしないことができる。
【００７１】
第一実施例の構成において図３のライト動作中にランストップレジスタ１５１に０を書いた場合の動作について図１１、１２を用いて説明する。
【００７２】
ステップＳ１〜ステップＳ１１は、図３のライト動作と同じとなる。
【００７３】
ステップＳ１２Ｃ：ライト転送中に、ＵＦＳホスト１０のソフトウェアがランストップレジスタ１５１に０を書いた場合、本実施例の構成により、ドアベルレジスタ１５２およびレディビット１５３１が０にクリアされる。
【００７４】
ステップＳ１３Ｃ：仕掛中の転送が完了すると、転送制御ユニット１６は転送仕掛フラグ（ＴＳＦ）をリセットすることによりレディレビット１５３１を１にセットする。
【００７５】
ステップＳ１４Ｃ：アプリケーションを実行するＣＰＵ１１はレディビット１５３１が１となったことをポーリングにより検知する。
【００７６】
ステップＳ１５Ｃ：アプリケーションを実行するＣＰＵ１１がランストップレジスタ１５１に１を書き込む。
【００７７】
ステップＳ１６Ｃ：ステップＳ２と同様に、アプリケーションを実行するＣＰＵ１１がＵＴＰ転送要求記述とドアベルレジスタ１５２を登録する。ここで、図１２に示すように、ＵＴＰ転送要求記述には転送内容２が書かれる。
【００７８】
ステップＳ１７Ｃ以降は、ステップＳ３以降と同じとなる。
【００７９】
レディビット（ＵＴＲＬＲＤＹ）が1でないと、ランストップレジスタ（ＵＴＲＬＲＳＲ）に1を書けないと非特許文献２に規定されているため、本実施例の機能を使用し、仕掛中の転送がある場合は、レディビット１５３１を０にクリアして、次のランストップレジスタレジスタに１を書けないようにする。これにより、次の転送が登録されることが無く、仕掛中の転送と、情報・データの混在が生じず、仕掛中の転送を正常に完了させることができる。
【実施例２】
【００８０】
実施形態の第二実施例について図１３〜１５を用いて説明する。図１３は第二実施例のランストップレジスタおよびドアベルレジスタ並びにそれらの制御系を示す論理回路図である。図１４は第二実施例において図３のライト動作の途中でランストップレジスタをクリアした場合の例を示すフロー図である。図１５は図１４のライト動作におけるレジスタおよびＵＴＰ転送要求記述の値を示す図である。
【００８１】
第二実施例では、図９の比較例の回路に加え、ランストップレジスタ１５１に０を書こうとすることを検出する回路（アンドゲートＡＮ７、ＡＮ８およびフリップフロップＦＦ６）を設け、ランストップレジスタ１５１を構成するフリップフロップＦＦ１’をセット端子（set）およびクリア端子（clear）付きＤ型フリップフロップで構成する。ランストップレジスタ１５１に１を書く場合は、ライトイネーブル信号（ＷＥ）およびライトデータ（Write Data）が入力されるアンドゲートＡＮ６によりフリップフロップＦＦ１’が１にセットされる。ランストップレジスタ１５１に０を書く場合は、ライトイネーブル信号（ＷＥ）およびライトデータ（Write Data）の反転信号が入力されるアンドゲートＡＮ７によりフリップフロップＦＦ６が１にセットされ、転送仕掛フラグ（ＴＳＦ）がセットされていないときに、ランストップレジスタのクリア信号（ＲＳＣ）が１になってフリップフロップＦＦ１’が０にクリアされる。転送仕掛フラグ（ＴＳＦ）がセットされているときは、ランストップレジスタのクリア信号（ＲＳＣ）が０になってフリップフロップＦＦ１’は０にクリアされない。なお、フリップフロップＦＦ６はセット端子（set）およびクリア端子（clear）付きＤ型フリップフロップで構成する。
【００８２】
これにより、ＣＰＵ１１がランストップレジスタ１５１に０を書こうとしても、仕掛中の転送がある場合は、ランストップレジスタ１５１を０にしないことができる。
【００８３】
第二実施例の構成において図３のライト動作中にランストップレジスタ１５１に０を書いた場合の動作について図１４、１５を用いて説明する。
【００８４】
ステップＳ１〜ステップＳ１１は、図３のライト動作と同じとなる。
【００８５】
ステップＳ１２Ｄ：ライト転送中に、ＵＦＳホスト１０のソフトウェアがランストップレジスタ１５１に０を書こうとしも、本実施例の構成により、ランストップレジスタ１５１には０が書かれず、ランストップレジスタ１５１およびドアベルレジスタ１５２は変化せず、転送を続ける。アプリケーションを実行するＣＰＵ１１は、ランストップレジスタ１５１が０にならないため、ライトが完了したと見なせず、待ち状態となる。アプリケーションを実行するＣＰＵ１１は、ランストップレジスタ１５１が０となるまでポーリングする。
【００８６】
ステップＳ１３Ｄ：仕掛中の転送が完了すると、転送制御ユニット１６は転送仕掛フラグ（ＴＳＦ）をクリアして、ランストップレジスタ１５１をクリアする。次のサイクルでドアベルレジスタ１５２もクリアされる。
【００８７】
ステップＳ１４Ｄ：アプリケーションを実行するＣＰＵ１１はランストップレジスタ１５１が０となったことをポーリングにより検知する。
【００８８】
ステップＳ１５Ｄ：アプリケーションを実行するＣＰＵ１１がランストップレジスタ１５１に１を書き込む。
【００８９】
ステップＳ１６Ｄ：ステップＳ２と同様に、アプリケーションを実行するＣＰＵ１１がＵＴＰ転送要求記述とドアベルレジスタ１５２を登録する。ここで、図１５に示すように、ＵＴＰ転送要求記述には転送内容２が書かれる。
【００９０】
ステップＳ１７Ｄ以降は、ステップＳ２以降と同じとなる。
転送中にランストップレジスタ１５１に０を書こうとしても、すぐに０を反映しない構成としたことにより、ランストップレジスタ１５１およびドアベルレジスタ１５２は前の状態を保持し、アプリケーションが次の転送を登録することを防ぐ。次の転送が登録されないため、今の転送と情報やデータの混在が生じず、正常に転送を完了することができる。
【実施例３】
【００９１】
実施形態の第三実施例について図１６〜１８を用いて説明する。図１６は第三実施例のランストップレジスタおよびドアベルレジスタ並びにそれらの制御系を示す論理回路図である。図１７は第三実施例において図３のライト動作の途中でランストップレジスタをクリアした場合の例を示すフロー図である。図１８は図１７のライト動作におけるレジスタおよびＵＴＰ転送要求記述の値を示す図である。
【００９２】
第三実施例では、図９の比較例の回路に加え、内部の仕掛状況をランストップレジスタ１５１の値に関わらず保持する内部ドアベルレジスタ１５２’を構成するフリップフロップＦＦ７と、内部ドアベルレジスタ１５２’の値を、ランストップレジスタ１５１への１の書き込みでドアベルレジスタ１５２に書き戻す機構（アンドゲートＡＮ９、アンドゲートＡＮ１０、オアゲートＯＲ３）を備える。
【００９３】
フリップフロップＦＦ７は、ドアベルレジスタ１５２がセットされるときに、同時にセットされるが、ドアベルレジスタ１５２がクリアされるパルス信号（ＲＴＫＰ）によってはクリアされない。転送仕掛フラグ（ＴＳＦ）がセットされている限りは、フリップフロップＦＦ７はクリアされない。なお、フリップフロップＦＦ７はセット端子（set）およびクリア端子（clear）付きＤ型フリップフロップで構成する。
【００９４】
フリップフロップＦＦ３とアンドゲートＡＮ９とは立上り検出回路を構成し、立上り検出回路はランストップレジスタ１５１の出力が０から１への立上りを検出し、１クロックサイクルの間１を出力するパルス信号（ＲＡＫＰ）を発生させる。フリップフロップＦＦ７がセットされており、かつパルス信号（ＲＡＫＰ）が１（アンドゲートＡＮ１０が１）になるときに、オアゲートＯＲ３が１になりドアベルレジスタ１５２がセットされる。
【００９５】
この構成により、転送が仕掛中にランストップレジスタ１５１を１→０→１とされた場合に、下記の動作となる。
（１）ランストップレジスタ１５１が０とされた場合に、ドアベルレジスタ１５２は、規格規定通りに０にクリアされる。
（２）２度目のランストップレジスタ１５１が１とされた際に、転送が仕掛中であれば、ドアベルレジスタ１５２は１にセットされる。
【００９６】
ステップＳ１〜ステップＳ１１は、図３のライト動作と同じである。
【００９７】
ステップＳ１２Ｅ：ライト転送中に、ＵＦＳホスト１０のソフトウェアがランストップレジスタ１５１に０を書いた場合、本実施例の構成により、ランストップレジスタ１５１およびドアベルレジスタ１５２をクリアする。この際に、内部ドアベルレジスタ１５２’の値はクリアされない。
【００９８】
ステップＳ１５Ｅ：アプリケーションを実行するＣＰＵ１１がランストップレジスタ１５１に１を書きこむ。この際に、内部ドアベルレジスタ１５２’の値がドアベルレジスタ１５２に書き込まれる。
【００９９】
ステップＳ１６Ｅ：アプリケーションを実行するＣＰＵ１１が、登録したいドアベルの値をポーリングする。この例では、ステップＳ１〜ステップＳ１１に使用しているドアベルレジスタ１５２を使用したいケースを記載している。この場合、このドアベルレジスタ１５２がクリアされるまで、ＣＰＵ１１はポーリングを行う。ドアベルレジスタは３２個あるので、もし、別のドアベルレジスタを使用できる場合、この時点で、ＣＰＵ１１は他のドアベルレジスタに登録を行う。
【０１００】
ステップＳ１７Ｅ：ＣＰＵ１１はドアベルレジスタ１５２がクリアされたことをポーリングで検知する。これにより、ＣＰＵ１１は次の転送の登録が可能となったことを検出する。
【０１０１】
ステップＳ１８Ｅ：ステップＳ２と同様に、アプリケーションを実行するＣＰＵ１１がＵＴＰ転送要求記述とドアベルレジスタ１５２を登録する。ここで、図１８に示すように、ＵＴＰ転送要求記述には転送内容２が書かれる。
【０１０２】
ステップＳ１９Ｅ以降は、ステップＳ３以降と同じとなる。
上記の動作により、規格を守りつつ、２度目のランストップレジスタ１５１が１とされた後に、追加のドアベル登録を行われることがなく、情報・データの混在が生じず、正常に転送を完了することができる。
【０１０３】
以上、本発明者によってなされた発明を実施形態および実施例に基づき具体的に説明したが、本発明は、上記実施形態および実施例に限定されるものではなく、種々変更可能であることはいうまでもない。
【０１０４】
例えば、実施形態では、ＵＦＳホストを一つの半導体チップで形成する例を説明したが、ＵＦＳコントローラのみを一つの半導体チップで形成するようにしてもよいし、ＵＦＳコントローラとＣＰＵを一つの半導体チップで形成するようにしてもよいし、ＵＦＳコントローラとメモリを一つの半導体チップで形成するようにしてもよい。
【符号の説明】
【０１０５】
１：ＵＦＳシステム
１０：ＵＦＳホスト（半導体装置）
１１：ＣＰＵ
１２：メモリ
１３：ＵＦＳホストコントローラ
１４：バス
１５：レジスタ群
１５１：ランストップレジスタ
１５２：ドアベルレジスタ
１５３：ホストコントローラステータスレジスタ
１５３１：レディビット
１５４：ベースアドレスレジスタ
１５５：リクエストクリアレジスタ
１６：転送制御ユニット（ＨＣ）
１７：転送プロトコルユニット（ＵＴＰ）
１８：通信インタフェース（ＵＩＣ）
２０：ＵＦＳデバイス
【図１】
2019185544.tif 000003
【図２】
2019185544.tif 000004
【図３】
2019185544.tif 000005
【図４】
2019185544.tif 000006
【図５】
2019185544.tif 000007
【図６】
2019185544.tif 000008
【図７】
2019185544.tif 000009
【図８】
2019185544.tif 000010
【図９】
2019185544.tif 000011
【図１０】
2019185544.tif 000012
【図１１】
2019185544.tif 000013
【図１２】
2019185544.tif 000014
【図１３】
2019185544.tif 000015
【図１４】
2019185544.tif 000016
【図１５】
2019185544.tif 000017
【図１６】
2019185544.tif 000018
【図１７】
2019185544.tif 000019
【図１８】
2019185544.tif 000020