以下添付図面を参照して、本発明の実施形態に係るメモリ性能測定シミュレーション装置及びメモリ性能測定シミュレーション用プログラムの実施形態を説明する。各図において同一の構成要素には同一の符号を付して重複する説明を省略する。
実施形態に係るメモリ性能測定シミュレーション装置は、スマートフォン、タブレット端末、車載機器などに用いられるフラッシュメモリの動作性能測定をシミュレーションするものであり、より詳細にはUFS(Universal Flash Storage)-NAND製品の動作性能測定をシミュレーションするものである。
図1は、上記スマートフォン等を実現するUFS-NAND製品の要部構成を示すブロック図である。上記スマートフォン等は、図1に示されるようにUFS-NAND部20と、ホスト装置10とが接続された構成である。ホスト装置10は、スマートフォン等としての機能を実現する本体側CPUやディスプレイ装置などを備える。UFS-NAND部20はコントローラ21を備え、コントローラ21は2チャネルを有している。勿論、このチャネル数は例示に過ぎず、3チャネル以上を有していても良い。各チャネルには、2つずつのメモリチップ(11、12と、13、14)が接続されている。コントローラ21は、ファームウエア22とハードウエア23とにより構成され、メモリチップ11~14に対するアクセス制御を行う。
図2は、本実施形態に係るメモリ性能測定シミュレーション装置を実現するハードウエアのブロック図である。本実施形態に係るメモリ性能測定シミュレーション装置は、CPU100を中心としたコンピュータにより実現される。CPU100には、バス101を介してRAM102、ROM103、入出力部104、表示装置105が接続されている。
ROM103には、UFS-NAND部20からのデータ読み出し処理性能測定をシミュレーションするためのプログラム(メモリ性能測定シミュレーション用プログラム)と、本実施形態のシミュレーション装置により後に説明するトータル時間等を求めるために必要なスペックパラメータが記憶されている。CPU100は、上記メモリ性能測定シミュレーション用プログラムによって、シミュレーション手段110、トータル時間計算手段120、読み出し時間シミュレーション手段130を実現する。
シミュレーション手段110は、ホストコンピュータであるホスト装置10から発したコマンドによって、メモリチップに記憶されているデータを読み出し、完了するまでのメモリにおける処理を模擬するものである。トータル時間計算手段120は、上記ホストコンピュータがコマンドの発行処理に要する時間であるコマンド発行時間と、このコマンドを受けたコントローラがコマンドを解析処理する時間であるコマンド解析時間と、コマンドに基づきメモリのアクセス先を特定する処理による特定までの時間であるアクセス先特定時間と、上記コマンドの解析結果に基づき上記アクセス先へアクセスしデータを読み出し上記ホストコンピュータへ出力するまでの処理の時間である読み出し時間とが含まれるスペックパラメータが与えられ、上記シミュレーション手段110により上記メモリチップに記憶されているデータが読み出し完了となるまでのシミュレーション処理を監視し、監視したシミュレーション処理について、上記スペックパラメータに基づき各処理に対応する時間を得て足し合わせてデータ読み出しまでのトータル時間として出力するものである。トータル時間計算手段120は、上記メモリチップのバスに関し、複数の速度情報を保持しており、得られた上記トータル時間と速度情報に基づき単位時間当たりの読み出しデータ量を求めて出力することができる。
読み出し時間シミュレーション手段130は、ランダムリードの場合にrand関数を用いてランダムなアドレスを上記コントローラが作り出し出力して、読み出しシミュレーションを行うものである。上記トータル時間計算手段120は、上記読み出し時間シミュレーション手段130により得られた時間を読み出し時間として用いることができる。
RAM102は、CPU100が動作するときに必要なデータや処理途中のデータ等を一次記憶などするために用いられる。入出力部104は、キーボードやマウスなどの入力装置と、プリンタなどの出力装置により構成される。表示装置105は、LEDやLCD等のディスプレイ装置である。
図3は、本実施形態のメモリ性能測定シミュレーション装置が実現されるハードウエア構成を示す。このハードウエア構成は、図1のスマートフォン等の構成を示すブロック図に対応しており、UFS-NAND部20に、メモリコントローラ201、I/Oインタフェース202、バッファ203、アドレス変換テーブル204、電圧出力部205、ドライバ206-1~206-4、センスアンプ207-1~207-4、フラッシュメモリ208-1~208-4が設けられている。I/Oインタフェース202には、ホスト装置10が接続されている。
上記UFS-NAND部20の各部は、設計された通りの速度やデータサイズなどのスペックパラメータで動作するものして、スペックパラメータが設定され、シミュレーションが行われる。図4は、本実施形態において設定されるスペックパラメータの一例を示す表形式の図である。これを表の上側から説明すると、「CHUNK_SIZE」は、ホストコマンドで命令されるリードデータサイズであり、256が例示されている。「QUE_DEPTH」は、ホストコマンドの最大数であり、8が例示されている。「SEQ_MODE」は、シーケンスリードかランダムリードかの設定情報であり、1でシーケンスリードを指定でき、0でランダムリードを指定できる。「NBUF_SIZE」は、チャネル毎のバッファサイズであり、ここでは4KB単位で、96/4が例示されている。「ENTRY_MAX」は、チャネル毎の最大エントリ数であり、16が例示されいている。「SETUP_MAX」は、チャネル毎の同時発行できるセットアップ数であり、32が例示されている。
「SW_CHG_DOUT」は、コマンドの発行順でなく準備が整ったデータを読み出す許可情報であり、1で許可、0で不許可を示す。「NUM_OF_CH」は、NANDメモリのチャネル数を示すもので、2が例示されている。「NUM_OF_CH」は、チャネル毎のNANDチップ数を示すもので、2が例示されている。「TCMD_TX」は、ホストのコマンド発行時間(ns)を示し、1000が例示されている。「TDOUT_4K」は、4KBのデータの出力時間(ns)であり、6120が例示されている。「TB_CACHE」は、キャッシュセットアップ時間、ターミネイトのTDCBSYR時間(ns)を示し、6000が例示されている。「TR_UPP」は、8値メモリにおけるアッパーページの読み出し時間(ns)を示し、60000が例示されている。「TR_MID」は、8値メモリにおけるミドルページの読み出し時間(ns)を示し、60000が例示されている。「TR_LOW」は、8値メモリにおけるロウページの読み出し時間(ns)を示し、60000が例示されている。「MEASURE_MSEC」は、計測時間(ms)を示し、100が例示されている。「MCPU_CONF」は、ホストコマンドを解析処理するために要する時間(ns)と、次いでアドレス変換テーブル204に基づいて読み出そうとするアクセス先を特定するまでに要する時間(ns)であり、前者としては5000が例示されており、後者としては3000が設定されている。
本実施形態でシミュレーションされるメモリは図1を用いて述べた通り、2チャネルに2ずつ接続されたメモリチップ11~14のNANDメモリであり、このNANDメモリのメモリセルが8値のトリプルレベルセルとなっている。図5は、メモリセルと、センスアンプ207-1~207-4から各メモリセルへ延びるビット線BL、ドライバ206-1~206-4から各メモリセルへ延びるワード線WLの関係を示した図である。図6は、読み出し動作時にワード線WLへ印加される電圧を示している。リード時には、センスアンプ207-1~207-4は、ビット線BLに電源電位VDDをプリチャージし、ドライバ206-1~206-4は、選択されたワード線WLにデータ値(“111”、“110”、“100”、“000”、“010”、“011”、“001”、“101”)毎の分布を特定するための複数種類の判定電位(リード電圧(VCGR1~VCGR8))を順次印加する。なお、ドライバ206-1~206-4は、非選択のワード線WLには転送電位(Vread)を印加し、非選択のワード線WLに属するメモリセルを導通状態にしておく。センスアンプ207-1~207-4は、プリチャージにより蓄えられた電荷がどのリード電圧が印加されたときにソース線へ出力されたかを検知して、対象のメモリセルに記憶されているデータ値を判定する。
図7は、メモリセルの分布としきい値電圧の関係を示す図である。この図7に示すように、図7の最も左の分布Lと分布Aとの間にリード電圧V1が設定される。分布Aと分布Bとの間にリード電圧V2が設定される。分布Bと分布Cとの間にリード電圧V3が設定される。分布Cと分布Dとの間にリード電圧V4が設定される。分布Dと分布Eとの間にリード電圧V5が設定される。分布Eと分布Fとの間にリード電圧V6が設定される。分布Fと分布Gとの間にリード電圧V7が設定される。
メモリセルからのリード時の動作として、例えば、データ値が“001”である分布Aのメモリセルに関しては次のようである。センスアンプ207-1~207-4がビット線BLにVDD[V]、ドライバ206-1~206-4が選択ワードWLに読み出し電圧VCGR(V1)を印加すると、メモリセルがオフ状態、ワードWLに読み出し電圧VCGR(V2)を印加することでオン状態となる。このようにデータ値が“001”のアッパーページ(V2)、ミドルページ(V12(V1とV2の中間の電圧値))、ローワーページ(V1)について、スペックパラメータであるそれぞれの読み出し時間をTR_UPP=60000、TR_MID=60000、TR_LOW=60000に設定する。本来、Upper、Middle、Lowerで読み出し時間は異なる。本実施形態では、上記読み出し時間シミュレーション手段130は、アッパーページ、ミドルページ、ロウページの各読み出し時間のスペックパラメータについて、これらの平均値を上記アッパーページ、上記ミドルページ、上記ロウページ、の読み出し時間のスペックパラメータとして用いることができる。
図8は、本実施形態に係るシミュレーション装置の動作を示すフローチャートである。CPU100は、ホストコンピュータであるホスト装置10として、コマンドとデータ読み出し先アドレス(論理アドレス)の発行を行う(S11)。このとき、スペックパラメータとして、コマンド発行期間(図4、TCMD_TX=1000(ns))、CHUNK_SIZE=256、QUE_DEPTH=8によって設定されている、読み出しコマンドと読み出し先アドレスとをNANDフラッシュメモリ(I/Oインタフェース202)へ出力する。また、コマンドには、SEQ_MODE=1、0のいずれかでシーケンスリード動作又はランダムリード動作を選択可能とする情報がセットされる。
また、スペックパラメータとして、チャネル毎のバッファサイズのNBUF_SIZE=96/4、チャネル毎の最大コマンド発行数のENTRY_MAX=16、NANDへの最大コマンド発行数のSETUP_MAX=32、NANDからバッファにリードするのにコマンドの順番通りに出すのではなく、準備が整ったデータを順次読み出すのを許可するSW_CHG_DOUT(1、0(1:有効)のいずれか)についても設定されており、CPU100は、これらのスペックパラメータについても従ったシミュレーションを行う。
図9は、シミュレーションの際における動作を時系列で示した図である。ステップS11の段階では、CPU100がホスト装置10として、CMDとして記載されているコマンドとアドレスを発行している。CPU100は、トータル時間計算手段120としてこの処理を監視し、処理に対応する時間を得て、後に説明するように足し合わせてデータ読み出しまでのトータル時間として出力する。
ステップS11の次に、CPU100は、コマンドにランダムリードの実行が設定されているか否かを検出し(S12)、ランダムリードの実行が設定されていなければコントローラ21のファームウエア22として、コマンドの解析とアクセス先の特定を行う(S13)。即ち、ホストコンピュータであるホスト装置10からコマンドとアドレスを受け取り、CPU100は、例えば先頭コマンドを解析し、次いでアドレス変換テーブル204のデータに基づいて読み出そうとするアクセス先を特定する。図9においては、ファームウエアFWの欄に、解析結果R1、R2、・・・と、NANDアクセス先AD1、AD2、・・・が並ぶことになる。この解析とアクセス先特定までに要する時間を、5000+3000[ns]と設定した(図4のMCPU_CONF)。CPU100は、ここの処理についてもトータル時間計算手段120としてこの処理を監視し、処理に対応する時間を得て、後に説明するように足し合わせてデータ読み出しまでのトータル時間として出力する。
上記のようにファームウエア22として、コマンドの解析とアクセス先の特定を行うステップS13の処理が終了すると、順次にNAND制御(データ読み出しとデータ転送)に移行する(S14)。即ち、シーケンシャルに与えられる物理アドレスに応じて、データの読み出し動作が実行される。より具体的には、センスアンプ207-1~207-4とドライバ206-1~206-4を用いて、ビット線BL及びワード線WLへの所定電位の印加を行って、センスアンプ207-1~207-4からバッファ203へのデータ読み出しが行われる。図9においては、ハードウエアHWの欄に、NAND制御結果のメモリアクセスACCE、・・・と表わされる処理が進行し、その下欄にデータ読み出し及びデータ転送DR、・・・と表わされる処理が並ぶことになる。CPU100は、この処理についてもトータル時間計算手段120としてこの処理を監視し、処理に対応する時間を得て、後に説明するように足し合わせてデータ読み出しまでのトータル時間として出力する。
ステップS14が終了すると、ホストコンピュータであるホスト装置10へデータが出力される(S15)。図9においては、ハードウエアHWの欄に、ホスト装置へのデータ出力D11、D12、・・・、D44と表わされるデータ列が表示される。D44は最後に出力されるデータを示す。CPU100は、ここの処理についてもトータル時間計算手段120としてこの処理を監視し、処理に対応する時間を得て、後に説明するように足し合わせてデータ読み出しまでのトータル時間として出力する。ステップS15の次に、CPU100はトータル時間計算手段120として、上記監視により得られている各処理に対応する時間の全てを用い、ホストコンピュータであるホスト装置10からコマンドが発せられてからメモリチップに記憶されているデータを読み出し完了までの時間を足し合わせてデータ読み出しまでのトータル時間として出力する(S16)。即ち、図9のトータル時間total-Tが出力される。
図10は、複数の各バス速度情報のときの単位時間当たりの読み出しデータ量(MiB/s)を求めた図(グラフ)である。シーケンスリードの場合の本実施形態では、トータル時間計算手段120は、上記メモリチップのバスに関し、複数の速度情報を保持している。例えば、図10に示されるように、550、600、・・・、950(Mbps)を備えている。本実施形態では、トータル時間計算手段120は、得られた上記トータル時間total-Tと上記速度情報に基づき単位時間当たりの読み出しデータ量を求めて出力するようにしても良い。
上記の図4に示したスペックパラメータを用いて実現されたtotal-Tを、図10においてはNAND処理時間と称し、40μsとする。図4とは別の2通りのスペックパラメータ(図示せず)を用いてシミュレーションされたtotal-TであるNAND処理時間が、50μsと60μsのNANDが設計されており、上記速度情報を用いて、それぞれのバス速度情報のときの単位時間当たりの読み出しデータ量(MiB/s)を求める。このように2チャネルで1チャネル当り2チャネルのNANDをシミュレーションした結果を図(グラフ)を図10(A)に示す。
図10(B)は、2チャネルを有し、1チャネル当たり4チップが接続されているNANDについて図示しないスペックパラメータを用いてシミュレーションを行った結果を示し、図10(C)は、4チャネルを有し、1チャネル当たり4チップが接続されているNANDについて図示しないスペックパラメータを用いてシミュレーションを行った結果を示す。目標性能を2400(MiB/s)とした場合、コストパフォーマンスを考慮して、図10(A)に示すように、2チャネルを有し、1チャネル当たり2チップが接続されているNANDであって、NAND処理時間が40μs、バス速度が800Mbpsのものが最適であると結論できた。
図8のフローチャートにおけるステップS12において、ランダムリードが設定されていることが検出されると、ステップS21のランダムリード処理へ進む。ランダムリード処理に入ると、ランダムなアドレスのデータを読み出すための準備が行われることになる。
本実施形態では、以下に詳述するステップS21のランダムリード処理において、CPU100は、コントローラ21のファームウエア22として、このランダムリード動作をシミュレートプログラムで実現する際に、rand関数を用いて読み出し動作を実行している。即ち、CPU100がホスト装置10としてランダムリードするときに発行するアドレスをランダムなアドレスとするために、rand関数を用いる。rand関数は、ランダムな数字を返す(発生する)公知の関数である。CPU100は、コントローラ21のファームウエア22として、係るrand関数を用いて、rand関数により返された(発生された)数値をアドレスとして配置することにより、ランダムなアドレスの配置を得て(S21)、ランダムリードを実行する。即ち、Rand関数はランダムな値(アドレス)を返す一方、ランダムリードはランダムなアドレスを用いてメモリを読むものであるから、ランダム数値を使用する点で同じであるため、Rand関数を用いることは有効な手段である。また、本実施形態において使用した関数がSrand関数ではなく、Rand関数である理由は、Srand関数は同じシード値では毎回同じパターンで値を返すため、ランダムリードのように毎回異なるアドレスを読む動作のシミュレーションには適していないのに対し、Rand関数は、シードが同じであっても毎回異なる値を返すため、ランダムリードと同じ動作を実現可能なためである。
ステップS21が終了すると、ステップS22へ進み、CPU100はコントローラ21のファームウエア22として、コマンドの解析とアクセス先の特定を行う(S22)。このときには、シーケンシャルリードと同じように、図9においては、ファームウエアFWの欄に、解析結果R1、R2、・・・と、アクセス先AD1、AD2、・・・が並ぶことになる。この解析とアクセス先特定までに要する時間を、5000+3000[ns]と設定した(図4のMCPU_CONF)。
ステップS22の処理が終了すると、ランダム配置されたアドレスに応じたNAND制御(データ読み出しとデータ転送)に移行する(S23)。すなわち、ランダム配置された論理アドレスをアドレス変換テーブルを用いて変換して得られる物理アドレスに応じて、データの読み出し動作が実行される。
既に、各メモリセルへ延びるビット線BL及びワード線WLに関する説明に用いた図5を用い、ランダムリードを実行する際の動作を説明する。ホストコンピュータであるホスト装置10から発行された読み出しコマンドに設定されているSEQ_MODEが0である場合には、“ランダムリード”が選択される。この場合に、読み出そうとするアドレスがメモリ(M1)→メモリ(M2)→メモリ(M3)の順に発行されていたものとすると、コントローラ21のファームウエア22は、ドライバ206-1~206-4とセンスアンプ207-1~207-4を制御して、例えば、メモリ(M2)→メモリ(M3)→メモリ(M1)とランダムな順に読み出し動作を実行する。また、ランダムな読み出しは、フラッシュメモリ208-1~208-4をランダムに読み出すものであってもよい。この場合、読み出そうとするフラッシュメモリに対応してドライバ206-1~206-4の対応の1つを、センスアンプ207-1~207-4の対応の1つを、その都度動作させて読み出し動作を実行する。
このようなランダムリードにおいて、例えば、フラッシュメモリ208-1におけるメモリからの読み出し動作が連続する場合には、読み出し状態のワード線WLと非読み出し状態のワード線WLがその都度切り換るため、ワード線WLの電位が所望の値に達するまでの電圧切換に時間を要する。更に、読み出しが例えば、フラッシュメモリ208-1→フラッシュメモリ208-3と移動した場合に、フラッシュメモリ208-1に対応するドライバ206-1のワード線WL電位をゼロにし、フラッシュメモリ208-3に対応するドライバ206-3のワード線WL電位を上昇させる必要があることから理解できるように、フラッシュメモリ208-1~208-4の切換動作に起因してNandフラッシュが読み出し動作に入るまでの時間が異なる。
しかし、本実施形態に係るメモリ性能測定シミュレーション装置では、アッパーページ、ミドルページ、ロウページの各読み出し時間TR_UPP、TR_MID、TR_LOWのスペックパラメータについて、これらの平均値=60000を上記アッパーページ、上記ミドルページ、上記ロウページ、の読み出し時間のスペックパラメータとして用いるので、この誤差を吸収することができる。このステップS23の処理によって、図9においては、ハードウエアHWの欄に、NAND制御結果のメモリアクセスACCE、・・・と表わされる処理が進行し、その下欄にデータ読み出し及びデータ転送DR、・・・と表わされる処理が並ぶことになる。
ステップS23が終了すると、ホストコンピュータであるホスト装置10へデータが出力される(S15)。図9においては、ハードウエアHWの欄に、ホスト装置へのデータ出力D11、D12、・・・、D44と表わされるデータ列が表示される。ステップS15の次に、CPU100はトータル時間計算手段120としてホストコンピュータであるホスト装置10からコマンドが発せられてからメモリチップに記憶されているデータを読み出し完了までの時間を足し合わせてデータ読み出しまでのトータル時間として出力する(S16)。即ち、図9のトータル時間total-Tが出力される。
このランダムリードの場合においても、シーケンスリードの場合と同様に、トータル時間total-TをNAND処理時間とし、バス速度情報を550、600、・・・、950(Mbps)として、これらに基づき単位時間当たりの読み出しデータ量を求めて出力するようにしても良い。本実施形態では、図4に示したスペックパラメータを用いてランダムリードの場合のシミュレーションを行うように説明したが、実際には、アッパーページ、ミドルページ、ロウページの各読み出し時間TR_UPP、TR_MID、TR_LOWのスペックパラメータがシーケンスリードの場合とは異なるものであっても良く、このようなスペックパラメータを用いてランダムリードの場合の単位時間当たりの読み出しデータ量を求めて出力することができることは言うまでもない。
図11は、本実施形態による見積り精度と、机上計算による見積り精度と、過去の製品の実機による見積り精度と、RTLによる見積り精度を、過去の製品の実機による見積り精度を100%としてグラフ化して示した図である。この図から明らかな通り、本シミュレータでは精度が111%(誤差11%)となり、過去の測定方法の机上計算(誤差33%)と比べて精度が改善されていることが判る。見積りの対象の性能は、トータル時間や図10に示した単位時間当たりの読み出しデータ量である。本実施形態では、メモリ性能測定の各処理が想定スペック通りに「実行されたもの」とし、与えられたスペックパラメータの実行時間を積み上げる手法を採用しているので、『実機』を用いて性能を求める場合に比べて実行時間・精度は多少劣るものの、性能を見積る上では支障のないレベルとなっていることが判る。
本発明に係る複数の実施形態を説明したが、これらの実施形態は例として提示するものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。