特許第5925549号(P5925549)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社東芝の特許一覧 ▶ 東芝情報システム株式会社の特許一覧

特許5925549メモリシステムおよびバンクインターリーブ方法
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5925549
(24)【登録日】2016年4月28日
(45)【発行日】2016年5月25日
(54)【発明の名称】メモリシステムおよびバンクインターリーブ方法
(51)【国際特許分類】
   G06F 12/06 20060101AFI20160516BHJP
   G06F 12/00 20060101ALI20160516BHJP
【FI】
   G06F12/06 540E
   G06F12/00 597U
【請求項の数】5
【全頁数】21
(21)【出願番号】特願2012-68157(P2012-68157)
(22)【出願日】2012年3月23日
(65)【公開番号】特開2013-200678(P2013-200678A)
(43)【公開日】2013年10月3日
【審査請求日】2015年3月4日
(73)【特許権者】
【識別番号】000003078
【氏名又は名称】株式会社東芝
(73)【特許権者】
【識別番号】391016358
【氏名又は名称】東芝情報システム株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】特許業務法人酒井国際特許事務所
(72)【発明者】
【氏名】井手 崇史
(72)【発明者】
【氏名】岩崎 清隆
(72)【発明者】
【氏名】渡辺 幸治
(72)【発明者】
【氏名】南條 浩之
(72)【発明者】
【氏名】森屋 誠
【審査官】 酒井 恭信
(56)【参考文献】
【文献】 特開2006−195990(JP,A)
【文献】 特開2010−176646(JP,A)
【文献】 特開2005−216345(JP,A)
【文献】 特開平05−324535(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/00 − 12/06
(57)【特許請求の範囲】
【請求項1】
不揮発性のメモリセルアレイを備え、複数のバンクを構成するメモリチップと、
ホスト装置からの要求に基づいてバンク毎に複数のメモリアクセス命令を生成する命令生成部と、
前記複数のメモリアクセス命令の夫々に対応するバンクにメモリアクセスをメモリアクセス命令毎に実行するメモリ制御部と、
を備え、
前記複数のバンクの夫々に対するメモリアクセスは、ともに単一のバンクに対して排他的に実行されるコマンドシーケンスであって、実行完了の直後にメモリアクセス対象のバンクにバンク内処理を実行せしめる第1コマンドシーケンスと、前記バンク内処理の実行完了後に実行せしめられる第2コマンドシーケンスと、を備え、
前記メモリ制御部は、前記複数のバンクのうちの第1のバンクに対してi番目のメモリアクセス命令にかかる第2コマンドシーケンスとi+1番目のメモリアクセス命令にかかる第1コマンドシーケンスとを連続して実行した後で、かつ、前記第1のバンクがバンク内処理を実行している最中に、第2のバンクに対するメモリアクセスの実行を開始
前記i+1番目のメモリアクセス命令は、連続した実行を許可するか非許可するかを示すフラグ情報を備え、
前記メモリ制御部は、
前記フラグ情報が許可を示す場合には、前記第1のバンクに対して前記i番目のメモリアクセス命令にかかる第2コマンドシーケンスと前記i+1番目のメモリアクセス命令にかかる第1コマンドシーケンスとを連続して実行した後で、かつ、前記第1のバンクがバンク内処理を実行している最中に、前記第2のバンクに対する第1コマンドシーケンスの実行を開始し、
前記フラグ情報が非許可を示す場合には、前記第1のバンクに対してi番目のメモリアクセス命令にかかる第2コマンドシーケンスを実行した後に、前記i+1番目のメモリアクセス命令にかかる第1コマンドシーケンスの実行を開始せずに、前記第2のバンクに対する第1コマンドシーケンスまたは第2コマンドシーケンスの実行を開始する、
ことを特徴とするメモリシステム。
【請求項2】
前記複数のメモリアクセス命令は、リードアクセス命令を含み、
前記リードアクセス命令にかかる第1コマンドシーケンスは、リードアドレスの送信を含み、
前記リードアクセス命令にかかるバンク内処理は、前記メモリアクセス対象のバンクを構成するメモリチップが、前記メモリセルアレイにおける前記リードアドレスにより指定された番地からリードデータを読み出して、読み出したリードデータを自メモリチップが備えるデータキャッシュに格納する処理であって、
前記リードアクセス命令にかかる第2コマンドシーケンスは、前記データキャッシュに格納されたリードデータの取得を含む、
ことを特徴とする請求項1に記載のメモリシステム。
【請求項3】
前記複数のメモリアクセス命令は、ライトアクセス命令を含み、
前記ライトアクセス命令にかかる第1コマンドシーケンスは、ライトアドレスおよびライトデータの送信を含み、
前記ライトアクセス命令にかかるバンク内処理は、前記メモリアクセス対象のバンクを構成するメモリチップが、前記送信されてきたライトデータをメモリセルアレイにおける前記ライトアドレスにより指定された番地にプログラムする処理であって、
前記ライトアクセス命令にかかる第2コマンドシーケンスは、前記バンク内処理の成否情報の取得を含む、
ことを特徴とする請求項1に記載のメモリシステム。
【請求項4】
前記複数のメモリアクセス命令は、イレースアクセス命令を含み、
前記イレースアクセス命令にかかる第1コマンドシーケンスは、イレースアドレスの送信を含み、
前記イレースアクセス命令にかかるバンク内処理は、前記メモリアクセス対象のバンクを構成するメモリチップが、メモリセルアレイにおける前記イレースアドレスにより指定された番地に格納されているデータを消去する処理であって、
前記イレースアクセス命令にかかる第2コマンドシーケンスは、前記バンク内処理の成否情報の取得を含む、
ことを特徴とする請求項1に記載のメモリシステム。
【請求項5】
不揮発性のメモリセルアレイを備え、複数のバンクを構成するメモリチップに対するバンク毎のメモリアクセスをインターリーブするバンクインターリーブ方法であって、
ホスト装置からの要求に基づいてバンク毎に複数のメモリアクセス命令を生成する命令生成ステップと、
前記複数のメモリアクセス命令の夫々に基づいて、実行完了の直後にメモリアクセス対象のバンクにバンク内処理を実行せしめる第1コマンドシーケンスと、前記バンク内処理の実行完了後に実行せしめられる第2コマンドシーケンスと、をメモリアクセス命令毎に生成するコマンドシーケンス生成ステップと、
前記生成された第1コマンドシーケンスおよび第2コマンドシーケンスをバンク毎に排他的に実行するコマンドシーケンス実行ステップと、
前記複数のバンクのうちの第1のバンクに対してi番目のメモリアクセス命令にかかる第2コマンドシーケンスとi+1番目のメモリアクセス命令にかかる第1コマンドシーケンスとを連続して実行した後で、かつ、前記第1のバンクがバンク内処理を実行している最中に、メモリアクセスの実行対象を第2のバンクに切り替える、第1のバンク切り替えステップと、
を備え
前記i+1番目のメモリアクセス命令は、前記第1のバンク切り替えステップの実行を許可するか非許可するかを示すフラグ情報を備え、
前記i+1番目のメモリアクセス命令が備えるフラグ情報が許可を示すか非許可を示すかを判定するフラグ確認ステップと、
前記フラグ情報が非許可を示す場合には、前記第1のバンクに対してi番目のメモリアクセス命令にかかる第2コマンドシーケンスを実行した後に、前記i+1番目のメモリアクセス命令にかかる第1コマンドシーケンスの実行を開始せずに、前記第2のバンクに対する第1コマンドシーケンスまたは第2コマンドシーケンスの実行を開始する、第2のバンク切り替えステップと、
をさらに備えることを特徴とするバンクインターリーブ方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、メモリシステムおよびバンクインターリーブ方法に関する。
【背景技術】
【0002】
コンピュータシステムに用いられるメモリシステムとして、NAND型の記憶セルを備えるメモリチップを搭載したSSD(Solid State Drive)が注目されている。SSDは、磁気ディスク装置に比べ、高速、軽量などの利点を有している。
【0003】
近年、SSDは、複数のメモリチップを並列駆動することで転送効率を向上させている。並列動作の一つの方法として、同一チャネルに接続されている複数のメモリチップをバンク単位でインターリーブさせる技術(バンクインターリーブ)がある。バンクインターリーブによれば、データ転送装置とメモリチップとの間のデータ(コマンド、アドレス、リードデータ、ライトデータを含む)の転送にかかる時間がメモリチップ内部の処理にかかる時間によって隠蔽される結果、メモリシステムの転送効率が向上する。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2011−18222号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
本発明の一つの実施形態は、できるだけ転送効率がよいメモリシステムを提供することを目的とする。
【課題を解決するための手段】
【0006】
本発明の一つの実施形態によれば、メモリシステムは、メモリチップと、命令生成部と、メモリ制御部とを備える。メモリチップは、不揮発性のメモリセルアレイを備え、複数のバンクを構成する。命令生成部は、ホスト装置からの要求に基づいてバンク毎に複数のメモリアクセス命令を生成する。メモリ制御部は、前記複数のメモリアクセス命令の夫々に対応するバンクにメモリアクセスをメモリアクセス命令毎に実行する。前記複数のバンクの夫々に対するメモリアクセスは、実行完了の直後にメモリアクセス対象のバンクにバンク内処理を実行せしめる第1コマンドシーケンスと、前記バンク内処理の実行完了後に実行せしめられる第2コマンドシーケンスと、を備える。第1コマンドシーケンスおよび第2コマンドシーケンスは、ともに単一のバンクに対して排他的に実行されるコマンドシーケンスである。ここで、前記メモリ制御部は、前記複数のバンクのうちの第1のバンクに対してi番目のメモリアクセス命令にかかる第2コマンドシーケンスとi+1番目のメモリアクセス命令にかかる第1コマンドシーケンスとを連続して実行した後で、かつ、前記第1のバンクがバンク内処理を実行している最中に、第2のバンクに対するメモリアクセスの実行を開始する。前記i+1番目のメモリアクセス命令は、連続した実行を許可するか非許可するかを示すフラグ情報を備える。前記フラグ情報が許可を示す場合には、前記メモリ制御部は、前記第1のバンクに対して前記i番目のメモリアクセス命令にかかる第2コマンドシーケンスと前記i+1番目のメモリアクセス命令にかかる第1コマンドシーケンスとを連続して実行した後で、かつ、前記第1のバンクがバンク内処理を実行している最中に、前記第2のバンクに対する第1コマンドシーケンスの実行を開始する。前記フラグ情報が非許可を示す場合には、前記メモリ制御部は、前記第1のバンクに対してi番目のメモリアクセス命令にかかる第2コマンドシーケンスを実行した後に、前記i+1番目のメモリアクセス命令にかかる第1コマンドシーケンスの実行を開始せずに、前記第2のバンクに対する第1コマンドシーケンスまたは第2コマンドシーケンスの実行を開始する。
【図面の簡単な説明】
【0007】
図1図1は、本発明の第1の実施形態のメモリシステムが適用されたSSDの構成を説明する図である。
図2図2は、NANDコントローラとNANDメモリとの間の接続関係をさらに詳しく説明する図である。
図3図3は、メモリチップの構成を説明する図である。
図4図4は、I/OおよびRy/Byの状態遷移を説明する概念図である。
図5-1】図5−1は、コマンドシーケンスの一例を説明する図である。
図5-2】図5−2は、コマンドシーケンスの一例を説明する図である。
図5-3】図5−3は、コマンドシーケンスの一例を説明する図である。
図6図6は、比較例および第1の実施形態を適用した場合の夫々において、連続してリードが実行される場合の各バンクの動作時間を説明するタイミングチャートである。
図7図7は、NANDコントローラが備えるチャネル毎のコントローラの構成を説明する図である。
図8図8は、MPUの動作を説明するフローチャートである。
図9図9は、NANDコントローラが備えるチャネル毎のコントローラの動作を説明するフローチャートである。
図10図10は、比較例および第1の実施形態を適用した場合の夫々において、連続してライトが実行される場合の各バンクの動作時間を説明するタイミングチャートである。
図11図11は、比較例および第1の実施形態を適用した場合の夫々において、連続してイレースが実行される場合の各バンクの動作時間を説明するタイミングチャートである。
図12-1】図12−1は、比較例および第1の実施形態を適用した場合の夫々において、バンク毎のメモリアクセスのアクセスモードがランダムに構成されたときの各バンクの動作時間を説明するタイミングチャートである。
図12-2】図12−2は、比較例および第1の実施形態を適用した場合の夫々において、バンク毎のメモリアクセスのアクセスモードがランダムに構成されたときの各バンクの動作時間を説明するタイミングチャートである。
図12-3】図12−3は、比較例および第1の実施形態を適用した場合の夫々において、バンク毎のメモリアクセスのアクセスモードがランダムに構成されたときの各バンクの動作時間を説明するタイミングチャートである。
図13図13は、第1の実施形態のSSDを搭載したパーソナルコンピュータの一例を示す斜視図である。
図14図14は、SSDを搭載したパーソナルコンピュータのシステム構成例を示している。
【発明を実施するための形態】
【0008】
以下に添付図面を参照して、実施形態にかかるメモリシステムおよびバンクインターリーブ方法を詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
【0009】
(第1の実施形態)
図1は、本発明の第1の実施形態のメモリシステムが適用されたSSDの構成を説明する図である。
【0010】
SSD100は、パーソナルコンピュータなどのホスト装置200とシリアルインターフェースであるSATA(Serial Advanced Technology Attachment)規格に準拠した通信インタフェースで接続され、ホスト装置200の外部記憶装置として機能する。なお、SSD100とホスト装置200との間の通信インタフェースの規格として、SATA以外の規格を採用することができる。例えば、SAS(Serial Attached SCSI)規格やPCI(Peripheral Components Interconnect) Express規格を採用することができる。
【0011】
SSD100は、ホスト装置200からリード/ライトされるデータを記憶する不揮発性メモリであるNANDメモリ1と、SSD100のデータ転送制御を実行するデータ転送装置2と、該データ転送装置2がデータ転送のための転送データを一時格納するためのメモリであるRAM(Random Access Memory)3と、を備えている。RAM3は、NANDメモリ1のデータキャッシュメモリとして機能し、例えば、DRAM(Dynamic Random Access Memory)、FeRAM(Ferroelectric Random Access Memory)、MRAM(Magnetoresistive Random Access Memory)などを採用することができる。
【0012】
データ転送装置2は、さらに、MPU(命令生成部)4と、SATAコントローラ5と、RAMコントローラ6と、NANDコントローラ7と、を備えている。MPU4、SATAコントローラ5、RAMコントローラ6およびNANDコントローラ7は、夫々バスに接続されている。
【0013】
MPU4は、ファームウェアを実行することによって、データ転送装置2全体の制御を実行する。SATAコントローラ5は、ホスト装置200とRAM3との間のデータ転送の制御を実行する。RAMコントローラ6は、RAM3に対するデータのリード/ライトを制御する。NANDコントローラ7は、NANDメモリ1のリード/ライト制御およびNANDメモリ1とRAM3との間のデータ転送の制御を実行する。
【0014】
NANDメモリ1は、複数個(ここでは2個)の並列動作要素1a、1bによって構成されている。並列動作要素1a、1bは、夫々個別にNANDコントローラ7に接続されている。具体的には、並列動作要素1aは、チャネル(ch)0の配線で、並列動作要素1bはch1の配線で、夫々NANDインタフェース7に接続されている。各並列動作要素1a、1bは、バンクインターリーブが可能な複数のバンク(図1では2バンク、バンク0およびバンク1)によって構成されている。チャネル並列動作要素1a、1b内の各々のバンクは、夫々1つのメモリチップによって構成されている。即ち、メモリチップ10はバンク0、メモリチップ11はバンク1を構成している。なお、夫々のバンクは、複数個のメモリチップにより構成される場合もある。
【0015】
図2は、NANDコントローラ7とNANDメモリ1との間の接続関係をさらに詳しく説明する図である。NANDコントローラ7は、並列動作要素1aを制御するch0コントローラ(メモリ制御部)70と、並列動作要素1bを制御するch1コントローラ(メモリ制御部)71とを備えている。ch0コントローラ70は、1つのI/O信号線(I/O)を備えている。このI/Oには、並列動作要素1aが備えるメモリチップ10、11が共通接続されている。また、ch0コントローラ70は、メモリチップ10、11の夫々と、チップイネーブル信号(CE)およびレディービジー信号(Ry/By)で個別に接続されている。これにより、ch0コントローラ70は、CEを個別に操作することによってアクセス先のバンクを指定することができる。また、Ry/Byの状態を確認することによって、バンクの動作中/非動作中を認識することができる。なお、ch1コントローラ71と並列動作要素1bが備えるメモリチップ10、11との間の接続関係は、ch0コントローラ70と並列動作要素1aが備えるメモリチップ10、11との間の接続関係と同様であるので、重複する説明を省略する。
【0016】
図3は、メモリチップ10、11の構成を説明する図である。なお、メモリチップ10およびメモリチップ11は同じ構成を備えているので、ここでは代表としてメモリチップ10について説明する。
【0017】
メモリチップ10は、メモリセルアレイ115及びその周辺回路を備える。メモリセルアレイ115は、複数のブロックBLOCK1-BLOCKnを備えて構成されている。各ブロックの構成は、複数のメモリセルトランジスタMC、ワード線WL、ビット線BL等を含むものである。各ブロック中のメモリセルトランジスタMC中のデータは、一括して消去される。メモリセルトランジスタ単位及びページ単位でのデータ消去はできない。すなわち、個々のブロックが最小の消去単位となる。
【0018】
周辺回路は、センスアンプ114、入出力制御回路104、ロジックコントロール回路105等を備える。
【0019】
センスアンプ114は、ビット線BLを介してメモリセルアレイ115内のメモリセル(メモリセルトランジスタMC)のデータを読み出し、ビット線BLを介してメモリセルアレイ115内のメモリセルの状態を検出する。
【0020】
データキャッシュ113は、センスアンプ114から読み出されたデータまたはセンスアンプ114に供給されるデータを一時的に保持する。
【0021】
カラムデコーダ112は、メモリチップ10の外部からI/Oを介して供給されたアドレス信号に基づいて、特定のビット線BL、センスアンプ等を選択する。
【0022】
カラムアドレスバッファ111は、アドレス信号を一時的に保持し、カラムデコーダ112に供給する。
【0023】
ロウアドレスデコーダ116は、データ読み出し、書き込み、あるいは消去に必要な種々の電圧を電圧生成回路106から受け取り、そのような電圧をアドレス信号に基づいて特定のワード線WLに印加する。
【0024】
ロウアドレスバッファデコーダ117は、アドレス信号を一時的に保持し、ロウアドレスデコーダ116に供給する。
【0025】
電圧生成回路106は、基準電源電圧VSS、VCC、電圧VSSQ、VCCQ等を受け取り、これらからデータ書き込み、読み出し、消去等に必要な電圧を生成する。
【0026】
入出力制御回路104は、IO端子を介して、メモリチップ10の動作を制御する種々のコマンド、アドレス信号、書き込みデータを受け取り、また読み出しデータを出力する。入出力制御回路104から出力されたアドレス信号は、アドレスレジスタ102によってラッチされる。ラッチされたアドレス信号は、カラムアドレスバッファ111及びロウアドレスバッファデコーダ117に供給される。入出力制御回路104から出力されたコマンドは、コマンドレジスタ103によってラッチされる。ステータスレジスタ101は、入出力制御回路104のための種々のステータスについての値を保持する。
【0027】
メモリチップ10は、外部インターフェイス(NAND I/F)として、コマンド、アドレス、データ入出力用のIO端子、動作を制御するための種々の制御信号を外部から受け取る。制御信号には、例えばCE、コマンドラッチイネーブル(CLE)、アドレスラッチイネーブル(ALE)、リードイネーブル(RE及び/RE)、ライトイネーブル(WE及び/WE)、ライトプロテクト(WP)、クロック(DQS、/DQS)が含まれる。なお、CLE、ALE、RE、/RE、WE、/WE、WP、DQS、および/DQSは、CEやRy/Byと同様に、ch0コントローラ70と一対一で接続されている。
【0028】
これらの制御信号は、対応する端子において受け取られ、ロジックコントロール回路105に供給される。ロジックコントロール回路105は、制御信号に基づいて、入出力制御回路104を制御して、端子IO上の信号をコマンド、アドレス、またはデータとして入出力制御回路104を介してアドレスレジスタ102、コマンドレジスタ103、データキャッシュ113等に到達することを許可したり禁止したりする。また、ロジックコントロール回路105は、コマンドレジスタ103から、ラッチされたコマンドを受け取る。
【0029】
制御信号のうち、WE端子はデータ入力用クロックを供給し、RE端子はデータ出力用クロックを供給し、DQS端子はデータ入出力用クロックを伝送し、CLE端子はデータ入力をコマンドとして入力するイネーブル用であり、ALE端子はデータ入力をアドレスとして入力するイネーブル用であり、CE端子はデータ入出力等全般の機能を有効化するためである。
【0030】
また、Ry/By端子はメモリチップ10の内部動作状態を示し、WP端子は誤書き込み防止用の書き込み防止信号を伝送し、Vcc/Vss/Vccq/Vssq端子等は電力供給用である。また、本実施形態では、高速インタフェースにてデータ伝送を実現する際に利用される端子(Toggle)として、RE端子、WE端子、DQS端子には、各々相補信号を伝送する/RE端子、/WE端子、/DQS端子が存在する。
【0031】
なお、ロジックコントロール回路105は、レディ/ビジー信号(Ry/By)の出力を司る。具体的には、ロジックコントロール回路105は、メモリチップ10がビジー状態の間、ビジー信号を出力する。
【0032】
レディ/ビジー回路(RY/BY)107は、ロジックコントロール回路105の制御を受けて、スイッチトランジスタを介して、Ry/By信号をメモリチップ10の外部に通知する。
【0033】
図4は、並列動作要素1aに属するメモリチップ10に対するメモリアクセスが実行される際のch0コントローラ70とメモリチップ10とを接続するI/OおよびRy/By0の状態遷移を説明する概念図である。本図の上段は、I/Oの状態遷移、下段はRy/By0の状態遷移を示している。なお、HiのRy/By0はRy状態を示し、LowのRy/ByはBy状態を示すものとする。図示するように、メモリチップ10に対するメモリアクセスは、第1コマンドシーケンス21と第2コマンドシーケンス22とを含んで構成される。第1コマンドシーケンス21が実行完了すると、メモリチップ10は、内部で、第1コマンドシーケンス21に対応する内部処理(バンク内処理)23を実行する。メモリチップ10は、内部処理を実行している最中には、Ry/ByをLowに遷移せしめる。第1コマンドシーケンス21および第2コマンドシーケンス22が夫々どのようなコマンドによって構成されるかは、アクセスモード(リード、ライト、イレース)毎に予め定められている。
【0034】
図5−1〜図5−3は、コマンドシーケンスの一例を説明する図である。図5−1はリードを実行するためのコマンドシーケンスを示している。リードモードにおいては、ch0コントローラ70は、メモリチップ10に対し、アクセスモードがリードであることを示すリードコマンドC0と、リードアドレス(adr)と、リードデータ準備コマンドC1とを順次発行する。リードコマンドC0、リードアドレス、およびリードデータ準備コマンドC1は、リードを実行するための第1コマンドシーケンス21を構成する。メモリチップ10は、リードデータ準備コマンドC1を受信すると、メモリセルアレイ115におけるリードアドレスにより指定された位置からリードデータを読み出して、読み出したリードデータをデータキャッシュ113に格納する。なお、このメモリチップ10による内部処理をリードデータ準備処理ということとする。メモリチップ10は、リードデータ準備処理を実行中の期間(tR)だけ、Ry/By0をByに遷移せしめる。
【0035】
リードデータ準備処理が完了したことによってメモリチップ10がRy/By0をRyに遷移せしめると、ch0コントローラ70は、メモリチップ10にデータ転送コマンドC2を入力し、データ転送コマンドC2を受信したメモリチップ10は、データキャッシュ113上のリードデータ(data)をI/Oに確保されたデータ転送用の帯域幅毎に区切ってメモリチップ10に逐次送信する。なお、データの送信は、具体的には、ch0コントローラ70がREをトグルし、メモリチップ10は、REに同期して入出力制御回路104が有するバッファをデータ転送用の帯域幅毎のリードデータで更新することによって実現される。ch0コントローラ70は、DQSをラッチ信号として用いてリードデータをラッチする。データ転送コマンドC2およびREのトグル処理は、リードを実行するための第2コマンドシーケンス22を構成する。
【0036】
図5−2は、ライトを実行するためのコマンドシーケンスを示している。ライトモードにおいては、ch0コントローラ70は、アクセスモードがライトモードであることを示すライトコマンドC3と、ライトアドレス(adr)と、ライトデータ(data)と、プログラム処理開始コマンドC4と、をメモリチップ10に送信する。メモリチップ10は、送られてきたライトデータをデータキャッシュ113に格納する。そして、メモリチップ10は、プログラム処理開始コマンドC4を受信すると、データキャッシュ113に格納されたライトデータをメモリセルアレイ115におけるライトアドレスにより指定されたページにプログラムし、プログラムされたリードデータをベリファイする。なお、このメモリチップ10による内部処理をプログラム処理ということとする。メモリチップ10は、プログラム処理を実行中の期間(tProg)だけ、Ry/By0をByに遷移せしめる。
【0037】
プログラム処理が完了したことによってメモリチップ10がRy/By0をRyに遷移せしめると、ch0コントローラ70は、メモリチップ10にステータスリードコマンドC5を送信するとともに、REをトグルする。メモリチップ10は、REを使用して、プログラム処理が成功したか否かを示すステータス情報(status)を入出力制御回路104のバッファに格納する。ch0コントローラ70は、バッファに格納されたステータス情報を読み、プログラム処理の完了/非完了を認識する。ステータスリードコマンドC5およびステータス情報をバッファに用意せしめるためのREのトグル処理は、ライトを実行するための第2コマンドシーケンス22を構成する。
【0038】
図5−3は、イレースを実行するためのコマンドシーケンスを示している。イレースモードにおいては、ch0コントローラ70は、アクセスモードがイレースモードであることを示すイレースコマンドC6と、イレースアドレス(adr)と、イレース処理開始コマンドC7とをメモリチップ10に送信する。イレースコマンドC5、イレースアドレス、イレース処理開始コマンドC7は、イレースを実行するための第1コマンドシーケンス21を構成する。メモリチップ10は、イレース処理開始コマンドC7を受信すると、イレースアドレスにより指定されたブロックをイレースするイレース処理を実行する。メモリチップ10は、プログラム処理を実行中の期間(tErase)だけ、Ry/By0をByに遷移せしめる。
【0039】
イレース処理が完了したことによってメモリチップ10がRy/By0をRyに遷移せしめると、ch0コントローラ70は、ライトモード時と同じように、ステータスリードコマンドC5をメモリチップ10に送信し、メモリチップ10は、ステータス情報(status)をch0コントローラ70に送信する。ステータスリードコマンドC5およびステータス情報をバッファに用意せしめるためのREのトグル処理は、イレースを実行するための第2コマンドシーケンス22を構成する。
【0040】
ここで、本発明の実施形態と比較される技術(以降、比較例)によれば、ch0コントローラ70は、第2コマンドシーケンス22の実行が完了したタイミングをバンク切り替えのタイミングとしてバンクインターリーブを実行する。これに対して、本発明の実施形態では、ch0コントローラ70は、あるバンクに対する第2コマンドシーケンス22を実行した後、同一のバンクに対する次のメモリアクセスにかかる第1コマンドシーケンス21を連続して実行し、第1コマンドシーケンス21が完了したタイミングをバンク切り替えのタイミングとする。例えば、メモリチップ10に対する第1コマンドシーケンス21が完了した後、メモリチップ10において第1コマンドシーケンス21に対応する内部処理23が開始されるが、ch0コントローラ70は、この内部処理が実行されている最中に、メモリチップ11に対して第1コマンドシーケンス21の実行を開始することができる。
【0041】
図6は、比較例にかかるバンクインターリーブ方法を実行した場合と第1の実施形態にかかるバンクインターリーブ方法を実行した場合の夫々において、連続してリードが実行される場合の各バンクの動作時間を説明するタイミングチャートである。この図の例においては、バンク0、1の夫々に対し、2回のリードが実行されている。リードモードにおいては、第2コマンドシーケンス22は、リードデータの転送を含んでいるため、第1コマンドシーケンス21よりも長い時間を必要とする。比較例にかかるバンクインターリーブ方法は、一方のバンクにかかる第1コマンドシーケンス21の実行時間を他方のバンクにかかるリードデータ準備処理の実行時間(tR)とを重ねることで転送効率の向上を図っている。これに対して、第1の実施形態のバンクインターリーブ方法は、一方のバンクにかかる第2コマンドシーケンス22の実行時間と他方のバンクにかかるリードデータ準備処理の実行時間(tR)とを重ねることができる。その結果、バンク0、1の実行時間が、ともに、比較例に比べて短縮されている。即ち、第1の実施形態のバンクインターリーブ方法を実行することによって、比較例に比べて、バンク0およびバンク1の転送効率を共に向上せしめることができる。
【0042】
図7は、ch0コントローラ70およびch1コントローラ71の構成を説明する図である。なお、ch0コントローラ70およびch1コントローラ71は共に同じ構成を備えているので、ここではch0コントローラ70について説明し、重複する説明を省略する。
【0043】
図示するように、ch0コントローラ70は、バンク0用キュー90、バンク1用キュー91、バンク制御部92、およびNANDインタフェース(I/F)制御部93を備えている。
【0044】
バンク0用キュー90は、並列動作要素1aのバンク0に対する命令900が、バンク1用キュー91は、並列動作要素1aのバンク1に対する命令910が、夫々エンキューされる。キュー90、91にエンキューされる個々の命令900、910は、アクセスモードの指定およびアクセス先のアドレスの他に、第1の実施形態のバンクインターリーブを実行するか否かを指定する連続投入フラグ1000を備えている。なお、命令900、910は、MPU4によってホスト装置200からの要求に基づいて生成される。MPUは、生成した命令900、910をキュー90またはキュー91に振り分けて投入する。
【0045】
バンク制御部92は、キュー切り替え部94および進捗管理部95を備えている。また、NAND I/F制御部93は、NANDコマンド生成部96およびコマンドシーケンス管理部97を備えている。
【0046】
キュー切り替え部94は、例えばデマルチプレクサによって構成される。キュー切り替え部94は、進捗管理部95からの選択信号に基づいて、進捗管理部95の接続先のキューをバンク0用のキュー90とバンク1用のキュー91との間で切り替える。
【0047】
進捗管理部95は、キュー90、91に格納されている命令900、910の読み出し、消去、命令の有無の確認を行う。進捗管理部95は、アクセス先のキューを変更する際には、キュー切り替え部94に供給する選択信号を切り替える。進捗管理部95は、キュー90、91から読み出した命令900、910に基づいて、第1コマンドシーケンス21を示す第1識別子と第2コマンドシーケンス22を示す第2識別子とを生成し、生成した第1識別子および第2識別子を、順次、NANDコマンド生成部96に入力する。進捗管理部95は、バンク毎のRy/By信号と、コマンドシーケンス管理部97からのコマンドシーケンス完了信号と、キュー90、91に命令900、910が格納されているか否かの判断と、実行中の命令900、910に後続する命令900、910の連続投入フラグ1000とに基づいて、コマンドシーケンス毎の入力タイミングを調整する。
【0048】
NANDコマンド生成部96は、進捗管理部95から識別子が入力されたとき、入力された識別子に対応するコマンドシーケンスを生成し、生成したコマンドシーケンスをコマンドシーケンス管理部97に入力する。
【0049】
コマンドシーケンス管理部97は、入力されたコマンドシーケンスをメモリチップ10、1に送信する。コマンドシーケンスがリードデータの受信を伴う場合には、リードデータの受信も実行する。コマンドシーケンス管理部97は、入力されたコマンドシーケンスを実行完了すると、コマンドシーケンス完了信号を進捗管理部95に入力する。
【0050】
図8は、MPU4の動作を説明するフローチャートである。MPU4は、SATAコントローラ5がホスト装置200から要求(リード要求、ライト要求、イレース要求)を受信したか否かを判定する(ステップS1)。SATAコントローラ5が要求を受信していない場合には(ステップS1、No)、MPU4は、ステップS1の処理を再び実行する。SATAコントローラ5が要求を受信した場合(ステップS1、Yes)、MPU4は、SATAコントローラ5が受信した要求に応じた命令を生成し(ステップS2)、生成した命令をバンク0用キュー90およびバンク1用キュー91に振り分けて格納する(ステップS3)。そして、MPU4は、ステップS1の処理を再び実行する。
【0051】
図9は、NANDコントローラ7が備えるチャネル毎のコントローラ70、71の動作を説明するフローチャートである。ch0コントローラ70およびch1コントローラ71は共に同じ構成を備えているので、ここではch0コントローラ70について説明し、重複する説明を省略する。
【0052】
まず、進捗管理部95は、キュー切り替え部94に入力する選択信号を操作して、バンク0用キュー90を選択する(ステップS11)。そして、進捗管理部95は、バンク0用キュー90に命令900があるか否かを判定する(ステップS12)。バンク0用キュー90に命令900がある場合(ステップS12、Yes)、その命令900が読み出し済みでない場合には、進捗管理部95は、その命令900を読み出して命令900に対応する第1識別子および第2識別子を生成しておく。
【0053】
続いて、進捗管理部95は、Ry/By0がByを示しているか否かを判定する(ステップS13)。Ry/By0がByではなくRyを示している場合(ステップS13、No)、進捗管理部95は、メモリチップ10が第1コマンドシーケンス21を実行済みであるか否かを判定する(ステップS14)。メモリチップ10が第1コマンドシーケンス21を実行していない場合(ステップS14、No)、進捗管理部95は、メモリチップ10に第1コマンドシーケンス21を実行せしめる(ステップS15)。具体的には、進捗管理部95は、生成した第1識別子をNANDコマンド生成部96に入力し、NANDコマンド生成部96は入力された第1識別子に基づいて第1コマンドシーケンス21を生成する。コマンドシーケンス管理部97は、メモリチップ10に対し、NANDコマンド生成部96が生成した第1コマンドシーケンス21を実行し、第1コマンドシーケンス21の実行を完了すると、シーケンス実行完了信号を進捗管理部95に送信する。進捗管理部95は、第1識別子を送信した後にシーケンス実行完了信号を受信したか否かを判定することによって、第1コマンドシーケンス21が実行済みであるか否かを判定することができる。
【0054】
メモリチップ10が第1コマンドシーケンス21を実行済みである場合(ステップS14、Yes)、進捗管理部95は、メモリチップ10に第2コマンドシーケンス22を実行せしめる(ステップS16)。具体的には、進捗管理部95は、生成した第2識別子をNANDコマンド生成部96に入力し、NANDコマンド生成部96は入力された第2識別子に基づいて第2コマンドシーケンス22を生成する。コマンドシーケンス管理部97は、メモリチップ10に対し、NANDコマンド生成部96が生成した第2コマンドシーケンス21を実行し、第2コマンドシーケンス21の実行を完了すると、シーケンス実行完了信号を進捗管理部95に送信する。進捗管理部95は、第2識別子を送信した後にシーケンス実行完了信号を受信したか否かを判定することによって、第1コマンドシーケンス21が実行済みであるか否かを判定することができる。
【0055】
進捗管理部95は、第2コマンドシーケンス22の実行が完了した後、バンク0用キュー90から、ステップS16の処理により実行済みとなった命令900を削除し(ステップS17)、別のキュー、即ちバンク1用キュー91に、命令910が存在するか否かを判定する(ステップS18)。ステップS18を実行する際には、進捗管理部95は、一時的にキュー切り替え部94にキューを切り替えさせる。バンク1用キュー91に命令910が存在する場合(ステップS18、Yes)、進捗管理部95は、バンク0用キュー90に次の命令900が存在するか否かを判定する(ステップS19)。
【0056】
バンク0用キュー90に次の命令900が存在する場合(ステップS19、Yes)、進捗管理部95は、当該次の命令900の連続投入が許可されているか否かを判定する(ステップS20)。進捗管理部95は、前記次の命令900に付随している連続投入フラグ1000を確認することによって、命令900の連続投入が許可されているか否かを判定することができる。
【0057】
前記次の命令900の連続投入が許可されている場合(ステップS20、Yes)、進捗管理部95は、当該次の命令900を読み出して、この命令900に対応する第1識別子および第2識別子を生成しておく。そして、ステップS15の処理により、進捗管理部95は、前記次の命令900に対応する第1コマンドシーケンス21をメモリチップ10に実行せしめる。
【0058】
Ry/By0がByを示している場合(ステップS13、Yes)、バンク0用キュー90に命令900が存在しない場合(ステップS12、No)、バンク1用キュー91に命令910が存在しない場合(ステップS18、No)、バンク0用キュー90に命令900が存在しない場合(ステップS19、No)、前記次の命令900の連続投入が許可されていない場合(ステップS20、No)、またはステップS15の処理を完了した後、進捗管理部95は、バンク切り替え部94に供給している選択信号を切り替えて、バンク1用キュー91を選択する(ステップS21)。
【0059】
ステップS21の処理の後、進捗管理部95は、バンク1用キュー91に命令910があるか否かを判定する(ステップS22)。バンク1用キュー91に命令910がある場合(ステップS22、Yes)、その命令910が読み出し済みでない場合には、進捗管理部95は、その命令910を読み出して命令910に対応する第1識別子および第2識別子を生成しておく。
【0060】
続いて、進捗管理部95は、Ry/By1がByを示しているか否かを判定する(ステップS23)。Ry/By1がByではなくRyを示している場合(ステップS23、No)、進捗管理部95は、メモリチップ11が第1コマンドシーケンス21を実行済みであるか否かを判定する(ステップS24)。メモリチップ10が第1コマンドシーケンス21を実行していない場合(ステップS24、No)、進捗管理部95は、メモリチップ1に第1コマンドシーケンス21を実行せしめる(ステップS25)。具体的には、進捗管理部95は、生成した第1識別子をNANDコマンド生成部96に入力し、NANDコマンド生成部96は入力された第1識別子に基づいて第1コマンドシーケンス21を生成する。コマンドシーケンス管理部97は、メモリチップ11に対し、NANDコマンド生成部96が生成した第1コマンドシーケンス21を実行し、第1コマンドシーケンス21の実行を完了すると、シーケンス実行完了信号を進捗管理部95に送信する。進捗管理部95は、第1識別子を送信した後にシーケンス実行完了信号を受信したか否かを判定することによって、第1コマンドシーケンス21が実行済みであるか否かを判定することができる。
【0061】
メモリチップ11が第1コマンドシーケンス21を実行済みである場合(ステップS24、Yes)、進捗管理部95は、メモリチップ11に第2コマンドシーケンス22を実行せしめる(ステップS26)。具体的には、進捗管理部95は、生成した第2識別子をNANDコマンド生成部96に入力し、NANDコマンド生成部96は入力された第2識別子に基づいて第2コマンドシーケンス22を生成する。コマンドシーケンス管理部97は、メモリチップ11に対し、NANDコマンド生成部96が生成した第2コマンドシーケンス21を実行し、第2コマンドシーケンス21の実行を完了すると、シーケンス実行完了信号を進捗管理部95に送信する。進捗管理部95は、第2識別子を送信した後にシーケンス実行完了信号を受信したか否かを判定することによって、第1コマンドシーケンス21が実行済みであるか否かを判定することができる。
【0062】
進捗管理部95は、第2コマンドシーケンス22の実行が完了した後、バンク1用キュー91から、ステップS26の処理により実行済みとなった命令910を削除し(ステップS27)、別のキュー、即ちバンク0用キュー90に、命令900が存在するか否かを判定する(ステップS28)。ステップS28を実行する際には、進捗管理部95は、一時的にキュー切り替え部94にキューを切り替えさせる。バンク0用キュー90に命令900が存在する場合(ステップS28、Yes)、進捗管理部95は、バンク1用キュー91に次の命令910が存在するか否かを判定する(ステップS29)。
【0063】
バンク1用キュー91に次の命令910が存在する場合(ステップS29、Yes)、進捗管理部95は、当該次の命令910の連続投入が許可されているか否かを判定する(ステップS30)。進捗管理部95は、前記次の命令900に付随している連続投入フラグ1000を確認することによって、命令900の連続投入が許可されているか否かを判定することができる。
【0064】
前記次の命令910の連続投入が許可されている場合(ステップS30、Yes)、進捗管理部95は、当該次の命令910を読み出して、この命令910に対応する第1識別子および第2識別子を生成しておく。そして、ステップS25の処理により、進捗管理部95は、前記次の命令910に対応する第1コマンドシーケンス21をメモリチップ11に実行せしめる。
【0065】
Ry/By0がByを示している場合(ステップS23、Yes)、バンク1用キュー91に命令910が存在しない場合(ステップS22、No)、バンク0用キュー90に命令900が存在しない場合(ステップS28、No)、バンク1用キュー91に命令910が存在しない場合(ステップS29、No)、前記次の命令910の連続投入が許可されていない場合(ステップS30、No)、またはステップS25の処理を完了した後、進捗管理部95は、キュー90、91の何れかに命令900、910があるか否かを判定する(ステップS31)。キュー90、91の何れかに命令900、910がある場合(ステップS31、Yes)、ステップS11の処理が実行され、キュー90、91の何れにも命令900、910がない場合(ステップS31、No)、NANDコントローラ7の動作が終了となる。
【0066】
このように、ch0コントローラ70は、バンク0(メモリチップ10)に対してi番目の命令900にかかる第2コマンドシーケンス22とi+1番目の命令900にかかる第1コマンドシーケンス21とを連続して実行した後で、かつ、メモリチップ10が内部処理23を実行している最中に、バンク1(メモリチップ11)に対するメモリアクセスの実行を開始する。
【0067】
図10は、比較例にかかるバンクインターリーブ方法を実行した場合と第1の実施形態にかかるバンクインターリーブ方法を実行した場合の夫々において、連続してライトが実行される場合の各バンクの動作時間を説明するタイミングチャートである。ライトモードにおいては、第1コマンドシーケンス21は、ライトデータの転送を含んでいるため、第2コマンドシーケンス22よりも長い時間を必要とする。第1の実施形態のバンクインターリーブ方法は、コマンドシーケンスのうちの実行時間が長くかかる第1コマンドシーケンス21の実行時間を比較例に比べて効率的に隠蔽できるので、ライトモードにおいても、バンク0およびバンク1の転送効率を共に向上せしめることができることがわかる。
【0068】
図11は、比較例にかかるバンクインターリーブ方法を実行した場合と第1の実施形態にかかるバンクインターリーブ方法を実行した場合の夫々において、連続してイレースが実行される場合の各バンクの動作時間を説明するタイミングチャートである。イレースモードにおいては、第1コマンドシーケンス21および第2コマンドシーケンス22は、ともに、同程度の実行時間を必要とする。この場合には、図示するように、第1の実施形態によれば、バンク0の転送効率を向上せしめることができる。
【0069】
図12−1〜図12−3は、比較例にかかるバンクインターリーブ方法を実行した場合と第1の実施形態にかかるバンクインターリーブ方法を実行した場合の夫々において、バンク毎のメモリアクセスのアクセスモードがランダムに構成されたときの各バンクの動作時間を説明するタイミングチャートである。
【0070】
図12−1は、バンク0に、2回のイレースアクセスが、バンク1に2回のリードアクセスがなされる場合を示している。この図の例のように、バンク0の1回目のメモリアクセスがバンク1の1回目のメモリアクセスの内部処理の終了タイミングよりも以前に終了する場合には、バンク0の2回目のメモリアクセスにかかる第1コマンドシーケンス21の実行時間を隠蔽することができない。したがって、第1の実施形態によれば、比較例に比べ、バンク0の転送効率を向上させることができる。
【0071】
図12−2は、バンク0に、イレースアクセスとライトアクセスとが、バンク1に2回のリードアクセスがなされる場合を示している。この図の例のように、バンク1の1回目のメモリアクセスの内部処理の終了タイミングが、バンク0の1回目のメモリアクセスの終了タイミングよりも以降で、かつ、バンク0の2回目のメモリアクセスにかかる第1コマンドシーケンス21の終了タイミングよりも以前である場合、バンク0の2回目のメモリアクセスにかかる第1コマンドシーケンス21の実行時間のうちの一部を隠蔽することができる。したがって、第1の実施形態によれば、比較例に比べ、バンク0およびバンク1の転送効率をともに向上させることができる。
【0072】
図12−3は、バンク0に、イレースアクセスとリードアクセスとが、バンク1にライトアクセスとリードアクセスとがなされる場合を示している。この図の例のように、バンク1の1回目のメモリアクセスの内部処理の終了タイミングが、バンク0の2回目のメモリアクセスにかかる第1コマンドシーケンス21の終了タイミングよりも以降である場合、バンク0の2回目のメモリアクセスにかかる第1コマンドシーケンス21の実行時間を完全に隠蔽することができる。したがって、第1の実施形態によれば、比較例に比べ、バンク0およびバンク1の転送効率をともに向上させることができる。
【0073】
なお、以上の説明においては、MPU4は、命令毎に、連続投入フラグ1000をどのように設定するかについては特に言及しなかったが、MPU4は、連続投入フラグ1000を任意に設定することができる。例えば、MPU4は、図6に示した例のように連続してリードアクセスを実行する際にはリードアクセス毎の命令の連続投入フラグ1000に、連続投入を許可する値を設定することができる。また、図12−2および図12−3に示したように、バンク1の1回目のメモリアクセスの内部処理の終了タイミングがバンク0の1回目のメモリアクセスの終了タイミングよりも以降となる場合には、バンク0およびバンク1の転送効率をともに向上させることができる。MPU4は、バンク0およびバンク1の転送効率をともに向上させることができる場合、即ちバンク1の1回目のメモリアクセスの内部処理の終了タイミングがバンク0の1回目のメモリアクセスの終了タイミングよりも以降となる場合に、バンク0の2回目のメモリアクセスにかかる命令の連続投入フラグ1000に、連続投入を許可する値を設定することができる。
【0074】
また、以上の説明においては、並列動作要素1a、1bは、夫々2つのバンク0、1を備えているものとして説明したが、並列動作要素1a、1bは、夫々3以上のバンクを備えるように構成してもよい。その場合には、NANDコントローラ7が備えるチャネル毎のコントローラ70、71は、ステップS1〜ステップS20の処理をバンク毎にシリアルに実行することができる。
【0075】
このように、本発明の第1の実施形態によれば、ch0コントローラ70は、バンク0(メモリチップ10)に対してi番目の命令900にかかる第2コマンドシーケンス22とi+1番目の命令900にかかる第1コマンドシーケンス21とを連続して実行した後で、かつ、メモリチップ10が内部処理23を実行している最中に、バンク1(メモリチップ11)に対するメモリアクセスの実行を開始するようにしたので、SSD100の転送効率を向上させることができる。
【0076】
また、ch0コントローラ70は、i+1番目の命令900に付随する連続投入フラグ1000に基づいて、i+1番目の命令900にかかる第1コマンドシーケンス21をi番目の命令900にかかる第2コマンドシーケンス22の直後に連続して実行するか否かを判定する、ようにしたので、i+1番目の命令900にかかる第1コマンドシーケンス21をi番目の命令900にかかる第2コマンドシーケンス22の直後に連続して実行する制御を実行するか否かを切り替えることが可能になる。
【0077】
(第2の実施形態)
図13は、第1の実施形態のSSD100を搭載したパーソナルコンピュータ1200の一例を示す斜視図である。パーソナルコンピュータ1200は、本体1201、及び表示ユニット1202を備えている。表示ユニット1202は、ディスプレイハウジング1203と、このディスプレイハウジング1203に収容された表示装置1204とを備えている。
【0078】
本体1201は、筐体1205と、キーボード1206と、ポインティングデバイスであるタッチパッド1207とを備えている。筐体1205内部には、メイン回路基板、ODD(Optical Disk Device)ユニット、カードスロット、及びSSD100等が収容されている。
【0079】
カードスロットは、筐体1205の周壁に隣接して設けられている。周壁には、カードスロットに対向する開口部1208が設けられている。ユーザは、この開口部1208を通じて筐体1205の外部から追加デバイスをカードスロットに挿抜することが可能である。
【0080】
SSD100は、従来のHDDの置き換えとして、パーソナルコンピュータ1200内部に実装された状態として使用してもよいし、パーソナルコンピュータ1200が備えるカードスロットに挿入した状態で、追加デバイスとして使用してもよい。
【0081】
図14は、SSDを搭載したパーソナルコンピュータのシステム構成例を示している。パーソナルコンピュータ1200は、CPU1301、ノースブリッジ1302、主メモリ1303、ビデオコントローラ1304、オーディオコントローラ1305、サウスブリッジ1309、BIOS−ROM1310、SSD100、ODDユニット1311、エンベデッドコントローラ/キーボードコントローラIC(EC/KBC)1312、及びネットワークコントローラ1313等を備えている。
【0082】
CPU1301は、パーソナルコンピュータ1200の動作を制御するために設けられたプロセッサであり、SSD100から主メモリ1303にロードされるオペレーティングシステム(OS)を実行する。更に、ODDユニット1311が、装填された光ディスクに対して読出し処理及び書込み処理の少なくとも1つの処理の実行を可能にした場合に、CPU1301は、それらの処理の実行をする。
【0083】
また、CPU1301は、BIOS−ROM1310に格納されたシステムBIOS(Basic Input Output System)も実行する。尚、システムBIOSは、パーソナルコンピュータ1200内のハードウェア制御のためのプログラムである。
【0084】
ノースブリッジ1302は、CPU1301のローカルバスとサウスブリッジ1309との間を接続するブリッジデバイスである。ノースブリッジ1302には、主メモリ1303をアクセス制御するメモリコントローラも内蔵されている。
【0085】
また、ノースブリッジ1302は、AGP(Accelerated Graphics Port)バス等を介してビデオコントローラ1304との通信、及びオーディオコントローラ1305との通信を実行する機能も有している。
【0086】
主メモリ1303は、プログラムやデータを一時的に記憶し、CPU1301のワークエリアとして機能する。主メモリ1303は、例えばRAMから構成される。
【0087】
ビデオコントローラ1304は、パーソナルコンピュータ1200のディスプレイモニタとして使用される表示ユニット1202を制御するビデオ再生コントローラである。
【0088】
オーディオコントローラ1305は、パーソナルコンピュータ1200のスピーカ1306を制御するオーディオ再生コントローラである。
【0089】
サウスブリッジ1309は、LPC(Low Pin Count)バス1314上の各デバイス、及びPCI(Peripheral Component Interconnect)バス1315上の各デバイスを制御する。また、サウスブリッジ1309は、各種ソフトウェア及びデータを格納する記憶装置であるSSD100を、SATAインタフェースを介して制御する。
【0090】
パーソナルコンピュータ1200は、セクタ単位でSSD100へのアクセスを行う。SATAインタフェースを介して、書き込みコマンド、読出しコマンド、キャッシュフラッシュコマンド等がSSD100に入力される。
【0091】
また、サウスブリッジ1309は、BIOS−ROM1310、及びODDユニット1311をアクセス制御するための機能も有している。
【0092】
EC/KBC1312は、電力管理のためのエンベデッドコントローラと、キーボード(KB)1206及びタッチパッド1207を制御するためのキーボードコントローラとが集積された1チップマイクロコンピュータである。
【0093】
このEC/KBC1312は、ユーザによるパワーボタンの操作に応じてパーソナルコンピュータ1200の電源をON/OFFする機能を有している。ネットワークコントローラ1313は、例えばインターネット等の外部ネットワークとの通信を実行する通信装置である。
【0094】
パーソナルコンピュータ1200が搭載するSSD100は、上述した通り、NANDメモリ1とデータ転送装置2との間の転送効率を可及的に向上させることができる構成であるので、転送効率の向上に応じてSSD100に対するアクセス速度が向上する。
【0095】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0096】
1 NANDメモリ、2 データ転送装置、4 MPU、10〜13 メモリチップ、21 第1コマンドシーケンス、22 第2コマンドシーケンス、23 内部処理、70 ch0コントローラ、71 ch1コントローラ、90 バンク0用キュー、91 バンク1用キュー、94 キュー切り替え部、95 進捗管理部、96 NANDコマンド生成部、97 コマンドシーケンス管理部、200 ホスト装置、900、910 命令、1000 連続投入フラグ、1200 パーソナルコンピュータ。
図1
図2
図3
図4
図5-1】
図5-2】
図5-3】
図6
図7
図8
図9
図10
図11
図12-1】
図12-2】
図12-3】
図13
図14