CN116108508A - 固态驱动器的操作方法、数据存储装置及其操作方法 - Google Patents
固态驱动器的操作方法、数据存储装置及其操作方法 Download PDFInfo
- Publication number
- CN116108508A CN116108508A CN202211395346.7A CN202211395346A CN116108508A CN 116108508 A CN116108508 A CN 116108508A CN 202211395346 A CN202211395346 A CN 202211395346A CN 116108508 A CN116108508 A CN 116108508A
- Authority
- CN
- China
- Prior art keywords
- encryption
- memory
- data
- decryption
- buffer
- 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
- 238000000034 method Methods 0.000 title claims abstract description 80
- 238000013500 data storage Methods 0.000 title claims abstract description 71
- 239000007787 solid Substances 0.000 title claims abstract description 8
- 230000015654 memory Effects 0.000 claims abstract description 338
- 230000004044 response Effects 0.000 claims abstract description 19
- 238000010586 diagram Methods 0.000 description 16
- 238000004891 communication Methods 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 5
- 238000012937 correction Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 238000005538 encapsulation Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 3
- 230000003252 repetitive effect Effects 0.000 description 3
- 230000009977 dual effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
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/14—Protection against unauthorised use of memory or access to memory
- G06F12/1408—Protection against unauthorised use of memory or access to memory by using cryptography
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/78—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
- G06F21/79—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage systems
- G06F3/0623—Securing storage systems in relation to content
-
- 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/0629—Configuration or reconfiguration of storage systems
- G06F3/0637—Permissions
-
- 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/0656—Data buffering 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/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]
-
- 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/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- 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/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- 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/10—Providing a specific technical effect
- G06F2212/1052—Security improvement
-
- 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/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
-
- 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/7208—Multiple device management, e.g. distributing data over multiple flash devices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Human Computer Interaction (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Storage Device Security (AREA)
- Read Only Memory (AREA)
Abstract
提供一种固态驱动器的操作方法、数据存储装置及其操作方法。包括缓冲存储器、非易失性存储器和控制器的数据存储装置的操作方法包括:从主机接收针对存储在缓冲存储器中的数据的加密请求,以及响应于加密请求,执行加密操作,其中,执行加密操作的步骤包括执行编程操作,执行编程操作的步骤包括:接收非易失性存储器的缓冲区域的物理地址,通过使包括在控制器中的加密模块处于开启状态以对存储在缓冲存储器中的数据进行加密来生成加密数据,以及基于物理地址,将加密数据编程在非易失性存储器的缓冲区域中。
Description
本申请基于并要求于2021年11月10日在韩国知识产权局提交的第10-2021-0154271号韩国专利申请和于2022年5月24日在韩国知识产权局提交的第10-2022-0063591号韩国专利申请的优先权,所述韩国专利申请的公开通过引用全部包含于此。
技术领域
本公开总体上涉及数据存储装置,并且具体地涉及非易失性存储器装置及其操作方法。例如,通过使用加密知识产权(IP)对数据进行加密和解密的方法以及包括加密IP的数据存储装置可被提供。
背景技术
数据存储装置(诸如,支持自加密装置(SED)的固态驱动器(SSD))可将用户数据编程为非易失性存储器(诸如,NAND闪存)中的加密数据。当从主机接收到加密请求或解密请求时,存储在动态随机存取存储器(DRAM)中的数据也可被加密或解密。即使在数据存储装置的运行时间期间,也可存在主机等的加密请求和/或解密请求。此外,可为DRAM的加密数据提供单独的模块,并且在这种情况下,当单独的模块在中央处理器(CPU)与DRAM之间时,系统的操作速度可被降低。
发明内容
发明的示例实施例提供一种在不添加单独的硬件模块的情况下,即使在装置的运行时间期间也能够以增加的速度执行加密和解密,并且能够根据主机的请求自由地进行加密和解密的装置的操作方法。
根据发明的一个方面,一种数据存储装置的操作方法,所述数据存储装置包括缓冲存储器、非易失性存储器和控制器,所述操作方法包括:从主机接收针对存储在缓冲存储器中的数据的加密请求;以及响应于加密请求,执行加密操作,其中,执行加密操作的步骤包括执行编程操作,并且执行编程操作的步骤包括:接收非易失性存储器的缓冲区域的物理地址;通过使包括在控制器中的加密模块处于开启状态以对存储在缓冲存储器中的数据进行加密来生成加密数据;以及基于物理地址,将加密数据编程在非易失性存储器的缓冲区域中。
根据发明的另一方面,一种数据存储装置的操作方法,所述数据存储装置包括缓冲存储器、非易失性存储器和控制器,所述操作方法包括:从主机接收针对存储在缓冲存储器中的加密数据的解密请求;响应于解密请求,执行解密操作,其中,执行解密操作的步骤包括:接收非易失性存储器的缓冲区域的物理地址;使包括在控制器中的加密模块处于关闭状态;基于物理地址,将加密数据编程在非易失性存储器的缓冲区域中;使加密模块处于开启状态;通过从非易失性存储器的缓冲区域读取和解密加密数据来生成解密数据;以及将解密数据存储在缓冲存储器中。
根据发明的另一方面,一种数据存储装置包括:缓冲存储器;非易失性存储器;以及控制器,被配置为从主机接收针对存储在缓冲存储器中的数据的加密请求,并且响应于接收的加密请求来控制加密操作,其中,在加密操作期间,非易失性存储器的缓冲区域的物理地址被接收,通过使包括在控制器中的加密模块处于开启状态以对存储在缓冲存储器中的数据进行加密来生成加密数据,加密数据基于物理地址被编程在非易失性存储器的缓冲区域中,通过使加密模块处于关闭状态而从非易失性存储器的缓冲区域读取加密数据,并且读取的加密数据被存储在缓冲存储器中。
附图说明
从下面结合附图的具体实施方式,将更清楚地理解发明的实施例,其中:
图1是示出根据发明的示例实施例的数据存储装置的结构的示意框图;
图2是示出根据发明的示例实施例的数据存储装置的操作方法的加密操作的概念框图;
图3是示出根据发明的示例实施例的数据存储装置的操作方法的解密操作的概念图;
图4是具体示出根据发明的示例实施例的图1的数据存储装置的结构的示图;
图5是示出在图4的装置的数据加密操作中执行编程操作的处理的示例示图;
图6是示出在图5的数据加密操作中执行编程操作的处理的示例流程图;
图7是示出在图4的装置的数据加密操作中执行读取操作的处理的示例示图;
图8是示出在图7的数据加密操作中执行读取操作的处理的示例流程图;
图9是具体示出根据发明的另一示例实施例的包括多个通道的数据存储装置的结构的示图;
图10是示出在图9的数据存储装置的数据加密操作中执行编程操作的处理的示例流程图;
图11是示出在图9的数据存储装置的数据加密操作中执行读取操作的处理的示例流程图;
图12是示出执行图4的装置的加密数据的解密操作的处理的示例示图;
图13是示出执行图12的加密数据的解密操作的处理的示例流程图;
图14是示出执行图9的装置的加密数据的解密操作的处理的示例流程图;以及
图15是示出根据发明的示例实施例的由包括多个通道的数据存储装置执行加密操作和解密操作的处理的示例流程图。
具体实施方式
将参照发明的实施例进行详细描述,并且其示例在附图中示出。
图1是示出根据发明的示例实施例的数据存储装置100的结构的示图。
参照图1,数据存储装置100可包括存储装置,存储装置连接到主机101并执行/履行(例如,响应于)来自主机101的请求。如图1中所示,数据存储装置100可包括主机接口逻辑102、存储器装置107、108、109和110、缓冲存储器105和控制器103。
数据存储装置100可根据主机101(诸如,移动电话、智能电话、运动图像专家组(MPEG)音频层-3(MP3)播放器、膝上型计算机、台式计算机、游戏机、电视(TV)、平板个人计算机(PC)或车载信息娱乐系统)的控制来存储数据。
数据存储装置100可被制造为包括执行与主机101通信的方法的主机接口的各种类型的存储装置中的任何一种。例如,数据存储装置100可包括各种类型的存储装置(诸如,多媒体卡(以固态驱动器(SSD)、多媒体卡(MMC)、嵌入式MMC(eMMC)、缩小尺寸的MMC和微型MMC的形式)、安全数字(SD)卡(以SD卡、迷你SD卡和微型SD卡的形式)、通用存储总线(USB)存储装置、通用闪存(UFS)装置、个人计算机存储卡国际协会(PCMCIA)卡型存储装置。外围组件互连(PCI)卡型存储装置、PCI快速(PCIe)卡型存储装置、紧凑型闪存(CF)卡、智能媒体卡和记忆棒)中的任何一种。
数据存储装置100可被制造为各种类型的封装中的任何一种。例如,数据存储装置100可被制造为各种类型的封装(诸如,层叠封装(POP)、系统级封装(SIP)、片上系统(SOC)封装、多芯片封装(MCP)、板上芯片(COB)封装、晶片级制造封装(WFP)和晶片级堆叠封装(WSP))中的任何一种。
主机101可通过使用各种通信方法(诸如,通用串行总线(USB)、串行高级技术附件(SATA)、串行附接SCSI(SAS)、高速芯片间(HSIC)、小型计算机系统接口(SCSI)、PCI、PCIe、非易失性存储器快速(NVMe)、UFS、SD、MMC、eMMC、双列直插式存储器模块(DIMM)、注册DIMM(RDIMM)和负载减少DIMM(LRDIMM))中的至少一种与数据存储装置100通信。
主机接口逻辑102(可被称为主机接口、主机接口层等)可管理数据存储装置100与其他组件之间的通信。通信可包括用于从数据存储装置100读取数据的读取请求和用于将数据写入到数据存储装置100的写入请求。主机接口逻辑102可仅通过一个端口来管理接口,或者可通过多个端口来管理接口。可选地,数据存储装置100可包括多个端口,多个端口中的每个可具有单独的主机接口逻辑102以通过多个端口来管理接口。发明的实施例还可组合可能性(例如,具有三个端口的数据存储装置包括用于管理一个端口的第一主机接口逻辑和用于管理另外两个端口的第二主机接口逻辑)。
存储器装置107、108、109和110可存储数据。存储器装置107、108、109和110基于控制器103的控制而进行操作。存储器装置107、108、109和110可各自包括包含用于存储数据的多个存储器单元的存储器单元阵列(未示出)。
在一个示例实施例中,存储器装置107、108、109和110可各自包括双倍数据速率同步动态随机存取存储器(DDR SDRAM)、低功率双倍数据速率4(LPDDR4)SDRAM、图形双倍数据速率(GDDR)SDRAM、低功率DDR(LPDDR)、兰巴斯(rambus)动态随机存取存储器(RDRAM)、NAND闪存、垂直NAND存储器、NOR闪存、电阻式随机存取存储器(RRAM)、相变随机存取存储器(PRAM)、磁阻式随机存取存储器(MRAM)、铁电随机存取存储器(FRAM)或自旋转移力矩随机存取存储器(STT-RAM)等。在本说明书中,为了描述的方便,假设存储器装置107、108、109和110是NAND闪存。
存储器装置107、108、109和110可各自从控制器103接收命令和地址,并且访问通过地址选择的存储器单元阵列的区域。存储器装置107、108、109和110可各自针对通过地址选择的区域执行由命令指示的操作。例如,存储器装置107、108、109和110可各自执行编程操作(写入操作)、读取操作和擦除操作。在编程操作期间,存储器装置107、108、109和110可对通过地址选择的区域中的数据进行编程。在读取操作中,存储器装置107、108、109和110可从通过地址选择的区域读取数据。在擦除操作期间,存储器装置107、108、109和110可擦除存储在通过地址选择的区域中的数据。
控制器103可控制数据存储装置100的所有操作,或者响应于来自主机101的请求而控制数据存储装置100的所有操作。
当电源被施加到数据存储装置100时,控制器103可执行固件。当存储器装置107、108、109和110是闪存装置时,固件可包括控制与主机101的通信的主机接口逻辑102,并且控制器103可包括用于控制主机101与存储器装置107、108、109和110之间的通信的闪存转换层(FTL)以及用于控制与存储器装置107、108、109和110的通信的闪存接口层(FIL)。
控制器103可控制存储器装置107、108、109和110根据(例如,响应于)主机101的请求来执行编程操作、读取操作或擦除操作。在编程操作期间,控制器103可将写入命令、物理块地址和数据提供给存储器装置107、108、109和110。在读取操作期间,控制器103可将读取命令和物理块地址提供给存储器装置107、108、109和110。在擦除操作期间,控制器103可将擦除命令和物理块地址提供给存储器装置107、108、109和110。
在一个示例实施例中,控制器103自身可生成命令、地址和数据而不管(例如,独立于)来自主机101的请求,并且将命令、地址和数据发送到存储器装置107、108、109和110。例如,控制器103可将用于执行读取操作和用于执行损耗均衡、读取回收、垃圾收集等的编程操作所使用/所需的命令、地址和数据提供给存储器装置107、108、109和110。
在一些实施例中,控制器103可控制存储器装置107、108、109和110中的至少两个。在这种情况下,控制器103可根据交织方式来控制存储器装置107、108、109和110,以便提高操作性能。交织方式可包括并行或彼此重叠地控制存储器装置107、108、109、110中的至少两个的操作的方法。交织方式可以以通道(通道0、通道1、通道2和通道3)为单位执行。
从主机101提供的读取请求是对主机101提供(例如,再次提供)被请求存储在数据存储装置100中的原始数据的请求。控制器103对原始数据执行纠错编码,以生成包括用于纠错的奇偶校验数据的写入数据。控制器103可控制存储器装置107、108、109和110将写入数据存储在存储器装置107、108、109和110中。
此后,根据来自主机101的读取请求,控制器103可将读取命令和指示存储有待读取的数据的存储器单元的位置的物理地址提供给存储器装置107、108、109和110,以便从存储器装置107、108、109和110获得与主机101的读取请求对应的数据。
存储器装置107、108、109和110可将存储在接收的物理地址且通过使用读取电压读取的数据提供给控制器103。读取电压可被施加以识别存储在存储器单元中的数据。控制器103可对读取的数据执行纠错解码。
缓冲存储器105可包括易失性存储器装置。因此,当电源被断开时,可不保持存储在缓冲存储器105中的数据。例如,缓冲存储器105可包括动态随机存取存储器(DRAM)。
控制器103可根据(例如,响应于)来自主机101的请求,来控制缓冲存储器105暂时地存储待存储在存储器装置107、108、109和110中的数据。存储在缓冲存储器105中的数据可根据(例如,使用)逻辑地址被存储在先前分配在缓冲存储器105中的区域(未示出)中。
通过一个编程操作输入到存储器装置107、108、109和110的数据的大小可称为编程单位。根据(例如,响应于)从主机101接收的编程请求而输入的数据的大小可不同于存储器装置107、108、109和110的编程单位。因此,控制器103可将根据主机101的编程请求而接收的数据存储在缓冲存储器105中。此后,当存储在缓冲存储器105中的数据的大小变为编程的单位(例如,编程单位)时,控制器103可控制缓冲存储器105和存储器装置107、108、109和110对存储器装置107、108、109和110中的数据进行编程。参照图1,缓冲存储器105被示出为被包括在数据存储装置100中且在控制器103的外部,但是不限于此。在各种实施例中,缓冲存储器105可以在控制器103的内部。
图2是示出根据发明的示例实施例的数据存储装置的操作方法中的加密操作的概念图。
参照图2,数据存储装置20可包括第一存储器200和第二存储器210。例如,数据存储装置20可对应于(例如,可以是)图1的数据存储装置100的示例。数据存储装置20可根据(例如,响应于)外部请求(例如,主机101)或根据需要(例如,根据固件的需要),使得存储在第一存储器200中的数据能够通过使用将在下面描述的加密模块被加密。在一些实施例中,第一存储器200和第二存储器210可包括缓冲存储器,但是不限于此。在本说明书中,为了描述的方便,假设与第一存储器200和第二存储器210对应的存储器是缓冲存储器。
在一些实施例中,如下所述,第一存储器200可基于与第二存储器210的区域对应的地址从外部装置接收数据,或者可将存储在第一存储器200中的明文数据201发送到第二存储器210。在发送数据的处理中,可利用包括在数据存储装置20中的加密模块。当加密模块处于开启状态时,从第一存储器200发送的明文数据201可通过加密模块的加密算法(例如,高级加密标准(AES))被加密。即,在发送处理期间,明文数据201可在被编程在第二存储器210中之前被加密。被处于开启状态的加密模块加密的加密数据211可基于命令被编程在第二存储器210中。
在一些实施例中,在从第二存储器210读取加密数据211之前,对明文数据201进行加密的加密模块可处于关闭状态。编程在第二存储器210中的加密数据211可基于命令被读取。从第二存储器210读取的加密数据211可被发送到第一存储器200。结果,在无需新增加单独的用于加密的模块的情况下,第一存储器200的明文数据201可通过使用包括在数据存储装置20中的加密模块而被加密为加密数据211。
图3是示出根据发明的示例实施例的数据存储装置的操作方法中的解密操作的概念图。
参照图3,数据存储装置30可包括第一存储器300和第二存储器310。例如,数据存储装置30可对应于(例如,可以是)图1的数据存储装置100的示例。数据存储装置30可根据外部请求(例如,主机101)或根据需要(例如,根据固件的需要),使得存储在第一存储器300中的加密数据能够通过使用将在下面描述的加密模块被解密。如上所述,在一些实施例中,第一存储器300和第二存储器310可各自包括缓冲存储器。
在一些实施例中,如下所述,第一存储器300可基于与第二存储器310对应的地址从外部装置接收加密数据301,或者可将存储在第一存储器300中的加密数据301发送到第二存储器310。在发送加密数据301的处理中,当加密模块处于关闭状态时,在没有解密处理的情况下,从第一存储器300发送的加密数据301可被第二存储器310接收。即,从第一存储器300发送的加密数据301可基于命令被原样编程在第二存储器310中。
在一些实施例中,在将加密数据301从第二存储器310发送到第一存储器300的处理中,包括在数据存储装置30中的加密模块可被使用。在从第二存储器310读取加密数据301之前,加密模块可处于开启状态。编程的加密数据301可基于命令被读取。在读取和发送加密数据的处理中,加密数据可通过使用加密模块的加密算法(例如,AES)而被解密。即,加密数据301可在发送处理期间在被存储在第一存储器300中之前被解密。结果,在无需新增加单独的用于解密的模块的情况下,第一存储器300的加密数据301可通过使用包括在数据存储装置30中的加密模块而被解密为明文数据302。
图4是具体示出根据发明的示例实施例的图1的数据存储装置的结构的示图。
参照图4,数据存储装置400可包括存储器装置410(如上所述,为了描述的方便,在下文中被称为NAND闪存装置)、缓冲存储器431和控制器440。存储器装置410可包括缓冲区域411和NAND闪存412。控制器440可包括对应于(例如,通信地结合到)NAND闪存装置410的N核420、F核430和加密模块441。缓冲存储器431可通过通道450连接到缓冲区域411。在一些实施例中,缓冲区域411可包括包含在非易失性存储器中的页缓冲器。
缓冲存储器431可包括DRAM缓冲存储器,但是不限于此,并且可包括各种类型的缓冲存储器。此外,在附图和本说明书中,如上所述,为了描述的方便,缓冲区域411被称为NAND闪存的缓冲区域411,但是不限于此。即,NAND闪存的缓冲区域411可包括各种类型的缓冲存储器。例如,NAND闪存的缓冲区域411可包括位于NAND闪存装置410的外部的单独的存储器。
如图4中所示,N核420可被包括在控制器440中。N核420可控制F核430、控制器440和NAND闪存装置410的所有操作。N核420可包括中央处理器(CPU)。N核420可根据(例如,响应于)主机101的请求或需求,提供用于加密操作和/或解密操作的命令。在图4中,N核420被包括在控制器440中,但是不限于此。即,N核420可以在控制器440的外部,并且可通过总线连接到控制器440和/或F核430。
在一些实施例中,N核420可访问包括在缓冲存储器431中的有效数据缓冲器。F核430可将缓冲存储器431的存储器区域的地址提供给N核420。N核420可基于其对应的地址通过控制器440和通道450访问缓冲存储器431。此外,N核420可从NAND闪存装置410接收物理地存储在NAND闪存装置410中的物理地址。N核420可将物理地址提供给控制器440。控制器440可基于其对应的物理地址通过通道450访问NAND闪存的缓冲区域411。
N核420可通过将缓冲存储器431的有效数据缓冲器划分为直接存储器访问(DMA)的单元(或称为DMA单元)来请求数据的加密和/或解密。类似地,对NAND闪存的缓冲区域411的访问可通过将NAND闪存的缓冲区域411划分为DMA单元来执行。如上所述,因为可通过通道450作出现有的编程/读取/擦除请求,所以N核420和/或控制器440可通过使用将在下面描述的方法额外地请求数据的加密和/或解密功能。
例如,N核420可从F核430的缓冲存储器431(例如,FTL的数据缓冲器、DRAM缓冲器等)接收数据缓冲器的地址,将数据缓冲器划分为DMA单元,并且通过控制器440使用加密模块441执行加密和/或解密。
在一些实施例中,NAND闪存装置410可包括NAND闪存的缓冲区域411和NAND闪存412。如上所述,NAND闪存的缓冲区域411不限于此,并且可包括位于NAND闪存装置410的外部的单独的缓冲存储器。NAND闪存的缓冲区域411可通过通道450将数据发送到缓冲存储器431和从缓冲存储器431接收数据。此外,NAND闪存的缓冲区域411可将数据编程在NAND闪存412中或从NAND闪存412读取数据。
在图4中,F核430在控制器440中,但是不限于此。即,F核430可以在控制器440的外部,并且可通过总线连接到控制器440和/或N核420。
在一些实施例中,当F核430根据主机的请求401生成加密请求和解密请求中的至少一个时,N核420可确定该请求是加密请求还是解密请求。如上所述,缓冲存储器431可包括DRAM缓冲器,并且F核430可将缓冲存储器431的数据缓冲器地址提供给N核420。N核420可根据(例如,响应于)主机的针对加密和/或解密的请求401,通过将在下面描述的控制器440、加密模块441、NAND闪存的缓冲区域411和通道450来执行加密和/或解密。
通道450的操作可基于控制器440的控制。通道450可以是数据通过其进行移动的单位。此外,通道450可在数据发送期间与一些模块(诸如,加密模块441)进行交互。
在一些实施例中,缓冲存储器431与NAND闪存的缓冲区域411之间的数据发送和接收可通过通道450被执行。例如,通道450可基于控制器440的控制将存储在缓冲存储器431中的数据编程在NAND闪存的缓冲区域411中。此外,例如,通道450可基于控制器440的控制读取编程在NAND闪存的缓冲区域411中的数据,并且将该数据存储在缓冲存储器431中。然而,发明不限于此,并且缓冲存储器431与NAND闪存装置410之间的数据发送和接收也可通过通道450被执行。
此外,显然,编程、读取和擦除的请求可通过如上所述的通道450被执行。即,因为以上针对存储器(例如,缓冲存储器431或NAND闪存的缓冲区域411等)之间的操作的请求可通过通道450被执行,所以数据加密请求和数据解密请求中的至少一个可通过将在下面描述的方法通过通道450被执行。
控制器440可包括N核420和F核430。然而,如上所述,N核420和F核430中的至少一个可以在控制器440的外部,并且可通过总线连接到控制器440。此外,控制器440可控制通道450的操作。
在一些实施例中,如上所述,控制器440可从N核420接收NAND闪存的缓冲区域411的物理地址。控制器440可基于相应的物理地址通过通道450访问NAND闪存的缓冲区域411。控制器440可基于物理地址通过通道450将存储在缓冲存储器431中的数据编程在NAND闪存的缓冲区域411中。
在一些实施例中,控制器440可通过通道450访问NAND闪存的缓冲区域411中的数据。此外,控制器440可通过通道450将从NAND闪存的缓冲区域411读取的数据存储在缓冲存储器431中。
在一些实施例中,控制器440可通过使用加密模块441和通道450来对明文数据进行加密和/或对加密数据进行解密。控制器440可包括与NAND闪存装置410对应的加密模块441,并且可控制加密模块441处于开启状态或关闭状态。除了加密模块441之外,控制器440还可包括各种模块或集成电路(IC)(例如,写入封装(encapsulation)、写入解封装、纠错码(ECC)编码、读取封装、读取解封装或ECC解码模块或IC)。
在一些实施例中,加密模块441可与NAND闪存装置410对应。加密模块441可以在缓冲存储器431与NAND闪存的缓冲区域411之间以执行功能。然而,加密模块441的位置不限于图4中的位置。加密模块441可基于控制器440的控制而处于开启状态,以对通过缓冲存储器431与NAND闪存的缓冲区域411之间的通道450发送和接收的明文数据或加密数据进行加密或解密。可选地,加密模块441可基于控制器440的控制而处于关闭状态,以在没有解密的情况下提供加密数据。
具体地,例如,处于开启状态的加密模块441可对从缓冲存储器431提供的明文数据进行加密。处于关闭状态的加密模块441可不对从NAND闪存的缓冲区域411读取的加密数据进行解密。可选地,例如,处于关闭状态的加密模块441可不对从缓冲存储器431提供的加密数据进行解密。处于开启状态的加密模块441可对从NAND闪存的缓冲区域411读取的加密数据进行解密。
在一些实施例中,从缓冲存储器431提供并由加密模块441基于N核420和/或控制器440的控制而加密的数据可被编程在NAND闪存的缓冲区域411中。此外,从缓冲存储器431提供的加密数据可被编程在NAND闪存的缓冲区域411中。
在一些实施例中,如上所述,NAND闪存的缓冲区域411可连接到NAND闪存412,并且数据可在NAND闪存的缓冲区域411与NAND闪存412之间被发送或接收。然而,当数据被编程在NAND闪存的缓冲区域411中或者NAND闪存的缓冲区域411中的数据通过如下所述的仅DMA模式被读取时,在没有对NAND闪存412的访问413的情况下,NAND闪存的缓冲区域411中的数据可被编程或读取。
在一些实施例中,当通过通道450访问存储器(例如,缓冲存储器431或NAND闪存的缓冲区域411等)时,交织方式可被用于访问。即,存储器可通过被划分为预设单元(例如,存储体)而在通道450中通过交织方式并行地被访问。因为可针对每个预设单元(例如,存储体)并行地对存储器作出现有的数据编程/读取/擦除请求,所以可额外地作出加密请求和解密请求中的至少一个。
图5是示出在图4的装置的数据加密操作期间执行编程操作的处理的示例示图。
参照图5,控制器530可根据主机(图1中的101)的请求(图4中的401)或根据需要(例如,根据固件的需要),通过使用对应于(例如,通信地结合到)图4的NAND闪存装置410的加密模块531来执行明文数据加密操作的编程操作。
在一些实施例中,缓冲存储器510可基于控制器530的控制通过通道540将存储的数据提供给NAND闪存的缓冲区域520。在一些实施例中,当访问缓冲存储器510的数据时,控制器530可以以DMA单元为单位访问缓冲存储器510。类似地,控制器530还可以以DMA单元为单位访问NAND闪存的缓冲区域520。
在一些实施例中,从缓冲存储器510提供的数据可包括未加密的明文数据511。在这种情况下,控制器530可控制加密模块531处于开启状态。因此,从缓冲存储器510提供的明文数据511可通过加密模块531的加密算法(例如,AES)被加密。被加密模块531加密的数据可通过通道540被提供给NAND闪存的缓冲区域520。具体地,控制器530可接收NAND闪存的缓冲区域520的物理地址,并且可基于接收的物理地址将加密数据编程在NAND闪存的缓冲区域520的存储器521中。结果,在无需新增加单独的模块的情况下,从缓冲存储器510提供的明文数据511可被加密。
图6是示出在图5的数据加密操作期间执行编程操作的处理的示例流程图。
参照图4至图6,在一些实施例中,当加密请求被接收到时(例如,同时或之后)(S601),控制器530可接收地址以访问NAND闪存的缓冲区域520中的存储器521(S602)。在一些实施例中,地址可以是或可对应于与加密请求对应(例如,响应于加密请求而获得/接收)的物理地址。此外,控制器530可从缓冲存储器510接收待加密的明文数据511(S603)。控制器530可基于加密请求通过使加密模块531处于开启状态来生成加密数据(S604)。即,加密模块531可对明文数据511进行加密。控制器530可基于通过通道540接收的地址将加密数据编程在NAND闪存的缓冲区域520的存储器521中(S606)。
结果,从缓冲存储器510提供的明文数据511可被加密并被编程在NAND闪存的缓冲区域520中。
在一些实施例中,在将加密数据编程在NAND闪存的缓冲区域520中的处理期间,控制器530可在仅DMA编程模式(DMA only program mode)下对加密数据进行编程(S605)。在这种情况下,如上所述,编程在NAND闪存的缓冲区域520中的数据可在没有对存储器装置(例如,NAND闪存412)的访问413的情况下被编程在NAND闪存的缓冲区域520中。即,当数据在仅DMA模式(DMA only mode)下被编程时,在没有对NAND闪存装置410的NAND闪存412的访问413的情况下,仅与NAND闪存装置410对应的加密模块441被使用,因此,可在不影响NAND闪存装置410的可靠性的情况下获得执行加密操作的效果。显然,当数据未在仅DMA编程模式下被编程时,操作S605可被省略。
图7是示出在图4的装置的数据加密操作期间执行读取操作的处理的示例示图。
参照图5和图7,在一些实施例中,控制器530可使加密模块531处于关闭状态,以将处于未解密(即,仍然加密)状态的加密数据存储在缓冲存储器510中。控制器530可通过通道540读取存储在NAND闪存的缓冲区域520的存储器521中的加密数据。在这种情况下,当加密模块531处于关闭状态时,在未被解密的情况下,读取的加密数据可被存储在缓冲存储器510中。
图8是示出在图7的数据加密操作期间执行读取操作的处理的示例流程图。
参照图4、图5、图7和图8,控制器530可使加密模块531处于关闭状态(S801),以在没有解密的情况下将加密数据带回缓冲存储器510。控制器530可读取(S803)存储在NAND闪存的缓冲区域520中的存储器521中的加密数据,并且将读取的数据发送到缓冲存储器510(S804)。结果,在无需新增加单独的模块的情况下,从缓冲存储器510提供的明文数据511被加密,然后加密的明文数据511被存储在缓冲存储器510中,并且因此,可在缓冲存储器510中获得加密数据701。
在一些实施例中,在从NAND闪存的缓冲区域520中的存储器521读取加密数据的处理期间,控制器530可在仅DMA读取模式(DMA only read mode)下读取加密数据(S802)。在这种情况下,如上所述,当加密数据从NAND闪存的缓冲区域520被读取时,在没有对存储器装置(例如,NAND闪存412)的访问413的情况下,加密数据可被读取。即,当数据在仅DMA模式下被读取时,在没有对NAND闪存装置410的NAND闪存412的访问413的情况下,仅与NAND闪存装置410对应的加密模块441可被使用,并且因此,可在不影响NAND闪存装置410的可靠性的情况下获得读取加密数据的效果。显然,当数据未在仅DMA读取模式下被读取时,操作S802可被省略。
图9是具体示出根据发明的另一示例实施例的包括多个通道的数据存储装置的结构的示图。
参照图4至图9,数据存储装置900可包括存储器装置920(在下文中,为了描述的方便,被称为如上所述的NAND闪存装置)、缓冲存储器910、控制器930和第一通道至第四通道(941、942、943和944)。控制器930可包括对应于(例如,通信地结合到)NAND闪存装置920的第一加密模块至第四加密模块(931、932、933和934)。NAND闪存装置920可包括缓冲区域921和NAND闪存922。执行各种功能的N核和F核的描述与参照图4进行的描述相同,并且因此其描述针对图9被省略。此外,示出的组件的结构和功能与参照图4描述的组件的结构和功能相同,并且因此其描述针对图9被省略。
在一些实施例中,通道的数量和加密模块的数量可以是两个或更多个。在这种情况下,第一通道至第四通道(941、942、943和944)可分别对应于(例如,通信地结合到)第一加密模块至第四加密模块(931、932、933和934)。例如,第一加密模块至第四加密模块(931、932、933和934)可分别通过第一通道至第四通道(941、942、943和944)结合(例如,通信地结合)到缓冲区域921。此外,控制器930可控制第一通道至第四通道(941、942、943和944)中的每个和第一加密模块至第四加密模块(931、932、933和934)中的每个根据请求进行操作。
在一些实施例中,第一通道至第四通道(941、942、943和944)中的每个可以以交织方式访问NAND闪存的缓冲存储器910和/或缓冲区域921。例如,缓冲存储器910被划分为DMA单元,并且针对第一通道至第四通道(941、942、943和944)中的每个,可以以交织方式请求数据的加密和/或解密。类似地,针对第一通道至第四通道(941、942、943和944)中的每个,对NAND闪存的缓冲区域921的访问也可以以DMA单元为单位被执行。因为通常针对第一通道至第四通道(941、942、943和944)中的每个并行地作出编程请求、读取请求和擦除请求,所以可额外地请求数据的加密和/或解密。
在一些实施例中,第一通道至第四通道(941、942、943和944)中的每个的操作可通过以DMA单元为单位以交织方式分别访问第一通道至第四通道(941、942、943和944)而以异步方式被执行。即,主机101或固件等可针对一个或多个通道请求加密操作或解密操作,然后通过调度来对其他通道作出与以上的请求不同的请求以执行操作。
例如,根据来自主机的多个请求901,即使数据的加密或解密正在一个或多个通道中被执行,其他数据的加密或解密也可在其他的通道上异步地被执行。可选地,即使当加密或解密操作正在一个或多个通道中被执行,除加密或解密之外的存储器操作(例如,NAND闪存922的数据写入操作、数据读取操作、数据擦除操作等)也可在另外的通道中异步地被执行。
具体地,在一些实施例中,控制器930可从主机接收多个请求901。来自主机的多个请求901可包括加密请求和/或解密请求。在下文中,描述来自主机的请求901是加密请求的情况作为示例,但是显然,即使当来自主机的多个请求901是加密请求和/或解密请求时,也可通过应用将在下面描述的执行解密操作的方法来以相同的方式应用下面的描述。
例如,当控制器930从主机等接收到两个加密请求时,控制器930可通过在缓冲存储器910的有效数据缓冲器被划分为DMA单元的状态下分别访问第一通道941和第二通道942来接收未加密的第一明文数据和第二明文数据。在这种情况下,第一通道941和第二通道942可以以交织方式访问缓冲存储器910。即,例如,直到第一通道941对缓冲存储器910的访问完成,在缓冲存储器910的存储器区域被划分为能够进行DMA的单元的状态下,在不限制另外的通道(例如,第二通道942)的访问的情况下,每个通道被访问,并且因此,各个通道可通过对缓冲存储器910的不同存储器区域的访问来并行地执行操作。因此,第一通道941和第二通道942可分别并行地接收第一明文数据和第二明文数据。类似地,第一通道941和第二通道942可以以DMA单元为单位并行地访问NAND闪存的缓冲区域921。
此外,控制器930可通过第一通道941和第二通道942接收用于访问NAND闪存的缓冲区域921的地址。控制器930可使分别与第一通道941和第二通道942对应的第一加密模块931和第二加密模块932处于开启状态,以执行/履行接收的加密请求。因此,第一加密模块931和第二加密模块932可分别加密第一明文数据和第二明文数据。以与以上描述的方式相同的方式,第一加密模块931和第二加密模块932可并行地执行加密。控制器930可基于通过第一通道941和第二通道942接收的NAND闪存的缓冲区域921的地址,将加密的第一数据和加密的第二数据并行地编程在存储器区域中。
在一些实施例中,在将加密数据编程在NAND闪存的缓冲区域921中的处理期间,控制器930可通过第一通道941和第二通道942中的至少一个对在仅DMA编程模式下加密的数据进行编程。即,在没有对NAND闪存922的访问923的情况下,编程操作可被执行。编程操作的具体处理和效果可与以上描述的那些相同/类似,并且因此重复的描述可被省略。
在一些实施例中,例如,控制器930可从主机等接收两个加密请求。在这种情况下,如上所述,控制器930可通过第一通道941和第二通道942执行加密请求。在这种情况下,除第一通道941和第二通道942之外的第三通道943和第四通道944可执行除加密操作之外的操作。当第三通道943和第四通道943在执行除加密操作之外的操作时需要访问缓冲存储器910时,访问可在每个通道被划分为DMA单元的状态下以交织方式被执行。即,如上所述,第一通道至第四通道(941、942、943和944)可通过访问缓冲存储器910中的不同存储器区域和/或NAND闪存的缓冲区域921来并行地执行操作。结果,即使当第一通道941和第二通道942分别执行加密操作时,第三通道943和第四通道944也可并行地执行除加密操作之外的操作。
多个通道和多个加密模块在图9中通过示例的方式被示出为四,但是不限于此。通道和加密模块的数量可大于四,并且加密请求的数量可大于二。
图10是示出在图9的装置的数据加密操作期间执行编程操作的处理的示例流程图。
参照图6、图9和图10,在图10中示出的在多个通道中的一个或多个中执行加密操作的编程操作的操作S1001至S1005,可与在图6中示出的在单个通道中执行加密操作的编程操作的操作S601至S606类似,并且因此,其重复描述被省略。例如,操作S1001、S1003、S1004和S1005可分别与操作S601、S604、S605和S606类似,并且操作S1002可与操作S602和S603类似。
在一些实施例中,如上所述,即使当加密操作的编程操作在接收到加密请求的一个或更多个通道(S1001)中正在被执行(S1002至S1005)时,不同的加密操作或除加密操作之外的操作也可在其他通道上被执行。具体地,如上所述,因为操作在每个通道中以DMA单元为单位以交织方式被执行,所以各个通道的操作是否完成对于不同的通道可以是不同的。因此,即使当在一个或多个通道中将加密数据编程在NAND闪存的缓冲区域中的操作S1005完成时,也可确定其他通道上的操作是否完成(S1006)。例如,即使当操作S1005在一个或更多个通道中完成时,当其他通道上的操作未完成时,其他通道上的操作也可照样被执行(S1007)。例如,当其他通道上的操作完成时,可确定对所有通道的所有基于DMA的访问是否完成(S1008)。当对所有通道的基于DMA的访问未完成时,可通过重复执行操作S1006至S1008来执行所有操作。当对所有通道的基于DMA的访问完成时,可确定包括执行加密操作的编程操作的通道的所有通道的操作完成。结果,加密操作的编程操作或其他操作可在多个通道中的每个上并行地被执行。
图11是示出在图9的装置的数据加密操作期间执行读取操作的处理的示例流程图。
参照图8、图9和图11,在图11中示出的在多个通道中的一个或多个通道中执行加密操作的读取操作的操作S1101至S1104可分别与在图8中示出的在单个通道中执行加密操作的读取操作的操作S801至S804类似,并且因此,其重复描述被省略。
在一些实施例中,如上所述,即使当加密操作的读取操作在接收到加密请求的一个或更多个通道(S1101)中正在被执行(S1102至S1104),不同的加密操作或除加密操作之外的操作也可在其他通道上被执行。具体地,如上所述,因为操作在每个通道中以DMA单元为单位以交织方式被执行,所以各个通道的操作是否完成对于不同的通道可以是不同的。因此,即使当将从一个或多个通道读取的加密数据存储在缓冲存储器中的操作S1104完成时,也可确定其他通道上的操作是否完成(S1105)。例如,即使当操作S1104在一个或更多个通道中完成时,当其他通道上的操作未完成时,其他通道中的操作也可照样被执行(S1106)。例如,当其他通道上的操作完成时,可确定对所有通道的所有基于DMA的访问是否完成(S1107)。当对所有通道的基于DMA的访问未完成时,可通过重复执行操作S1105至S1107来执行所有操作。当对所有通道的基于DMA的访问完成时,可确定包括执行加密操作的读取操作的通道的所有通道的操作完成。结果,加密操作的读取操作或其他操作可在多个通道中的每个上并行地被执行。
图12是示出执行图4的装置的加密数据的解密操作的处理的示例示图。
参照图12,控制器1230可根据主机101的图9中的请求901或根据需要(例如,根据固件的需要)通过使用对应于(例如,通信地结合到)图9中的NAND闪存装置920的加密模块1231来执行加密数据的解密操作。
在一些实施例中,缓冲存储器1210可基于控制器1230的控制通过通道1240将存储的数据提供给NAND闪存的缓冲区域1220。在一些实施例中,当访问缓冲存储器1210的数据时,控制器1230可以以DMA单元为单位访问缓冲存储器1210。类似地,控制器1230还可以以DMA单元为单位访问NAND闪存的缓冲区域1220。
在一些实施例中,从缓冲存储器1210提供的数据可包括加密数据1211。在这种情况下,控制器1230可控制加密模块1231处于关闭状态。因此,从缓冲存储器1210提供的加密数据1211可以以未解密(例如,仍然加密)状态提供。加密数据1211可通过通道1240被提供给NAND闪存的缓冲区域1220。具体地,控制器1230可接收NAND闪存的缓冲区域1220的地址,并且基于接收的地址将加密数据1211编程在NAND闪存的缓冲区域1220中的存储器1221中。
控制器1230可控制加密模块1231处于开启状态,以便对编程在NAND闪存的缓冲区域1220中的存储器1221中的加密数据进行解密。控制器1230可通过通道1240读取存储在NAND闪存的缓冲区域1220中的存储器1221中的加密数据。因此,因为加密模块1231处于开启状态,所以可通过使用加密模块1231的加密算法(例如,AES标准)对从NAND闪存的缓冲区域1220中的存储器1221读取的加密数据进行解密。控制器1230可通过通道1240将被加密模块1231解密的数据作为解密数据1212提供给缓冲存储器1210。
图13是示出执行图12的加密数据的解密操作的处理的示例流程图。
参照图4、图12和图13,在一些实施例中,当解密请求被接收到时(S1301),控制器1230可接收地址以访问NAND闪存的缓冲区域1220中的存储器1221(S1302)。此外,控制器1230可从缓冲存储器1210接收待解密的加密数据1211(S1303)。控制器1230可基于解密请求使加密模块1231处于关闭状态(S1304)。因此,加密模块1231可以提供处于未解密(例如,仍然加密)状态的加密数据1211。控制器1230可基于通过通道1240接收的地址,将加密数据编程在NAND闪存的缓冲区域1220中的存储器1221中(S1306)。
在一些实施例中,如下所述,在将加密数据1211编程在NAND闪存的缓冲区域1220中或读取NAND闪存的缓冲区域1220中的加密数据的处理期间,控制器1230可在仅DMA编程/读取模式下编程(S1305)或读取(S1308)加密数据。在这种情况下,如上所述,在没有对存储器装置(例如,NAND闪存412)的访问413的情况下,编程在NAND闪存的缓冲区域1220中的加密数据或从NAND闪存的缓冲区域1220读取的加密数据可被编程或被读取。即,当数据在仅DMA模式下被编程或读取时,在没有对NAND闪存装置410的NAND闪存412的访问413的情况下,仅与NAND闪存装置410对应的加密模块441被使用,因此,可以在不影响NAND闪存装置410的可靠性的情况下获得执行加密操作的效果。显然,当数据在仅DMA编程和/或读取模式下未被编程和/或读取时,操作S1305和/或操作S1308可被省略。
控制器1230可使加密模块1231处于开启状态(S1307),以对编程在NAND闪存的缓冲区域1220中的存储器1221中的加密数据进行解密。控制器1230可读取编程在NAND闪存的缓冲区域1220中的存储器1221中的加密数据,并且生成解密数据(S1309)。即,加密模块1231可对加密数据进行解密。控制器1230可将解密的数据存储在缓冲存储器1210中(S1310)。结果,在不增加新的单独的模块的情况下,可通过对从缓冲存储器1210提供的加密数据1211进行解密,然后将解密数据再次存储在缓冲存储器1210中(例如,而是作为解密数据,将数据再次存储在缓冲存储器1210中),来获得解密数据1212。
图14是示出执行图9的装置的加密数据的解密操作的处理的示例流程图。
参照图9、图13和图14,在图14中示出的在多个通道中的一个或多个通道中执行解密操作的操作S1401至S1406和S1410至S1413可与在图13中示出的在单个通道中执行解密操作的操作S1301至S1310类似,因此,其重复描述被省略。
在一些实施例中,如上所述,即使当解密操作的编程操作在接收到解密请求的一个或更多个通道(S1401)中正在被执行(S1401至S1406),不同的解密操作或除解密操作之外的操作也可在其他通道上被执行。具体地,如上所述,因为操作在每个通道中以DMA单元为单位以交织方式被执行,所以各个通道的操作是否完成对于不同的通道可以是不同的。因此,即使当在一个或多个通道中的将加密数据编程在NAND闪存的缓冲区域中的处理S1406完成时,也可确定其他通道上的操作是否完成(S1407)。例如,即使当操作S1406在一个或更多个通道中完成时,当其他通道上的操作未完成时,其他通道中的操作也可照样被执行(S1408)。例如,当其他通道上的操作完成时,可确定对所有通道的所有基于DMA的访问是否完成(S1409)。当对所有通道的基于DMA的访问未完成时,可通过重复执行操作S1407至S1409来执行所有操作。当对所有通道的基于DMA的访问完成时,可确定包括执行解密操作的编程操作的通道的所有通道的操作完成。结果,解密操作的编程操作或其他操作可在多个通道中的每个上并行地被执行。
在一些实施例中,如上所述,即使当解密操作的读取操作在接收到解密请求的一个或更多个通道(S1401)中正在被执行(S1401至S1413),不同的解密操作或除解密操作之外的操作也可在其他通道上被执行。具体地,如上所述,因为操作在每个通道中以DMA单元为单位以交织方式被执行,所以各个通道的操作是否完成对于不同的通道可以是不同的。因此,即使当将在一个或更多个通道中解密的数据存储在缓冲存储器中的处理S1413完成时,也可确定其他通道上的操作是否完成(S1414)。例如,即使当处理S1413在一个或更多个通道中完成时,当其他通道上的操作未完成时,其他通道中的操作也可照样被执行(S1415)。例如,当其他通道上的操作完成时,可确定对所有通道的所有基于DMA的访问是否完成(S1416)。当对通道的基于DMA的访问未完成时,操作S1414至S1416可被重复执行。当对通道的基于DMA的访问完成时,可确定包括执行解密操作的读取操作的通道的所有通道的操作完成。结果,解密操作的读取操作或其他操作可在多个通道中的每个上并行地被执行。
图15是示出根据发明的示例实施例的通过使用包括多个通道的数据存储装置来执行加密操作和解密操作的处理的示例流程图。
参照图1和图9至图15,在数据存储装置900的多个通道中的一个或多个通道中执行加密操作的编程操作的操作S1501和S1503至S1506、在数据存储装置900的多个通道中的一个或多个通道中执行加密操作的读取操作的操作S1511至S1514、以及在在数据存储装置900的多个通道中的一个或多个通道中执行解密操作的处理S1501、S1518、S1519、S1505、S1506、S1520至S1522和S1514与以上详细描述的处理相同/类似,并且因此,其重复的详细描述被省略。此外,在多个通道中并行执行加密操作和/或解密操作的操作S1507至S1509和S1515至S1517、或者在多个通道中并行执行加密操作和/或解密操作以及除加密操作和解密操作之外的操作的处理也与以上详细描述的处理相同/类似,并且因此,其重复的详细描述被省略。
在一些实施例中,当从主机等接收到多个加密请求和/或解密请求时(S1501),如上所述,控制器可确定相应的请求是加密请求还是解密请求(S1502)。
在下文中,将描述从主机等接收的多个请求中的一个是加密请求的情况作为示例,但是显然,即使当从主机等接收的多个请求是多个加密和/或解密请求时,也可通过应用以上描述的执行加密操作和/或解密操作的方法来以相同的方式应用下面的描述。
例如,数据存储装置900可通过控制器930在所有通道中以DMA单元为单位执行第一操作。当接收的请求是加密请求时,控制器930可通过第一通道941执行加密操作的编程操作(S1503至S1506)。即使在通过第一通道941执行加密操作的编程操作时,其他操作(例如,除加密操作和解密操作之外的另外的加密操作、另外的解密操作、或除加密操作和解密操作之外的存储器操作)也可在其他通道中并行地被执行。控制器930可确定以DMA单元为单位的所有通道中的第一操作是否完成(S1509)。当以DMA单元为单位的所有通道中的第一操作完成时,可确定在包括第一通道941的所有通道的操作完成。在这种情况下,控制器930可以以DMA单元为单位在所有通道中执行第二操作。控制器可通过第一通道941执行加密操作的读取操作(S1511至S1514)。类似地,即使在通过第一通道941执行加密操作的读取操作时,其他操作(例如另外的加密操作、另外的解密操作、或除加密操作和解密操作之外的存储器操作)也可在其他通道中并行地被执行。控制器930可确定以DMA单元为单位的所有通道中的第二操作是否完成(S1517)。当以DMA单元为单位的所有通道中的第二操作完成时,可确定在包括第一通道941的所有通道中的操作完成。
结果,即使当数据存储装置900从主机等接收到包括多个加密请求和/或多个解密请求的多个请求901时,数据存储装置900也可通过控制器930使用多个通道并行地执行多个请求901。
虽然已经参照发明的示例实施例具体示出和描述了发明,但是将理解,在不脱离由所附权利要求限定的发明的范围的情况下,可对其做出形式上和细节上的各种改变。
Claims (20)
1.一种固态驱动器的操作方法,所述固态驱动器包括缓冲存储器、非易失性存储器和控制器,所述操作方法包括:
从主机接收针对存储在缓冲存储器中的数据的加密请求;以及
响应于加密请求,执行加密操作,
其中,执行加密操作的步骤包括执行编程操作,并且
其中,执行编程操作的步骤包括:
接收非易失性存储器的缓冲区域的物理地址;
通过使包括在控制器中的加密模块处于开启状态以对存储在缓冲存储器中的数据进行加密来生成加密数据;以及
基于物理地址,将加密数据编程在非易失性存储器的缓冲区域中。
2.根据权利要求1所述的操作方法,
其中,非易失性存储器的缓冲区域包括包含在非易失性存储器中的页缓冲器。
3.根据权利要求1所述的操作方法,其中,将加密数据编程在所述缓冲区域中的步骤包括:在仅直接存储器访问编程模式下,对加密数据进行编程。
4.根据权利要求1所述的操作方法,
其中,响应于加密请求执行加密操作的步骤还包括执行读取操作,并且
其中,执行读取操作的步骤包括:使加密模块处于关闭状态,从非易失性存储器的缓冲区域读取加密数据,并且将读取的加密数据存储在缓冲存储器中。
5.根据权利要求4所述的操作方法,
其中,所述缓冲区域包括包含在非易失性存储器中的页缓冲器,并且
其中,执行读取操作的步骤包括:在仅直接存储器访问读取模式下,读取加密数据。
6.根据权利要求4所述的操作方法,
其中,加密模块是包括在控制器中的多个加密模块中的第一加密模块,并且
其中,所述多个加密模块分别通过多个通道结合到非易失性存储器的缓冲区域。
7.根据权利要求6所述的操作方法,
其中,所述多个通道包括第一通道和第二通道,
其中,所述多个加密模块包括第一加密模块和第二加密模块,
其中,接收加密请求的步骤包括:从主机接收分别针对存储在缓冲存储器中的第一数据和第二数据的第一加密请求和第二加密请求,
其中,执行加密操作的步骤包括:
执行第一加密,第一加密包括基于与第一加密请求对应的第一物理地址,通过使用第一加密模块和第一通道来执行编程操作并执行读取操作;以及
执行第二加密,第二加密包括基于与第二加密请求对应的第二物理地址,通过使用第二加密模块和第二通道来执行编程操作并执行读取操作,以及
其中,第一加密和第二加密彼此并行地被执行。
8.根据权利要求6所述的操作方法,
其中,所述多个通道包括第一通道和第二通道,
其中,第一加密模块通过第一通道结合到非易失性存储器的缓冲区域,
其中,所述操作方法还包括:通过使用第二通道对非易失性存储器执行存储器操作,存储器操作包括数据写入操作、数据读取操作和擦除操作中的至少一个,
其中,执行加密操作的步骤包括:通过使用第一通道执行编程操作和执行读取操作,并且
其中,执行加密操作的步骤和执行存储器操作的步骤彼此并行地被执行。
9.一种数据存储装置的操作方法,所述数据存储装置包括缓冲存储器、非易失性存储器和控制器,所述操作方法包括:
从主机接收针对存储在缓冲存储器中的加密数据的解密请求;
响应于解密请求,执行解密操作,
其中,执行解密操作的步骤包括:
接收非易失性存储器的缓冲区域的物理地址;
使包括在控制器中的加密模块处于关闭状态;
基于物理地址,将加密数据编程在非易失性存储器的缓冲区域中;
使加密模块处于开启状态;
通过从非易失性存储器的缓冲区域读取和解密加密数据来生成解密数据;以及
将解密数据存储在缓冲存储器中。
10.根据权利要求9所述的操作方法,
其中,所述缓冲区域包括包含在非易失性存储器中的页缓冲器,并且
其中,将加密数据编程在所述缓冲区域中的步骤包括:在仅直接存储器访问编程模式下,对加密数据进行编程。
11.根据权利要求9所述的操作方法,
其中,所述缓冲区域包括包含在非易失性存储器中的页缓冲器,并且
其中,从所述缓冲区域读取加密数据的步骤包括:在仅直接存储器访问读取模式下,读取加密数据。
12.根据权利要求9所述的操作方法,
其中,加密模块是包括在控制器中的多个加密模块中的第一加密模块,并且
其中,所述多个加密模块分别通过多个通道结合到非易失性存储器的缓冲区域。
13.根据权利要求12所述的操作方法,
其中,所述多个通道包括第一通道和第二通道,
其中,所述多个加密模块包括第一加密模块和第二加密模块,
其中,接收解密请求的步骤包括:从主机接收分别针对存储在缓冲存储器中的第一加密数据和第二加密数据的第一解密请求和第二解密请求,
其中,执行解密操作的步骤包括:
执行第一解密,第一解密包括基于与第一解密请求对应的第一物理地址通过使用第一加密模块来执行解密;以及
执行第二解密,第一解密包括基于与第二解密请求对应的第二物理地址通过使用第二加密模块来执行解密,并且
其中,第一解密和第二解密彼此并行地被执行。
14.根据权利要求12所述的操作方法,
其中,所述多个通道包括第一通道和第二通道,
其中,第一加密模块通过第一通道结合到非易失性存储器的缓冲区域,
其中,所述操作方法还包括:通过使用第二通道对非易失性存储器执行存储器操作,存储器操作包括数据写入操作、数据读取操作和擦除操作中的至少一个,
其中,执行解密操作的步骤使用第一通道,并且
其中,执行解密操作的步骤和执行存储器操作的步骤彼此并行地被执行。
15.一种数据存储装置,包括:
缓冲存储器;
非易失性存储器;以及
控制器,被配置为从主机接收针对存储在缓冲存储器中的数据的加密请求,并且响应于接收的加密请求来控制加密操作,
其中,在加密操作期间,
非易失性存储器的缓冲区域的物理地址被接收,通过使包括在控制器中的加密模块处于开启状态以对存储在缓冲存储器中的数据进行加密来生成加密数据,加密数据基于物理地址被编程在非易失性存储器的缓冲区域中,通过使加密模块处于关闭状态而从非易失性存储器的缓冲区域读取加密数据,并且读取的加密数据被存储在缓冲存储器中。
16.根据权利要求15所述的数据存储装置,
其中,控制器还被配置为从主机接收针对存储在缓冲存储器中的加密数据的解密请求,并且响应于接收的解密请求来控制解密操作,并且
其中,在解密操作期间,非易失性存储器的缓冲区域的物理地址被接收,包括在控制器中的加密模块进入关闭状态,加密数据基于物理地址被编程在非易失性存储器的缓冲区域中,加密模块进入开启状态,通过从非易失性存储器的缓冲区域读取和解密加密数据来生成解密数据,并且解密数据被存储在缓冲存储器中。
17.根据权利要求16所述的数据存储装置,
其中,所述缓冲区域包括包含在非易失性存储器中的页缓冲器,并且
其中,在仅直接存储器访问编程模式和仅直接存储器访问读取模式下,加密操作和解密操作中的至少一个被执行。
18.根据权利要求16所述的数据存储装置,
其中,加密模块是包括在控制器中的多个加密模块中的第一加密模块,并且
其中,所述多个加密模块分别通过多个通道结合到非易失性存储器的缓冲区域。
19.根据权利要求18所述的数据存储装置,
其中,所述多个通道包括第一通道和第二通道,
其中,所述多个加密模块包括第一加密模块和第二加密模块,
其中,响应于从主机接收到加密请求和解密请求,控制器被配置为基于与加密请求对应的第一物理地址通过使用第一加密模块和第一通道来控制加密操作,并且基于与解密请求对应的第二物理地址通过使用第二加密模块和第二通道来控制解密操作,并且
其中,加密操作和解密操作彼此并行地被执行。
20.根据权利要求18所述的数据存储装置,
其中,所述多个通道包括第一通道和第二通道,
其中,第一加密模块通过第一通道结合到非易失性存储器的缓冲区域,
其中,响应于从主机接收到加密请求或解密请求,控制器被配置为基于第一物理地址通过使用加密模块和第一通道来控制加密操作,或者基于第一物理地址通过使用加密模块和第一通道来控制解密操作,并且通过使用第二通道来控制存储器操作,存储器操作包括针对非易失性存储器的数据写入操作、数据读取操作和擦除操作中的至少一个,并且
其中,加密操作或解密操作与存储器操作彼此并行地被执行。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2021-0154271 | 2021-11-10 | ||
KR20210154271 | 2021-11-10 | ||
KR10-2022-0063591 | 2022-05-24 | ||
KR1020220063591A KR20230068271A (ko) | 2021-11-10 | 2022-05-24 | 비휘발성 메모리 장치를 활용한 데이터 저장 장치 및 그것의 동작 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116108508A true CN116108508A (zh) | 2023-05-12 |
Family
ID=86230309
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211395346.7A Pending CN116108508A (zh) | 2021-11-10 | 2022-11-09 | 固态驱动器的操作方法、数据存储装置及其操作方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20230141861A1 (zh) |
CN (1) | CN116108508A (zh) |
-
2022
- 2022-11-03 US US18/052,344 patent/US20230141861A1/en active Pending
- 2022-11-09 CN CN202211395346.7A patent/CN116108508A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20230141861A1 (en) | 2023-05-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10983722B2 (en) | Data storage device using host memory buffer and method of operating the same | |
KR101624007B1 (ko) | 비휘발성 메모리를 갖는 시스템에 대한 효율적인 버퍼링 | |
TWI711923B (zh) | 資料儲存裝置及其操作方法 | |
TWI703571B (zh) | 數據儲存裝置及其操作方法 | |
KR102565918B1 (ko) | 데이터 저장 장치 및 그것의 동작방법 | |
US10067873B2 (en) | Data storage device and operating method thereof | |
KR102233400B1 (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
US11086772B2 (en) | Memory system performing garbage collection operation and operating method of memory system | |
TW201732597A (zh) | 資料儲存裝置和其操作方法 | |
US8886963B2 (en) | Secure relocation of encrypted files | |
CN110929261B (zh) | 存储器系统及其操作方法 | |
US10922000B2 (en) | Controller, operating method thereof, and memory system including the same | |
KR20200071602A (ko) | 저장 장치 및 그 동작 방법 | |
KR20160105625A (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
CN110489056A (zh) | 控制器以及包括该控制器的存储器系统 | |
KR20170094674A (ko) | 데이터 저장 장치 | |
KR102434840B1 (ko) | 데이터 저장 장치 | |
US11263126B2 (en) | Data storage device and operating method thereof | |
US12061808B2 (en) | Storage device for tuning an interface with a host | |
KR20200015185A (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
CN116108508A (zh) | 固态驱动器的操作方法、数据存储装置及其操作方法 | |
KR20220076803A (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
KR20230068271A (ko) | 비휘발성 메모리 장치를 활용한 데이터 저장 장치 및 그것의 동작 방법 | |
CN107301872A (zh) | 半导体存储器装置的操作方法 | |
KR20200034312A (ko) | 데이터 저장 장치 및 그것의 동작 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |