JP2021043909A - メモリシステム、コントローラおよびデータ転送方法 - Google Patents
メモリシステム、コントローラおよびデータ転送方法 Download PDFInfo
- Publication number
- JP2021043909A JP2021043909A JP2019167660A JP2019167660A JP2021043909A JP 2021043909 A JP2021043909 A JP 2021043909A JP 2019167660 A JP2019167660 A JP 2019167660A JP 2019167660 A JP2019167660 A JP 2019167660A JP 2021043909 A JP2021043909 A JP 2021043909A
- Authority
- JP
- Japan
- Prior art keywords
- data
- transferred
- controller
- inversion
- logic
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0653—Monitoring storage devices or systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/04—Generating or distributing clock signals or signals derived directly therefrom
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0674—Disk device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7202—Allocation control and policies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7206—Reconfiguration of flash memory system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0625—Power saving in storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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)
- Communication Control (AREA)
- Memory System (AREA)
- Dram (AREA)
Abstract
【課題】好適に省電力化できるメモリシステムを提供する。【解決手段】メモリシステム1は、ストレージ装置12と、コントローラ11と、を具備する。コントローラは、ホスト装置2からの要求に基づき、ストレージ装置へのデータの書き込みおよびストレージ装置からのデータの読み出しを制御する。コントローラは、N(Nは1以上の自然数)本のデータ信号線を介してストレージ装置へ1UI(unit interval)あたりNビットずつ転送される送信データの一部である第1データの論理を維持又は反転して、第1データの論理の反転有無を示す第2データを作成し、第1データと作成された第2データとをN本のデータ信号線を介してストレージ装置へ転送する。【選択図】図1
Description
本発明の実施形態は、メモリシステム、コントローラおよびデータ転送方法に関する。
たとえばメモリシステム内においてストレージ装置と当該ストレージ装置を制御するコントローラとの間でデータを送受信するためのインターフェースの終端方式として、CTT(center tapped termination)が知られている。また、CTTよりも消費電力を小さくできるインターフェースの終端方式として、POD(pseudo open drain)が知られている。さらに、PODを適用する場合における省電力化の一手法として、DBI(data bus inversion)機能が知られている。DBI機能は、たとえばプルアップ型の終端方式であるPODにおいて、データ信号線にL(0)を転送する機会を少しでも減らす(すなわち、H(1)を増す)ように、送信データの一部の論理を反転させるものである。
DBI機能の一例として、8本のデータ信号線で1クロックエッジにつき8ビット(1バイト)ずつ送信データを転送するにあたり、各クロックエッジで転送される8ビットごとに、送信データを反転させて転送すべきか否かを判定する場合を想定する。この場合、一般的には、反転有無を示すフラグデータ(DBIデータ)を送信データと同サイクルエッジで並列に転送する。より具体的には、たとえば1ビットのフラグデータを8ビットの送信データと同一のクロックエッジで転送するといったことが行われる。
したがって、DBI機能によって省電力化を図る場合、既存のデータ信号線に加えて、DBI機能のための新たなデータ信号線を追加することが必要であった。
本発明が解決しようとする課題は、好適に省電力化できるメモリシステム、コントローラおよびデータ転送方法を提供することである。
実施形態によれば、メモリシステムは、ストレージ装置と、コントローラと、を具備する。コントローラは、ホスト装置からの要求に基づき、ストレージ装置へのデータの書き込みおよびストレージ装置からのデータの読み出しを制御する。コントローラは、N(Nは1以上の自然数)本のデータ信号線を介してストレージ装置へ1UIあたりNビットずつ転送される送信データの一部である第1データの論理を維持又は反転し、第1データの論理の反転有無を示す第2データを作成し、第1データと、作成された第2データと、をN本のデータ信号線を介してストレージ装置へ転送する。
以下、実施の形態について、図面を参照して説明する。
図1は、本実施形態のメモリシステム1の一構成例を示す図である。ここでは、メモリシステム1は、SSD(solid state drive)として実現されている。
SSDであるメモリシステム1は、たとえば半導体集積回路として構成されるコントローラ11と、NAND型フラッシュメモリ(NANDメモリ)12とを有する。メモリシステム1においては、コントローラ11の制御の下、NANDメモリ12へのデータの書き込みや、NANDメモリ12からのデータの読み出しなどが実行される。
コントローラ11は、ホストインターフェース部111と、制御部112と、NANDインターフェース部113と、RAM114とを有している。コントローラ11は、メモリシステム1の起動時やリセット時などに、ファームウェア(プログラム)をNANDメモリ12からRAM114にロードして実行することによって、これら各部を実現することができる。RAM114は、SDRAM、SRAM、又はその他メモリを含む。
ホストインターフェース部111は、メモリシステム1をホスト装置2と接続する回路を含むモジュールであり、たとえばPCIe(登録商標)に準拠した通信を制御する。ホストインターフェース部111は、ホスト装置2からコマンドを受信する。ホスト装置2から受信するコマンドは、データの書き込みを要求するライトコマンドと、データの読み出しを要求するリードコマンドとを少なくとも含む。
制御部112は、ホストインターフェース部111を介してホスト装置2からコマンドを受信し、そのコマンドに対応する、たとえばNANDメモリ12へのデータの書き込みやNANDメモリ12からのデータの読み出しを、NANDインターフェース部113を介して実行する。制御部112は、その処理結果を、ホストインターフェース部111を介してホスト装置2へ送信する。また、制御部112は、メモリシステム1によって提供される記憶領域上の位置を、ホスト装置2が指定するために使用する論理アドレスと、NANDメモリ12上の実際の位置を示す物理アドレスとの対応関係を管理する。論理アドレスと物理アドレスとの対応関係は、LUT(look up table)などと称されるデータ構造体によって保持される。つまり、制御部112は、このLUTを管理する。
さらに、制御部112は、ウェアレベリングなどと称される、メモリチップ間における使用回数の偏りを解消するための処理や、ガベッジコレクションなどと称される、不要となったデータが格納されている領域を再利用するための処理なども実行する。
NANDインターフェース部113は、コントローラ11とNANDメモリ12とを繋ぐデータ信号線を用いて、例えば、ホスト装置2から書き込みを要求されたデータをNANDメモリ12へ送信し、ホスト装置2から読み出しを要求されたデータをNANDメモリ12から受信する。コントローラ11およびNANDメモリ12の双方は、データ信号線に接続可能な所定数の端子を有している。なお、NANDメモリ12とのデータの送受信は、ホスト装置2からの要求に限らず、たとえばガベッジコレクションが実行される場合、このガベッジコレクションによって内部的にも発生し得る。
また、NANDインターフェース部113は、コントローラ11とNANDメモリ12との間でのデータの送受信についてDBI機能と同様の思想の機能により省電力化を図るための反転処理部200を有する。つまり、本実施形態のメモリシステム1においては、コントローラ11とNANDメモリ12との間でデータを送受信するためのインターフェースの終端方式(データ信号線の構成)としてPODを適用することを想定している。反転処理部200については後述する。なお、コントローラ11の反転処理部200と対をなす形で、NANDメモリ12にも反転処理部200が設けられる。図1では、この反転処理部200を、コントローラ11側においては反転処理部200−1と表記し、NANDメモリ12側においては反転処理部200−2と表記している。
NANDメモリ12は、I/O(input/output)部121と、メモリ部122とを有している。I/O部121は、コントローラ11(NANDインターフェース部113)との間でデータの送受信を実行する。I/O部121は、コントローラ11側の反転処理部200(200−1)と対をなす反転処理部200(200−2)を有する。メモリ部122は、不揮発にデータを記憶可能なメモリセルアレイと当該メモリセルアレイを制御する周辺回路とを含む複数のNAND型フラッシュメモリダイ(チップ)によって構成される。
図2は、コントローラ11(NANDインターフェース部113)とNANDメモリ12(I/O部121)との間でデータを送受信するための信号線の入力端の構成例を説明するための図である。図2では、本実施形態のメモリシステム1において適用される終端方式であるPODの概要を他の終端方式であるCTTと比較して示す。
図2(A)は、CTTの一例を示し、図2(B)は、PODの一例を示している。図2(A)に示すCTTの場合、データ信号線をプルアップ及びプルダウンして定常電圧値を設定し、データ信号の電圧値を、上側の閾値以上に引き上げることによって「1」を転送し、下側の閾値以下に引き下げることによって「0」を転送する。つまり、CTTの場合は「0」または「1」のいずれを転送する場合においても、データ信号線の電圧値を調整する必要がある。
一方、PODの場合は、データ信号線をプルアップする。しかし、プルダウンする場合(プルダウン型)も考えられる。つまり、データ信号線の定常電圧値を、POD(プルアップ型)の場合は「1」に対応する上側の閾値以上の値、または、プルダウン型の場合は「0」に対応する下側の閾値以下の値としておく。図2(B)は、POD(プルアップ型)を示している。PODの場合、「1」の転送時はプルアップされているためにデータ信号線の電圧値の調整が不要で、「0」の転送時にデータ信号線の電圧値を下側の閾値以下に引き下げるように調整する。プルダウン型の場合は、「0」の転送時はデータ信号線の電圧値の調整が不要で、「1」の転送時にデータ信号線の電圧値を上側の閾値以上に引き上げるように調整する。つまり、PODの場合は「0」、プルダウン型の場合は「1」の一方を転送する場合においてのみ、データ信号線の電圧値を調整する必要がある。
このように、CTTと比較して、データ信号の電圧値を調整する機会を減少させるPODは、「0」の転送時には電流が流れるが「1」の転送時には電流が流れないため、データを送受信するための消費電力を低減することができる。
続いて、図3を参照して、PODを適用した省電力化の手法の一例であるDBI機能について説明する。
ここでは、8本のデータ信号線DQ0〜DQ7を用いて1クロックエッジあたり8ビットずつ送信データを転送する例を説明する。1クロックエッジで転送されるデータの有効期間(そのデータの前後のエッジ間)は、1UI(unit interval)とも称される。また、ここでは、プルアップ型のPODの一例を示す。
図3(A)は、送信対象のデータについて、DBI機能の非適用時において各データ信号線DQ0〜DQ7によって転送されるデータ(「0」または「1」)を示している。また、図3(B)は、図3(A)における送信対象のデータと同一のデータを対象として、DBI機能の適用時において各データ信号線DQ0〜DQ7によって転送されるデータを示している。
図3(A)および図3(B)において、各データ信号線DQ0〜DQ7が転送するデータとして各々4つずつ横方向に羅列されているデータは、右側から順次転送されるものとする。たとえば、図3(A)が示すDBI機能の非適用時におけるデータ信号線DQ0は、1つめのUIで「1」を転送し、以降、「1」、「1」、「0」の順に転送する。図3のburstは、データの転送順を示している。
図3(A)に示す例では、1つめのUIに、データ信号線DQ0〜DQ7によって7つの「1」と1つの「0」とが転送される。つまり、「0」よりも「1」の方が多く転送される。2つめのUIでは、3つの「1」と5つの「0」とが転送される。つまり、「1」よりも「0」の方が多く転送される。また、3つめのUIでは、「1」が多数を占め、4つめのUIでは、「0」が多数を占めている。
前述したように、プルアップ型の場合、「1」の転送時はデータ信号線の電圧値の調整が不要なので、省電力の観点からは、データ信号線DQ0〜DQ7によって転送されるデータは「0」よりも「1」の方が多いことが好ましい。
そこで、図3(B)に示すように、DBI機能の適用時には、「0」が多数を占める2つめのUIと4つめのUIとにおいて、データ信号線DQ0〜DQ7が各々転送するデータの論理を反転させる。なお、これ以降では、「データの論理を反転」することを単に「データを反転」とも言う。また、データの反転有無を示すフラグデータ(有=「1」、無=「0」)を含むDBIデータ(a1)を作成して各データと同じタイミング(UI)で相手側に供給する。相手側は、このDBIデータをデコードして、各データの反転有無を把握し、2つめのUIと4つめのUIとで転送されてきたデータを反転させる。これにより、受信側は、図3(A)に示す本来の送信対象のデータを得ることができる。
ところで、図3(B)に示すように、このDBIデータを、たとえば、データ信号線DQ0〜DQ7によるデータの転送と並行して、同一のクロックエッジで転送することとした場合、当該DBIデータ用の新たなデータ信号線を追加することが必要となる。本実施形態のメモリシステム1は、DBI機能と同様の思想の機能のための新たなデータ信号線の追加を不要としたものであり、以下、この点について説明する。
図4は、本実施形態のメモリシステム1が備える機能の概要を説明するための図である。
ここでは、コントローラ11とNANDメモリ12とが8本のデータ信号線を用いて1UIにつき8ビット(1バイト)ずつデータを送受信する例を説明する。また、図4は、コントローラ11がNANDメモリ12へデータを送信する場合(NANDメモリ12がコントローラ11からデータを受信する場合)を示している。つまり、コントローラ11側の反転処理部200(200−1)が、データの一部の論理を反転し、この論理の反転に対応する反転情報を作成し、NANDメモリ12側へ提供する場合を示している。NANDメモリ12側の反転処理部200(200−2)は、反転情報に基づき、コントローラ11から受信したデータの論理を反転させる。なお、NANDメモリ12がコントローラ11へデータを送信する場合(コントローラ11がNANDメモリ12からデータを受信する場合)は、以下に説明する、コントローラ11側の反転処理部200−1による処理を、NANDメモリ12側の反転処理部200−2が行えばよいので、その説明については省略する。
(コントローラ11側の)反転処理部200−1は、たとえば、NANDメモリ12(メモリ部122)に対する処理の単位であるページに相当するサイズの送信データごとに反転情報を作成する。そして、反転処理部200−1は、作成した反転情報を、1ページ分の送信データの属性情報として、当該1ページ分の送信データと同様、8本のデータ信号線を用いてNANDメモリ12へ送信する。なお、送信データは、NANDメモリ12側の視点から受信データとも称されることがある。
図4中、符号b1−1は、1ページ分の送信データ中の1つめのUIで転送される8ビット(1バイト)の送信データを示している。また、符号b2−1は、当該1つめのUIで転送される8ビット(1バイト)の送信データの反転有無を示す反転情報中のフラグデータを示している。同様に、符号b1−2は、1ページ分の送信データ中の2つめのUIで転送される8ビット(1バイト)の送信データを示し、符号b2−2は、当該2つめのUIで転送される8ビット(1バイト)の送信データの反転有無を示す反転情報中のフラグデータを示している。
例えば、1ページが16Kバイトの場合、1ページ分の送信データは、(16×1024×8)/8=16K UIで転送されることになる。したがって、反転処理部200−1は、当該1ページ分の送信データに対して、16K個のフラグデータを含む反転情報を作成することになる。各フラグデータが1ビットで構成される場合、1ページ分の送信データに対応する反転情報のサイズは2Kバイトとなる。当該2Kバイトの反転情報は、16K/8=2K UIで送信することができる。
つまり、本実施形態のメモリシステム1は、16Kバイトである1ページ分の送信データに対して、2Kバイトの反転情報を、データ送受信用の8本のデータ信号線を用いて送信することにより、DBI機能と同様の思想の反転機能のための新たなデータ信号線の追加を不要とする。換言すれば、16Kバイトの送信データを2Kバイト分カラム方向(図4のburst方向)へ拡張すること、つまり2Kバイトの属性情報(反転情報)を付加することにより、新たなデータ信号線を追加することなく、DBI機能と同様の思想の反転機能を実現する。
図4に示す場合におけるNANDメモリ12側の反転処理部200−2は、反転情報をデータ送受信用の8本のデータ信号線を用いて受信し、受信した反転情報に基づいて、対応する受信データの一部の論理を反転する制御を実行する。
なお、反転情報内におけるフラグデータの配置は、コントローラ11側とNANDメモリ12側とで認識が一致するようにあらかじめ定められていればよく、図4に示すように配置することに限定されない。また、反転情報は、図4に示すように、対応する送信データに後続して送信することに限らず、対応する送信データに先んじて送信するようにしてもよい。これにより、NANDメモリ12は、これから受信される送信データについて、反転あり/なしをデコード前に設定することが可能となる。図4中、符号b3は、反転情報の転送が開始されるUIを示すカラムアドレスを示している。このカラムアドレスは、コントローラ11側とNANDメモリ12側との間で反転情報が適切に授受されるようにあらかじめ定められる。
図5は、本実施形態のメモリシステム1におけるデータ送信側の反転機能に関する処理の流れを示すフローチャートである。ここでは、図4に示す、NANDメモリ12へデータを送信するコントローラ11による処理の流れを説明する。図4の説明における反転処理部200は、メモリシステム1が備える反転処理部200−1である。
反転処理部200は、送信データ中の先頭UIで転送される1UI分の送信データを参照する(S101)。反転処理部200は、そのクロックエッジで転送される送信データについて、「1」が半数以上か否かを判定する(S102)。なお、POD(プルダウン型)を適用する場合、反転処理部200は、「0」が半数以上か否かを判定する。
たとえば、8本のデータ信号線で1UIにつき8ビット(1バイト)ずつ送信データを転送する場合、反転処理部200は、S102の処理において、「1」が4つ以上か否かを判定する。そして、「1」が半数以上でない場合(S102:NO)、反転処理部200は、その1UI分の送信データを反転させる(S103)。一方、「1」が半数以上の場合(S102:YES)、反転処理部200は、その1UI分の送信データについては反転を行わない。「0」と「1」とが同数であった場合、「1」は半数以上であるので、送信データの反転は行われない。
送信データの反転有無を決定した反転処理部200は、当該送信データの反転有無を示すフラグデータを作成する(S104)。1UI分の送信データについてS102〜S104の処理を実行すると、反転処理部200は、すべての送信データを処理したか否かを判定する(S105)。つまり、反転処理部200は、直前に処理した1UI分の送信データが、最終クロックエッジで転送される1UI分の送信データであったか否かを判定する。
すべての送信データを処理していない、すなわち未処理の送信データが残っている場合(S105:NO)、反転処理部200は、送信データ中の次クロックエッジで転送される1UI分の送信データを参照し(S106)、この1UI分の送信データについて、S102〜S104の処理を実行する。一方、すべての送信データを処理した場合(S105:YES)、コントローラ11のNANDインターフェース部113は、送信データと、反転処理部200がS104で作成したフラグデータを含む反転情報と、をNANDメモリ12へ送信する(S107)。
図6は、本実施形態のメモリシステム1におけるデータ受信側の反転機能に関する処理の流れを示すフローチャートである。ここでは、図4に示す、コントローラ11からデータを受信するNANDメモリ12の処理の流れを説明する。図6の説明における反転処理部200は、NANDメモリ12が備える反転処理部200−2である。
反転処理部200は、先頭クロックエッジで転送された1UI分の受信データに対応する反転情報中のフラグデータを参照する(S201)。反転処理部200は、そのフラグデータが、当該1UI分の受信データが反転していることを示しているか否かを判定する(S202)。反転ありを示している場合(S202:YES)、反転処理部200は、その1UI分の受信データを反転させる(S203)。一方、反転なしを示している場合(S202:NO)、反転処理部200は、その1UI分の受信データについては反転を行わない。
1UI分の受信データについてS202〜S203の処理を実行すると、反転処理部200は、反転情報中のすべてのフラグデータを参照したか否かを判定する(S204)。つまり、反転処理部200は、直前に参照したフラグデータが、最終クロックエッジで転送される1UI分の受信データに対応するものであるか否かを判定する。
すべてのフラグデータを参照していない、すなわち未参照のフラグデータが残っている場合(S204:NO)、反転処理部200は、次クロックエッジで転送された1UI分の受信データに対応する反転情報中のフラグデータを参照し(S205)、この1UI分の受信データについて、S202〜S204の処理を実行する。一方、反転情報中のすべてのフラグデータを参照した場合(S204:YES)、NANDメモリ12のI/O部121が、反転処理部200がS203で反転を行った受信データ及びS203で反転を行っていない受信データをメモリ部122へ格納する(S206)。
このように、本実施形態のメモリシステム1は、反転情報を送信データの属性情報としてデータ送受信用の信号線を用いて送信することにより、DBI機能と同様の思想の反転機能のための新たなデータ信号線の追加を不要とする。
なお、図4においては、1ページ分の送信データに対して1つの反転情報を作成する例を示したが、反転情報を作成する割合は、様々に設定可能である。
図7は、NANDメモリ12へデータを送信するコントローラ11側の反転処理部200−1が、NANDメモリ12との間のデータ転送単位であるフレームに相当するサイズの送信データごとに反転情報を作成する例を示している。この例では、NANDメモリ12がコントローラ11へデータを送信する場合、当該NANDメモリ12側の反転処理部200−2も、1フレーム分の送信データに対して1つの反転情報を作成する。
図7中、符号b1−1は、1フレーム分の送信データ中の1つめのUIで転送される8ビット(1バイト)の送信データを示している。また、符号b2−1は、当該1つめのUIで転送される8ビット(1バイト)の送信データの反転有無を示す反転情報中のフラグデータを示している。同様に、符号b1−2は、1フレーム分の送信データ中の2つめのUIで転送される8ビット(1バイト)の送信データを示し、符号b2−2は、当該2つめのUIで転送される8ビット(1バイト)の送信データの反転有無を示す反転情報中のフラグデータを示している。
1フレームが1Kバイトの場合、1フレーム分の送信データは、1024UIで転送される。したがって、この場合の反転情報のサイズは、128バイトとなり、当該反転情報は、128UIで転送される。また、この例の場合も、反転情報の転送が開始されるクロックエッジを示すカラムアドレス(b3−1、b3−2)は、コントローラ11側とNANDメモリ12側との間で反転情報が適切に授受されるようにあらかじめ定められる。
図8は、NANDメモリ12へデータを送信するコントローラ11側の反転処理部200−1が、1UIあたりのデータ転送量に相当するサイズの送信データごとに、反転情報を作成する例を示している。つまりここでは、8本のデータ信号線DQ0〜DQ7と同数の8クロックエッジで転送される8バイトの送信データごとに反転情報を作成する例を示している。この例では、NANDメモリ12がコントローラ11へデータを送信する場合、当該NANDメモリ12側の反転処理部200−2も、8バイトの送信データに対して1つの反転情報を作成する。
図8中、符号b1−1は、8バイトの送信データ中の1つめのUIで転送される8ビット(1バイト)の送信データを示している。また、符号b2−1は、当該1つめのUIで転送される8ビット(1バイト)の送信データの反転有無を示す反転情報中のフラグデータを示している。同様に、符号b1−2は、8バイトの送信データ中の2つめのUIで転送される8ビット(1バイト)の送信データを示し、符号b2−2は、当該2つめのUIで転送される8ビット(1バイト)の送信データの反転有無を示す反転情報中のフラグデータを示している。
この例の場合も、反転情報の転送が開始されるクロックエッジを示すカラムアドレス(b3−1、b3−2、b3−3)は、コントローラ11側とNANDメモリ12側との間で反転情報が適切に授受されるようにあらかじめ定められる。
図4、図7、図8において示したいずれの例の場合も、例えば1ページごとの送信データに対して作成される反転情報の合計サイズは同じである。いずれを適用するかによって、反転情報を送受する粒度を調整することができる。
ところで、以上では、たとえばデータ信号線DQ0〜DQ7を用いて各クロックエッジで転送される8ビット(1バイト)の送信データごとに反転要否を判定し、フラグデータを作成する例を説明した。つまり、DBI機能において一般的である、送信タイミングが同じ1UI分の送信データを1グループとして扱う例を説明した。反転情報を送信データと同一クロックエッジで転送するのではなく、反転情報を属性情報として送信する本実施形態のメモリシステム1では、たとえば、データ信号線DQ0〜DQ7のそれぞれで、複数UIで連続に転送される所定数の送信データを1グループとして扱い、反転要否を判定し、フラグデータを作成することも可能である。
図9を参照して、データ信号線DQ0〜DQ7が8UIでそれぞれ転送する連続する8ビットのデータごとに反転要否を判定し、反転有無を示すフラグデータ(反転情報)を作成する場合の例を説明する。
図9(A)は、反転機能の非適用時において各データ信号線DQ0〜DQ7によって転送されるデータ(「0」または「1」)を示している。また、図9(B)は、図9(A)において送信対象となっているデータと同一のデータを対象として、反転機能の適用時において各データ信号線DQ0〜DQ7によって転送されるデータを示している。
図9(A)に示す例では、データ信号線DQ0は、8UIで、1つの「0」と、7つの「1」とを転送する。つまり、「0」よりも「1」の方を多く転送する。データ信号線DQ1は、5つの「0」と、3つの「1」とを転送する。つまり、「1」よりも「0」の方を多く転送する。
前述したように、POD(プルアップ型)の場合は、データ信号線DQ0〜DQ7によって転送されるデータは「0」よりも「1」の方が多いことが好ましい。そこで、反転機能の適用時においては、プルアップ型の場合、図9(B)に示すように、データ信号線DQ0の送信データは反転させず、データ信号線DQ1の送信データは反転させる。そして、たとえば各々の送信データに後続して、データ信号線DQ0では反転無を示す「0」を反転情報a1’として送信し、データ信号線DQ01は反転有を示す「1」を反転情報として送信する。なお、プルダウン型の場合は、データ信号線DQ0の送信データは反転させ、データ信号線DQ1の送信データは反転させればよい。したがって、データ信号線DQ0では反転有を示す「1」が反転情報として送信され、データ信号線DQ01では反転無を示す「0」が反転情報として送信されればよい。データ信号線DQ2〜DQ7についても同様である。
受信側では、データ信号線DQ0〜DQ7のそれぞれで、8UIで転送される連続する8ビットの受信データについて、同じくデータ信号線DQ0〜DQ7のそれぞれで転送される反転情報に基づき、それらの反転有無を把握することで、図9(A)に示す本来の送信対象のデータを得ることができる。
図10は、NANDメモリ12へデータを送信するコントローラ11側の反転処理部200−1が、データ信号線ごとにかつ連続する所定数の送信データごとに反転情報を作成する例を示している。なお、この場合、NANDメモリ12がコントローラ11へデータを送信する場合における当該NANDメモリ12側の反転処理部200−2も、データ信号線ごとにかつ連続する所定数の送信データごとに反転情報を作成する
図10中、符号b1−1は、あるデータ信号線が所定数のクロックエッジで連続的に転送する送信データを示している。また、符号b2−1は、このデータ信号線によって所定数のクロックエッジで連続的に転送される送信データの反転有無を示す、当該データ信号線によって転送されるフラグデータ(反転情報)を示している。同様に、符号b1−2は、別のデータ信号線が所定数のクロックエッジで連続的に転送する送信データを示している。また、符号b2−2は、このデータ信号線によって所定数のクロックエッジで連続的に転送される送信データの反転有無を示す、当該データ信号線によって転送されるフラグデータ(反転情報)を示している。
図10中、符号b1−1は、あるデータ信号線が所定数のクロックエッジで連続的に転送する送信データを示している。また、符号b2−1は、このデータ信号線によって所定数のクロックエッジで連続的に転送される送信データの反転有無を示す、当該データ信号線によって転送されるフラグデータ(反転情報)を示している。同様に、符号b1−2は、別のデータ信号線が所定数のクロックエッジで連続的に転送する送信データを示している。また、符号b2−2は、このデータ信号線によって所定数のクロックエッジで連続的に転送される送信データの反転有無を示す、当該データ信号線によって転送されるフラグデータ(反転情報)を示している。
この例の場合、各データ信号線で転送される何UI分の送信データごとに反転要否を判定して反転情報を作成するかを任意に設定することができる。また、この例の場合においては、所定サイズ(数)の送信データに対して作成される各反転情報のサイズは、データ信号線に相当する数(1バイト)の固定値となり、何UI分の送信データごとに反転情報を作成するかの設定に応じて、当該反転情報の合計サイズは変動する。つまり、送信データに対する反転情報の割合を調整することができる。
そして、この例の場合も、データ送受信用のデータ信号線を用いて反転情報を送信することにより、DBI機能と同様の思想の反転機能のための新たなデータ信号線の追加を不要とする。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1…メモリシステム、2…ホスト装置、11…コントローラ、12…NAND型フラッシュメモリ(NANDメモリ)、111…ホストインターフェース部、112…制御部、113…NANDインターフェース部、121…I/O部、122…メモリ部、200(200−1、200−2)…反転処理部。
Claims (11)
- ストレージ装置と、
ホスト装置からの要求に基づき、前記ストレージ装置へのデータの書き込みおよび前記ストレージ装置からのデータの読み出しを制御するコントローラと、
を具備し、
前記コントローラは、
N(Nは1以上の自然数)本のデータ信号線を介して前記ストレージ装置へ1UI(unit interval)あたりNビットずつ転送される送信データの一部である第1データの論理を維持又は反転し、
前記第1データの論理の反転有無を示す第2データを作成し、
前記第1データと、前記作成された前記第2データと、を前記N本のデータ信号線を介して前記ストレージ装置へ転送する、
メモリシステム。 - 前記コントローラは、前記第1データとして、同一のUIで転送されるNビットの第3データごとに論理の反転要否を判定し、各々が前記第3データの反転有無を示す複数のフラグデータを含む第2データを作成する請求項1に記載のメモリシステム。
- 前記コントローラは、前記第1データとして、前記N本のデータ信号線それぞれにおいてM(Mは1以上の自然数)クロックエッジで転送されるMビットの第4データごとに論理の反転要否を判定し、各々が前記第4データの反転有無を示す複数のフラグデータを含む第2データを作成する請求項1に記載のメモリシステム。
- 前記第2データは、前記複数のフラグデータが、各々が反転有無を示す前記Mビット分の前記第4データと同一のデータ信号線によって転送されるように配置される請求項3に記載のメモリシステム。
- 前記コントローラは、前記第1データとして、前記ストレージ装置の記憶領域に対する処理の単位に相当するサイズの第5データごとに前記第2データを作成する請求項1に記載のメモリシステム。
- 前記コントローラは、前記第1データとして、前記ストレージ装置との間のデータ転送の単位に相当するサイズの第6データごと前記第2データを作成する請求項1に記載のメモリシステム。
- 前記コントローラは、前記第1データとして、前記N本のデータ信号線の本数と同数のNクロックエッジで転送されるサイズの第7データごとに前記第2データを作成する請求項1に記載のメモリシステム。
- 前記ストレージ装置は、前記第1データ及び前記第2データを前記N本のデータ信号線を介して受信し、前記受信した第2データに基づき、前記受信した前記第1データの前記論理の反転有無を判定して、前記第1データの前記論理を維持又は反転する請求項1に記載のメモリシステム。
- 前記ストレージ装置は、
前記N本のデータ信号線を介して前記コントローラへ1UIあたりNビットずつ転送される送信データの一部である第8データの論理を維持又は反転し、
前記第8データの論理の反転有無を示す第9データを作成し、
前記第8データと、前記作成された前記第9データと、を前記N本のデータ信号線を介して前記コントローラへ転送する、
請求項1に記載のメモリシステム。 - 1UI(unit interval)あたりN(Nは1以上の自然数)ビットずつ送信データを出力するためのN本のデータ信号線に接続可能なN個の端子と、
前記送信データの一部である第1データの論理を維持又は反転し、前記第1データの論理の反転有無を示す第2データを作成し、前記第1データと前記作成された前記第2データとを前記N個の端子から出力する回路と、
を具備するコントローラ。 - N(Nは1以上の自然数)本のデータ信号線を介して外部装置へ1UI(unit interval)あたりNビットずつ送信データを転送する電子装置のデータ転送方法であって、
前記送信データの一部である第1データの論理を維持又は反転することと、
前記第1データの論理の反転有無を示す第2データを作成することと、
作成した前記第1データと前記第2データとを前記N本のデータ信号線を介して前記外部装置へ転送することと、
を具備するデータ転送方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019167660A JP2021043909A (ja) | 2019-09-13 | 2019-09-13 | メモリシステム、コントローラおよびデータ転送方法 |
US16/802,631 US11467762B2 (en) | 2019-09-13 | 2020-02-27 | Data bus inversion (DBI) in a memory system, controller and data transfer method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019167660A JP2021043909A (ja) | 2019-09-13 | 2019-09-13 | メモリシステム、コントローラおよびデータ転送方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2021043909A true JP2021043909A (ja) | 2021-03-18 |
Family
ID=74861752
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019167660A Pending JP2021043909A (ja) | 2019-09-13 | 2019-09-13 | メモリシステム、コントローラおよびデータ転送方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11467762B2 (ja) |
JP (1) | JP2021043909A (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11494126B1 (en) * | 2021-05-07 | 2022-11-08 | Western Digital Technologies, Inc. | Toggle mode (TM) coding with circuit bounded array memory |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5077806B2 (ja) | 2006-12-19 | 2012-11-21 | 横河電機株式会社 | メモリ試験装置 |
US7501963B1 (en) * | 2007-10-17 | 2009-03-10 | Micron Technology, Inc. | Balanced data bus inversion |
KR101688050B1 (ko) * | 2009-12-22 | 2016-12-21 | 삼성전자 주식회사 | 반도체 장치 및 반도체 장치의 리드 또는 라이트 동작 수행 방법 |
JP5972549B2 (ja) | 2011-09-29 | 2016-08-17 | ピーエスフォー ルクスコ エスエイアールエルPS4 Luxco S.a.r.l. | 半導体装置 |
KR20140032787A (ko) * | 2012-09-07 | 2014-03-17 | 삼성전자주식회사 | 불휘발성 메모리 장치를 포함하는 메모리 시스템 및 그것의 제어 방법 |
US9058436B1 (en) * | 2012-11-20 | 2015-06-16 | Altera Corporation | Method and system for reducing the effect of component aging |
JP2014170605A (ja) | 2013-03-05 | 2014-09-18 | Ps4 Luxco S A R L | 半導体装置 |
KR102041372B1 (ko) * | 2013-05-23 | 2019-11-07 | 에스케이하이닉스 주식회사 | 반도체장치 및 반도체시스템 |
US9621303B2 (en) * | 2014-01-29 | 2017-04-11 | Marvell Israel (M.I.S.L) Ltd. | Method and apparatus for valid encoding |
US9405721B2 (en) * | 2014-06-06 | 2016-08-02 | Micron Technology, Inc. | Apparatuses and methods for performing a databus inversion operation |
-
2019
- 2019-09-13 JP JP2019167660A patent/JP2021043909A/ja active Pending
-
2020
- 2020-02-27 US US16/802,631 patent/US11467762B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US11467762B2 (en) | 2022-10-11 |
US20210081133A1 (en) | 2021-03-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11886754B2 (en) | Apparatuses and methods for configuring I/Os of memory for hybrid memory modules | |
US10049005B2 (en) | Flash memory control apparatus utilizing buffer to temporarily storing valid data stored in storage plane, and control system and control method thereof | |
US9886378B2 (en) | Nonvolatile memory system using control signals to transmit varied signals via data pins | |
JP2006004079A (ja) | 記憶装置 | |
US20180052732A1 (en) | Semiconductor device and semiconductor system | |
US9324435B2 (en) | Data transmitting method, memory control circuit unit and memory storage apparatus | |
US10908827B2 (en) | Semiconductor memory devices, and memory systems and electronic apparatuses having the same | |
TWI695382B (zh) | 記憶體定址方法及相關聯的控制器 | |
KR101201838B1 (ko) | 프로그램 시간을 감소시킨 비휘발성 메모리 장치 | |
US10445021B2 (en) | Memory system and method of operating the same | |
JP2021043909A (ja) | メモリシステム、コントローラおよびデータ転送方法 | |
US10521157B2 (en) | Jump page cache read method in NAND flash memory and NAND flash memory | |
JP2013232097A (ja) | 半導体記憶装置 | |
US11170827B2 (en) | Data buffer and memory device having the same | |
KR20180013212A (ko) | 데이터 비트 인버전 제어 장치 및 이를 포함하는 반도체 장치 | |
JP2022047854A (ja) | メモリシステム | |
US10102121B1 (en) | Memory management method, memory control circuit unit and memory storage device | |
KR20200042358A (ko) | 메모리 장치 및 이의 동작 방법 | |
US12008247B2 (en) | Memory system | |
KR102526256B1 (ko) | 데이터 출력 버퍼 | |
KR101175250B1 (ko) | 낸드 플래시 메모리 장치와 그의 컨트롤러 및 이들의 라이트 오퍼레이션 방법 | |
US10892018B2 (en) | Semiconductor memory device and refreshing method of semiconductor memory device | |
US10679684B2 (en) | Data output buffer having pull-up main driver and memory device having the data output buffer | |
KR20090058113A (ko) | Nand/nor복합 메모리의 데이터 리드/라이트 방법 및이를 이용한 장치 | |
TW201715406A (zh) | 具有彈性資料傳輸介面的記憶體裝置與其方法 |