CN109783400A - 储存设备及包含其的电子设备 - Google Patents
储存设备及包含其的电子设备 Download PDFInfo
- Publication number
- CN109783400A CN109783400A CN201811339543.0A CN201811339543A CN109783400A CN 109783400 A CN109783400 A CN 109783400A CN 201811339543 A CN201811339543 A CN 201811339543A CN 109783400 A CN109783400 A CN 109783400A
- Authority
- CN
- China
- Prior art keywords
- host
- memory buffers
- storage
- host memory
- data
- 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.)
- Granted
Links
- 238000003860 storage Methods 0.000 title claims abstract description 359
- 230000015654 memory Effects 0.000 claims abstract description 520
- 239000000872 buffer Substances 0.000 claims abstract description 363
- 239000012536 storage buffer Substances 0.000 claims abstract description 68
- 238000004891 communication Methods 0.000 claims description 64
- 230000004044 response Effects 0.000 claims description 18
- 238000007599 discharging Methods 0.000 claims description 7
- 230000003139 buffering effect Effects 0.000 claims description 6
- 238000000638 solvent extraction Methods 0.000 claims description 5
- 238000000926 separation method Methods 0.000 claims description 4
- 230000005012 migration Effects 0.000 claims description 2
- 238000013508 migration Methods 0.000 claims description 2
- 208000028659 discharge Diseases 0.000 claims 6
- 230000014759 maintenance of location Effects 0.000 claims 1
- 230000002028 premature Effects 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 18
- 230000008859 change Effects 0.000 description 9
- 230000006870 function Effects 0.000 description 8
- 238000000034 method Methods 0.000 description 7
- 238000013507 mapping Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 230000006835 compression Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 230000001934 delay Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000007689 inspection Methods 0.000 description 2
- 229920001621 AMOLED Polymers 0.000 description 1
- 235000006508 Nelumbo nucifera Nutrition 0.000 description 1
- 240000002853 Nelumbo nucifera Species 0.000 description 1
- 235000006510 Nelumbo pentapetala Nutrition 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003455 independent Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000000053 physical method Methods 0.000 description 1
- 238000004886 process control Methods 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Classifications
-
- 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/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- 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/0683—Plurality of storage devices
- G06F3/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
-
- 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/0604—Improving or facilitating administration, e.g. storage management
-
- 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/062—Securing storage systems
- G06F3/0622—Securing storage systems in relation to access
-
- 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/0631—Configuration or reconfiguration of storage systems by allocating resources to 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/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/40—Specific encoding of data in memory or cache
- G06F2212/401—Compressed data
-
- 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/40—Specific encoding of data in memory or cache
- G06F2212/402—Encrypted data
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)
- Memory System (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
一种储存设备,包含存储设备和控制器。存储设备存储与主机存储器上分配的主机存储器缓冲区关联的属性信息。控制器与主机存储器通信,使得与存储设备的操作关联的多个数据基于属性信息缓存于在主机存储器上分配的多个主机存储器缓冲区中。控制器与主机存储器通信,使得对应于属性信息中管理的第一属性组的第一数据缓存于多个主机存储器缓冲区中的第一主机存储器缓冲区,并且对应于不同于第一属性组的第二属性组的第二数据缓存于与第一主机存储器缓冲区分离的第二主机存储器缓冲区中。
Description
相关专利申请的交叉引用
本申请要求2017年11月13日在韩国知识产权局提交的韩国专利申请第10-2017-0150694号的优先权,在此通过引用合并该韩国专利申请的整个内容。
技术领域
本公开涉及一种电子设备,并且更具体地说,涉及与存储和输出数据的储存设备关联的配置和操作。
背景技术
最近,对各种类型的电子设备的使用显著增加。电子设备通常基于包含于该电子设备中的各种电路和设备的操作对用户提供服务。例如,电子设备可以包含保持由电子设备处理的数据的储存设备。储存设备存储数据并且/或者输出存储的数据,并且因此对用户提供储存服务。
由于随着产生的数据量增加对电子设备的使用增多,所以在储存设备中管理和处理数据要求大量资源。例如,随着产生的数据的数量增大,与产生的数据关联的元数据的数量也增大,并且因此要求足够大容量的存储器来缓存数据和元数据。作为另一个示例,随着数据量增大,处理该数据可能要求能够执行许多操作的高计算能力的处理器。
然而,由于诸如成本、设备尺寸、设计局限性和/或诸如此类的各种问题,难以实现具有足够资源的储存设备。这样,使用现有资源对储存设备提供足够的资源可能是有优势的。
发明内容
本发明构思的实施例提供与储存设备关联的配置和操作,通过将主机系统的主机存储器用作缓冲器,该储存设备能够管理各种数据。在某些实施例中,可以准备包含各种属性的属性信息,以分配多个主机存储器缓冲区,并且可以在主机设备与储存设备之间共享该属性信息。可基于该属性信息分配或者释放主机存储器缓冲区。
本发明构思的实施例提供一种储存设备,该储存设备包含存储设备和控制器。存储设备存储属性信息。该属性信息与主机存储器上分配的多个主机存储器缓冲区关联。控制器与主机存储器通信,使得与存储设备的操作关联的多个数据基于属性信息缓存于多个主机存储器缓冲区中。控制器与主机存储器通信,使得对应于在属性信息中管理的第一属性组的多个数据中的第一数据缓存于多个主机存储器缓冲区当中的第一主机存储器缓冲区中,并且对应于与第一属性组不同的第二属性组的多个数据中的第二数据缓存于多个主机存储器缓冲区中的第二主机存储器缓冲区中,第二主机存储器缓冲区与第一主机存储器缓冲区分离。
本发明构思的实施例提供一种储存设备,该储存设备包含:存储设备,该存储设备存储属性信息;以及控制器。该控制器对主机设备提供属性信息,使得基于属性信息独立地分配主机存储器上的多个主机存储器缓冲区,从而当从主机设备收到请求时或者当控制器请求主机设备分配全部多个主机存储器缓冲区或者多个主机存储器缓冲区中的一些时,缓存不同属性组的多个数据。当在主机设备的控制下多个主机存储器缓冲区被分配以分别对应于多个存储区时,控制器与主机存储器通信,其中在主机存储器上,多个存储区在物理上互相分离。
本发明构思的实施例提供一种电子设备,该电子设备包含:主机设备、第一储存设备和主机存储器。第一储存设备存储第一属性信息。主机存储器在主机设备的控制下分配或释放多个主机存储器缓冲区以用于缓存不同属性组的多个数据,该多个数据从第一储存设备输出。主机存储器分配多个主机存储器缓冲区中的第一主机存储器缓冲区,以对应于在第一属性信息中管理的不同属性组中的第一属性组来缓存多个数据中的第一数据,并且分配多个主机存储器缓冲区中的第二主机存储器缓冲区,以对应于不同属性组中的第二属性组来缓存多个数据中的第二数据。第二主机存储器缓冲区与第一主机存储器缓冲区分离,并且第二属性组不同于第一属性组。独立于第二主机存储器缓冲区的分配或释放,分配或释放第一主机存储器缓冲区。
本发明构思的实施例提供一种包含主机存储器的主机设备。该主机设备包含一个或者多个处理器核;以及高速缓冲存储器,该高速缓冲存储器存储一个或者多个处理器核处理过的数据或者一个或者多个处理器核将要处理的数据。根据一个或者多个处理器核的操作,主机设备接收来自储存设备的属性信息,该属性信息与主机存储器上分配的多个主机存储器缓冲区关联,该主机设备与主机存储器通信,使得基于属性信息分配多个主机存储器缓冲区,从而缓存储存设备输出的多个数据,该主机设备基于属性信息控制主机存储器,使得多个主机存储器缓冲区分别缓存多个数据,以分别对应于在属性信息中管理的不同属性组。无论多个主机存储器缓冲区中的一些主机存储器缓冲区的分配是否被释放,主机设备都控制主机存储器,使得保持多个主机存储器缓冲区中的其他主机存储器缓冲区的分配。
本发明构思的实施例提供一种存储系统,该存储系统包含一个或者多个存储设备和控制器。该控制器控制一个或者多个存储设备,使得在一个或者多个存储设备上分配用于储存设备的多个主机存储器缓冲区。多个主机存储器缓冲区缓存从储存设备输出的不同属性组的多个数据。控制器控制一个或者多个存储设备,使得在一个或者多个存储设备的物理上分离的存储区上分别分配多个主机存储器缓冲区,以对应于在从储存设备提供的属性信息中管理的不同属性组来缓存所述多个数据。
本发明构思的实施例提供一种电子设备,该电子设备包含主机设备和第一存储设备。该主机系统包含主机设备和主机存储器。该第一存储设备存储与主机存储器上的多个主机存储器缓冲区关联的信息、管理属性信息、以及将属性信息传送到主机系统。该主机系统在主机设备的控制下基于属性信息分配和释放多个主机存储器缓冲区,并且将与第一存储设备的操作关联的多个数据存储于分配的主机存储器缓冲区中。基于属性信息,互相独立地分配和释放多个主机存储器缓冲区中的每个主机存储器缓冲区。
根据本发明构思的实施例,可以防止主机系统的性能降低,并且可以防止储存设备的可靠性降低。此外,可以有效管理储存设备使用的主机存储器缓冲区。
附图说明
通过下面参考附图所做的描述,本发明构思的上述以及其他目的和特征显而易见。
图1示出根据本发明构思的实施例的电子系统的示例性配置的方框图。
图2示出与图1的储存设备使用的主机存储器关联的示例性配置的方框图。
图3示出根据本发明构思的实施例的属性信息的示例性配置的表描述。
图4示出与基于图3的属性信息分配的主机存储器缓冲区关联的示例性通信的方框图。
图5示出与图4的分配主机存储器缓冲区关联的示例性配置的流程图描述。
图6示出与图4的分配主机存储器缓冲区关联的另一个示例性通信的流程图描述。
图7示出根据图5或6的示例性通信分配主机存储器缓冲区的示例性过程的原理图。
图8示出与释放根据图5或6的示例性通信而分配的主机存储器缓冲区关联的示例性通信的流程图描述。
图9示出与释放根据图5或6的示例性通信而分配的主机存储器缓冲区关联的另一个示例性通信的流程图描述。
图10示出根据图8或9的示例性通信释放主机存储器缓冲区的分配的示例性过程的原理图。
图11示出基于图3的属性信息分配或释放主机存储器缓冲区的示例性操作的流程图描述。
图12示出与基于图3的属性信息分配或释放主机存储器缓冲区关联的示例性通信的流程图描述。
图13示出与基于图3的属性信息分配或释放主机存储器缓冲区关联的示例性通信的流程图描述。
图14示出在主机与储存设备之间共享图3的属性信息的示例性配置的方框图。
图15示出在主机与储存设备之间共享图3的属性信息的另一个示例性配置的方框图。
图16示出根据本发明构思的实施例的属性信息的示例性配置的表描述。
图17示出与图16的属性信息一起采用的示例性配置的方框图。
图18示出与图1的储存设备使用的主机存储器关联的示例性配置的方框图。
图19示出与多个储存设备使用的主机存储器关联的示例性配置的方框图。
图20示出考虑到图19的多个储存设备的工作负荷分配或释放主机存储器缓冲区的示例性操作的流程图描述。
图21示出根据图20的示例性操作分配或释放主机存储器缓冲区的示例性过程的原理图。
具体实施方式
将参考附图详细描述示例性实施例,使得本技术领域的技术人员能够容易地实施示例性实施例。
按照本发明构思的技术领域中的传统,以执行所描述的一个或者多个功能的功能块的形式描述并且示出实施例。这些功能块在此可以称为单元或模块等,利用物理方法由模拟和/或数字电路实现,诸如逻辑门、集成电路、微处理器、微控制器、存储电路、无源电子部件、有源电子部件、光学部件、硬布线电路等,并且任选地可由硬件和/或软件驱动。该电路可以例如嵌在一个或者多个半导体芯片中,或者诸如印刷电路板等的基板支承件上。构成功能块的电路可以由专用硬件、或由处理器(例如,一个或者多个程序控制微处理器和关联电路系统)、或由执行该功能块的某些功能的专用硬件和执行该功能块的其他功能的处理器的组合实现。该实施例的每个功能块可以在物理上分割为两个或者多个交互作用的分立功能块,而不脱离本发明构思的范围。同样,该实施例的功能块可以在物理上组合为更复杂的功能块,而不脱离本发明构思的范围。
I.全系统配置
图1示出根据本发明构思的实施例的电子系统1000的示例性配置的方框图。
如图1的电子系统1000包含:主处理器1101、主机存储器1200、储存设备1300、通信块1400、用户接口1500、以及总线1600。例如,电子系统1000可以是任意电子设备,诸如,台式计算机、膝上型计算机、平板计算机、智能电话、可穿戴设备、工作站、一个或者多个服务器、电动车辆、家用电器、医疗设备等。
主处理器1101可以控制电子系统1000的所有操作。例如,主处理器1101可以包含诸如现场可编程门阵列(FPGA)、专用集成电路(ASIC)和/或诸如此类的电子电路。例如,主处理器可以包含一个或者多个处理器核,并且可以由通用处理器(例如,中央处理单元(CPU))、专用处理器或应用处理器实现。
主机存储器1200可以存储电子系统1000的操作中使用的数据。主机存储器1200可以用作电子系统1000的工作存储器或缓冲存储器。例如,主机存储器1200可以临时存储主处理器1101处理过的数据或将由主处理器1101处理的数据。例如,主机存储器1200可以包含:易失性存储器,诸如,静态随机存取存储器(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)和/或诸如此类的存储器;和/或非易失性存储器,诸如,相变RAM(PRAM)、磁阻RAM(MRAM))、电阻式RAM(ReRAM)、铁电RAM(FRAM)和/或诸如此类的存储器。
储存设备1300可以存储数据,而不管是否对其供电。例如,储存设备1300可以包含(多个)非易失性存储设备,诸如,闪速存储器、PRAM、MRAM、ReRAM、FRAM以及/或诸如此类的存储器。例如,存储设备1300可以包含诸如固态驱动器(SSD)、储存卡、嵌入式储存器和/或诸如此类的存储介质。
通信块1400可以与电子系统1000的外部设备/系统通信。例如,通信块1400可以支持各种无线通信协议中的至少一种,诸如,长期演进(LTE)、码分多址(CDMA)、蓝牙、近场通信(NFC)、无线保真(Wi-Fi)等;以及/或者各种有线通信协议中的至少一种,诸如,传输控制协议/网际协议(TCP/IP)、通用串行总线(USB)等。
用户接口1500可以对用户与电子系统1000之间的通信做仲裁。例如,用户接口1500可以包含输入接口,诸如,键盘、鼠标、触摸板、触摸屏、摄像头、麦克风、陀螺仪传感器、振动传感器和/或诸如此类的输入设备。例如,用户接口1500可以包含输出接口,诸如,发光二极管(LED)显示设备、有机LED(OLED)显示设备、有源阵列OLED(AMOLED)、扬声器、电动机、和/或诸如此类的输出设备。
总线1600可以在电子系统1000的部件之间提供通信通路。电子系统1000的部件可以遵照总线1600的总线格式互相交互数据。例如,总线格式可以包含各种接口协议中的一种或多种,诸如,USB、小型计算机系统接口(SCSI)、外围部件互联快捷接口(PCIe)、移动PCIe(M-PCIe)、高级技术附件(ATA)、并行ATA(PATA)、串行ATA(SATA)、串行附接SCSI(SAS)、非易失性存储器快捷接口(NVMe)、通用闪存(UFS)等。
主处理器1101、主机存储器1200以及总线1600可以构成主机系统(即,主机设备)1005。主机系统1005能够在与电子系统1000的部件通信的同时对用户提供各种服务。例如,主机系统1005可以与储存设备1300通信,使得储存设备1300存储或输出数据。因此,主机系统1005和储存设备1300可以对用户提供储存服务。
储存设备1300可根据本公开的示例性实施例实现。储存设备1300可以使用主机系统1005的(多个)资源。例如,通过将主机存储器1200用作缓冲器,储存设备1300可以管理各种数据。因此,可以对储存设备1300提供有效资源。将参考图2至21描述与储存设备1300关联的示例性配置和操作。
将参考附图描述储存设备1300的示例性实施例。然而,本发明构思的实施例并不局限于下面的描述。在配置成使用主机系统1005的资源的任何类型的设备中都可以采用该示例性实施例。例如,当另一个设备(例如,通信块1400、图像传感器设备(未示出)、音频处理设备(未示出)、和/或诸如此类的设备)能够将主机存储器1200用作缓冲器时,可以对这种设备采用该示例性实施例。为了有助于更好地理解,提供下面的描述,并且下面的描述无意限制本发明构思。
在下面的描述中,将描述电子系统1000的部件之间的通信。根据示例性实施例的通信可以包含部件之间的直接通信和通过(各)其他部件之间的间接通信。因此,尽管参考附图描述了直接通信,但是应当明白这种通信也覆盖间接通信。
图2示出与图1的储存设备1300使用的主机存储器1200关联的示例性配置的方框图。
如参考图1所述,主处理器1101可以通过总线1600与储存设备1300通信。在本公开中,能够访问储存设备1300的对象或设备可以被称为“主机”1100或“主机设备”。主处理器1101可以是能够作为主机1100工作的设备的示例。然而,本发明构思并不局限于此,并且主处理器1101之外的设备也可以用作主机1100。
主机1100可以与主机存储器1200和储存设备1300交换命令和数据。响应主机1100提供的命令,主机存储器1200和储存设备1300可以存储或输出主机1100请求的数据。
储存设备1300可以包含:存储设备1311和1319、控制器1330、以及储存缓冲器1350。图2示出两个存储设备1311和1319,但是可以以各种方式改变或修改包含于储存设备1300中的存储设备的数量,并且下面的描述适用于任意数量的存储设备。
存储设备1311和1319中的每个可以存储或输出主机1100请求的数据。例如,存储设备1311和1319中的每个可以包含闪速存储器,然而,可以以各种方式改变或修改存储设备1311和1319中的每个的类型,如参考图1所述。
控制器1330可以控制储存设备1300的全部操作。例如,控制器1330可以控制存储设备1311和1319,使得存储设备1311和1319存储或输出数据。
例如,控制器1330可以包含内部缓冲器1331。内部缓冲器1331可以包含:易失性存储器,诸如,SRAM、DRAM、SDRAM、和/或诸如此类的存储器;和/或非易失性存储器,诸如,PRAM、MRAM、ReRAM、FRAM、和/或诸如此类的存储器。例如,内部缓冲器1331可临时存储从主机1100收到的数据和命令,以及存储设备1311和1319输出的数据。
储存缓冲器1350可以缓存在储存设备1300的操作中使用的各条数据。例如,储存缓冲器1350可以缓存:映射数据,该映射数据被参考以用于执行在主机1100提供的地址与存储设备1311和1319上的物理地址之间的转换;纠错码(ECC)数据,该纠错码(ECC)数据被参考以用于检测并且校正存储设备1311和1319输出的数据的错误;状态数据,该状态数据与存储设备1311和1319中的每个的状态(例如,无效数据比、损耗水平、和/或诸如此类的状态)关联;和/或诸如此类的数据。为此,储存缓冲器1350可以包含:易失性存储器,诸如,SRAM、DRAM、SDRAM、和/或诸如此类的存储器;和/或非易失性存储器,诸如,PRAM、MRAM、ReRAM、FRAM、和/或诸如此类的存储器。
主机存储器1200可以由包含存储设备1211和1219及控制器1230的存储系统实现。图2示出两个存储设备1211和1219,但是主机存储器1200可以包含一个存储设备或者三个或更多个存储设备,并且下面的描述适用于任意数量的存储设备。
存储设备1211和1219中的每个可以存储或输出主机1100请求的数据。例如,存储设备1211和1219中的每个可以包含DRAM或SDRAM,但是可以各种方式改变或修改存储设备1211和1219中的每个的存储器类型,如参考图1所述。
控制器1230可以控制主存储器1200的全部操作。例如,控制器1230可以控制存储设备1211和1219,使得存储设备1211和1219存储或输出数据。例如,控制器1230可以在主机1100的控制下控制存储设备1211,使得在存储设备1211上分配主机存储器缓冲区HMB。
当储存设备1300将主机存储器1200用作缓冲器时,可以在存储设备1211的存储区分配主机存储器缓冲区HMB。储存设备1300可以与主机存储器1200通信,使得与储存设备1300的操作关联的数据缓存于主机存储器缓冲区HMB中,而非缓存于内部缓冲器1331或储存缓冲器1350中。
因为诸如成本、设备尺寸、设计限制和/或诸如此类的各种问题,所以可能难以实现具有相当大容量的内部缓冲器1331和储存缓冲器1350。相反,当储存设备1300将主机存储器缓冲区HMB用作资源时,储存设备1300可以保证足够的缓冲容量。
在某些情况下,主机1100和主机存储器1200可以允许单个主机存储器缓冲区HMB用于储存设备1300。主机1100可以仅从储存设备1300接收与主机存储器缓冲区HMB的尺寸(例如,最小尺寸、优选尺寸和/或诸如此类的尺寸)关联的信息,以提供主机存储器缓冲区HMB。然而,在这种情况下,主机1100可能因为不充足的信息而不能识别主机存储器缓冲区HMB的使用状态,并且因此可能不能有效管理主机存储器缓冲区HMB。
例如,主机1100意在释放主机存储器缓冲区HMB的分配。即,主机1100可以释放主机存储器缓冲区HMB的分配。在这种情况下,缓存于主机存储器缓冲区HMB中的所有数据都可以迁移到内部缓冲器1331、储存缓冲器1350和/或存储设备1311和1319。然而,因为上下文切换,在主机系统1005中可能发生开销(请见图1),并且因此,主机系统1005的性能可能降质。此外,当迁移数据存储于存储设备1311和1319中时,存储设备1311和1319的寿命可能缩短,或者存储设备1311和1319的可靠性可能降质。
另一方面,在本发明构思的示例性实施例中,主机1100和主机存储器1200可以对储存设备1300提供多个主机存储器缓冲区。可以互相独立地分配或释放每个主机存储器缓冲区。储存设备1300可以管理与主机存储器缓冲区关联的属性信息HMBA(例如,在存储设备1300中)。主机1100和主机存储器1200可以基于属性信息HMBA分配或释放每个主机存储器缓冲区。下面将进一步描述属性信息HMBA。
控制器1230和1330中的每个可以包含一个或者多个配置成执行上面已经描述的和下面将要描述的操作的硬件部件(例如,模拟电路、逻辑电路、和/或诸如此类的电路)。此外或者替代地,控制器1230和1330中的每个可以包含一个或者多个处理器核。上面已经描述的和下面将要描述的控制器1230和1330中的每个的操作可以由软件和/或固件的程序代码实现,并且控制器1230和1330中的每个的(多个)处理器核可以执行该程序代码的指令集。控制器1230和1330中的每个的(多个)处理器核可以处理各种算法运算和/或逻辑运算,从而执行该指令集。
II.属性信息的示例性配置
图3示出根据本发明构思的实施例的属性信息HMBA的示例性配置的表描述。例如,图2的属性信息HMBA可以包含图3所述的属性信息HMBA1。
属性信息HMBA1可以包含与每个主机存储器缓冲区关联的各种属性。属性信息HMBA1中管理的属性可以具有描述如何分配每个主机存储器缓冲区的属性值。
例如,属性信息HMBA1中管理的属性可以包含:每个主机存储器缓冲区的标识符、缓存于每个主机存储器缓冲区中的数据的类型、每个主机存储器缓冲区的释放优先权、每个主机存储器缓冲区的状态、以及每个主机存储器缓冲区的尺寸。然而,应当明白,图3示出属性信息HMBA1的一种可能配置,并且属性信息的配置并不局限于图3的配置。属性信息HMBA1可以不包含图3的一个或者多个属性,也可以进一步包含图3未示出的(多个)其他属性。
例如,标识符可以是被参考以用于唯一地识别每个主机存储器缓冲区的属性。然而,如果其他依据用于唯一地识别每个主机存储器缓冲区,则属性信息HMBA1可以不包含标识符的属性。在某些示例性实施例中,可对应于每个主机存储器缓冲区的分配优先权,给予标识符(例如,可以将较低属性值的标识符给予需要较早分配的主机存储器缓冲区)。
在某些示例性实施例中,一个主机存储器缓冲区可以配置成缓存一种类型的数据。例如,每个主机存储器缓冲区可以缓存映射数据、用户数据、管理数据(例如,ECC数据、状态数据、和/或诸如此类的数据)、电源门控数据(例如,电源中断下需要量保持的数据)、和/或诸如此类的数据中的一个,并且多个主机存储器缓冲区可以缓存数据类型互相不同的数据。
然而,为了便于较好地理解,提供这些示例,而无意限制主机存储器缓冲区缓存的数据类型。在某些示例性实施例中,一个主机存储器缓冲区可以缓存两种或者多种类型的数据,或者两个或者多个主机存储器缓冲区可以缓存一种类型的数据。替代地,主机存储器缓冲区可以配置成缓存数据,而不考虑该数据的类型。
可以根据释放优先权释放每个分配的主机存储器缓冲区。分配的主机存储器缓冲区可以缓存从储存设备1300提供的数据。另一方面,释放的主机存储器缓冲区可以由储存设备1300使用,并且可以由主机1100使用,也可以再次对储存设备1300再次分配释放的主机存储器缓冲区。
当要求释放一个或者多个主机存储器缓冲区时,可以在其他主机存储器缓冲区之前释放具有较高释放优先权的主机存储器缓冲区。例如,可以基于主机存储器缓冲区的管理策略指定释放优先权,也可以基于每个主机存储器缓冲区的状态(例如,每个主机存储器缓冲区是否空闲)指定释放优先权。例如,可以将释放优先权唯一地给予每个主机存储器缓冲区,也可以随着每个主机存储器缓冲区的状态而动态地改变释放优先权。
每个主机存储器缓冲区的状态可以指示例如每个主机存储器缓冲区是否已经被分配、每个主机存储器缓冲区是否被分配而不能释放、或者每个主机存储器缓冲区将被分配。首先,每个主机存储器缓冲区的状态可以指示每个主机存储器缓冲区未被分配。此后,可以根据每个主机存储器缓冲区的分配或释放,改变每个主机存储器缓冲区的状态。
每个主机存储器缓冲区的尺寸可以与被要求分配每个主机存储器缓冲区的存储设备的容量有关。每个主机存储器缓冲区的尺寸可以是固定的。替代地,每个主机存储器缓冲区的尺寸可以配置成选择性地或动态地改变。例如,可以根据主机系统1005的确定和/或储存设备1300的请求,改变每个主机存储器缓冲区的尺寸。
以这种方式,可以将属性信息HMBA1配置成包含指示如何分配多个主机存储器缓冲区中的每个的信息。可以对各种属性进行管理,以分配一个主机存储器缓冲区。用于描述一个主机存储器缓冲区的属性值可以构成一个属性组。例如,对于标识符“0”的主机存储器缓冲区,属性信息HMBA1可以管理由标识符“0”、映射数据的数据类型、第三释放优先权、分配状态以及100兆字节(MB)的尺寸描述的属性组。
当属性信息HMBA1包含标识符属性时,可以基于标识符属性的属性值,唯一地识别每个属性组。例如,可以基于标识符“0”识别映射数据的属性组,并且可以基于标识符“1”识别用户数据的属性组。
图4示出与基于图3的属性信息HMBA1分配的主机存储器缓冲区关联的示例性配置的方框图。
储存设备1300可以存储属性信息HMBA1。例如,在制造了储存设备1300后,而在销售存储设备1300之前,可以先准备属性信息HMBA1。在某些示例性实施例中,可以准备属性信息HMBA1,使得先指定所有属性的属性值。替代地,可以不先准备某些属性的属性值,而可以根据储存设备1300的操作,动态地给予某些属性的属性值。
例如,属性信息HMBA1可以存储于储存设备1300的存储设备1311中(参见图2)。然而,属性信息HMBA1的储存位置并不局限于存储设备1311。例如,属性信息HMBA1可以分布式地存储于储存设备1300内的几个存储设备中。替代地,储存设备1300还可以包含辅助存储器,用于存储属性信息HMBA1。在储存设备1300操作时,属性信息HMBA1装载于储存设备1300的内部缓冲器1331和/或储存缓冲器1350。
例如,可以以独立数据的形式存储属性信息HMBA1。替代地,可以将属性信息HMBA1插入软件和/或固件的程序代码中,并且可以将该程序代码的数据存储于储存设备1300中。
可以参考属性信息HMBA1以用于在主机存储器120上对储存设备1300分配多个主机存储器缓冲区。主机1100可以通过总线1600与储存设备1300和主机存储器1200通信,从而控制主机存储器1200,使得基于属性信息HMBA1分配主机存储器缓冲区。
主机1100可以根据一个或者多个处理器核1110的操作执行下面描述的操作。高速缓冲存储器1130可以临时存储一个或者多个处理器核1110处理过的数据或待由一个或者多个处理器核1110处理的数据。
例如,在主机1100基于属性信息HMBA1的控制下,主机存储器1200的控制器1230(请参见图2)可以控制存储设备1211,使得在存储设备1211上分配主机存储器缓冲区HMB0、HMB1和HMB2。图4示出在一个存储设备1211上分配主机存储器缓冲区HMB0、HMB1和HMB2。然而,在某些示例性实施例中,还可以对除了存储设备1211还例如至少包含存储设备1219的主机存储器1200的几个存储设备分布式地分配主机存储器缓冲区HMB0、HMB1和HMB2。
主机存储器缓冲区HMB0、HMB1和HMB2可以分别缓存分别对应于属性信息HMBA1中管理的不同属性组的数据。缓存于主机存储器缓冲区HMB0、HMB1和HMB2中的数据可以包含与储存设备1300的操作关联的数据(例如,存储设备1311和1319的操作)。
一起参考图3和4,例如,可以分配主机存储器缓冲区HMB0、HMB1和HMB2,以分别缓存对应于标识符“0”的属性组的数据(例如,映射数据)、对应于标识符“1”的属性组的数据(例如,用户数据)、以及对应于标识符“2”的属性组的数据(例如,管理数据)。在图3和4的示例中,也可以不分配用于缓存对应于标识符“3”的属性组的数据的主机存储器缓冲区。
例如,可以分配主机存储器缓冲区HMB1,以具有50MB的尺寸,并且可以释放该主机存储器缓冲区HMB1。例如,当要求释放分配的主机存储器缓冲区时,可以首先释放主机存储器缓冲区HMB1。这样,可以分配主机存储器缓冲区HMB0、HMB1和HMB2,从而可适合属性信息HMBA1的属性。
可分别对应于主机存储器1200上的物理上分离的存储区分配主机存储器缓冲区HMB0、HMB1和HMB2。例如,分配主机存储器缓冲区HMB0的存储区可以在物理上与分配主机存储器缓冲区HMB1的存储区分离。因此,可以互相独立地分配或释放主机存储器缓冲区HMB0、HMB1和HMB2。主机存储器缓冲区HMB0、HMB1和HMB2的存储地点可以是固定的,也可以是可变的。
由于在主机存储器1200上分配主机存储器缓冲区HMB0、HMB1和HMB2,以对应于各自的属性组,所以储存设备1300的控制器1330可以与主机存储器1200通信。例如,控制器1330可以将数据输出到主机存储器1200,使得多个数据对应于各自的属性组缓存于主机存储器缓冲区HMB0、HMB1和HMB2中。此外,控制器1300可以参考缓存于主机存储器缓冲区HMB0、HMB1和HMB2中的数据来控制存储设备1311和1319的操作。
III.多个主机存储器缓冲区的分配和释放
图5示出与图4的分配主机存储器缓冲区HMB0、HMB1和HMB2关联的示例性通信的流程图描述。可以根据主机1100的处理器核1110的操作、主机存储器1200的控制器1230的操作以及储存设备1300的控制器1330的操作执行图5的示例性通信。
在操作S110中,主机1100检验储存设备1300是否支持主机存储器缓冲区功能和是否要求分配主机存储器缓冲区。例如,可以在电子系统1000自举时,或者在预置主机1100与储存设备1300之间的通信连接时,执行操作S110。替代地,当主机1100确定在储存设备1300的操作时可以接受对储存设备1300分配可用容量的主机存储器1200时,可以执行操作S110。
在操作S120,储存设备1300对主机1100的检验请求做出响应。当储存设备1300支持主机存储器缓冲区功能并且要求分配主机存储器缓冲区时,储存设备1300的响应可以包含属性信息HMBA1。因此,主机1100可以接收来自储存设备1300的属性信息HMBA1。
主机1100可以基于储存设备1300提供的属性信息HMBA1检验是否适合分配主机存储器缓冲区。为此,在操作S150中,主机1100检验主机存储器1200的状态。
作为检验的结果,当不适合分配主机存储器缓冲区时(例如,当主机存储器1200的可用资源不足时,或者请求的主机存储器缓冲区已经被分配时),可以不分配主机存储器缓冲区,并且主机1100可以对储存设备1300提供错误响应。另一方面,当适合分配主机存储器缓冲区时,在步骤S160,在主存储器1200上对储存设备1300分配请求的主机存储器缓冲区。
因此,在操作S170,主机存储器1200对主机1100提供完成分配主机存储器缓冲区的响应。此外,在操作S180,主机1100向储存设备1300通知分配主机存储器缓冲区已完成。
此后,在操作S190,储存设备1300可以访问分配的主机存储器缓冲区。因此,指示分配的主机存储器缓冲区的属性的属性组的数据可以缓存于分配的主机存储器缓冲区中,而非缓存于储存设备1300中。
图6示出与图4的分配主机存储器缓冲区HMB0、HMB1和HMB2关联的另一个示例性通信的流程图描述。可以根据主机1100的处理器核1110的操作、主机存储器1200的控制器1230的操作以及储存设备1300的控制器1330的操作执行图6的示例性通信。
例如,可以存在尚未分配或尚未释放的主机存储器缓冲区,并且可以对储存设备1300要求主机存储器缓冲区。在这种情况下,在操作S210,储存设备1300请求主机1100分配主机存储器缓冲区。
在操作S215,主机1100旨在响应储存设备1300的请求检验存储于储存设备1300中的属性信息HMBA1。因此,在操作S220,储存设备1300对主机1100提供包含属性信息HMBA1的响应,并且主机1100可以接收来自储存设备1300的属性信息HMBA1。
图6示出作为对主机1100的请求的响应,储存设备1300示出属性信息HMBA1。然而,在某些示例性实施例中,储存设备1300可以将属性信息HMBA1以及操作S210中的分配请求一起提供给主机1100。
操作S250至S290分别相当于图5的操作S150至S190,并且在此省略对操作S250至S290的重复描述。在操作S250至S290,由于在主机存储器1200上分配主机存储器缓冲区,所以储存设备1300可以访问分配的主机存储器缓冲区。如上所述,主机存储器缓冲区HMB0、HMB1和HMB2可以具有基于属性信息HMBA1的属性。主机1100可以参考属性信息HMBA1以控制主机存储器1200,使得主机存储器缓冲区HMB0、HMB1和HMB2被分配。为此,可以在主机1100与储存设备1300之间共享属性信息HMBA1。
可以执行图5的操作S120和图6的操作S220,以对主机1100提供属性信息HMBA1。在图5的示例中,可以根据主机1100的先前请求,共享属性信息HMBA1,并且在图6的示例中,可以根据储存设备1300的先前请求,共享属性信息HMBA1。此外,可以以各种方式改变或者修改通信,从而在主机1100与储存设备1300之间共享属性信息HMBA1。
当从主机1100收到请求时(参考图5),或当控制器1330请求主机1100分配全部多个主机存储器缓冲区或多个主机存储器缓冲区中的一些时(参考图6),控制器1330可以对主机1100提供属性信息HMBA1。因此,可以在控制器1230的控制下基于属性信息HMBA1在数据存储器1200上分配请求的主机存储器缓冲区,并且控制器1330可以与主机存储器1200通信,以访问请求的主机存储器缓冲区。
图7示出根据图5或6的示例性通信分配主机存储器缓冲区HMB0、HMB1和HMB2的示例性过程的原理图。
例如,首先,可不在主机存储器1200(例如,存储设备1211)上分配主机存储器缓冲区(状态A)。在这种状态下,储存设备1300可不使用主机存储器1200。此后,可以根据图5或6的示例性通信在主机存储器1200上分配主机存储器缓冲区HMB0、HMB1和HMB2(状态B、状态C和状态D)。在这种状态下,储存设备1300可以将主机存储器1200用作缓冲器。
可基于属性信息HMBA1独立地分配主机存储器缓冲区HMB0、HMB1和HMB2。例如,可考虑到属性信息HMBA1中管理的标识符“0”的属性组的属性独立地分配主机存储器缓冲区HMB0,而不考虑主机存储器缓冲区HMB1和HMB2是否被分配。例如,可对应于100MB的存储区分配主机存储器缓冲区HMB0。还可考虑到各自属性组的属性独立地分配主机存储器缓冲区HMB1和HMB2。
例如,可以执行图5或6的示例性通信,以分配主机存储器缓冲区HMB0、HMB1和HMB2中的每个。在某些示例性实施例中,可根据一个通信分配一个主机存储器缓冲区,并且可根据分配优先权属性或标识符属性的属性值顺序地分配主机存储器缓冲区HMB0、HMB1和HMB2。
在某些示例性实施例中,与图7的不同,可根据一个通信一起分配几个主机存储器缓冲区。例如,可根据一个通信一起分配主机存储器缓冲区HMB0、HMB1和HMB2。例如,当主机存储器1200的可用容量足够时,可在主机1100和控制器1230的控制下一起分配主机存储器缓冲区HMB0、HMB1和HMB2。例如,在根据一个通信一起分配了主机存储器缓冲区HMB0和HMB1后,可根据下面的一个通信独立地分配主机存储器缓冲区HMB2。
例如,在分配了主机存储器缓冲区HMB0、HMB1和HMB2后,可要求分配新主机存储器缓冲区(例如,用于缓存对应于图3的标识符“3”的属性组的数据的主机存储器缓冲区)。例如,当在状态D主机存储器1200的可用容量等于或者大于50MB时,可根据图5或6的示例性通信分配新主机存储器缓冲区。
同时,控制器1330可独立地访问主机存储器缓冲区HMB0、HMB1和HMB2。例如,独立于相对于缓存于主机存储器缓冲区HMB0中的数据而与主机存储器1200的通信,控制器1330可相对于缓存于主机存储器缓冲区HMB1中的数据与主机存储器1200通信。因此,控制器1330可分别访问每个主机存储器缓冲区,以仅读取预定数据,而非一次性读取缓存于所有主机存储器缓冲区HMB0、HMB1和HMB2中的数据。
图8示出与释放根据图5或6的示例性通信分配的主机存储器缓冲区关联的示例性通信的流程图描述。可根据主机1100的处理器核1110的操作、主机存储器1200的控制器1230的操作以及储存设备1300的控制器1330的操作执行图8的示例性通信。
在操作S310,主机1100将要求释放分配的主机存储器缓冲区通知储存设备1300。例如,当主机存储器1200的可用容量不足于操作主机1100时,或者当要求分配另一个主机存储器缓冲区时,可要求释放一些已经分配的主机存储器缓冲区。主机1100可以对储存设备1300提供通知,使得储存设备1300准备好释放主机存储器缓冲区。
同时,为了获得与分配的主机存储器缓冲区以及待释放的主机存储器缓冲区关联的信息,主机1100需要属性信息HMBA1。因此,在操作S320,储存设备1300对主机1100提供包含属性信息HMBA1的响应,并且主机1100可以接收来自储存设备1300的属性信息HMBA1。
主机1100可基于属性信息HMBA1在分配的主机存储器缓冲区中确定将较早(例如,第一)释放的主机存储器缓冲区。在操作S330,主机1100将要释放的主机存储器缓冲区的信息通知储存设备1300。
在操作S335,缓存于要释放的主机存储器缓冲区中的数据从主机存储器1200迁移到储存设备1300。因此,在释放分配的主机存储器缓冲区之前,储存设备1300可以接收缓存于要释放的主机存储器缓冲区中的数据。此后,在操作S340,储存设备1300将完成数据迁移通知主机1100。当不存在缓存于要释放的主机存储器缓冲区中的数据时(例如,主机存储器缓冲区空闲并且可释放),可不执行操作S335和操作S340。
在操作S350,主机1100检验主机存储器1200的状态,以请求释放主机存储器缓冲区。在操作S360,释放被确定的主机存储器缓冲区的分配。在操作S370,主机存储器1200将完成释放主机存储器缓冲区的响应提供给主机1100。
同时,在操作S345,储存设备1300终止指向要被释放的主机存储器缓冲区的访问。因此,在释放了分配的主机存储器缓冲区后,控制器1330可以不访问释放的主机存储器缓冲区。
图9示出与释放根据图5或6的示例性通信分配的主机存储器缓冲区关联的另一个示例性通信的流程图描述。可根据主机1100的处理器核1110的操作、主机存储器1200的控制器1230的操作以及储存设备1300的控制器1330的操作执行图9的示例性通信。
例如,尽管分配了特定主机存储器缓冲区,但是储存设备1300仍可以不使用该特定主机存储器缓冲区,并且该特定主机存储器缓冲区可以是空闲的。在这种情况下,在操作S410,储存设备1300请求主机1100释放分配的处于空闲的主机存储器缓冲区。
在操作S415,主机1100旨在响应储存设备1300的请求检验存储于储存设备1300中的属性信息HMBA1。因此,在操作S420,储存设备1300可以对主机1100提供包含属性信息HMBA1的响应,并且主机1100可以接收来自储存设备1300的属性信息HMBA1。
图9示出储存设备1300响应主机1100的请求输出属性信息HMBA1。然而,在某些示例性实施例中,储存设备1300可以将属性信息HMBA1以及操作S410中的释放请求一起提供给主机1100。
操作S430至S470分别相当于图8的操作S330至S370,并且下面省略对操作S430至S470的重复描述。在操作S430至S470期间,缓存于要释放的主机存储器缓冲区中的数据可以迁移到储存设备1300,并且可以释放该主机存储器缓冲区。
可以执行图8的操作S320和图9的操作S420,以对主机1100提供属性信息HMBA1。可根据图8的示例中的主机1100的先前通知共享属性信息HMBA1,并且可根据图9的示例中的储存设备1300的先前请求共享属性信息HMBA1。
图10示出释放根据图8或9的示例性通信的主机存储器缓冲区的分配的示例性过程的原理图。
例如,可以已经在主机存储器1200上分配了主机存储器缓冲区HMB0、HMB1和HMB2(状态D)。例如,主机1100和/或储存设备1300可能需要主机存储器1200内额外的50MB的可用容量。在这种情况下,主机1100可参考属性信息HMBA1在主机存储器缓冲区HMB0、HMB1和HMB2中确定要释放的主机存储器缓冲区。
参考图3的属性信息HMBA1,应当明白,对主机存储器缓冲区HMB1分配的存储区的尺寸是50MB,主机存储器缓冲区HMB1可释放,并且主机存储器缓冲区HMB1的释放优先权最高。因此,可在主机1100和控制器1230的控制下首先释放主机存储器缓冲区HMB1(状态E)。因此,可在主机存储器1200中保证额外50MB的可用容量。
作为另一个示例,主机1100和/或储存设备1300可能需要在主机存储器1200中额外的200MB的可用容量。在这种情况下,如果仅释放主机存储器缓冲区HMB1的分配,可能不够用。因此,可以进一步释放与第二释放优先权的属性组关联的主机存储器缓冲区HMB2的分配(状态F)。因此,在主机存储器1200中可以保证额外200MB的可用容量。
这样,可基于属性信息HMBA1释放主机存储器缓冲区HMB0、HMB1和HMB2。例如,可以较早(或者第一)释放主机存储器缓冲区HMB0、HMB1和HMB2中在属性信息HMBA1中管理的从而具有较高释放优先权的主机存储器缓冲区。
图10的示例示出基于释放优先权属性和尺寸属性的释放过程。然而,可考虑到各自属性组的各种属性独立地释放主机存储器缓冲区HMB0、HMB1和HMB2。可以执行图8或9的示例性通信,以释放主机存储器缓冲区HMB0、HMB1和HMB2中每个的分配。
可以互相独立地分配或释放主机存储器缓冲区HMB0、HMB1和HMB2。例如,可以独立于主机存储器缓冲区HMB1的分配或释放来分配或释放主机存储器缓冲区HMB0。
例如,在主机1100的控制下,不考虑主机存储器缓冲区HMB0、HMB1和HMB2中的一些的分配是否被释放,可以保持主机存储器缓冲区HMB0、HMB1和HMB2中的其他的分配。因此,例如,不考虑主机存储器缓冲区HMB1的分配是否被释放,可以保持主机存储器缓冲区HMB0的分配,并且因此,对应于标识符“0”的属性组的数据可以持续缓存于主机存储器缓冲区HMB0中。
在某些示例性实施例中,可以独立地释放多个主机存储器缓冲区的分配。因此,能够部分地释放主机存储器缓冲区。即,可以释放一些主机存储器缓冲区。因为一部分(即,一些)主机存储器缓冲区被释放,所以缓存数据可以从主机存储器1200迁移到储存设备1300。
根据该示例性实施例,与采用单个主机存储器缓冲区HMB的情况(参考图2)相比,可以减少迁移数据的数量。因此,可以将因为上下文切换而在主机系统1005中发生的开销降低到最小。因此,可以防止主机系统1005的性能降低,并且可以防止储存设备1300的可靠性降低。此外,可以有效管理主机存储器缓冲区。
在某些示例性实施例中,可以较早释放主机存储器缓冲区HMB0、HMB1和HMB2中空闲的或者缓存少量数据的主机存储器缓冲区。根据该示例性实施例,可以进一步减少数据从主机存储器1200迁移到储存设备1300的数量。因此,可以将系统性能、可靠性和效率提高到最高。
图11示出基于图3的属性信息HMBA1分配或释放主机存储器缓冲区的示例性操作的流程图描述。可根据主机1100的处理器核1110的操作执行图11的示例性操作。
在操作S510,主机1100确定要求分配主机存储器缓冲区。可响应主机1100的确定(参考图5的操作S110)或响应储存设备1300的请求(参考图6的操作S210)执行该确定。在操作S520,相对于分配主机存储器缓冲区,主机1100接收来自储存设备1300的属性信息HMBA1。
在操作S530,主机1100确定是否适合分配主机存储器缓冲区(即,是否可能)。例如,主机1100可以确定主机存储器1200的当前状态是否满足对应于要分配的主机存储器缓冲区的属性组的属性。例如,当计划分配主机存储器缓冲区HMB0时,主机1100可以确定主机存储器1200的可用容量是否等于或者大于100MB。当在操作S530确定适合分配主机存储器缓冲区时(“是”),此后,在步骤S540,在主机存储器1200上分配主机存储器缓冲区。
另一方面,在某些情况下,不适合分配主机存储器缓冲区(例如,主机存储器1200的可用容量可能不足)。在这种情况下,在操作S530,主机1100确定不适合分配主机存储器缓冲区(“否”),并且此后,在操作S550,主机1100确定(参考属性信息HMBA1)是否在主机存储器1200上分配了可释放的主机存储器缓冲区(即,存在)。
例如,当在操作S550,主机1100确定不存在可释放的主机存储器缓冲区时(例如,当储存设备1300因为对所有主机存储器缓冲区的完全访问而处于忙状态时)(“否”),此后,在操作S580,主机1100确定不适合分配主机存储器缓冲区。在这种情况下,不分配请求的主机存储器缓冲区。
例如,当在操作S550,主机1100确定存在可释放的主机存储器缓冲区或空闲主机存储器缓冲区时(“是”),此后,在操作S560,主机1100确定释放现有可释放的主机存储器缓冲区是否更有利。例如,在某些情况下,在操作S560,对于性能、可靠性、效率等,主机1100确定保持已经分配的并且可释放的主机存储器缓冲区比释放已经分配的并且可释放的主机存储器缓冲区更有利(“否”)。在这种情况下,此后,在操作S580,主机1100确定不适合分配主机存储器缓冲区。
另一方面,在某些情况下(例如,当现有主机存储器缓冲区空闲时),在操作S560,主机1100确定释放现有主机存储器缓冲区并且分配新主机存储器缓冲区比保持现有有利(“是”)。在这种情况下,在操作S570,主机1100释放现有主机存储器缓冲区的分配。此后,在操作S540,可以在主机存储器1200上分配新主机存储器缓冲区。
已经参考图5至11描述了与主机1100、主机存储器1200和储存设备1300关联的通信和操作。在某些示例性实施例中,可为了执行执行通信和操作定义新协议。替代地,可基于现有协议执行这些通信和操作。
图12示出与基于图3的属性信息HMBA1分配或释放主机存储器缓冲区关联的示例性通信的流程图描述。例如,可以采用NVMe技术规范中提供的协议,执行图12的示例性通信。
在操作S610,主机1100将ID命令发送到储存设备1300。可以发送ID命令,以请求识别储存设备1300的诸如类型、配置、容量和/或诸如此类的各种信息。在某些示例性实施例中,可以采用ID命令将主机存储器缓冲区的分配(参考图5的操作S110)或主机存储器缓冲区的释放(参考图8的操作S310)通知储存设备1300。
在操作S620,储存设备1300将对ID命令的响应发送到主机1100。可以发送该响应,以提供储存设备1300的各种信息,诸如,类型、配置、容量和/或诸如此类的信息。在某些示例性实施例中,可以采用该响应以对主机1100提供属性信息HMBA1(参考图5的操作S120和图8的操作S320)。
在操作S630,主机1100可以将SetFeature命令发送到储存设备1300。可以发送该SetFeature命令,以设置主机1100与储存设备1300通信要求的条件。在某些示例性实施例中,可以发送SetFeature命令,以将分配的主机存储器缓冲区(参考图5的操作S180)或释放主机存储器缓冲区(参考图5的操作S330)的信息通知储存设备1300。
图13示出与基于图3的属性信息HMBA1分配或释放主机存储器缓冲区关联的另一个示例性通信的流程图描述。例如,可采用NVMe技术规范提供的协议执行图13的示例性通信。
在操作S710,主机1100将异步事件请求(AER)命令发送到储存设备1300。当特定事件发生在储存设备1300中时,可以发送AER命令,以请求储存设备1300提供发生特定事件的通知(例如,温度的升高、错误和/或诸如此类的事件)。在某些示例性实施例中,可以采用AER命令来请求储存设备1300提供指示要求分配或者释放主机存储器缓冲区的通知。
在操作S720,储存设备1300将AER完成响应发送到主机1100。可以发送AER完成响应,以将发生特定事件通知主机1100。在某些示例性实施例中,可以采用AER完成响应来将要求分配主机存储器缓冲区(参考图6的操作S210)或者释放主机存储器缓冲区(参考图9的操作S410)通知主机1100。
在操作S730,主机1100将GetLogPage命令发送到储存设备1300。可以发送GetLogPage命令以请求与发生的事件关联的信息。在某些示例性实施例中,可以采用GetLogPage命令来请求来自储存设备1300的属性信息HMBA1(参考图6的操作S215和图9的操作S415)。
在操作S740,储存设备1300将对GetLogPage命令的响应发送到主机1100。可以发送该响应,以提供与储存设备1300发生的事件关联的信息。在某些示例性实施例中,可以采用该响应来对主机1100提供属性信息HMBA1(参考图6的操作S220和图9的操作S420)。
在操作S750,主机1100将SetFeature命令发送到储存设备1300。与图12的操作S630类似,可以采用SetFeature命令来将分配的主机存储器缓冲区(参考图6的操作S280)或释放主机存储器缓冲区(参考图9的操作S430)的信息通知储存设备1300。
这样,当采用现有协议和命令时,可以改变或修改命令格式,以提供属性信息HMBA1和与主机存储器缓冲区关联的信息。例如,通过包含于命令格式的保留字段或新附加字段中,可以提供属性信息HMBA1和与主机存储器缓冲区关联的信息。
然而,提供图12和13的示例性通信是为了有助于较好地理解,并且不应当将该示例性通信理解为限制。可以以各种方式改变或修改主机1100与储存设备1300之间的通信,从而共享属性信息HMBA1并且分配或释放主机存储器缓冲区。
IV.替代配置
图14示出在主机1100与储存设备1300之间共享图3的属性信息HMBA1的示例性配置的方框图。图15示出在主机1100与储存设备1300之间共享图3的属性信息HMBA1的另一个示例性配置的方框图。
参考图14,在某些示例性实施例中,储存设备1300可以包含辅助存储器1370。辅助存储器1370可以存储属性信息HMBA1。辅助存储器1370可以配置成被主机1100访问。例如,辅助存储器1370可以通过边带接口或附加接脚连接到主机1100。例如,辅助存储器1370可以包含寄存器类型的存储器。
主机1100可以访问辅助存储器1370,以参考属性信息HMBA1。当要求分配或释放主机存储器缓冲区时,主机1100可以直接使用辅助存储器1370的属性信息HMBA1。在这种情况下,可以省略为了从储存设备1300向主机1100提供属性信息HMBA1而进行的通信。
参考图15,在某些示例性实施例中,主机1100可以包含辅助存储器1170。辅助存储器1170可以存储从储存设备1300收到的属性信息HMBA1。例如,辅助存储器1170可以包含寄存器类型的存储器。主机1100可以参考存储于辅助存储器1170中的属性信息HMBA1,而非每次通信时从储存设备1300接收属性信息HMBA1。
在某些示例性实施例中,响应满足参考条件,可根据与储存设备1300的通信来更新存储于辅助存储器1170中的属性信息HMBA1。例如,可以周期性地更新存储于辅助存储器1170中的属性信息HMBA1。作为另一个示例,可以每当储存设备1300的属性信息HMBA1发生变化时更新存储于辅助存储器1170中的属性信息HMBA1。因此,主机1100可以参考最新属性信息HMBA1。
图16示出根据某些示例性实施例的属性信息的示例性配置的表描述。例如,图2的属性信息HMBA可以包含图16的属性信息HMBA2。图17示出可与图16的属性信息HMBA2一起使用的示例性配置的方框图。
参考图17,在某些示例性实施例中,储存设备1300还可以包含:片上总线1306、加密器1391、压缩器1393、解密器1396、以及解压缩器1398。储存设备1300包含存储设备1311和1319、控制器1330以及储存缓冲器1350,如参考图2所述。在某些示例性实施例中,存储设备1311可以包含图16的属性信息HMBA2。
在某些示例性实施例中,与储存设备1300的操作关联的数据可以通过总线1600输出到储存设备1300的外部部件,即,主机存储器1200和主机1100。主机存储器1200包含存储设备1211和1219,如参考图2所述。然而,因为安全问题,可以要求与储存设备1300的操作关联的一些数据防止对外部部件暴露。
因此,加密器1391可以对要提供给主机存储器1200的数据加密。可采用解密器1396对从主机存储器1200收到的加密数据解密。加密器1391和解密器1386可以按照各种加密/解密算法中的至少一种工作。
随着储存设备1300中管理的数据量增大,要缓存于主机存储器缓冲区中的数据的数量也可增大。可以采用压缩器1393来压缩要提供给主机存储器1200的数据。当采用压缩器1393时,可以减少要提供给主机存储器1200的数据的数量,并且可以实现小尺寸的主机存储器缓冲区。因此,可以改善管理主机存储器缓冲区的效率。
可以采用解压缩器1398来对从主机存储器1200收到的压缩数据解压缩。压缩器1393和解压缩器1398可以按照各种压缩/解压缩算法中的至少一种工作。
在被加密器1391加密并且/或者被压缩器1393压缩后,可以将控制器1330输出的多个数据提供给主机存储器1200。例如,当控制器1330旨在将缓存于储存缓冲器1350中的原始数据MDo缓存于主机存储器缓冲区中时,可以将对应于该原始数据MDo的加密的和/或压缩的数据输出到主机存储器1200。因此,可以将转换数据MDc缓存于主机存储器缓冲区HMB0中。
当储存设备1300旨在使用原始数据MDo时,储存设备1300可以从主机存储器1200接收转换数据MDc。转换数据MDc可以由解压缩器1398解压缩,并且/或者由解密器1396解密。因此,储存设备1300可以获得原始数据MDo。
同时,可以在不加密并且不压缩的情况下输出主机1100参考的数据。例如,属性信息HMBA2可以被主机1100直接参考,并且因此,可以在不加密并且不压缩的情况下,将其提供给主机1100。
参见图16,属性信息HMBA2可以包含与每个主机存储器缓冲区关联的属性。例如,与图3的属性信息HMBA1相比,属性信息HMBA2还可以包含与缓存于每个主机存储器缓冲区中的数据是否被加密器1391加密以及/或者缓存于每个主机存储器缓冲区中的数据是否被压缩器1393压缩关联的信息。
例如,这对防止管理数据对外部部件暴露更好,并且管理数据可以要求大尺寸的主机存储器缓冲区。因此,管理数据可以在被加密和压缩后缓存于主机存储器缓冲区中。
返回图17,可以通过片上总线1306连接储存设备1300的部件。片上总线1306可以提供储存设备1300的部件之间的通信通路。与图17所示的不同,在其他实施例中,加密器1391的位置可以与压缩器1393的位置交换,并且解密器1396的地点可以与解压缩器1398的位置交换。
图18示出与图1的储存设备1300使用的主机存储器1200关联的示例性配置的方框图。下面省略对图18中与图2的并且参考图2描述的部件类似的部件的配置和功能做描述。
在参考图2至17描述的示例性实施例中,可根据主机1100的干预分配或释放主机存储器缓冲区。然而,参考图18,在某些示例性实施例中,可在主机存储器1200的控制器1230的控制下分配或释放主机存储器缓冲区,而无需主机1100干预。
例如,当控制器1230具有高计算能力时,控制器1230可以在内部基于储存设备1300提供的属性信息HMBA1分配或释放主机存储器缓冲区HMB0和HMB1,而无需外部控制。为此,控制器1230可在没有主机1100干预的情况下与控制器1330通信。根据该示例性实施例,可以降低主机1100的工作负荷,并且可以缩短通信时间。
V.应用于多个储存设备
图19示出与多个储存设备使用的主机存储器1200关联的示例性配置的方框图。
在参考图2至18描述的示例性实施例中,一个储存设备1300将主机存储器1200用作缓冲器。然而,参考图19,在某些示例性实施例中,多个储存设备1301和1302中的每个可以将主机存储器1200用作缓冲器。下面省略例如对图19中与图2所示的并且参考图2描述的部件类似的部件的配置和功能做描述。
储存设备1301可以存储属性信息HMBAa,并且储存设备1302可以存储属性信息HMBAb。例如,属性信息HMBAa和HMBAb中的每个可以配置成与图3的属性信息HMBA1或者图16的属性信息HMBA2相同或者类似。可基于属性信息HMBAa分配用于储存设备1301的(多个)主机存储器缓冲区(例如,主机存储器缓冲区HMBa0、HMBa1和HMBa2),并且可基于属性信息HMBAb分配用于储存设备1302的主机存储器缓冲区(例如,主机存储器缓冲区HMBb0)。
可对应于属性信息HMBAa中管理的属性组分配主机存储器缓冲区HMBa0、HMBa1和HMBa2,以缓存从储存设备1301输出的数据。可对应于属性信息HMBAb中管理的属性组分配主机存储器缓冲区HMBb0,以缓存从储存设备1302输出的数据。可在物理上分离的存储区上各自地分配主机存储器缓冲区HMBa0、HMBa1、HMBa2和HMBb0。
图19示出两个储存设备1301和1302。然而,可以以各种方式改变或者修改连接到总线1600的储存设备的数量。此外,与图19所示的不同,在其他实施例中,可以在除了存储设备1200之外至少包含存储设备1219的几个存储设备上分布式地分配主机存储器缓冲区HMBa0、HMBa1、HMBa2和HMBb0。
图20示出考虑到图19的多个储存设备1301和1302的工作负荷分配或释放主机存储器缓冲区的示例性操作的流程图描述。可根据主机1100的处理器核1110的操作执行图20的示例性操作。图21示出根据图20的示例性操作分配或释放主机存储器缓冲区的示例性过程的原理图。
在图20的操作S810中,在主机1100和控制器1230的控制下,在主机存储器1200上分配用于各自的储存设备1301和1302的主机存储器缓冲区HMBa0、HMBa1、HMBa2和HMBb0(图21的状态G)。同时,在图20的操作S820,主机1100监视储存设备1301和1302中每个的工作负荷。
该工作负荷可与储存设备1301和1302中的每个中处理的数据的数量关联。该工作负荷可随数据量的增大而加重。例如,当储存设备中处理的数据量增大时,主机1100与储存设备之间交换的数据的数量可以增大。在该示例中,可以参考主机1100与储存设备之间交换的数据的数量以监视工作负荷。
在图20的操作S830中,主机1100基于监视结果确定储存设备1301和1302中每个的工作负荷比是否发生变化。例如,当主机1100与储存设备1302之间交换的数据的数量增大时,工作负荷比可发生变化。这意味着储存设备1302的工作负荷变得更重了。
当在操作S830主机1100确定储存设备1302的工作负荷变得更重时(“是”),此后执行操作S840。在操作S840,在主机1100的控制下,释放存储设备1301的具有较轻工作负荷的主机存储器缓冲区,并且额外分配存储设备1302的具有较重工作负荷的主机存储器缓冲区。例如,可以释放用于储存设备1301的主机存储器缓冲区HMBa1和HMBa2。相反,可在被分配了主机存储器缓冲区HMBa1和HMBa2的存储区中新分配储存设备1302的主机存储器缓冲区HMBb1和HMBb2(图21的状态H)。
在该示例性实施例中,具有较重工作负荷的储存设备1302可以保证足够的缓存容量。即,可以改善管理主机存储器缓冲区的效率。与参考图5至11描述的类似,可以参考属性信息HMBAa和HMBAa中的每个分配和释放主机存储器缓冲区(例如,考虑到分配优先权、释放优先权、尺寸和/或诸如此类的信息)。
另一方面,在某些情况下,在操作S830,主机1100确定工作负荷比未发生变化(“否”)。在这种情况下,在图20的操作S950中,可以保持当前分配的主机存储器缓冲区HMBa0、HMBa1、HMBa2和HMBb0。
上面的描述旨在提供用于实现本发明构思的示例性配置和操作。除了上面描述的示例性实施例,本发明构思的范围和精神还可以包含通过简单改变或修改上述示例性实施例获得的实施方案。此外,本发明构思的范围和精神包含通过之后容易地改变或修改上面描述的示例性实施例实现的实施方案。
Claims (25)
1.一种储存设备,包括:
存储设备,被配置成存储属性信息,所述属性信息与主机存储器上分配的多个主机存储器缓冲区关联,以及
控制器,被配置成
与所述主机存储器通信,使得与所述存储设备的操作关联的多个数据基于所述属性信息缓存于所述多个主机存储器缓冲区中,并且
与所述主机存储器通信,使得对应于所述属性信息中管理的第一属性组的所述多个数据中的第一数据缓存于所述多个主机存储器缓冲区中的第一主机存储器缓冲区中,并且对应于与所述第一属性组不同的第二属性组的所述多个数据中的第二数据缓存于所述多个主机存储器缓冲区中的第二主机存储器缓冲区中,所述第二主机存储器缓冲区与所述第一主机存储器缓冲区分离。
2.根据权利要求1所述的储存设备,其中所述属性信息包括如下中的至少一个:所述多个主机存储器缓冲区中的每个的标识符、状态和尺寸、缓存于所述多个主机存储器缓冲区中的每个中的数据的类型、以及所述多个主机存储器缓冲区中的每个的释放优先权。
3.根据权利要求1所述的储存设备,其中所述属性信息包括与所述多个主机存储器缓冲区中的每个关联的第一属性和第二属性,并且
基于所述第一属性的第一属性值识别所述第一属性组,并且基于所述第一属性的第二属性值识别所述第二属性组。
4.根据权利要求1所述的储存设备,其中所述控制器进一步被配置成当在所述主机存储器上分配所述多个主机存储器缓冲区从而对应于所述属性信息中管理的不同属性组来分别缓存所述多个数据时,与所述主机存储器通信。
5.根据权利要求1所述的储存设备,其中所述控制器进一步被配置成当在所述主机存储器上分别对应于第一存储区和第二存储区分配所述第一主机存储器缓冲区和所述第二主机存储器缓冲区时,与所述主机存储器通信,并且
所述第一存储区在物理上与所述第二存储区分离。
6.根据权利要求1所述的储存设备,其中所述控制器进一步被配置成独立于相对于所述第二数据与所述主机存储器的通信而相对于所述第一数据与所述主机存储器通信。
7.一种储存设备,包括:
存储设备,被配置成存储属性信息,以及
控制器,被配置成
当从所述主机设备收到请求时,或者当所述控制器请求所述主机设备分配全部所述多个主机存储器缓冲区或者分配所述多个主机存储器缓冲区中的一些时,向主机设备提供所述属性信息,使得基于所述属性信息独立地分配主机存储器上的多个主机存储器缓冲区,从而缓存不同属性组的多个数据,并且
当在所述主机设备的控制下分别对应于多个存储区分配所述多个主机存储器缓冲区时,与所述主机存储器通信,其中在所述主机存储器上,所述多个存储区在物理上互相分离。
8.根据权利要求7所述的储存设备,其中所述控制器进一步被配置成向所述主机设备提供所述属性信息,使得释放所述多个主机存储器缓冲区中被分配的主机存储器缓冲区,并且
当释放所述分配的主机存储器缓冲区时,终止对所述分配的主机存储器缓冲区的访问。
9.根据权利要求8所述的储存设备,其中所述控制器进一步被配置成当从所述主机设备收到释放通知时,或者当所述控制器请求所述主机设备释放所述分配的主机存储器缓冲区时,向所述主机设备提供所述属性信息。
10.根据权利要求8所述的储存设备,其中所述控制器进一步被配置成在释放所述分配的主机存储器缓冲区之前接收缓存于所述分配的主机存储器缓冲区中的数据。
11.根据权利要求7所述的储存设备,其中所述控制器进一步被配置成与所述主机存储器通信,使得无论在所述多个主机存储器缓冲区中分配的用于缓存对应于所述属性信息中管理的第一属性组的第一数据的第一主机存储器缓冲区是否被释放,对应于不同于所述第一属性组的第二属性组的第二数据被缓存于所述多个主机存储器缓冲区中的第二主机存储器缓冲区中,所述第二主机存储器缓冲区与所述第一主机存储器缓冲区分离。
12.根据权利要求7所述的储存设备,进一步包括:
加密器,被配置成对要提供给所述主机存储器的数据进行加密;以及
压缩器,被配置成对要提供给所述主机存储器的数据进行压缩,
其中所述加密的数据和所述压缩数据由所述控制器提供给所述主机存储器,作为所述多个数据。
13.根据权利要求12所述的储存设备,其中所述属性信息包括与缓存于所述多个主机存储器缓冲区中的每个中的所述多个数据是否被加密和压缩关联的信息。
14.一种电子设备,包括:
主机设备;
第一储存设备,被配置成存储第一属性信息;以及
主机存储器,被配置成
在所述主机设备的控制下,分配或释放用于缓存不同属性组的多个数据的多个主机存储器缓冲区,所述多个数据由所述第一储存设备输出,
分配所述多个主机存储器缓冲区中的第一主机存储器缓冲区,以对应于所述第一属性信息中管理的所述不同属性组中的第一属性组来缓存所述多个数据中的第一数据,并且
分配所述多个主机存储器缓冲区中的第二主机存储器缓冲区,以对应于所述不同属性组中的第二属性组缓存所述多个数据中的第二数据,所述第二主机存储器缓冲区与所述第一主机存储器缓冲区分离,并且所述第二属性组不同于所述第一属性组,
其中独立于所述第二主机存储器缓冲区的分配或释放,分配或释放所述第一主机存储器缓冲区。
15.根据权利要求14所述的电子设备,其中所述主机设备被配置成基于所述第一属性信息确定是否适合在所述主机存储器上分配所述第一主机存储器缓冲区。
16.根据权利要求15所述的电子设备,其中所述主机设备进一步被配置成与所述主机存储器通信,使得当所述主机存储器的当前状态满足所述第一属性组的属性时,在所述主机存储器上分配所述第一主机存储器缓冲区。
17.根据权利要求15所述的电子设备,其中当所述主机存储器的当前状态不满足所述第一属性组的属性并且在所述主机存储器上分配了所述多个主机存储器缓冲区中的一个或者多个可释放的主机存储器缓冲区时,所述主机设备进一步被配置成与所述主机存储器通信,使得在释放全部所述一个或者多个可释放主机存储器缓冲区或所述一个或者多个可释放主机存储器缓冲区中的一些后,在所述主机存储器上分配所述第一主机存储器缓冲区。
18.根据权利要求14所述的电子设备,其中所述主机设备被配置成基于所述第一属性信息确定在所述分配的第一主机存储器缓冲区和第二主机存储器缓冲区中要较早释放的主机存储器缓冲区。
19.根据权利要求18所述的电子设备,其中所述第一属性信息包括所述分配的第一主机存储器缓冲区和第二主机存储器缓冲区的每个的释放优先权信息,并且
所述主机设备进一步配置成与所述主机存储器通信,使得所述分配的第一主机存储器缓冲区和第二主机存储器缓冲区中被管理成在所述第一属性信息中具有较高释放优先权的主机存储器缓冲区或者空闲的主机存储器缓冲区或者正缓存较少数量的数据的主机存储器缓冲区被确定为要较早释放的所述主机存储器缓冲区。
20.根据权利要求14所述的电子设备,进一步包括:
第二储存设备,被配置成存储第二属性信息,
其中所述主机存储器进一步被配置成分配所述多个主机存储器缓冲区中的第三主机存储器缓冲区来缓存对应于所述第二属性信息中管理的第三属性组的第三数据,所述第三数据由所述第二储存设备输出,并且所述第三主机存储器缓冲区与所述分配的第一主机存储器缓冲区和第二主机存储器缓冲区分离,并且
其中当在所述主机设备与所述第二储存设备之间交换的数据的数量变得大于在所述主机设备与所述第一储存设备之间交换的数据的数量时,在所述主机设备的控制下,释放所述第二主机存储器缓冲区,并且在已经分配了所述释放的第二主机存储器缓冲区的存储区中分配用于所述第二储存设备的新主机存储器缓冲区。
21.根据权利要求14所述的电子设备,其中所述第一储存设备包括辅助存储器,所述辅助存储器被配置成存储所述第一属性信息,并且
所述主机设备配置成访问所述辅助存储器,从而参考所述第一属性信息。
22.一种主机设备,被配置成使用主机存储器,所述主机设备包括:
一个或者多个处理器核;以及
高速缓冲存储器,被配置成存储所述一个或者多个处理器核已经处理的数据或者所述一个或者多个处理器核将要处理的数据,
其中根据所述一个或者多个处理器核的操作,所述主机设备被配置成
接收来自储存设备的属性信息,所述属性信息与所述主机存储器上分配的多个主机存储器缓冲区关联,
与所述主机存储器通信,使得基于所述属性信息分配所述多个主机存储器缓冲区,从而缓存从所述储存设备输出的多个数据,
基于所述属性信息控制所述主机存储器,使得所述多个主机存储器缓冲区分别缓存所述多个数据,从而分别对应于所述属性信息中管理的不同属性组,并且
控制所述主机存储器,使得无论所述多个主机存储器缓冲区中的一些主机存储器缓冲区的分配是否被释放,都保持所述多个主机存储器缓冲区中的其他主机存储器缓冲区的分配。
23.根据权利要求22所述的主机设备,其中根据所述一个或者多个处理器核的进一步操作,所述主机设备进一步被配置成
从所述储存设备接收与释放所述分配的多个主机存储器缓冲区中的一些关联的属性信息,
基于与释放关联的所述属性信息,确定所述分配的多个主机存储器缓冲区中要较早释放的主机存储器缓冲区,并且
与所述主机存储器通信,使得在缓存于要较早释放的所述主机存储器缓冲区中的所有数据迁移到所述储存设备后,释放要较早释放的所述主机存储器缓冲区的分配。
24.根据权利要求22所述的主机设备,进一步包括:
辅助存储器,被配置成存储所述属性信息,
其中作为满足参考条件的响应,根据与所述储存设备的通信,更新存储于所述辅助存储器中的所述属性信息。
25.一种存储系统,包括:
一个或者多个存储设备;以及
控制器,被配置成控制所述一个或者多个存储设备,使得在所述一个或者多个存储设备上分配用于储存设备的多个主机存储器缓冲区,
其中所述多个主机存储器缓冲区被配置成缓存不同属性组的多个数据,所述多个数据由所述储存设备输出,并且
其中所述控制器进一步被配置成控制所述一个或者多个存储设备,使得在所述一个或者多个存储设备的物理上分离的存储区上分别分配所述多个主机存储器缓冲区,以对应于在由所述储存设备提供的属性信息中管理的所述不同属性组缓存所述多个数据。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2017-0150694 | 2017-11-13 | ||
KR1020170150694A KR102384759B1 (ko) | 2017-11-13 | 2017-11-13 | 호스트 메모리 버퍼를 사용하기 위해 호스트 장치와 속성 정보를 공유하는 스토리지 장치 및 그것을 포함하는 전자 장치 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109783400A true CN109783400A (zh) | 2019-05-21 |
CN109783400B CN109783400B (zh) | 2024-07-02 |
Family
ID=66433366
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811339543.0A Active CN109783400B (zh) | 2017-11-13 | 2018-11-12 | 储存设备及包含其的电子设备 |
Country Status (3)
Country | Link |
---|---|
US (2) | US10936245B2 (zh) |
KR (1) | KR102384759B1 (zh) |
CN (1) | CN109783400B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115795519A (zh) * | 2023-01-18 | 2023-03-14 | 苏州浪潮智能科技有限公司 | 数据加解密处理方法、装置、电子设备及存储介质 |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10558576B2 (en) * | 2018-01-22 | 2020-02-11 | Western Digital Technologies, Inc. | Storage device with rapid overlay access |
KR102653373B1 (ko) * | 2018-09-13 | 2024-04-02 | 에스케이하이닉스 주식회사 | 컨트롤러 및 컨트롤러의 동작방법 |
KR20200088709A (ko) * | 2019-01-15 | 2020-07-23 | 에스케이하이닉스 주식회사 | 저장 장치 및 그 동작 방법 |
US11544205B2 (en) * | 2020-11-20 | 2023-01-03 | Western Digital Technologies, Inc. | Peer storage devices sharing host control data |
JP2022125787A (ja) | 2021-02-17 | 2022-08-29 | キオクシア株式会社 | メモリシステムおよび制御方法 |
US11403011B1 (en) | 2021-04-05 | 2022-08-02 | Western Digital Technologies, Inc. | Host memory buffer allocation management |
KR20230051335A (ko) | 2021-10-08 | 2023-04-18 | 삼성전자주식회사 | 스토리지 장치 및 전자 시스템 |
KR102547825B1 (ko) * | 2021-11-10 | 2023-06-27 | 삼성전자주식회사 | 호스트 메모리 버퍼를 사용하는 메모리 시스템 및 그것의 동작 방법 |
US12014080B2 (en) | 2021-11-10 | 2024-06-18 | Samsung Electronics Co., Ltd. | Memory system using host memory buffer and operation method thereof |
TW202321897A (zh) * | 2021-11-15 | 2023-06-01 | 南韓商三星電子股份有限公司 | 儲存裝置及其操作方法 |
US11971771B2 (en) | 2022-01-25 | 2024-04-30 | Western Digital Technologies, Inc. | Peer storage device messaging for power management |
US20240232068A1 (en) * | 2023-01-05 | 2024-07-11 | Western Digital Technologies, Inc. | Data Storage Device and Method for Race-Based Data Access in a Multiple Host Memory Buffer System |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103119912A (zh) * | 2010-09-20 | 2013-05-22 | 高通股份有限公司 | 多处理器计算平台中的处理器间通信技术 |
US20130179752A1 (en) * | 2012-01-09 | 2013-07-11 | Hojun Shim | Storage device and nonvolatile memory device and operating method thereof |
US20140337560A1 (en) * | 2013-05-13 | 2014-11-13 | Qualcomm Incorporated | System and Method for High Performance and Low Cost Flash Translation Layer |
CN106997324A (zh) * | 2015-12-14 | 2017-08-01 | 三星电子株式会社 | 非易失性存储器模块、具有其的计算系统及其操作方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4697146B2 (ja) | 2007-01-19 | 2011-06-08 | Tdk株式会社 | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 |
KR20150055413A (ko) * | 2013-11-13 | 2015-05-21 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 |
US9563382B2 (en) * | 2014-06-05 | 2017-02-07 | Sandisk Technologies Llc | Methods, systems, and computer readable media for providing flexible host memory buffer |
US10268584B2 (en) * | 2014-08-20 | 2019-04-23 | Sandisk Technologies Llc | Adaptive host memory buffer (HMB) caching using unassisted hinting |
US20160054943A1 (en) | 2014-08-22 | 2016-02-25 | Kabushiki Kaisha Toshiba | Information processing apparatus |
US10055236B2 (en) * | 2015-07-02 | 2018-08-21 | Sandisk Technologies Llc | Runtime data storage and/or retrieval |
US10866737B2 (en) | 2015-09-17 | 2020-12-15 | Intel Corporation | Apparatus, method and system to store information for a solid state drive |
-
2017
- 2017-11-13 KR KR1020170150694A patent/KR102384759B1/ko active IP Right Grant
-
2018
- 2018-06-20 US US16/012,807 patent/US10936245B2/en active Active
- 2018-11-12 CN CN201811339543.0A patent/CN109783400B/zh active Active
-
2021
- 2021-02-03 US US17/166,299 patent/US11435943B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103119912A (zh) * | 2010-09-20 | 2013-05-22 | 高通股份有限公司 | 多处理器计算平台中的处理器间通信技术 |
US20130179752A1 (en) * | 2012-01-09 | 2013-07-11 | Hojun Shim | Storage device and nonvolatile memory device and operating method thereof |
US20140337560A1 (en) * | 2013-05-13 | 2014-11-13 | Qualcomm Incorporated | System and Method for High Performance and Low Cost Flash Translation Layer |
CN106997324A (zh) * | 2015-12-14 | 2017-08-01 | 三星电子株式会社 | 非易失性存储器模块、具有其的计算系统及其操作方法 |
Non-Patent Citations (1)
Title |
---|
姜国松;: "一种高效、可扩展细粒度缓存管理混合存储研究", 计算机科学, no. 08 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115795519A (zh) * | 2023-01-18 | 2023-03-14 | 苏州浪潮智能科技有限公司 | 数据加解密处理方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
KR20190054448A (ko) | 2019-05-22 |
US11435943B2 (en) | 2022-09-06 |
US20190146709A1 (en) | 2019-05-16 |
KR102384759B1 (ko) | 2022-04-11 |
US10936245B2 (en) | 2021-03-02 |
CN109783400B (zh) | 2024-07-02 |
US20210165605A1 (en) | 2021-06-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109783400A (zh) | 储存设备及包含其的电子设备 | |
US11929927B2 (en) | Network interface for data transport in heterogeneous computing environments | |
US11640242B2 (en) | Namespace management in non-volatile memory devices | |
US20180150256A1 (en) | Technologies for data deduplication in disaggregated architectures | |
US20160132541A1 (en) | Efficient implementations for mapreduce systems | |
KR102219845B1 (ko) | 어드레스를 압축하기 위한 방법 및 장치 | |
US20220027284A1 (en) | Reading Sequential Data from Memory Using a Pivot Table | |
CN102681952A (zh) | 将数据写入存储设备的方法与存储设备 | |
CN104516824B (zh) | 数据存储系统中的存储管理方法和系统 | |
US20200218646A1 (en) | System and method of fpga-executed flash translation layer in multiple solid state drives | |
US11954051B2 (en) | Managed NAND Flash memory region control against endurance hacking | |
CN103595720B (zh) | 卸载数据传输方法、装置和客户端 | |
KR20190054730A (ko) | 스토리지 장치 및 스토리지 장치의 동작 방법 | |
TWI772550B (zh) | 記憶體系統、計算系統及其操作方法 | |
US20220300165A1 (en) | Cooperative Storage Architecture | |
JP2006012169A5 (zh) | ||
CN108062279A (zh) | 用于处理数据的方法和设备 | |
CN116302468A (zh) | 用于在分离式计算系统中执行工作负荷管理的方法和装置 | |
US11740800B2 (en) | Alleviating memory hotspots on systems with multiple memory controllers | |
KR102394695B1 (ko) | 메모리 시스템 및 그것의 동작방법 | |
WO2024088150A1 (zh) | 基于开放通道固态盘的数据存储方法、装置、设备、介质及产品 | |
US20240086110A1 (en) | Data storage method, storage apparatus and host | |
US20240143498A1 (en) | Methods, devices, and systems for allocating memory space | |
CN201936292U (zh) | 一种单载体多目标缓存系统 |
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 | ||
GR01 | Patent grant |