[go: up one dir, main page]

JP2023137515A - 半導体記憶装置 - Google Patents

半導体記憶装置 Download PDF

Info

Publication number
JP2023137515A
JP2023137515A JP2022043759A JP2022043759A JP2023137515A JP 2023137515 A JP2023137515 A JP 2023137515A JP 2022043759 A JP2022043759 A JP 2022043759A JP 2022043759 A JP2022043759 A JP 2022043759A JP 2023137515 A JP2023137515 A JP 2023137515A
Authority
JP
Japan
Prior art keywords
bus
nonvolatile memory
volatile memory
notice
channel
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.)
Pending
Application number
JP2022043759A
Other languages
English (en)
Inventor
隆二 西久保
Ryuji Nishikubo
典生 青山
Norio Aoyama
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.)
Kioxia Corp
Original Assignee
Kioxia 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 Kioxia Corp filed Critical Kioxia Corp
Priority to JP2022043759A priority Critical patent/JP2023137515A/ja
Priority to US17/806,815 priority patent/US12175077B2/en
Publication of JP2023137515A publication Critical patent/JP2023137515A/ja
Pending 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/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1694Configuration of memory controller to different memory types
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • 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/10Program control for peripheral devices
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
    • 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/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • 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/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)

Abstract

【課題】 不揮発性メモリチップに対するアクセス性能を向上できる半導体記憶装置を実現する。【解決手段】 実施形態によれば、半導体記憶装置は、揮発性メモリ、複数の不揮発性メモリチップ、複数のチャネル、複数の不揮発性メモリインタフェース、およびバスアービタを具備する。複数のチャネルは、複数の不揮発性メモリチップの内の少なくとも1つの不揮発性メモリチップにそれぞれ接続される。複数の不揮発性メモリインタフェースは、複数のチャネルの少なくとも1つにそれぞれ接続され、接続されたチャネルを介して少なくとも1つの不揮発性メモリチップを制御する。バスアービタは、揮発性メモリと、複数の不揮発性メモリチップそれぞれとの間のデータ転送におけるバスの使用を、バスの帯域幅に基づいて制御する。【選択図】図2

Description

本発明の実施形態は、不揮発性メモリチップを備える半導体記憶装置に関する。
近年、不揮発性メモリチップを備える半導体記憶装置が広く普及している。このような半導体記憶装置の1つとして、NAND型フラッシュメモリチップを備えるソリッドステートドライブ(SSD)が知られている。SSDは、様々なコンピューティングデバイスのメインストレージとして使用されている。
半導体記憶装置は、複数の不揮発性メモリチップを備えることがある。不揮発性メモリチップそれぞれは、例えば、複数のチャネルのいずれかに接続される。チャネルは、データの伝送路である。複数のチャネルにそれぞれ接続された複数の不揮発性メモリチップは、データ転送を並列に行うことができる。
半導体記憶装置はさらに、揮発性メモリとバスとを備える。揮発性メモリは、データを一時的に記憶する記憶領域である。バスは、データ伝送路である。複数の不揮発性メモリチップと揮発性メモリとの間では、チャネルおよびバスを介してデータが転送される。
複数の不揮発性メモリチップと揮発性メモリとの間でデータが転送される場合、データの転送速度がバスの帯域幅に達することがある。この場合、例えば、不揮発性メモリチップおよび揮発性メモリはより速い転送速度でデータを転送可能であるにも関わらず、バスの帯域幅がボトルネックとなって、転送速度が低下している可能性がある。そのため、転送速度がバスの帯域幅に達していない場合と比較して、データの転送に要する時間が長くなる可能性がある。データの転送に要する時間が長くなることは、不揮発性メモリチップに対するアクセス性能を低下させる一因となり得る。
特開2007-4271号公報
本発明の一実施形態では、不揮発性メモリチップに対するアクセス性能を向上できる半導体記憶装置を提供する。
実施形態によれば、半導体記憶装置は、揮発性メモリ、複数の不揮発性メモリチップ、複数のチャネル、複数の不揮発性メモリインタフェース、およびバスアービタを具備する。複数のチャネルは、複数の不揮発性メモリチップの内の少なくとも1つの不揮発性メモリチップにそれぞれ接続される。複数の不揮発性メモリインタフェースは、複数のチャネルの少なくとも1つにそれぞれ接続され、接続されたチャネルを介して少なくとも1つの不揮発性メモリチップを制御する。バスアービタは、揮発性メモリと、複数の不揮発性メモリチップそれぞれとの間のデータ転送におけるバスの使用を、バスの帯域幅に基づいて制御する。
実施形態に係る半導体記憶装置を含む情報処理システムの構成例を示すブロック図。 実施形態に係る半導体記憶装置の使用予告キューの例を示す図。 実施形態に係る半導体記憶装置におけるデータ書き込み動作の例を示すシーケンス図。 実施形態に係る半導体記憶装置における、カウンタの値が上限値以上である場合の動作の例を示すシーケンス図。 実施形態に係る半導体記憶装置における、tailポインタに1を加算した後に、カウンタの値が上限値未満になった場合の動作の例を示すシーケンス図。 実施形態に係る半導体記憶装置において、(A)使用予告を用いない場合のデータ書き込み動作のタイムチャートの例と、(B)使用予告を用いる場合のデータ書き込み動作のタイムチャートの例とを示す図。 実施形態に係る半導体記憶装置における、使用予告を用いてバスの使用を制御する場合の動作のタイムチャートの例を示す図。 実施形態に係る半導体記憶装置において、バスマスタによって行われるデータ転送制御処理の手順の例を示すフローチャート。 実施形態に係る半導体記憶装置の協調回路において行われる第1受理制御処理の手順の例を示すフローチャート。 実施形態に係る半導体記憶装置の協調回路において行われる第2受理制御処理の手順の例を示すフローチャート。 実施形態に係る半導体記憶装置の協調回路において行われるデータ転送完了処理の手順の例を示すフローチャート。 実施形態に係る半導体記憶装置の調停回路において行われる使用許可処理の手順の例を示すフローチャート。
以下、発明を実施するための形態について図面を参照して説明する。
図1は、実施形態に係る半導体記憶装置を含む情報処理システム1の構成例を示すブロック図である。情報処理システム1は、ホストデバイス2と半導体記憶装置3とを含む。
ホスト2は、半導体記憶装置3の外部の情報処理装置である。ホストデバイス2は、例えば、サーバコンピュータ、またはパーソナルコンピュータである。以下、ホストデバイス2をホスト2とも称する。
半導体記憶装置3は、例えば、ソリッドステートドライブ(SSD)である。半導体記憶装置3は、例えば、ハードディスクドライブ(HDD)である。半導体記憶装置3は、ホスト2の記憶装置として機能し得る。半導体記憶装置3は、メモリデバイスにデータを書き込むように構成される。半導体記憶装置3は、メモリデバイスからデータを読み出すように構成される。メモリデバイスは、例えば、不揮発性メモリチップである。不揮発性メモリチップは、例えば、NAND型フラッシュメモリチップである。
半導体記憶装置3は、例えば、ケーブルまたはネットワークを介してホスト2に接続される。あるいは、半導体記憶装置3は、ホスト2に内蔵されていてもよい。半導体記憶装置3とホスト2とを接続するインタフェースとしては、SCSI、Serial Attached SCSI(SAS)、ATA、Serial ATA(SATA)、PCI Express(PCIe)(登録商標)、Ethernet(登録商標)、Fibre channel、NVM Express(NVMe)(登録商標)等が使用され得る。
次いで、半導体記憶装置3の内部構成について説明する。半導体記憶装置3は、メモリデバイス5、揮発性メモリ6、およびコントローラ4を備える。
メモリデバイス5は、データを不揮発に記憶するデバイスである。
揮発性メモリ6は、例えば、ダイナミックランダムアクセスメモリ(DRAM)、または、スタティックランダムアクセスメモリ(SRAM)である。揮発性メモリ6の代わりに、コントローラ4の内部に揮発性メモリが設けられてもよい。揮発性メモリ6の記憶領域は、例えば、ユーザデータを記憶する領域(バッファ領域)、および管理情報を記憶する領域として割り当てられる。ユーザデータは、外部からの書き込み要求に基づきメモリデバイス5に書き込まれるデータ、または外部からの読み出し要求に基づきメモリデバイス5から読み出されたデータである。管理情報は、メモリデバイス5上のデータを管理する情報である。
コントローラ4は、メモリコントローラである。コントローラ4は、例えば、System-on-a-chip(SoC)のような回路である。コントローラ4は、メモリデバイス5および揮発性メモリ6を制御する。コントローラ4は、メモリデバイス5および揮発性メモリ6それぞれと通信可能に接続される。コントローラ4は、メモリデバイス5のデータ管理およびブロック管理を実行する。データ管理には、マッピング情報の管理が含まれる。マッピング情報とは、論理アドレスと物理アドレスの間の対応関係である。論理アドレスは、半導体記憶装置3の記憶領域をアドレス指定するために使用されるアドレスである。論理アドレスとして、例えば、論理ブロックアドレス(LBA)がある。物理アドレスは、メモリデバイス5における位置を示す。ブロック管理には、バッドブロックの管理、ウェアレベリング、およびガベッジコレクションが含まれる。
次に、メモリデバイス5の内部構成について説明する。メモリデバイス5は、複数の不揮発性メモリチップ50を含む。複数の不揮発性メモリチップ50は、例えば、複数のNAND型フラッシュメモリダイである。複数の不揮発性メモリチップ50は、例えば、不揮発性メモリチップ501、502、511、512、……、571、および572を含む。メモリデバイス5に含まれる不揮発性メモリチップ50の数は、任意である。以下では、複数の不揮発性メモリチップ50の1つを指して、不揮発性メモリチップ50と称することがある。
不揮発性メモリチップ50は、メモリセルアレイを含む。メモリセルアレイは、複数のメモリセルを含む。複数のメモリセルは、マトリクス状に配置される。
不揮発性メモリチップ50は、複数のブロックを含む。1つのブロックは、最小のデータ消去単位として機能する。ブロックは、消去ブロック、物理ブロックとも称される。複数のブロックそれぞれは、複数のページを含む。1つのページは、書き込み動作および読み出し動作の単位である。複数のページそれぞれは、1つのワード線に接続された複数のメモリセルを含む。なお、1つのページの代わりに、1つのワード線を書き込み動作および読み出し動作の単位としてもよい。
複数のブロックそれぞれには、Program/Eraseサイクル(P/Eサイクル)数の上限がある。1つのブロックの1回のP/Eサイクルは、消去動作と書き込み動作とを含む。消去動作は、ブロック内の全てのメモリセルを消去状態にする動作である。書き込み動作は、ブロックのページそれぞれにデータを書き込む動作である。
複数の不揮発性メモリチップ50それぞれは、複数のチャネル7のいずれかに接続される。複数のチャネル7それぞれは、信号およびデータの伝送路である。複数のチャネル7それぞれに接続される不揮発性メモリチップ50の数は、任意である。
図1では、複数のチャネル7が8つのチャネルである例を示す。8つのチャネル7は、第0チャネルch0、第1チャネルch1、……、および第7チャネルch7である。8つのチャネル7それぞれには、2つの不揮発性メモリチップ50が接続されている。具体的には、第0チャネルch0には、不揮発性メモリチップ501および502が接続されている。第1チャネルch1には、不揮発性メモリチップ511および512が接続されている。第7チャネルch7には、不揮発性メモリチップ571および572が接続されている。
次に、コントローラ4の内部構成について説明する。コントローラ4は、ホストインタフェース(ホストI/F)11、CPU12、複数の不揮発性メモリインタフェース(不揮発性メモリI/F)13、揮発性メモリインタフェース(揮発性メモリI/F)14、ハードウェアエンジン(HWエンジン)15、並びにインターコネクト16および17を含む。
ホストI/F11は、半導体記憶装置3と外部との通信を行うハードウェアインタフェースである。外部から受信するコマンドとしては、例えば、ライトコマンド、リードコマンドがある。
CPU12は、少なくとも1つのプロセッサである。CPU102は、例えば、SoCのような回路である。CPU102は、例えば、ファームウェア(FW)のようなプログラムに基づいて動作する。
複数の不揮発性メモリI/F13は、コントローラ4とメモリデバイス5との間の通信を行うハードウェアインタフェースである。不揮発性メモリI/F13は、Toggle DDR、Open NAND Flash Interface(ONFI)等のインタフェース規格に対応する。複数の不揮発性メモリI/F13それぞれは、1つのチャネル7に接続される。したがって、複数の不揮発性メモリI/F13それぞれは、チャネル7を介して、メモリデバイス5に設けられる少なくとも1つの不揮発性メモリチップ50に接続される。複数の不揮発性メモリI/F13それぞれは、チャネル7を介して接続された少なくとも1つの不揮発性メモリチップ50を制御する。複数の不揮発性メモリI/F13の数は、例えば、チャネル7の数に相当する。
揮発性メモリI/F14は、コントローラ4と揮発性メモリ6との間の通信を行うハードウェアインタフェースである。揮発性メモリI/F14は、DDR等のインタフェース規格に対応する。
HWエンジン15は、特定の処理を行う回路である。特定の処理は、半導体記憶装置3において行う任意の処理である。特定の処理は、例えば、データの誤り訂正、符号化、暗号化、復号である。HWエンジン15は、例えば、SoCのような回路である。HWエンジン15は、例えば、HWエンジン15A、15B、15C、および15Dを含む。HWエンジン15A、15B、15C、および15Dそれぞれは、特定の処理の少なくとも一部を行う回路である。
インターコネクト16および17は、信号およびデータの伝送路である。インターコネクト16および17は、ホストI/F11、CPU12、不揮発性メモリI/F13-0、13-1、……、および13-7、揮発性メモリI/F14、並びにHWエンジン15A、15B、15C、および15Dを相互に接続する。より詳しくは、インターコネクト16は、CPU12、HWエンジン15A、15B、15C、および15D、並びにインターコネクト17を相互に接続する。インターコネクト17は、ホストI/F11、複数の不揮発性メモリI/F13-0、13-1、……、および13-7、揮発性メモリI/F14、並びにインターコネクト16を相互に接続する。
インターコネクト17は、バス18とバスアービタ19とを備える。
バス18は、信号およびデータの伝送路そのものである。バス18は、複数のバスマスタによって共有されるリソースである。バスマスタは、バス18を介したデータ転送を行い得るデバイスである。バスマスタは、バス18の使用を要求する。例えば、ホストI/F11、CPU12、揮発性メモリI/F14、不揮発性メモリI/F13-0、13-1、……、および13-7、並びにHWエンジン15A、15B、15C、および15Dのそれぞれは、バスマスタとして動作し得る。バス18は、例えば、揮発性メモリ6と、複数の不揮発性メモリチップ50それぞれとの間のデータ伝送に用いられる。バス18の転送プロトコルには、例えば、Advanced eXtensible Interface(AXI)が用いられる。
バスアービタ19は、バス18の帯域幅に基づいて、バス18の使用を動的に制御する回路である。バス18の帯域幅は、バス18を介したデータの転送速度の上限を示す。
バスアービタ19は、調停回路21と協調回路22とを備える。
調停回路21は、バスマスタに対して、バス18の使用権を均等に付与する回路である。調停回路21は、バスマスタからバス18の使用権を要求された場合、バスマスタにバス18の使用権を付与する。より具体的には、調停回路21は、バスマスタからバス18の使用権を要求された場合、バスマスタに対して、バス18の使用を許可することを示す応答を返す。バスマスタは、バス18の使用権を付与された場合(すなわち、バス18の使用を許可することを示す応答を受け取った場合)、バス18を介したデータ伝送を行うことが可能になる。
協調回路22は、バスマスタによるバス18の使用予告を受理する回路である。使用予告とは、バス18を使用することを示す事前の通知である。協調回路22は、例えば、バス18の帯域幅に基づいて、バス18の使用予告を受理する。より具体的には、協調回路22は、バス18を使用しているバスマスタの数が上限値以下になるように、バス18の使用予告を受理する。上限値は、バス18を並行して使用するバスマスタの数の上限である。上限値は、1以上の整数である。上限値は、例えば、バス18の帯域幅に基づいて決定される。より詳しくは、上限値は、上限値に相当する数のバスマスタがバス18を介したデータ転送を並行して行っても、バス18の帯域幅がボトルネックとなってデータ転送速度が低下することがないように、決定される。なお、バス18を介したデータ転送を並行して行う複数のバスマスタそれぞれは、例えば、同一のデータ転送速度を上限としてデータ転送を行う。バスマスタは、バス18の使用予告が受理された場合、バス18の使用権を調停回路21に要求することが可能になる。換言すると、バスマスタは、バス18の使用予告が受理されるまで、バス18の使用権を調停回路21に要求しないように動作する。
協調回路22は、カウンタ41と使用予告キュー42とを含む。
カウンタ41は、バス18を使用しているバスマスタの数をカウントするカウンタである。カウンタ41の初期値は0である。カウンタ41の値は、協調回路22がバスマスタによる使用予告を受理した場合に、1増加する。カウンタ41の値は、バス18を介したデータ転送が完了したことがバスマスタから協調回路22に通知された場合に、1減少する。つまり、カウンタ41の値は、通知したバス18の使用予告が協調回路22によって受理された後、データ転送が完了したことをまだ協調回路22に通知していないバスマスタの数を示す。カウンタ41は、例えば、複数のフリップフロップ回路を含む。1つのフリップフロップ回路は、1ビットの情報を記憶する回路である。複数のフリップフロップ回路は、バス18を使用しているバスマスタの数を、例えば、符号付きの2進数で表す。
使用予告キュー42は、バスマスタIDを記憶するキューである。バスマスタIDは、対応するバスマスタを一意に特定する識別情報(ID)である。使用予告キュー42に記憶されているバスマスタIDは、協調回路22がまだ受理していない使用予告を通知したバスマスタに対応する。使用予告キュー42は、例えば、先入れ先出し(First-In First-Out:FIFO)方式のリングバッファとして実現される。
図2は、実施形態に係る半導体記憶装置3の使用予告キュー42の例を示す図である。
使用予告キュー42は、複数の記憶領域S0、S1、S2、S3、S4、S5、……、およびSn-1を含む。以下では、使用予告キュー42に含まれる記憶領域を、スロットと称する。複数のスロットS0、S1、S2、S3、S4、S5、……、およびSn-1それぞれは、1つのバスマスタIDを記憶し得る。使用予告キュー42に含まれるスロットの数n(すなわち、キューサイズn)は、例えば、バス18を使用するバスマスタの総数に相当する。
使用予告キュー42は、tailポインタ42Tおよびheadポインタ42Hをさらに含む。tailポインタ42Tは、協調回路22がバスマスタIDを格納するスロットを示すポインタである。tailポインタ42Tは、協調回路22がバスマスタIDをスロットに格納する毎に、1増加する。増加したtailポインタ42Tがキューサイズnに達した場合、tailポインタ42Tには0が設定される。headポインタ42Hは、協調回路22がバスマスタIDを取得するスロットを示すポインタである。headポインタ42Hは、協調回路22がスロットからバスマスタIDを取得する毎に、1増加する。増加したheadポインタ42Hがキューサイズnに達した場合、headポインタ42Hには0が設定される。図2では、スロットS5がバスマスタIDを格納するスロットであり、スロットS2がバスマスタIDを取得するスロットである。headポインタ42Hで示されるスロットから、tailポインタ42Tで示されるスロットの1つ前のスロットまでの各スロットは、バスマスタIDを記憶しているスロットである。したがって、tailポインタ42Tとheadポインタ42Hとが異なるスロットを示す場合、使用予告キュー42は少なくとも1つのバスマスタIDを記憶している。スロットに記憶されているバスマスタIDは、協調回路22によって取得された後、破棄される。破棄されたバスマスタIDを記憶していたスロットは、新たなバスマスタIDを記憶可能になる。
次いで、半導体記憶装置3においてバス18を介したデータ転送を行う場合の動作を説明する。以下では、バス18を介したデータ転送が、データ書き込み動作において行われる場合について例示する。データ書き込み動作は、例えば、揮発性メモリ6に記憶されているユーザデータを不揮発性メモリチップ50に書き込む動作である。データ書き込み動作は、(1)バス18を介して揮発性メモリ6から不揮発性メモリチップ50にユーザデータを転送する動作と、(2)転送したユーザデータを不揮発性メモリチップ50に書き込む(プログラムする)動作とを含む。(1)の動作を、ライトデータ転送動作と称する。(2)の動作を、プログラム動作と称する。プログラム動作では、バス18は使用されない。
図3は、実施形態に係る半導体記憶装置3におけるデータ書き込み動作の例を示すシーケンス図である。ここでは、不揮発性メモリチップ501に対してデータ書き込み動作を行うことを想定する。不揮発性メモリチップ501は、第0チャネルch0に接続されている。揮発性メモリ6は、不揮発性メモリチップ501に書き込むユーザデータを記憶している。なお、他の複数の不揮発性メモリチップ50それぞれに対してデータ書き込み動作を行う場合にも、同様の動作が行われる。
不揮発性メモリI/F13-0は、バス18を介して転送するデータがある場合、バス18の使用予告を協調回路22に通知する(A1)。
不揮発性メモリI/F13からバス18の使用予告を受け取ると、協調回路22は、カウンタ41の値が上限値未満であるか否かを判定する(A2)。具体的には、協調回路22は、例えば、カウンタ41の値から上限値を引いた差を算出する。そして、協調回路22は、算出した差が負の値であるか否かに基づいて、カウンタ41の値が上限値未満であるか否かを判定する。協調回路22は、例えば、算出した差の最上位ビット(符号ビット)が1であるか否かに基づいて、カウンタ41の値が上限値未満であるか否かを判定する。算出した差が負の値である場合(すなわち、算出した差の最上位ビットが1である場合)、協調回路22は、カウンタ41の値が上限値未満であると判断する。算出した差が負の値でない場合(すなわち、算出した差の最上位ビットが0である場合)、協調回路22は、カウンタ41の値が上限値以上であると判断する。
以下では、(A)カウンタ41の値が上限値未満である場合について説明する。
(A)カウンタ41の値が上限値未満である場合
カウンタ41の値が上限値未満である場合、協調回路22は、バス18の使用予告を受理する。具体的には、協調回路22は、カウンタ41に1を加算する(A3)。そして、協調回路22は、バス18の使用予告を受理したことを示す応答(ACK)を不揮発性メモリI/F13-0に返す(A4)。バス18の使用予告を受理したことを示す応答を、第1応答とも称する。
協調回路22から第1応答を受け取ると、不揮発性メモリI/F13-0は、調停回路21にバス18の使用権を要求する(A5)。なお、不揮発性メモリI/F13-0は、協調回路22から第1応答を受け取るまで、調停回路21にバス18の使用権を要求しないように動作する。
不揮発性メモリI/F13-0からバス18の使用権が要求された場合、調停回路21は、バス18の使用を許可することを示す応答を不揮発性メモリI/F13-0に返す(A6)。バス18の使用を許可することを示す応答を、第2応答とも称する。
調停回路21から第2応答を受け取ると、不揮発性メモリI/F13-0は、ライトデータ転送動作を行う。具体的には、不揮発性メモリI/F13-0は、アドレスとバースト長とをバス18に送信する(A7)。アドレスは、転送されるデータが記憶されている位置を示す。バースト長は、バーストデータ転送におけるデータ転送回数を示す。アドレスとバースト長とは、例えば、揮発性メモリI/F14によって受信される。
アドレスとバースト長とを受け取ると、揮発性メモリI/F14は、揮発性メモリ6からユーザデータを読み出す(A8)。そして、揮発性メモリI/F14は、読み出したユーザデータを、バス18を介して不揮発性メモリI/F13-0に転送する(A9)。
次いで、不揮発性メモリI/F13-0は、チップイネーブル信号を、第0チャネルch0を介して不揮発性メモリチップ501に送信する(A10)。チップイネーブル信号は、対応する不揮発性メモリチップ50に不揮発性メモリI/F13-0がアクセスすることを示す信号である。不揮発性メモリI/F13-0は、転送されたユーザデータを、第0チャネルch0を介して不揮発性メモリチップ501に書き込む(A11)。
また、不揮発性メモリI/F13-0は、ライトデータ転送動作が完了すると、データの転送が完了したことを協調回路22に通知する(A12)。
データの転送が完了したことが不揮発性メモリI/F13-0から通知された場合、協調回路22は、カウンタ41から1を減算する(A13)。
このように、協調回路22は、カウンタ41を用いて、バス18を使用しているバスマスタの数を管理する。カウンタ41の値が上限値未満である場合、協調回路22は、不揮発性メモリI/F13による使用予告を受理する。つまり、協調回路22は、バス18を使用しているバスマスタの数が上限値以下になるように、バス18の使用予告を受理する。これにより、バス18の帯域幅がボトルネックとなって、バス18を介したデータ転送速度が低下することを防止できる。
次いで、図3のA2において、(B)カウンタ41の値が上限値以上であると判定された場合について説明する。
(B)カウンタ41の値が上限値以上である場合
図4は、実施形態に係る半導体記憶装置3における、カウンタ41の値が上限値以上である場合の動作の例を示すシーケンス図である。図4に示すA1およびA2は、図3に示したA1およびA2と同様である。
カウンタ41の値が上限値以上である場合、協調回路22は、不揮発性メモリI/F13-0のID(バスマスタID)を使用予告キュー42に格納する。より詳しくは、協調回路22は、tailポインタ42Tが示す使用予告キュー42のスロットに、不揮発性メモリI/F13-0のIDを書き込む(B1)。そして、協調回路22は、tailポインタ42Tに1を加算する(B2)。なお、tailポインタに1を加算した値が、使用予告キュー42のキューサイズnに達した場合、協調回路22はtailポインタ42Tに0を設定する。
B2においてtailポインタ42Tに1を加算した後に、カウンタ41の値が上限値未満になったならば、協調回路22は、使用予告キュー42を用いて使用予告を受理する。以下に、tailポインタ42Tに1を加算した後に、カウンタ41の値が上限値未満になった場合の動作を説明する。
図5は、実施形態に係る半導体記憶装置3における、tailポインタ42Tに1を加算した後に、カウンタ41の値が上限値未満になった場合の動作の例を示すシーケンス図である。
協調回路22は、使用予告キュー42から先頭のバスマスタIDを取得する。先頭のバスマスタIDは、使用予告キュー42に記憶されているバスマスタIDの内、使用予告を最も早く通知したバスマスタに対応するバスマスタIDである。先頭のバスマスタIDが記憶されている使用予告キュー42のスロットは、headポインタ42Hで示される。具体的には、協調回路22は、headポインタ42Hが示す使用予告キュー42のスロットから、先頭のバスマスタIDを読み出す(C1)。そして、協調回路22は、headポインタ42Hに1を加算する(C2)。なお、headポインタ42Hに1を加算した値が、使用予告キュー42のキューサイズnに達した場合、協調回路22はheadポインタ42Hに0を設定する。
次いで、協調回路22は、カウンタ41に1を加算する(C3)。そして、協調回路22は、取得したバスマスタIDに対応するバスマスタに、第1応答を返す。例えば、取得したバスマスタIDに対応するバスマスタが、不揮発性メモリI/F13-0である場合、協調回路22は、不揮発性メモリI/F13-0に第1応答を返す(C4)。以降のC5からC13までの動作は、図3に示したA5からA13までの動作と同様である。
なお、協調回路22は、使用予告キュー42にバスマスタIDが記憶され、且つカウンタ41の値が上限値以上である間、使用予告を受理しない。
このように、カウンタ41の値が上限値以上である場合、協調回路22は、不揮発性メモリI/F13-0のIDを、使用予告キュー42に格納する。協調回路22は、カウンタ41の値が上限値未満になった場合に、使用予告キュー42からバスマスタIDを取得する。そして、協調回路22は、取得したバスマスタIDに対応するバスマスタによる使用予告を受理する。例えば、取得したバスマスタIDに対応するバスマスタが不揮発性メモリI/F13-0である場合、協調回路22は、不揮発性メモリI/F13-0による使用予告を受理する。
したがって、協調回路22は、バス18を使用しているバスマスタの数が上限値以下になるように、バス18の使用予告を受理する。これにより、バス18の帯域幅がボトルネックとなって、バス18を介したデータ転送速度が低下することを防止できる。
なお、図3では、不揮発性メモリI/F13-0がバスマスタとして動作する場合を例示したが、他の不揮発性メモリI/F13-1、……、および13-7、ホストI/F11、CPU12、揮発性メモリI/F14、並びにHWエンジン15A、15B、15C、および15Dのそれぞれも、同様にして、バスマスタとして動作し得る。複数のバスマスタは並行して動作し得る。
図6は、実施形態に係る半導体記憶装置3におけるデータ書き込み動作のタイムチャートの例を示す図である。図6において、Dinはデータイン時間を示す。データイン時間は、ライトデータ転送動作を行う時間である。tProgはプログラム時間を示す。プログラム時間は、プログラム動作を行う時間である。ここでは、8つの不揮発性メモリチップ50に対するデータ書き込み動作を、並行して繰り返し行うことを想定する。8つの不揮発性メモリチップ50それぞれは、8つのチャネル7の1つに接続されている。8つの不揮発性メモリチップ50に対して並行して行う1回のデータ書き込み動作を、1サイクルのデータ書き込み動作と称する。つまり、1サイクルのデータ書き込み動作は、8つの不揮発性メモリチップ50のそれぞれに対する1回のデータ書き込み動作を含む。以下では、複数サイクルのデータ書き込み動作において、8つのチャネル7を介して8つの不揮発性メモリチップ50にデータを書き込む例を説明する。なお、複数サイクルのデータ書き込み動作において、1つのチャネル7を介してデータを書き込む対象の不揮発性メモリチップ50は、1つの不揮発性メモリチップ50ではなく、サイクル毎に異なる不揮発性メモリチップ50であり得る。
図6(A)は、使用予告を用いないデータ書き込み動作のタイムチャートの例を示す。使用予告を用いないデータ書き込み動作は、実施形態に係る半導体記憶装置3における動作ではない。使用予告を用いないデータ書き込み動作では、バスの帯域幅を考慮せずにライトデータ転送動作が行われる。8つの不揮発性メモリI/Fそれぞれは、協調回路にバスの使用予告を通知することなく、調停回路にバスの使用権を要求する。調停回路は、8つの不揮発性メモリI/Fそれぞれに対して、バスの使用を許可する。
そして、8つのチャネルch0C、ch1C、ch2C、ch3C、ch4C、ch5C、ch6C、およびch7Cそれぞれに対して一斉に、Din801のライトデータ転送動作が開始される。Din801のライトデータ転送動作が開始される時刻を、時刻t0とする。Din801のライトデータ転送動作は、バスと8つのチャネルch0C、ch1C、ch2C、ch3C、ch4C、ch5C、ch6C、およびch7Cそれぞれとを介して行われる。具体的には、バスと第0チャネルch0Cとを介した、ライトデータ転送動作が行われる。バスと第1チャネルch1Cとを介した、ライトデータ転送動作が行われる。同様に、バスと、他の6つのチャネルch2C、ch3C、ch4C、ch5C、ch6C、およびch7Cそれぞれとを介したライトデータ転送動作が行われる。
Din801のライトデータ転送動作が完了した後、tProg802のプログラム動作が行われる。tProg802のプログラム動作は、8つのチャネルch0C、ch1C、ch2C、ch3C、ch4C、ch5C、ch6C、およびch7Cそれぞれに対するプログラム動作である。具体的には、バス18を介して転送されたデータが、第0チャネルch0Cを介して書き込まれる。バス18Cを介して転送されたデータが、第1チャネルch1Cを介して書き込まれる。同様に、バスを介して転送されたデータが、他の6つのチャネルch2C、ch3C、ch4C、ch5C、ch6C、およびch7Cそれぞれを介して書き込まれる。tProg802のプログラム動作が完了した時刻を、時刻ta1とする。つまり、8つの不揮発性メモリチップに対する1サイクル目のデータ書き込み動作が完了した時刻を、時刻ta1とする。
次いで、8つの不揮発性メモリI/Fそれぞれは、調停回路にバスの使用権を要求する。調停回路は、8つの不揮発性メモリI/Fそれぞれに対して、バスの使用を許可する。そして、8つのチャネルch0C、ch1C、ch2C、ch3C、ch4C、ch5C、ch6C、およびch7Cそれぞれに対して一斉に、Din803のライトデータ転送動作が行われる。Din803のライトデータ転送動作は、バスと8つのチャネルch0C、ch1C、ch2C、ch3C、ch4C、ch5C、ch6C、およびch7Cそれぞれとを介して行われる。
Din803のライトデータ転送動作が完了した後、tProg804のプログラム動作が行われる。tProg804のプログラム動作は、8つのチャネルch0C、ch1C、ch2C、ch3C、ch4C、ch5C、ch6C、およびch7Cそれぞれに対するプログラム動作である。tProg804のプログラム動作が完了した時刻を、時刻ta2とする。つまり、8つの不揮発性メモリチップに対する2サイクル目のデータ書き込み動作が完了した時刻を、時刻ta2とする。
半導体記憶装置3では、同様にして、データ書き込み動作が繰り返し行われる。8つの不揮発性メモリチップに対する3サイクル目のデータ書き込み動作が完了した時刻を、時刻ta3とする。8つの不揮発性メモリチップに対する4サイクル目のデータ書き込み動作が完了した時刻を、時刻ta4とする。8つの不揮発性メモリチップに対する5サイクル目のデータ書き込み動作が完了した時刻を、時刻ta5とする。そして、8つの不揮発性メモリチップに対する6サイクル目のデータ書き込み動作が完了した時刻を、時刻ta6とする。
6サイクルのデータ書き込み動作において、Din801、803、805、807、809、および811のライトデータ転送動作では、8つの書き込み動作に対応するデータをまとめて転送する。この場合、1回のDinは、例えば、400マイクロ秒(μs)である。
図6(B)は、使用予告を用いる場合のデータ書き込み動作のタイムチャートの例を示す。使用予告を用いる場合のデータ書き込み動作では、バス18の帯域幅に基づいてライトデータ転送動作が行われる。
使用予告を用いる場合、8つの不揮発性メモリI/F13それぞれは、ライトデータ転送動作を開始する前に、協調回路22にバス18の使用予告を通知する。協調回路22は、カウンタ41の値(すなわち、バス18を使用しているバスマスタの数)が上限値以下となるように、バス18の使用予告を受理する。図6(B)に示す例では、上限値を4とする。協調回路22は、受理した使用予告に対する第1応答を、対応する不揮発性メモリI/F13に返す。8つの不揮発性メモリI/F13それぞれは、通知した使用予告に対する第1応答を受け取った後、調停回路21にバス18の使用権を要求する。調停回路21は、バス18の使用権が要求されたことに基づいて、要求した不揮発性メモリI/F13にバス18の使用を許可する。
具体的には、まず、8つの不揮発性メモリI/F13それぞれは、協調回路22にバス18の使用予告を通知する。協調回路22は、例えば、第0チャネルch0、第1チャネルch1、第2チャネルch2、および第3チャネルch3それぞれに接続された不揮発性メモリI/F13による使用予告を受理する。よって、カウンタ41の値は0から4になる。使用予告が受理された4つの不揮発性メモリI/F13は、調停回路21にバス18の使用権を要求する。調停回路21は、使用権を要求した4つの不揮発性メモリI/F13に対して、バス18の使用を許可する。
ここでは、第0チャネルch0、第1チャネルch1、第2チャネルch2、および第3チャネルch3からなる4つのチャネル7を、第1グループのチャネルa1と称する。第1グループのチャネルa1に接続された4つの不揮発性メモリI/F13を、第1グループの不揮発性メモリI/Fと称する。
そして、第1グループのチャネルa1それぞれに対して一斉に、Din851のライトデータ転送動作が開始される。Din851のライトデータ転送動作が開始される時刻を、時刻t0とする。Din851のライトデータ転送動作は、バス18と第1グループのチャネルa1それぞれとを介して行われる。具体的には、バス18と第0チャネルch0とを介したライトデータ転送動作が行われる。バス18と第1チャネルch1とを介した、ライトデータ転送動作が行われる。同様に、バス18と、第1グループの他の第2チャネルch2および第3チャネルch3それぞれとを介したライトデータ転送動作が行われる。
Din851のデータ転送動作が完了した場合、カウンタ41の値は0になる。協調回路22は、カウンタ41の値に基づいて、第4チャネルch4、第5チャネルch5、第6チャネルch6、および第7チャネルch7それぞれに接続された不揮発性メモリI/F13による使用予告を新たに受理する。よって、カウンタ41の値は4になる。使用予告が受理された4つの不揮発性メモリI/F13は、調停回路21にバス18の使用権を要求する。調停回路21は、使用権を要求した4つの不揮発性メモリI/F13に対して、バス18の使用を許可する。
ここでは、第4チャネルch4、第5チャネルch5、第6チャネルch6、および第7チャネルch7からなる4つのチャネル7を、第2グループのチャネルa2と称する。第2グループのチャネルa2に接続された4つの不揮発性メモリI/F13を、第2グループの不揮発性メモリI/Fと称する。
次いで、tProg852のプログラム動作と、Din853のライトデータ転送動作とが開始される。
tProg852のプログラム動作は、第1グループのチャネルa2それぞれに対するプログラム動作である。具体的には、バス18を介して転送されたデータが、第0チャネルch0に接続された不揮発性メモリチップ501または502に書き込まれる。バス18を介して転送されたデータが、第1チャネルch1に接続された不揮発性メモリチップ511または512に書き込まれる。同様に、バス18を介して転送されたデータが、第1グループの他の第2チャネルch2および第3チャネルch3それぞれを介して書き込まれる。
Din853のライトデータ転送動作は、第2グループのチャネルa2それぞれに対して一斉に行われるライトデータ転送動作である。Din853のライトデータ転送動作は、バス18と第2グループのチャネルa2それぞれとを介して行われる。具体的には、バス18と第7チャネルch7とを介した、ライトデータ転送動作が行われる。同様に、バス18と、第2グループの他の第4チャネルch4、第5チャネルch5、および第6チャネルch6それぞれとを介したライトデータ転送動作が行われる。
tProg852のプログラム動作の一部と、Din853のライトデータ転送動作とは、並行して行われる。
Din853のライトデータ転送動作が完了した場合、カウンタ41の値は0になる。そして、tProg854のプログラム動作が行われる。tProg854のプログラム動作は、第2グループのチャネルa2それぞれに対するプログラム動作である。具体的には、バス18を介して転送されたデータが、第7チャネルch7に接続された不揮発性メモリチップ571または572に書き込まれる。同様に、バス18を介して転送されたデータが、第2グループの他の第4チャネルch4、第5チャネルch5、および第6チャネルch6それぞれを介して書き込まれる。tProg854のプログラム動作の一部は、tProg852のプログラム動作の一部と並行して行われる。tProg854のプログラム動作が完了した時刻を、時刻tb1とする。つまり、8つの不揮発性メモリチップ50に対する1サイクル目のデータ書き込み動作が完了した時刻を、時刻tb1とする。
また、tProg852のプログラム動作が完了した後、協調回路22は、カウンタ41の値に基づいて、第1グループの不揮発性メモリI/Fによる新たな使用予告を受理する。よって、カウンタ41の値は4になる。使用予告が受理された第1グループの不揮発性メモリI/Fは、調停回路21にバス18の使用権を要求する。調停回路21は、使用権を要求した第1グループの不揮発性メモリI/Fに対して、バス18の使用を許可する。そして、第1グループのチャネルa1それぞれに対して一斉に、Din855のライトデータ転送動作が開始される。Din855のライトデータ転送動作は、バス18と第1グループのチャネルa1それぞれとを介して行われる。Din855のライトデータ転送動作は、tProg854のプログラム動作の一部と並行して行われる。Din855のライトデータ転送動作が完了した時刻を、時刻tb1とする。
Din855のライトデータ転送動作が完了した場合、カウンタ41の値は0になる。協調回路22は、カウンタ41の値に基づいて、第2グループの不揮発性メモリI/Fによる新たな使用予告を受理する。よって、カウンタ41の値は4になる。使用予告が受理された第2グループの不揮発性メモリI/Fは、調停回路21にバス18の使用権を要求する。調停回路21は、使用権を要求した第2グループの不揮発性メモリI/Fに対して、バス18の使用を許可する。
そして、tProg856のプログラム動作と、Din857のライトデータ転送動作とが開始される。tProg856のプログラム動作は、第1グループのチャネルa1それぞれに対するプログラム動作である。Din857のライトデータ転送動作は、バス18と第2グループのチャネルa2それぞれとを介して行われる。tProg856のプログラム動作の一部は、Din857のライトデータ転送動作と並行して行われる。
Din857のライトデータ転送動作が完了した後、カウンタ41の値は0になる。そして、tProg858のプログラム動作が行われる。tProg858のプログラム動作は、第2グループのチャネルa2それぞれに対するプログラム動作である。tProg858のプログラム動作の一部は、tProg856のプログラム動作の一部と並行して行われる。tProg858のプログラム動作が完了した時刻を、時刻tb2とする。つまり、8つの不揮発性メモリチップ50に対する2サイクル目のデータ書き込み動作が完了した時刻を、時刻tb2とする。
半導体記憶装置3では、同様にして、データ書き込み動作が繰り返し行われる。8つの不揮発性メモリチップ50に対する3サイクル目のデータ書き込み動作が完了した時刻を、時刻tb3とする。8つの不揮発性メモリチップ50に対する4サイクル目のデータ書き込み動作が完了した時刻を、時刻tb4とする。8つの不揮発性メモリチップ50に対する5サイクル目のデータ書き込み動作が完了した時刻を、時刻tb5とする。そして、8つの不揮発性メモリチップ50に対する6サイクル目のデータ書き込み動作が完了した時刻を、時刻tb6とする。
6サイクルのデータ書き込み動作において、Din851、853、855、857、859、861、863、865、867、869、871、および873のライトデータ転送動作では、4つの書き込み動作に対応するデータをまとめて転送する。この場合、1回のDinは、例えば、300μsである。
このように、図6(B)に示したデータ書き込み動作における1回のDinは、図6(A)に示したデータ書き込み動作における1回のDinよりも短い。図6(B)に示したデータ書き込み動作では、バス18の帯域幅がボトルネックとなってデータ転送速度が低下することを防止できる。これは、協調回路22が、カウンタ41の値(すなわち、バス18を使用しているバスマスタの数)が上限値以下となるように使用予告を受理したためである。
これにより、例えば、図6(B)に示した6サイクルのデータ書き込み動作が完了した時刻tb6は、図6(A)に示した6サイクルのデータ書き込み動作が完了した時刻ta6よりも早い。よって、本実施形態に係る半導体記憶装置3では、使用予告を用いて、バス18を使用しているバスマスタの数が上限値以下となるように制御することで、不揮発性メモリチップ50への書き込み性能を向上できる。
同様にして、半導体記憶装置3では、例えば、データ読み出し動作において、不揮発性メモリチップ50からの読み出し性能を向上できる。データ読み出し動作は、不揮発性メモリチップ50からデータを読み出す動作と、読み出したデータを不揮発性メモリチップ50から揮発性メモリ6にバス18を介して転送する動作とを含む。データ読み出し動作でも、バス18の帯域幅がボトルネックとなってデータ転送速度が低下することを防止できる。
このように、半導体記憶装置3では、使用予告を用いて、バス18を使用しているバスマスタの数が上限値以下となるように制御する。これにより、不揮発性メモリチップ50に対するアクセス性能を向上できる。
図7は、実施形態に係る半導体記憶装置3において、使用予告を用いる場合の動作のタイムチャートの例を示す図である。図7において、Dinはデータイン時間を示す。tProgはプログラム時間を示す。Accessはアクセス時間を示す。アクセス時間は、アクセス動作を行う時間である。アクセス動作は、HWエンジン15が、バス18を介してデータを転送する動作である。ここでは、4つのHWエンジン15A、15B、15C、および15Dによるアクセス動作と、16個の不揮発性メモリチップ50に対するデータ書き込み動作とを並行して行うことを想定する。16個の不揮発性メモリチップ50それぞれは、16個のチャネル7のいずれかに接続されている。16個のチャネル7それぞれは、16個の不揮発性メモリI/F13のいずれかに接続されている。
16個の不揮発性メモリI/F13それぞれは、ライトデータ転送動作を開始する前に、協調回路22にバス18の使用予告を通知する。HWエンジン15A、15B、15C、および15Dそれぞれは、アクセス動作を開始する前に、協調回路22にバス18の使用予告を通知する。
協調回路22は、カウンタ41の値が上限値以下となるように、バス18の使用予告を受理する。図7に示す例では、上限値を6とする。協調回路22は、受理した使用予告に対する第1応答を、対応する不揮発性メモリI/F13、またはHWエンジン15A、15B、15C、もしくは15Dに返す。
16個の不揮発性メモリI/F13それぞれは、通知した使用予告に対する第1応答を受け取った場合、調停回路21にバス18の使用権を要求する。HWエンジン15A、15B、15C、および15Dそれぞれは、通知した使用予告に対する第1応答を受け取った場合、調停回路21にバス18の使用権を要求する。
調停回路21は、バス18の使用権が要求されたことに基づいて、要求した不揮発性メモリI/F13、またはHWエンジン15A、15B、15C、もしくは15Dに、バス18の使用を許可する。
具体的には、まず、16個の不揮発性メモリI/F13それぞれは、協調回路22にバス18の使用予告を通知する。また、HWエンジン15A、15B、15C、および15Dそれぞれは、協調回路22にバス18の使用予告を通知する。協調回路22は、例えば、第0チャネルch0、第1チャネルch1、第2チャネルch2、第3チャネルch3、および第4チャネルch4それぞれに接続された不揮発性メモリI/F13による使用予告と、HWエンジン15Bによる使用予告とを受理する。よって、カウンタ41の値は0から6になる。使用予告が受理された5つの不揮発性メモリI/F13とHWエンジン15Bとは、調停回路21にバス18の使用権を要求する。調停回路21は、使用権を要求した5つの不揮発性メモリI/F13とHWエンジン15Bとに対して、バス18の使用を許可する。
ここでは、第0チャネルch0、第1チャネルch1、第2チャネルch2、第3チャネルch3、および第4チャネルch4からなる5つのチャネル7を、第1グループのチャネルb1と称する。
そして、Access911のアクセス動作と、Din941のライトデータ転送動作とが開始される。Access911のアクセス動作とDin941のライトデータ転送動作とが開始される時刻を、時刻t0とする。Access911のアクセス動作は、HWエンジン15Bによるバス18を介したアクセス動作である。Din941のライトデータ転送動作は、第1グループのチャネルb1それぞれに対して一斉に行われるライトデータ転送動作である。Din941のライトデータ転送動作は、バス18と第1グループのチャネルb1それぞれとを介して行われる。
Din941のライトデータ転送動作が完了した時刻を、時刻t1とする。時刻t0から時刻t1までの期間は、Access911のアクセス動作と、Din941のライトデータ転送動作とが並行して行われる期間である。
Din941のライトデータ転送動作が完了した場合、カウンタ41の値は1になる。カウンタ41の値は、バス18の使用を継続しているHWエンジン15Bの数に相当する。協調回路22は、カウンタ41の値に基づいて、HWエンジン15Aおよび15Cによる使用予告と、第5チャネルch5、第6チャネルch6、および第7チャネルch7それぞれに接続された不揮発性メモリI/F13による使用予告とを新たに受理する。よって、カウンタ41の値は6になる。使用予告が受理されたHWエンジン15Aおよび15Cと3つの不揮発性メモリI/F13とは、調停回路21にバス18の使用権を要求する。調停回路21は、使用権を要求したHWエンジン15Aおよび15Cと3つの不揮発性メモリI/F13とに対して、バス18の使用を許可する。
ここでは、第5チャネルch5、第6チャネルch6、および第7チャネルch7からなる3つのチャネル7を、第2グループのチャネルb2と称する。
次いで、Access901のアクセス動作、Access921のアクセス動作、tProg942のプログラム動作、およびDin951のライトデータ転送動作が開始される。Access901のアクセス動作は、HWエンジン15Aによるバス18を介したアクセス動作である。Access921のアクセス動作は、HWエンジン15Cによるバス18を介したアクセス動作である。tProg942のプログラム動作は、第1グループのチャネルb1それぞれに対するプログラム動作である。Din951のライトデータ転送動作は、第2グループのチャネルb2それぞれに対して一斉に行われるライトデータ転送動作である。Din951のライトデータ転送動作が完了した時刻を、時刻t2とする。時刻t1から時刻t2までの期間は、Access901、911、および921のアクセス動作、tProg942のプログラム動作、並びにDin951のライトデータ転送動作は、並行して行われる期間である。
Din951のライトデータ転送動作が完了した場合、カウンタ41の値は3になる。カウンタ41の値は、バス18の使用を継続しているHWエンジン15A、15B、および15Cの数に相当する。協調回路22は、カウンタ41の値に基づいて、HWエンジン15Dによる使用予告と、第8チャネルch8および第9チャネルch9それぞれに接続された不揮発性メモリI/F13による使用予告とを新たに受理する。よって、カウンタ41の値は6になる。使用予告が受理されたHWエンジン15Dと2つの不揮発性メモリI/F13とは、調停回路21にバス18の使用権を要求する。調停回路21は、使用権を要求したHWエンジン15Dと2つの不揮発性メモリI/F13とに対して、バス18の使用を許可する。
ここでは、第8チャネルch8および第9チャネルch9からなる2つのチャネル7を、第3グループのチャネルb3と称する。
次いで、Access931のアクセス動作、tProg952のプログラム動作、およびDin961のライトデータ転送動作が開始される。Access931のアクセス動作は、HWエンジン15Dによるバス18を介したアクセス動作である。tProg952のプログラム動作は、第2グループのチャネルb2それぞれに対するプログラム動作である。Din961のライトデータ転送動作は、第3グループのチャネルb3それぞれに対して一斉に行われるライトデータ転送動作である。Access911およびAccess931のアクセス動作と、Din961のライトデータ転送動作とが完了した時刻を、時刻t3とする。時刻t2から時刻t3までの期間は、Access901、911、921、および931のアクセス動作、tProg942および952のプログラム動作、並びにDin961のライトデータ転送動作が、並行して行われる期間である。
Access911およびAccess931のアクセス動作と、Din961のライトデータ転送動作とが完了した場合、カウンタ41の値は2になる。カウンタ41の値は、バス18の使用を継続しているHWエンジン15Aおよび15Cの数に相当する。協調回路22は、カウンタ41の値に基づいて、第10チャネルch10、第11チャネルch11、第12チャネルch12、および第13チャネルch13それぞれに接続された不揮発性メモリI/F13による使用予告を新たに受理する。よって、カウンタ41の値は6になる。使用予告が受理された4つの不揮発性メモリI/F13は、調停回路21にバス18の使用権を要求する。調停回路21は、使用権を要求した4つの不揮発性メモリI/F13に対して、バス18の使用を許可する。
ここでは、第10チャネルch10、第11チャネルch11、第12チャネルch12、および第13チャネルch13からなる4つのチャネル7を、第4グループのチャネルb4と称する。
次いで、tProg962のプログラム動作とDin971のライトデータ転送動作とが開始される。tProg962のプログラム動作は、第3グループのチャネルb3それぞれに対するプログラム動作である。Din971のライトデータ転送動作は、第4グループのチャネルb4それぞれに対して一斉に行われるライトデータ転送動作である。Access921のアクセス動作と、Din971のライトデータ転送動作とが完了した時刻を、時刻t4とする。時刻t3から時刻t4までの期間は、Access901および921のアクセス動作、tProg942、952、および962のプログラム動作、並びにDin971のライトデータ転送動作が、並行して行われる期間である。
Access921のアクセス動作と、Din971のライトデータ転送動作とが完了した場合、カウンタ41の値は1になる。カウンタ41の値は、バス18の使用を継続しているHWエンジン15Aの数に相当する。協調回路22は、カウンタ41の値に基づいて、HWエンジン15Dによる使用予告と、第14チャネルch14および第15チャネルch15それぞれに接続された不揮発性メモリI/F13による使用予告とを新たに受理する。よって、カウンタ41の値は4になる。使用予告が受理されたHWエンジン15Dと2つの不揮発性メモリI/F13とは、調停回路21にバス18の使用権を要求する。調停回路21は、使用権を要求したHWエンジン15Dと2つの不揮発性メモリI/F13に対して、バス18の使用を許可する。
ここでは、第14チャネルch14および第15チャネルch15からなる2つのチャネル7を、第5グループのチャネルb5と称する。
次いで、Access932のアクセス動作、tProg972のプログラム動作、およびDin981のライトデータ転送動作が開始される。Access932のアクセス動作は、HWエンジン15Dによるバス18を介したアクセス動作である。tProg972のプログラム動作は、第4グループのチャネルb4それぞれに対するプログラム動作である。Din981のライトデータ転送動作は、第5グループのチャネルb5それぞれに対して一斉に行われるライトデータ転送動作である。Din981のライトデータ転送動作が完了した時刻を、時刻t5とする。時刻t4から時刻t5までの期間は、Access901および932のアクセス動作、tProg942、952、962、および972のプログラム動作、並びにDin981のライトデータ転送動作が、並行して行われる期間である。
Din981のライトデータ転送動作が完了した場合、カウンタ41の値は2になる。カウンタ41の値は、バス18の使用を継続しているHWエンジン15Aおよび15Dの数に相当する。協調回路22は、カウンタ41の値に基づいて、HWエンジン15Bによる使用予告を新たに受理する。よって、カウンタ41の値は3になる。使用予告が受理されたHWエンジン15Bは、調停回路21にバス18の使用権を要求する。調停回路21は、使用権を要求したHWエンジン15Bに対して、バス18の使用を許可する。
次いで、Access912のアクセス動作と、tProg982のプログラム動作とが開始される。Access912のアクセス動作は、HWエンジン15Bによるバス18を介したアクセス動作である。tProg982のプログラム動作は、第5グループのチャネルb5それぞれに対するプログラム動作である。
このように、半導体記憶装置3では、カウンタ41の値が上限値以下になるように、HWエンジン15A、15B、15C、および15Dと、16個の不揮発性メモリI/F13によるバス18の使用予告が受理される。つまり、半導体記憶装置3では、カウンタ41の値が上限値以下になるように、アクセス動作およびライトデータ転送動作の実行が制御される。これにより、半導体記憶装置3では、バス18の帯域幅がボトルネックとなったデータ転送速度の低下を防止する。したがって、例えば、不揮発性メモリチップ50に対するアクセス性能を向上し得る。
より詳しくは、協調回路22は、バス18を使用しているバスマスタの数が上限値以下になるように、バス18の使用予告を受理する。そのため、半導体記憶装置3では、バス18を使用しようとするバスマスタの数やチャネル7の数に関わらず、バス18の使用が動的に制御される。したがって、半導体記憶装置3では、バス18を使用するバスマスタやチャネル7の数が様々に構成されたとしても、バス18の帯域幅がボトルネックとなったデータ転送速度の低下が発生することを防止できる。
次いで、図8から図12を参照して、半導体記憶装置3において行われる処理の手順について説明する。
図8は、実施形態に係る半導体記憶装置3において、バスマスタによって行われるデータ転送制御処理の手順の例を示すフローチャートである。バスマスタは、バス18を介してスレーブとデータ転送を行う場合に、データ転送制御処理を行う。バスマスタは、例えば、ホストI/F11、CPU12、HWエンジン15A、15B、15C、および15D、不揮発性メモリI/F13-0、13-1、……、および13-7、並びに揮発性メモリI/F14のいずれかである。スレーブは、バスマスタがデータ転送を行う対象である。スレーブは、例えば、ホストI/F11、CPU12、HWエンジン15A、15B、15C、および15D、不揮発性メモリI/F13-0、13-1、……、および13-7、並びに揮発性メモリI/F14の内の、バスマスタとは異なるいずれかである。
まず、バスマスタは、バスアービタ19の協調回路22に、バス18の使用予告を通知する(S11)。そして、バスマスタは、協調回路22からバス18の使用予告を受理したことを示す応答(第1応答)を受信したか否かを判定する(S12)。
第1応答を受信していない場合(S12 No)、バスマスタはS12に進む。つまり、バスマスタは第1応答を受信するまで待機する。
第1応答を受信した場合(S12 Yes)、バスマスタは、バスアービタ19の調停回路21に、バス18の使用権を要求する(S13)。そして、バスマスタは、調停回路21からバス18の使用を許可することを示す応答(第2応答)を受信したか否かを判定する(S14)。
第2応答を受信していない場合(S14 No)、バスマスタはS14に進む。つまり、バスマスタは第2応答を受信するまで待機する。
第2応答を受信した場合(S14 Yes)、バスマスタは、アドレスとバースト長をバス18に送信する(S15)。送信されたアドレスとバースト長は、スレーブによって受信される。
次いで、バスマスタは、バス18を介したデータ転送を行う(S16)。データ転送は、バスマスタからスレーブへのデータ転送、またはスレーブからバスマスタへのデータ転送である。データ転送が完了した場合、バスマスタは、協調回路22にデータ転送が完了したことを通知し(S17)、データ転送制御処理を終了する(終了)。
以上のデータ転送制御処理により、バスマスタは、バス18を介したスレーブとのデータ転送を行うことができる。
図9は、実施形態に係る半導体記憶装置3の協調回路22において行われる第1受理制御処理の手順の例を示すフローチャートである。協調回路22は、バスマスタからバス18の使用予告を受け取った場合に、第1受理制御処理を行う。
まず、協調回路22は、カウンタ41の値を取得する(S21)。協調回路22は、取得したカウンタ41の値が上限値未満であるか否かを判定する(S22)。
取得したカウンタ41の値が上限値未満である場合(S22 Yes)、協調回路22は、カウンタ41に1を加算する(S23)。そして、協調回路22は、バス18の使用予告を受理したことを示す応答(第1応答)をバスマスタに返し(S24)、第1受理制御処理を終了する(終了)。
取得したカウンタ41の値が上限値以上である場合(S22 No)、協調回路22は、バスマスタのID(バスマスタID)を使用予告キュー42に格納し(S25)、第1受理制御処理を終了する(終了)。具体的には、協調回路22は、tailポインタ42Tが示す使用予告キュー42のスロットに、バスマスタIDを書き込む。そして、協調回路22は、tailポインタ42Tに1を加算する。
以上の第1受理制御処理により、協調回路22は、カウンタ41の値が上限値未満である場合に、第1応答をバスマスタに返す。協調回路22は、カウンタ41の値が上限値以上である場合には、バスマスタIDを使用予告キュー42に格納する。つまり、協調回路22は、バス18を使用しているバスマスタの数が上限値以下になるように、バス18の使用予告を受理する。これにより、バス18の帯域幅がボトルネックとなって、バスマスタとスレーブとの間のバス18を介したデータ転送速度が低下することを防止できる。
図10は、実施形態に係る半導体記憶装置3の協調回路22において行われる第2受理制御処理の手順の例を示すフローチャートである。協調回路22は、使用予告キュー42にバスマスタIDを格納した場合に、第2受理制御処理を行う。
まず、協調回路22は、カウンタ41の値を取得する(S31)。協調回路22は、取得したカウンタ41の値が上限値未満であるか否かを判定する(S32)。取得したカウンタ41の値が上限値以上である場合(S32 No)、協調回路22はS31に進む。つまり、協調回路22は、取得したカウンタ41の値が上限値未満になるまで、S31およびS32の手順を繰り返し行う。
取得したカウンタ41の値が上限値未満である場合(S32 Yes)、協調回路22は、使用予告キュー42から先頭のバスマスタIDを取得する(S33)。先頭のバスマスタIDが記憶されている使用予告キュー42のスロットは、headポインタ42Hで示される。具体的には、協調回路22は、headポインタ42Hが示す使用予告キュー42のスロットから、バスマスタIDを読み出す。そして、協調回路22は、headポインタ42Hに1を加算する。
次いで、協調回路22は、カウンタ41に1を加算する(S34)。協調回路22は、バス18の使用予告を受理したことを示す応答(第1応答)を、取得したバスマスタIDに対応するバスマスタに返す(S35)。そして、協調回路22は、使用予告キュー42に記憶されているバスマスタIDがあるか否かを判定する(S36)。具体的には、協調回路22は、headポインタ42Hとtailポインタ42Tとが異なるスロットを示す場合に、使用予告キュー42に記憶されているバスマスタIDがあると判断する。
使用予告キュー42に記憶されているバスマスタIDがある場合(S36 Yes)、協調回路22はS31に進む。つまり、協調回路22は、使用予告キュー42に記憶されているバスマスタIDに対応する使用予告の受理を制御する処理を続行する。
使用予告キュー42に記憶されているバスマスタIDがない場合(S36 No)、バスマスタに対して第1応答を返していない使用予告がないので、協調回路22は第2受理制御処理を終了する(終了)。
以上の第2受理制御処理により、協調回路22は、使用予告キュー42にバスマスタIDが記憶されている間に、カウンタ41の値が上限値未満になったならば、記憶されたバスマスタIDに対応するバスマスタに第1応答を返す。つまり、協調回路22は、バス18を使用しているバスマスタの数が上限値以下になるように、バス18の使用予告を受理する。これにより、バス18の帯域幅がボトルネックとなって、バスマスタとスレーブとの間のバス18を介したデータ転送速度が低下することを防止できる。
図11は、実施形態に係る半導体記憶装置3の協調回路22において行われるデータ転送完了処理の手順の例を示すフローチャートである。協調回路22は、バスマスタからデータ転送が完了したことが通知された場合に、データ転送完了処理を行う。協調回路22は、第1受理制御処理と、第2受理制御処理と、データ転送完了処理とを並行して行い得る。
具体的には、協調回路22はカウンタ41から1を減算し(S41)、データ転送完了処理を終了する(終了)。これにより、第1受理制御処理のS22および第2受理制御処理のS32において、カウンタ41が上限値未満であるか否かの判定結果が変化し得る。
図12は、実施形態に係る半導体記憶装置3の調停回路21において行われる使用許可処理の手順の例を示すフローチャートである。調停回路21は、バスマスタからバス18の使用権を要求された場合、使用許可処理を行う。
具体的には、調停回路21は、バスマスタにバス18の使用を許可することを示す応答(第2応答)を返し(S51)、使用許可処理を終了する(終了)。これにより、バスマスタは、第2応答を受け取ったことに基づいて、バス18を介したスレーブとのデータ転送を開始できる。
以上説明したように、本実施形態によれば、不揮発性メモリチップ50に対するアクセス性能を向上できる。複数のチャネル7は、複数の不揮発性メモリチップ50の内の少なくとも1つの不揮発性メモリチップ50にそれぞれ接続される。複数の不揮発性メモリインタフェース13は、複数のチャネル7の少なくとも1つにそれぞれ接続され、接続されたチャネル7を介して少なくとも1つの不揮発性メモリチップ50を制御する。バスアービタ19は、揮発性メモリ6と、複数の不揮発性メモリチップ50それぞれとの間のデータ転送におけるバス18の使用を、バス18の帯域幅に基づいて制御する。
これにより、バス18の帯域幅がボトルネックとなって、バス18を介したデータ転送速度が低下することを防止できる。この場合、バス18の帯域幅がボトルネックとなってデータ転送速度が低下した場合と比較して、例えば、データ書き込み動作において、揮発性メモリ6から不揮発性メモリチップ50へのデータの転送に要する時間を短縮できる。したがって、不揮発性メモリチップ50に対するアクセス性能を向上できる。
本実施形態に記載された様々な機能の各々は、回路(処理回路)によって実現されてもよい。処理回路の例には、中央処理装置(CPU)のような、プログラムされたプロセッサが含まれる。プロセッサは、メモリに格納されたコンピュータプログラム(命令群)を実行することによって、記載された機能それぞれを実行する。プロセッサは、例えば、電気回路を含むマイクロプロセッサである。処理回路の例には、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、マイクロコントローラ、コントローラ、他の電気回路部品も含まれる。本実施形態に記載されたCPU以外の他のコンポーネントの各々もまた処理回路によって実現されてもよい。
実施形態は例示であり、発明の範囲はそれらに限定されない。
1…情報処理システム
2…ホスト
3…半導体記憶装置
4…コントローラ
5…メモリデバイス
6…揮発性メモリ
7…チャネル
11…ホストI/F
12…CPU
13…不揮発性メモリI/F
13-0…不揮発性メモリI/F
13-1…不揮発性メモリI/F
13-7…不揮発性メモリI/F
14…揮発性メモリI/F
15A…HWエンジン
15B…HWエンジン
15C…HWエンジン
15D…HWエンジン
16…インターコネクト
17…インターコネクト
18…バス
19…バスアービタ
21…調停回路
22…協調回路
41…カウンタ
42…使用予告キュー
42H…headポインタ
42T…tailポインタ
50…不揮発性メモリチップ
501…不揮発性メモリチップ
502…不揮発性メモリチップ
511…不揮発性メモリチップ
512…不揮発性メモリチップ
571…不揮発性メモリチップ
572…不揮発性メモリチップ
ch0…第0チャネル
ch1…第1チャネル
ch2…第2チャネル
ch3…第3チャネル
ch4…第4チャネル
ch5…第5チャネル
ch6…第6チャネル
ch7…第7チャネル
ch8…第8チャネル
ch9…第9チャネル
ch10…第10チャネル
ch11…第11チャネル
ch12…第12チャネル
ch13…第13チャネル
ch14…第14チャネル
ch15…第15チャネル
801…データイン時間(Din)
802…プログラム時間(tProg)
803…データイン時間
804…プログラム時間
805…データイン時間
807…データイン時間
809…データイン時間
811…データイン時間
851…データイン時間
852…プログラム時間
853…データイン時間
854…プログラム時間
855…データイン時間
856…プログラム時間
857…データイン時間
858…プログラム時間
859…データイン時間
861…データイン時間
863…データイン時間
865…データイン時間
867…データイン時間
869…データイン時間
871…データイン時間
873…データイン時間
901…アクセス時間(Access)
911…アクセス時間
912…アクセス時間
921…アクセス時間
931…アクセス時間
932…アクセス時間
941…データイン時間
942…プログラム時間
951…データイン時間
952…プログラム時間
961…データイン時間
962…プログラム時間
971…データイン時間
972…プログラム時間
981…データイン時間
982…プログラム時間
S0…スロット
S1…スロット
S2…スロット
S3…スロット
S4…スロット
S5…スロット
Sn-1…スロット
a1…第1グループのチャネル
a2…第2グループのチャネル
b1…第1グループのチャネル
b2…第2グループのチャネル
b3…第3グループのチャネル
b4…第4グループのチャネル
b5…第5グループのチャネル
ch0C…第0チャネル
ch1C…第1チャネル
ch2C…第2チャネル
ch3C…第3チャネル
ch4C…第4チャネル
ch5C…第5チャネル
ch6C…第6チャネル
ch7C…第7チャネル

Claims (11)

  1. 揮発性メモリと、
    複数の不揮発性メモリチップと、
    前記複数の不揮発性メモリチップの内の少なくとも1つの不揮発性メモリチップにそれぞれ接続された複数のチャネルと、
    前記複数のチャネルの少なくとも1つにそれぞれ接続され、接続された前記チャネルを介して前記少なくとも1つの不揮発性メモリチップを制御する、複数の不揮発性メモリインタフェースと、
    前記揮発性メモリと、前記複数の不揮発性メモリチップそれぞれとの間のデータ転送におけるバスの使用を、前記バスの帯域幅に基づいて制御するバスアービタとを具備する、
    半導体記憶装置。
  2. 前記複数の不揮発性メモリインタフェースそれぞれは、前記バスの使用を要求するバスマスタであり、
    前記バスアービタは、前記バスを使用しているバスマスタの数が上限値以下になるように、前記複数の不揮発性メモリインタフェースそれぞれによって要求される前記バスの使用を制御する、
    請求項1に記載の半導体記憶装置。
  3. 前記複数の不揮発性メモリインタフェースの内の第1不揮発性メモリインタフェースは、前記複数のチャネルの内の第1チャネルを介して、前記複数の不揮発性メモリチップの内の第1不揮発性メモリチップを制御し、
    前記第1不揮発性メモリインタフェースは、前記揮発性メモリと、前記第1不揮発性メモリチップとの間でデータ転送を行う場合、前記バスの第1使用予告を前記バスアービタに通知し、
    前記バスアービタは、前記第1使用予告が通知された場合、前記バスを使用しているバスマスタの数が前記上限値未満であるならば、前記第1使用予告を受理し、
    前記第1不揮発性メモリインタフェースは、前記第1使用予告が受理された場合、前記揮発性メモリと、前記第1不揮発性メモリチップとの間のデータ転送を行う、
    請求項2に記載の半導体記憶装置。
  4. 前記第1不揮発性メモリインタフェースは、前記揮発性メモリに記憶された第1データを前記第1不揮発性メモリチップに書き込む場合、前記第1使用予告を前記バスアービタに通知し、
    前記バスアービタは、前記第1使用予告が通知された場合、前記バスを使用しているバスマスタの数が前記上限値未満であるならば、前記第1使用予告を受理し、
    前記第1不揮発性メモリインタフェースは、前記第1使用予告が受理された場合、前記揮発性メモリから前記第1不揮発性メモリチップへの前記第1データの転送を行う、
    請求項3に記載の半導体記憶装置。
  5. 前記複数の不揮発性メモリインタフェースの内の第2不揮発性メモリインタフェースは、前記複数のチャネルの内の第2チャネルを介して、前記複数の不揮発性メモリチップの内の第2不揮発性メモリチップを制御し、
    前記第2不揮発性メモリインタフェースは、前記揮発性メモリに記憶された第2データを前記第2不揮発性メモリチップに書き込む場合、前記バスの第2使用予告を前記バスアービタに通知し、
    前記バスアービタは、
    前記第2使用予告が通知された場合に、前記第1不揮発性メモリインタフェースを含む前記バスを使用しているバスマスタの数が前記上限値以上であるならば、前記第2使用予告を受理せず、
    前記第1データの転送が完了して、前記バスを使用しているバスマスタの数が前記上限値未満になった場合、前記第2使用予告を受理し、
    前記第2不揮発性メモリインタフェースは、前記第2使用予告が受理された場合、前記揮発性メモリから前記第2不揮発性メモリチップへの前記第2データの転送を行う、
    請求項4に記載の半導体記憶装置。
  6. 前記第1不揮発性メモリインタフェースは、転送した前記第1データを前記第1不揮発性メモリチップに書き込み、
    前記第1データを前記第1不揮発性メモリチップに書き込むことと、前記揮発性メモリから前記第2不揮発性メモリチップへの前記第2データの転送とは、並行して行われる、
    請求項5に記載の半導体記憶装置。
  7. 前記バスアービタは、前記第1使用予告が通知された場合に、前記バスを使用しているバスマスタの数が前記上限値以上である間、前記第1使用予告を受理しない、
    請求項3に記載の半導体記憶装置。
  8. 前記バスアービタは、キューを含み、
    前記キューは、バスマスタの識別情報をそれぞれ記憶する複数の記憶領域を含み、
    前記バスアービタは、
    前記第1使用予告が通知された場合に、前記バスを使用しているバスマスタの数が前記上限値以上であるならば、前記第1不揮発性メモリインタフェースの第1識別情報を前記キューに格納し、
    前記第1識別情報を前記キューに格納した後に、前記バスを使用しているバスマスタの数が前記上限値未満になった場合、前記キューから第2識別情報を取得し、前記第2識別情報に対応するバスマスタによって通知された使用予告を受理する、
    請求項7に記載の半導体記憶装置。
  9. 前記バスアービタは、前記第2識別情報が前記第1識別情報である場合、前記第1識別情報に対応する前記第1不揮発性メモリインタフェースによって通知された前記第1使用予告を受理する、
    請求項8に記載の半導体記憶装置。
  10. 前記第1不揮発性メモリインタフェースは、前記第1使用予告が受理された場合、前記バスの使用を前記バスアービタに要求し、
    前記バスアービタは、前記バスの使用が要求された場合、前記第1不揮発性メモリインタフェースに前記バスの使用を許可し、
    前記第1不揮発性メモリインタフェースは、前記バスの使用が許可された場合、前記揮発性メモリと、前記第1不揮発性メモリチップとの間のデータ転送を行う、
    請求項3に記載の半導体記憶装置。
  11. 前記バスの使用を要求するバスマスタである少なくとも1つのハードウェアエンジンをさらに具備し、
    前記バスアービタは、前記バスを使用しているバスマスタの数が上限値以下になるように、前記少なくとも1つのハードウェアエンジンによって要求される前記バスの使用と、前記複数の不揮発性メモリインタフェースそれぞれによって要求される前記バスの使用とを制御する、
    請求項2に記載の半導体記憶装置。
JP2022043759A 2022-03-18 2022-03-18 半導体記憶装置 Pending JP2023137515A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2022043759A JP2023137515A (ja) 2022-03-18 2022-03-18 半導体記憶装置
US17/806,815 US12175077B2 (en) 2022-03-18 2022-06-14 Semiconductor storage device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2022043759A JP2023137515A (ja) 2022-03-18 2022-03-18 半導体記憶装置

Publications (1)

Publication Number Publication Date
JP2023137515A true JP2023137515A (ja) 2023-09-29

Family

ID=88144842

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022043759A Pending JP2023137515A (ja) 2022-03-18 2022-03-18 半導体記憶装置

Country Status (2)

Country Link
US (1) US12175077B2 (ja)
JP (1) JP2023137515A (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US12039173B2 (en) * 2022-10-03 2024-07-16 Western Digital Technologies, Inc. Data storage device that detects and releases input queue bottlenecks
US12353757B2 (en) * 2023-05-09 2025-07-08 SanDisk Technologies, Inc. Excess CMB utilization by storage controller

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5619727A (en) 1995-03-08 1997-04-08 United Microelectronics Corp. Apparatus for a multiple channel direct memory access utilizing a virtual array technique
US6970978B1 (en) * 2002-04-03 2005-11-29 Advanced Micro Devices, Inc. System and method for providing a pre-fetch memory controller
JP2004013356A (ja) 2002-06-04 2004-01-15 Matsushita Electric Ind Co Ltd バス調停システム
JP2007004271A (ja) 2005-06-21 2007-01-11 Fuji Xerox Co Ltd 半導体ディスク及び情報処理システム
US7532636B2 (en) * 2005-10-07 2009-05-12 Intel Corporation High bus bandwidth transfer using split data bus
TW200921395A (en) * 2007-11-14 2009-05-16 Sonix Technology Co Ltd System and method of direct memory access
JP2014035549A (ja) * 2012-08-07 2014-02-24 Ricoh Co Ltd バス制御装置、画像処理装置及びバス制御方法
KR102447465B1 (ko) * 2017-09-08 2022-09-27 삼성전자주식회사 호스트로부터의 읽기 요청에 대한 짧은 읽기 응답 시간을 제공하기 위해 내부 동작을 일시적으로 중단하는 스토리지 장치
KR102417977B1 (ko) * 2017-10-19 2022-07-07 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
KR20220084844A (ko) * 2020-12-14 2022-06-21 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법

Also Published As

Publication number Publication date
US20230315292A1 (en) 2023-10-05
US12175077B2 (en) 2024-12-24

Similar Documents

Publication Publication Date Title
TWI459201B (zh) Information processing device
US11210226B2 (en) Data storage device and method for first processing core to determine that second processing core has completed loading portion of logical-to-physical mapping table thereof
TWI626540B (zh) 一般及垃圾回收的資料存取方法以及使用該方法的裝置
US10725902B2 (en) Methods for scheduling read commands and apparatuses using the same
US10776042B2 (en) Methods for garbage collection and apparatuses using the same
JP2023137515A (ja) 半導体記憶装置
US20190079698A1 (en) Storage device temporarily suspending internal operation to provide short read response time for read request from host
US9990280B2 (en) Methods for reading data from a storage unit of a flash memory and apparatuses using the same
CN116235138B (zh) 一种应用于固态硬盘ssd的数据读取方法及相关装置
CN114253461A (zh) 混合通道存储设备
CN104077080B (zh) 存储器存取方法、存储器存取控制方法、spi闪存装置及其控制器
CN114625307A (zh) 计算机可读存储介质、闪存芯片的数据读取方法及装置
CN108536475B (zh) 完整编程命令处理方法与装置
CN114253462A (zh) 提供混合通道存储设备的方法
TWI845926B (zh) 記憶體系統
US10268388B2 (en) Access control method, storage device, and system
TWI747660B (zh) 多閃存晶片的資料讀取方法及裝置以及電腦程式產品
CN111258491B (zh) 降低读命令处理延迟的方法与装置
CN111045961B (zh) 数据处理方法及使用所述方法的存储控制器
TWI889222B (zh) 記憶體系統及在與主機通信之記憶體系統中根據來自主機之請求執行程序之方法
CN109213424B (zh) 并发io命令的无锁处理方法
US20240311039A1 (en) Memory system
TWI835027B (zh) 更新主機與閃存位址對照表的方法及電腦程式產品及裝置
KR102835930B1 (ko) 저장 장치 및 저장 장치 시스템과 그 동작 방법
CN110568991B (zh) 降低锁引起的io命令冲突的方法与存储设备