CN111143234A - 存储设备、包括这种存储设备的系统及其操作方法 - Google Patents
存储设备、包括这种存储设备的系统及其操作方法 Download PDFInfo
- Publication number
- CN111143234A CN111143234A CN201911064637.6A CN201911064637A CN111143234A CN 111143234 A CN111143234 A CN 111143234A CN 201911064637 A CN201911064637 A CN 201911064637A CN 111143234 A CN111143234 A CN 111143234A
- Authority
- CN
- China
- Prior art keywords
- stream
- buffer
- storage device
- data
- host
- 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 description 25
- 239000000872 buffer Substances 0.000 claims abstract description 236
- 230000015654 memory Effects 0.000 claims abstract description 165
- 239000007787 solid Substances 0.000 claims abstract description 14
- 230000002093 peripheral effect Effects 0.000 claims description 17
- 238000012005 ligant binding assay Methods 0.000 claims description 7
- 238000013507 mapping Methods 0.000 claims description 6
- 238000001514 detection method Methods 0.000 claims description 3
- 238000012545 processing Methods 0.000 description 33
- 230000004044 response Effects 0.000 description 30
- 238000010586 diagram Methods 0.000 description 28
- 238000012546 transfer Methods 0.000 description 21
- 230000008569 process Effects 0.000 description 15
- 230000006870 function Effects 0.000 description 8
- 238000004891 communication Methods 0.000 description 7
- 230000009467 reduction Effects 0.000 description 6
- 230000003936 working memory Effects 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 3
- 239000004744 fabric Substances 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000002829 reductive effect Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 101100045541 Homo sapiens TBCD gene Proteins 0.000 description 1
- 101150093640 SSD1 gene Proteins 0.000 description 1
- 101100111629 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) KAR2 gene Proteins 0.000 description 1
- 102100030290 Tubulin-specific chaperone D Human genes 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000011017 operating method Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000004065 semiconductor 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
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- 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/0632—Configuration or reconfiguration of storage systems by initialisation or re-initialisation 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/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
- 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- 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/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4221—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
-
- 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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration 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/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- 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/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- 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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0665—Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- 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/60—Details of cache memory
- G06F2212/6022—Using a prefetch buffer or dedicated prefetch cache
-
- 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/7201—Logical to physical mapping or translation of blocks or pages
-
- 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
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
Abstract
连接到使用虚拟存储器的主机的存储设备包括固态驱动器,所述固态驱动器接收包括逻辑块地址(LBA)列表和块大小的流存取命令,并且根据所述LBA列表和所述块大小从非易失性存储器设备预取请求的流数据,而无需额外的命令。预取的流数据被顺序地加载到缓冲器上,并且存储设备内计算块访问在所述虚拟存储器上注册的流区域,来以所述块大小为单位顺序地读取加载到所述缓冲器上的流数据。所述缓冲器被映射到所述流区域的虚拟存储器地址。
Description
相关申请的交叉引用
本申请要求于2018年11月2日在韩国知识产权局提交的韩国专利申请第10-2018-0133653号以及于2019年3月8日在韩国知识产权局提交的韩国专利申请第10-2019-0027103号的优先权,其全部内容通过引用并入本文。
技术领域
本公开涉及电子设备,更具体地,涉及有效地存储和输出流数据的存储设备、包括这种存储设备的计算系统或电子系统及其操作方法。
背景技术
如今,各种电子设备被广泛使用,其根据包括在其中的电子电路的操作执行独特的功能。电子设备可以例如执行独特的功能以向用户提供服务。
固态驱动器(以下称为“SSD”)是存储设备的示例。响应于外部设备(例如,主机或外围设备)的请求,SSD可以存储数据或可以输出存储的数据。SSD可以通过将数据存储在非易失性存储器设备(NVM)中或输出存储在非易失性存储器设备中的数据来向用户提供存储服务。
随着信息处理技术的发展以及大量数据的生成,一个重要的问题是如何在存储设备处快速地处理大量数据,同时满足各种用户需求,比如存储设备的性能和容量。具体地,在提供诸如流数据的服务的系统中,流数据的发送和接收可能会导致存储设备的带宽的减小,从而明显降低服务质量。因此,需要改进存储设备的配置和操作,以满足使用流数据的系统的各种用户需求。
发明内容
本发明构思的实施例提供了一种用于在采用接口以应用存储器资源的共享技术的系统中,最小化在传输流数据时发生的带宽的减小并最小化在传输流数据时发生的存储设备的传输延迟时间的技术。
本发明构思的实施例提供了一种连接到使用虚拟存储器的主机的存储设备。存储设备包括固态驱动器和存储设备内计算块,所述固态驱动器包括非易失性存储器设备和缓冲器,所述固态驱动器接收包括逻辑块地址(LBA)列表和块大小的流存取命令,根据LBA列表和块大小从非易失性存储器块预取请求的流数据而无需额外的命令,并且将预取的流数据顺序地加载到缓冲器上;所述存储设备内计算块访问在虚拟存储器上注册的流区域,来以块大小为单位读取加载到缓冲器上的流数据。所述缓冲器被映射到所述流区域的虚拟存储器地址上。
本发明构思的实施例还提供了一种计算系统,所述计算系统包括主机、存储设备和现场可编程门阵列(FPGA),其中主机通过使用虚拟存储器空间来管理存储器资源;存储设备包括非易失性存储器设备和缓冲器,存储设备接收流存取命令,根据包括在流存取命令中的LBA列表和块大小从非易失性存储器设备预取请求的流数据而无需额外的命令,并且将预取的流数据顺序地加载到缓冲器上,FPGA访问在虚拟存储器空间处注册的流区域,来以块大小为单位顺序地读取加载到缓冲器上的流数据。
本发明构思的实施例还提供了一种存储设备的操作方法,所述存储设备连接到使用虚拟存储器空间的主机,并且包括非易失性存储器设备和缓冲器。该操作方法包括:存储设备将缓冲器的物理地址映射到与虚拟存储器空间的流窗口相对应的地址范围;在存储设备处接收流存取命令,所述流存取命令包括与流数据相对应的LBA列表和流数据的管理单位;存储设备根据LBA列表从非易失性存储器设备预取流数据,来以管理单位将预取的流数据顺序地加载到缓冲器上;在目标设备处访问虚拟存储器空间的流窗口;将对流窗口的访问重定向到缓冲器;以及以管理单位将顺序加载到所述缓冲器上的流数据传送到所述目标设备。
本发明构思的实施例还提供了一种电子系统,该电子系统包括主机设备和存储设备,所述主机设备包括虚拟存储器空间;所述存储设备包括非易失性存储器、缓冲器、控制器和存储设备内计算块。控制器接收流存取命令,并且参考流存取命令将流数据从非易失性存储器顺序地加载到缓冲器。存储设备内计算块访问虚拟存储器空间来顺序地读取加载在缓冲器中的流数据。
附图说明
鉴于以下参考附图作出的详细描述,本发明构思的上述和其他目的和特征将变得清楚。
图1示出了根据本发明构思的实施例的包括存储设备的计算系统的示例性配置的框图。
图2示出了图1的主机和存储设备的示例性配置的框图。
图3A示出了根据本发明构思的实施例的展示构成流存取命令的属性的示图。
图3B示出了根据本发明构思的实施例的展示以NVMe接口协议配置流存取命令的方式的表格。
图3C示出了根据本发明构思的实施例的展示以块大小为单位来管理的流数据的示图。
图4示出了主机的虚拟存储器空间的存储器映射。
图5示出了根据本发明构思的实施例的SSD的示例性配置的框图。
图6示出了图5的SSD控制器的示例性配置的框图。
图7示出了根据本发明构思的实施例的图6的流管理器的操作的流程图。
图8示出了根据本发明构思的实施例的根据流读取命令在其上传送数据的路径的框图。
图9示出了根据本发明构思的实施例的展示如何管理具有循环队列形状的缓冲器的示图。
图10示出了根据本发明构思的实施例的用于在存储设备中执行的存储内计算的流读取命令以及存储设备对流读取命令的响应的示图。
图11示出了根据本发明构思的实施例的图5的SSD控制器的框图。
图12示出了图11的流管理器的配置的框图。
图13示出了根据本发明构思的实施例的展示指派主机的虚拟存储器空间中的流区域的方法。
图14示出了根据本发明构思的实施例的根据流写入命令在其上传送数据的路径的框图。
图15示出了根据本发明构思的实施例的包括存储设备的计算系统的框图。
图16示出了图15的主机、存储设备和FPGA的示例性配置的框图。
具体实施方式
在下文中,将对本发明构思的实施例进行详细且清楚的描述,以使得本领域技术人员(下文中称为“普通技术人员”)可以容易地实现本发明构思。
如在发明构思的领域中常见的,可以依据执行所描述的一个或多个功能的块来描述和示出实施例。在本文中可以称为单元或模块等的这些块通过诸如逻辑门、集成电路、微处理器、微控制器、存储器电路、无源电子组件、有源电子组件、光学组件、硬连线电路等的模拟和/或数字电路物理地实现,并且可以可选地由固件和/或软件驱动。例如,电路可以具体实现在一个或多个半导体芯片中、或者在诸如印刷电路板等的衬底支撑件上。构成块的电路可以由专用硬件或处理器(例如,一个或多个编程的微处理器和相关联的电路)来实现,或者由用来执行该块的一些功能的专用硬件和用来执行该块的其他功能的处理器的组合来实现。在不脱离本发明构思的范围的情况下,实施例的每个块可以物理地分成两个或更多个交互且分立的块。类似地,在不脱离本发明构思的范围的情况下,实施例的块可以物理地组合成更复杂的块。
图1示出了根据本发明构思的实施例的包括存储设备的计算系统的示例性配置的框图。计算系统1000可以是以下各项之一:台式计算机、膝上型计算机、平板电脑、智能手机、可穿戴设备、服务器、电动汽车、家庭应用等。通常可以将计算系统1000表征为电子系统、设备或装置。参考图1,可以将计算系统1000粗略地分为主机设备1100和存储设备1200。
主机设备1100可以执行各种算术/逻辑操作以控制计算系统1000的整体操作。主机设备1100可以包括中央处理单元(CPU)1110、图形处理单元(GPU)1130、主机存储器1150、网络接口卡(NIC)1170和接口电路1190。备选地,主机设备1100可以是包括一个或多个处理器核的设备,比如通用的CPU、专用的专用集成电路(ASIC)或应用处理器。
中央处理单元1110执行加载到主机存储器1150上的各种软件(例如,应用程序、操作系统和设备驱动程序)。中央处理单元1110可以执行操作系统(OS)和应用程序。中央处理单元1110可以例如用同构多核处理器或异构多核处理器来实现。具体地,中央处理单元1110可以请求存储设备1200处理诸如数据库扫描操作的数据密集型工作负载操作。在这种情况下,本发明构思的存储设备1200可以执行存储内计算以向主机设备1100提供结果数据。
图形处理单元1130响应于中央处理单元1110的请求来执行各种图形操作。也就是说,图形处理单元1130可以将处理请求的数据转换为适于显示的数据。图形处理单元1130还可以请求对存储设备1200的流访问。图形处理单元1130具有适于重复处理类似操作的并行处理的操作结构。因此,当前正在开发诸如图形处理单元1130的图形处理单元,以使其具有可以用来执行需要高速并行处理的各种操作以及图形操作的结构。例如,处理通用操作以及图形处理操作的图形处理单元1130被称为通用图形计算处理单元(GPGPU)。除了视频解码之外,GPGPU还可以用于例如分析分子结构、对代码进行解密或预测气象变化。
主机存储器1150可以存储用于操作计算系统1000的数据。例如,主机存储器1150可以存储由主机设备1100处理或要处理的数据。主机存储器1150可以包括易失性/非易失性存储器,例如静态随机存取存储器(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、相变RAM(PRAM)、铁电RAM(FRAM)、磁阻RAM(MRAM)和电阻RAM(ReRAM)。
网络接口卡1170是用于将以太网交换机(未示出)或以太网结构与计算系统1000连接的通信接口。例如,在以太网交换机对应于有线LAN网络的情况下,可以用有线LAN卡来实现网络接口卡1170。当然,即使在以太网交换机是无线LAN的情况下,也可以用处理与无线LAN相对应的通信协议的硬件来实现网络接口卡1170。
接口电路1190提供主机设备1100与存储设备1200之间的物理连接。也就是说,接口电路1190可以转换与从主机设备1100生成的各种访问请求相对应的命令、地址、数据等,从而适于与存储设备1200的接口连接的方式。接口电路1190可以根据各种不同的通信协议中的任何一种来配置,所述通信协议例如是通用串行总线(USB)、小型计算机系统接口(SCSI)、快速外围组件接口(PCIe)、高级技术附件(ATA)、并行ATA(PATA)、串行ATA(SATA)、串行附接SCSI(SAS)和通用闪存(UFS)。
无论是否供电,存储设备1200都可以存储数据。例如,存储设备1200可以包括存储介质,比如固态驱动器(SSD)、安全数字卡、嵌入式多媒体卡等。在实施例中,本发明构思的存储设备1200可以包括存储设备内计算块1210和SSD 1230。可以将SSD1230表征为存储介质的示例。
存储设备内计算块1210可以响应于来自主机设备1100的请求来访问SSD 1230。例如,存储设备内计算块1210可以响应于来自主机设备1100的数据请求将流存取命令(下文中称为“SA_CMD”)传送到SSD 1230。流存取命令SA_CMD可以包括LBA列表、流ID、块大小、优先级等的信息。
存储设备内计算块1210可以响应于流存取命令在存储设备1200内处理从SSD1230提供的流数据。可以将由存储设备内计算块1210处理的结果数据返回到主机设备1100。存储设备内计算块1210的上述操作可以使得显著改善(或最小化)由于存储设备1200与主机设备1100之间的流数据的交换而导致的带宽的减小。
SSD 1230响应于从主机设备1100或存储设备内计算块1210提供的请求来存储或输出数据。SSD 1230可以响应于流存取命令(例如,流读取命令或流写入命令)以所请求的数据大小为单位提供流数据。例如,在所请求的数据被存储在缓冲器(未示出)中的情况下,SSD 1230可以允许存储设备内计算块1210的DMA引擎(未示出)顺序地读取存储在缓冲器中的数据。将参考附图在下文中详细地描述该操作。
已经简要描述了包括本发明构思的存储设备内计算块1210的存储设备1200的配置、以及包括存储设备1200的计算系统1000的配置。本发明构思的存储设备1200可以通过使用流存取命令来有效地处理流数据。
图2示出了图1的主机和存储设备的示例性配置的框图。参考图2,主机设备1100和存储设备1200构成计算系统1000。
根据本发明构思,主机设备二1100可以包括中央处理单元1110、主机存储器1150、接口电路1190和存储器管理单元1160,以处理流数据。应当理解,主机设备1100还包括诸如图形处理单元1130和网络接口卡1170的组件。然而,为了便于描述,这里可以不描述主机设备1100的组件的一些功能,和/或可以不示出组件中的一些组件。中央处理单元1110、主机存储器1150和接口电路1190与图1的对应组件基本上相同,因此可以省略附加的描述以避免冗余。
主机设备1100可以将SSD 1230的缓冲器1235映射到主机设备1100的虚拟存储器空间。通常,诸如SSD 1230的存储设备不打开缓冲器1235,其中缓冲器1235是用于任何其他设备的直接存储器存取(DMA)的存储器空间。因此,主机设备1100可以将缓冲器1235注册在虚拟存储器空间处以通过一个映射来管理缓冲器1235,因此缓冲器1235可以由存储设备内计算块1210的DMA引擎1211自由地访问。为此,主机设备1100可以包括存储器管理单元1160。在计算系统1000的引导或初始化期间,可以通过将SSD 1230的缓冲器1235的物理地址区域映射到虚拟存储器空间,来向外部设备打开缓冲器1235以传输流数据。可以由存储器管理单元1160将外部设备对虚拟存储器空间的访问重定向到缓冲器1235。
存储设备1200响应于主机设备1100的请求,以存储内计算方式处理从SSD 1230提供的数据。存储设备1200可以将存储内计算的结果返回给主机设备1100。为此,存储设备1200可以包括存储设备内计算块1210、SSD 1230和主机接口1250。
在实施例中,存储设备内计算块1210可以包括DMA引擎1211和内核存储器1213。例如,可以用处理器或处理器核、现场可编程门阵列(FPGA)和专用集成电路(ASIC)中的至少一个来实现存储设备内计算块1210。存储设备内计算块1210可以响应于主机设备1100的请求向SSD 1230提供流存取命令。存储设备内计算块1210可以以存储内计算方式处理从SSD1230传送的流数据,并且可以将处理后的数据传送到主机设备1100。DMA引擎1211可以读取加载到SSD 1230的缓冲器1235上的块大小的流数据,并且可以将读取的数据传送到内核存储器二1213。块大小定义了流数据的管理单位。
SSD 1230响应于来自存储设备内计算块1210的流读取命令,将以由命令定义的块大小为单位从存储介质读取的数据加载到缓冲器1235上。当缓冲器1235被映射到主机设备1100的虚拟存储器空间上时,缓冲器1235可以由存储设备内计算块1210的DMA引擎1211来访问。当然,SSD 1230可以响应于来自存储设备内计算块1210的流写入命令,将以块大小为单位传送的数据编程到缓冲器1235中。
主机接口1250作为存储设备1200的物理通信通道来提供,该物理通信通道用于与主机设备1100进行数据交换。主机接口1250可以具有支持存储设备内计算块1210和SSD1230的DMA功能的接口连接协议。例如,可以由主机设备1100的存储器管理单元1160和主机接口1250在虚拟存储器空间中对SSD 1230的缓冲器1235进行管理。
图3A、图3B和图3C示出了根据本发明构思的实施例的流存取命令的示图。图3A示出了构成流存取命令SA_CMD的属性。图3B是示出了以NVMe接口协议配置流存取命令的方式的表格。图3C示出了以块大小为单位来管理的流数据。这里,作为寄存器级接口的NVMExpress(NVMe)接口的命令集将被例示为命令格式。然而,应该理解,该示例仅是为了便于描述,并且在其他实施例中可以使用其他命令格式。
参考图3A,从外部提供的流请求可以包括流存取命令SA_CMD(对应于附图标记“10”)和目的地地址(Addr)20。流存取命令SA_CMD可以是流读取命令SR_CMD或流写入命令SW_CMD。目的地地址20指示包括在存储设备内计算块1210中的DMA引擎(未示出)将所请求的流数据最终传送到其上的存储器位置。
流存取命令SA_CMD可以包括流ID 11、LBA列表12、块大小13和优先级14。流ID 11包括用于标识多流数据的标识符(ID)信息。在多流数据的情况下,可以在生成多流数据时或在传送多流数据的过程中将流ID 11指派给多流数据。在主机设备1100的虚拟存储器空间中,可以针对每一个流ID 11指派流窗口。
LBA列表12是通过流存取命令SA_CMD针对存取请求的LBA的列表。例如,当通过LBA列表12传送LBA LBA0至LBA10000时,访问与LBA LBAO至LBA10000相对应的SSD 1230(参考图2)的物理地址区域。通常,在基于NVMe的SSD的情况下,通过诸如LBA起始地址和扇区计数的信息来提供流命令。然而,本发明构思的流存取命令SA_CMD可以同时提供与流数据相对应的所有LBA的列表,从而最小化迭代命令传送。
块大小13指示SSD 1230的缓冲器1235与存储设备内计算块1210之间或缓冲器1235与外部设备之间的流数据的传送或输入/输出单位。可以以块大小13为单位对缓冲器1235执行预取操作,并且可以以块大小13为单位从缓冲器1235向目的地进行DMA传送操作。可以将块大小13与稍后要描述的要在虚拟存储器空间上针对流数据指派的流窗口的大小进行匹配。优先级14包括流ID 11的优先级信息。
将参考图3B描述用于以NVMe接口协议实现本发明构思的流存取命令SA_CMD所需的附加项。在NVMe协议中,命令可以基本上以32位(Dword)为单位排列。
流存取命令SA_CMD可以包括正常命令共同具有的字段区域(例如,Dword0和Dword1)、以及用于本发明构思的流存取命令SA_CMD的字段区域DwordN至DwordN+3。正常命令公共具有的字段区域Dword0和Dword1可以包括例如各种元素CID、Fuse、Opcode和命名空间ID。例如,“CID(命令ID)”指示命令标识符,“Fuse”指示是否以原子为单元执行命令集。“Opcode”对应于指定命令的操作属性的代码值。“命名空间ID”包括命名空间的标识符信息。
具体地,用于构成本发明构思的流存取命令SA_CMD的字段区域DwordN至DwordN+3包括流ID(DwordN)、LBA列表(DwordN+1)、块大小(DwordN+2)、以及优先级(DwordN+3)。流ID、LBA列表、块大小和优先级的属性可以与参考图3A所述的对应属性相同。可以不同地实现用于针对流存取命令SA_CMD构造流ID、LBA列表、块大小和的优先级的方式。与NVMe协议相关联的命令集的保留字段可以用于构造流存取命令(SA_CMD)集。备选地,可以添加新定义以构造流存取命令(SA_CMD)集的字段来构造流存取命令SA_CMD。
参考图3C,例如,可以以多个块31至37为单位管理针对流所请求的整段数据30。可以基于流存取命令SACMD中包括的LBA列表来定义整段请求数据。整段数据30可以包括多个分割数据,每一个分割数据具有块大小。存储设备1200可以管理以块大小为单位划分的数据,以输出或接收整段数据30。
图4示出了主机的虚拟存储器空间的存储器映射。参考图4,主机设备1100的虚拟存储器空间1161可以包括SSD 1230的缓冲器1235的存储器区域。
可以在主机设备1100的虚拟存储器空间1161中注册各种外围设备的存储器空间,其由存储器管理单元1160管理。具体地,在包括具有本发明构思的存储内计算功能的存储设备1200的计算系统1000中,可以在虚拟存储器空间1161处注册SSD 1230中的缓冲器1235的部分存储器区域或整个存储器区域。
通常,作为主机设备1100的主存储器提供的主机存储器1150可以是可由外围设备访问的共享存储器,但是由于安全性或任何其他原因,诸如SSD 1230的存储设备的缓冲器1235可能不能由外围设备共享。因此,存储设备内计算块1210的DMA引擎1211或主机设备1100的DMA引擎或每一个外围设备可能难以直接访问缓冲器1235。对于根据本发明构思的流存取命令SA_CMD的数据传送,SSD 1230的缓冲器1235应该由目标设备的DMA引擎共享。在本发明构思中,可以使用主机设备1100的虚拟存储器空间1161,使得SSD 1230的缓冲器1235由目标设备的DMA引擎共享。
在使用基于NVMe的接口的SSD 1230的情况下,关于虚拟存储器空间1161,可以通过使用基地址寄存器BAR来执行注册。例如,当在计算系统1000的引导序列或的初始化操作中在基地址寄存器BAR处注册缓冲器1235的情况下,访问缓冲器1235的主机设备1100或外围设备可以访问在虚拟存储器空间1161处注册的地址。在访问在虚拟存储器空间1161上指派的虚拟地址的情况下,存储器管理单元1160然后将虚拟地址重定向到缓冲器1235。这样,存储设备内计算块1210、主机设备1100或任何其他外围设备可以通过虚拟存储器空间1161共享SSD 1230的缓冲器1235。
主机设备1100的虚拟存储器空间1161包括与用于管理SSD 1230的缓冲器1235的流数据的虚拟地址范围相对应的流区域1162。流区域1162可以包括与包括在流存取命令SA_CMD中的块大小相对应的至少一个流窗口。在与包括在流存取命令SA_CMD中的流标识符ID相对应的输入/输出单元中提供流窗口。也就是说,可以将流窗口(其数量对应于多流数据的流ID的数量)指派给流区域1162。
例如,流窗口可以被设置到虚拟存储器空间1161,其数量与要从SSD 1230读取或编程到SSD 1230中的流数据的流ID的数量差不多。在存储设备内计算块1210的DMA引擎1211打算读取与流窗口SW1相对应的数据的情况下,DMA引擎1211可以访问与块大小CS和虚拟存储器空间1161的地址OxFFFF相对应的虚拟存储器空间。在这种情况下,DMA引擎1211的访问可以由存储器管理单元1160重定向到SSD1230的缓冲器1235。
图5示出了根据本发明构思的实施例的SSD的示例性配置的框图。参考图5,SSD1230可以包括SSD控制器1231、非易失性存储器设备1233和缓冲器1235。
SSD控制器1231可以提供外部设备与SSD 1230之间的接口连接。SSD控制器1231参考包括在从外部提供的流存取命令SA_CMD中的流ID、LBA列表和块大小CS来访问非易失性存储器设备1233。例如,在流存取命令SA_CMD对应于读取命令的情况下,SSD控制器1231以块大小CS为单位从非易失性存储器设备1233预取与LBA列表相对应的数据,并且将预取的数据加载到缓冲器1235上。相反,在流存取命令SA_CMD对应于写入命令的情况下,SSD控制器1231可以以块大小CS为单位将从外部加载到缓冲器1235上的写入数据编程到非易失性存储器设备1233中。
具体地,SSD控制器1231可以包括用于基于流存取命令SA_CMD来管理非易失性存储器设备1233和缓冲器1235的流管理器1232。流管理器1232解析流存取命令SA_CMD,并且以块大小CS为单位将与LBA列表相对应的流数据从非易失性存储器设备1233预取到缓冲器1235。此外,流管理器1232可以管理缓冲器1235,使得目标设备以块大小CS为单位从缓冲器1235读取流数据STData。
图6示出了图5的SSD控制器的示例性配置的框图。参考图6,SSD控制器1231包括处理器121、工作存储器123、接口125、缓冲管理器127和闪存接口129。在该实施例中,处理本发明构思的流命令的流管理器1232可以用例如固件或软件模块来实现。
处理器121可以执行加载到工作存储器123上的流管理器1232。当执行流管理器1232时,流管理器1232将执行读取/写入操作所需的各种控制信息传送到接口125和闪存接口129的寄存器。例如,在从外部接收到流存取命令SA_CMD的情况下,将流存取命令SA CMD存储在接口125的命令寄存器(未示出)中。接口125可以基于存储的命令向处理器121通知读取/写入命令被输入到处理器121。处理器121可以解析传送到接口125的流存取命令SA_CMD以控制缓冲管理器127和闪存接口129。
当执行流管理器1232时,处理器121从非易失性存储器设备1233读取与LBA列表相对应的流数据。处理器121以块大小CS为单位从非易失性存储器设备1233预取流数据,并且将预取的流数据加载到缓冲器1235上。处理器121可以向外部设备告知加载到缓冲器1235上的流数据的头指针和/或尾指针。处理器121检测外部设备对缓冲器1235的访问,以管理缓冲器1235的头指针和尾指针。另外,处理器121可以管理虚拟存储器空间1161的流窗口,其中将以块大小为单位将所请求的流数据加载到该流窗口上。
工作存储器123可以存储用于驱动SSD控制器1231的数据。例如,可以将要由SSD控制器1231执行的各种固件加载到工作存储器123上。例如,可以将要由处理器121执行的闪存转换层(FTL)或诸如本发明构思的流管理器1232的固件图像加载到工作存储器123上并且由处理器121执行。
接口125提供主机设备1100或外部设备(通过图2中所示的主机接口1250)与SSD1230之间的物理连接。也就是说,接口125提供与SSD 1230的接口连接,其符合主机设备1100的总线格式。主机设备1100的总线格式可以包括例如以下至少一项:通用串行总线(USB)、小型计算机系统接口(SCSI)、快速外围组件接口(PCIe)、高级技术附件(ATA)、并行ATA(PATA)、串行ATA(SATA)、串行附接SCSI(SAS)、NVMe和结构(Fabrics)上的NVMe(NVMe-oF)。
缓冲管理器127控制缓冲器1235的读取操作和写入操作(参考图5)。例如,缓冲管理器127将写入数据或读取数据临时存储在缓冲器1235中。例如,缓冲管理器127可以在处理器121的控制下以流为单位识别和管理缓冲器1235的存储器区域。在处理器121的控制下,缓冲管理器127可以更新用环形缓冲器或循环缓冲器实现的缓冲器1235的头指针或尾指针,并且可以将更新的指针输出到外部。
闪存接口129与非易失性存储器设备1233交换数据。闪存接口129将从缓冲器1235传送的数据写入非易失性存储器设备1233中。闪存接口129可以将从非易失性存储器设备1233读取的数据传送到缓冲器1235。
根据本发明构思的实施例的SSD控制器1231可以响应于流存取命令SA_CMD以块大小CS为单位管理缓冲器1235。可以通过SSD控制器1231将缓冲器1235的状态信息传送到SSD1230的外部。以块大小CS为单位传送数据的目标设备的DMA操作可以参考传送到外部的缓冲器1235的状态信息。
图7示出了根据本发明构思的实施例的图6的流管理器的操作的流程图。参考图7,当接收到本发明构思的流存取命令SA_CMD时,用于传送SSD 1230的流管理器1232的流数据的控制操作开始。
在操作S110中,SSD 1230接收从主机设备1100或任何其他外围设备提供的流存取命令SA_CMD。在这种情况下,流存取命令SA_CMD可以包括流ID、LBA列表、块大小和优先级的值。另外,可以与流存取命令SA_CMD一起提供要传送的流数据的目的地地址。然而,本发明构思的流存取命令SA_CMD的配置不限于此。应当理解,可以将用于有效地控制缓冲器1235的各种参数和用于处理多流数据的预取操作包括在流存取命令SA_CMD中或者添加到流存取命令SA_CMD。
在操作S120中,流管理器1232解析接收到的流存取命令SA_CMD。流管理器1232可以基于通过解析流存取命令SA_CMD而获得的LBA列表来识别要读取的整段数据和在刚接收到流存取命令SA_CMD之前输出的数据。
在操作S130中,流管理器1232基于关于直到刚接收到流存取命令SA_CMD之前输出的数据的信息,来设置缓冲器1235的头指针HP和尾指针TP。当主机设备1100或外部设备基于缓冲器1235的头指针HP或尾指针TP访问虚拟存储器空间1161的流窗口时,可以由存储器管理单元1160将主机设备1100或外部设备的访问重定向到缓冲器1235。
在操作S140中,流管理器1232在虚拟存储器空间1161上保留的流区域1162处更新或注册流窗口。也就是说,在虚拟存储器空间1161上的流窗口可以对应于在缓冲器1235与目标设备之间交换的数据的大小(即,块大小)。在一些实施例中,可以在计算系统的初始化操作中执行操作S140。
在操作S150中,流管理器1232从非易失性存储器设备1233预取所请求的数据。将预取的数据存储在缓冲器1235中。在通过使用环形缓冲器来管理缓冲器1235的情况下,可以在将预取的数据存储在缓冲器1235中之后更新缓冲器1235的头指针HP。另外,在检测到主机设备1100或外部设备读取缓冲器1235中的预取的数据的情况下,流管理器1232可以移动缓冲器1235的尾指针TP。
在操作S160中,流管理器1232确定通过流存取命令SA_CMD请求的整段数据是否被传送到目的地地址。也就是说,流管理器1232将提供的LBA列表与已经输出的数据进行比较,以确定所请求的流数据是否被完全送达(serviced)。当确定所请求的数据被完全传送到目标设备(S160中的是)时,与流存取命令SA_CMD相对应的SSD 1230的整体操作结束。当确定所请求的数据中尚有数据未被传送到目标设备(S160中的否)时,处理返回到操作S150。
以上描述了流管理器1232响应于流存取命令SA_CMD来预取和输出流数据的操作。描述了流管理器1232以软件模块的形式进行操作的实施例,但是本发明构思不限于此。另外,上述流程图的操作顺序不限于图7所示,并且应该理解,可以改变操作的顺序。
图8示出了根据本发明构思的实施例的根据流读取命令在其上传送数据的路径的框图。参考图8,SSD 1230基于流存取命令SACMD的LBA列表将数据从非易失性存储器设备1233预取到缓冲器1235。存储设备内计算块1210可以访问在主机设备1100的虚拟存储器空间1161处注册的流窗口流窗口#1,使得缓冲器1235的数据被直接传送到内核1212的SRAM(即,内核存储器)1213。这里,假设流存取命令SA_CMD是流读取命令。
首先,响应于流存取命令SA_CMD,SSD 1230基于LBA列表和块大小从非易失性存储器设备1233读取数据。该操作由在SSD 1230上驱动的流管理器1232控制。参考由流存取命令SA_CMD提供的块大小CS来执行从非易失性存储器设备1233到缓冲器1235的预取。也就是说,将数据以块大小CS为单位加载到缓冲器1235上或从缓冲器1235输出。因此,在以环形缓冲器的形式管理缓冲器1235的情况下,缓冲器1235的头指针HP和尾指针TP可以以块大小为单位移动。然而,应当理解,可以对缓冲器1235的数据结构进行各种改变或修改,而不限于图8的示例。
可以将预取到缓冲器1235的数据排在循环队列的头部和尾部之间。可以以块大小为单位将预取的数据排入循环队列中。
SSD1230的流管理器1232可以管理在虚拟存储器空间1161处注册的流区域1162和流窗口。在虚拟存储器空间1161中,作为共享方式之一,流区域1162可以允许外部设备或主机设备1100存取加载到缓冲器1235上的流数据。因此,外围设备或存储设备内计算块1210可以无限制地访问在虚拟存储器空间1161处注册的第一流窗口流窗口#1。这里,第一流窗口流窗口#1和第二流窗口流窗口#2分别对应于不同的流ID。也就是说,可以将预取到缓冲器1235的不同流ID的块分别指派给第一流窗口流窗口#1和第二流窗口流窗口#2。
当存储设备内计算块1210访问第一流窗口流窗口#1时,可以将访问重定向到缓冲器1235的存储对应块的存储器区域。该重定向可以由主机设备1100的存储器管理单元1160或中央处理单元1110管理。流窗口可以使得能够存取块大小的排队数据。
可以由存储设备内计算块1210将通过流存取命令SA_CMD以块大小为单位加载到SSD1230的缓冲器1235上的数据传送到诸如内核1212的SRAM 1213的目的地。也就是说,当缓冲器1235可以被映射到主机设备1100的虚拟存储器空间1161上时,存储设备内计算块1210可以无限制地访问缓冲器1235。当缓冲器1235被映射到主机设备1100的虚拟存储器空间1161上时,存储设备内计算块1210的DMA引擎1211可以将流数据传送到目的地存储器(例如,SRAM 1213)而不通过DRAM1215。
在获得整段请求数据之前,存储设备内计算块1210可以通过流窗口重复地获得块大小的排队数据。为此,每当存储设备内计算块1210获得排队数据时,SSD1230可以更新与在虚拟存储器空间1161处注册的流窗口(例如,第一流窗口)相对应的缓冲器1235的指针。例如,每当存储设备内计算块1210获得排队数据时,SSD1230可以改变缓冲器1235的头指针HP的值,使得缓冲器1235的头指针HP指向接下来要读取的排队数据。
存储设备内计算块1210访问与流窗口流窗口#1相对应的主机设备1100的虚拟存储器空间1161。在这种情况下,通过主机设备1100的中央处理单元1110或单独提供的存储器管理单元1160,将访问重定向到与头指针HP相对应的缓冲器1235的区域。可以将从缓冲器1235提供的块大小的流数据直接传送到内核1212的SRAM 1213。
在存储设备内计算块1210获得预取到缓冲器1235的数据的情况下,可以更新循环队列的头指针HP以指向下一个排队数据。同时,在一些情况下,当存储设备内计算块1210存取排队数据时,SSD 1230可以将不同的数据从存储器设备预取到缓冲器1235。在这种情况下,可以更新循环队列的尾指针TP来指向新预取的数据。
这样,存储设备内计算块1210可以通过使用单个流存取命令SA_CMD顺序地获得以块大小为单位划分的流数据。在这种情况下,在获得整段预期数据之前,存储设备内计算块1210可以通过流窗口重复获得块大小的排队数据。在存储设备内计算块1210获得整段预期数据的情况下,可以完成流读取操作。
在一些情况下,在将流数据预取到SSD 1230的缓冲器1235之前,可以向存储设备内计算块1210请求访问。在这种情况下,SSD 1230可以延迟存储设备内计算块1210请求的处理,直到将数据预取到缓冲器1235为止。在一些情况下,可以在循环队列被预取的数据完全填充的状态下接收附加的流读取命令。在这种情况下,SSD 1230可以延迟附加的流读取命令的处理,直到循环队列的全部或一部分为空为止。
根据上述实施例,可以在SSD 1230的缓冲器1235中缓冲流数据,而不是将流数据传送到主机设备1100的主机存储器1150(参考图2)。因此,可以不需要本发明构思的主存储器1150的存储器空间。因此可以减少计算系统1000的开销。SSD 1230可以缓冲以块大小为单位划分的流数据,而不是同时缓冲整段数据。因此,可以有效地使用SSD1230的缓冲器资源,其可以被表征为存储器资源。
另外,可以从外部设备访问SSD 1230的缓冲器1235,并且在可访问缓冲器1235中缓冲块大小的划分数据。因此,存储设备内计算块1210可以在内核1212的SRAM 1213中管理从SSD 1230的缓冲器1235获得的整段预期数据。这可以防止DMA引擎1211重复发出存储器访问请求,因此提高存储设备内计算块1210的性能。
为此,SSD 1230的缓冲器1235可以包括可以从外部设备访问的存储器区域,并且可以在可访问存储器区域中管理块大小的预取数据。在一些情况下,可以从外部设备访问SSD 1230的缓冲器1235的所有区域。备选地,可以从外部设备访问SSD1230的缓冲器1235的仅一些区域,并且出于安全性的考量可以不访问剩余区域。
在块大小很大的情况下,当交换数据时延迟可能增加,但是交换每一个划分数据的带宽可能增加,并且可以提高通信性能。相反,在块大小较小的情况下,当交换数据时的延迟可能减少。可以考虑到上述条件,适当地选择块大小。
在循环队列的大小较大的情况下,可以用大容量缓冲器来实现缓冲器,并且可以同时排入多个数据,并且可以提高通信性能。相反,在循环队列的大小较小的情况下,可以用小容量缓冲器实现缓冲器。可以考虑到上述条件,适当地选择循环队列的大小。
图9示出了展示根据本发明构思的实施例的如何管理具有循环队列形状的缓冲器的示图。参考图9,可以以循环队列类型的环形缓冲器的形式来管理缓冲器1235的存储流数据的区域。
当驱动流管理器1232时,将从非易失性存储器设备1233预取的块大小的数据作为块数据CH0、CH1、CH2等存储在缓冲器1235中。当预取操作完成时,流管理器1232或者缓冲管理器127更新尾指针TP。同样,当块数据CH0被传送到访问流窗口SW1的外部设备或存储设备内计算块1210时,缓冲器1235的头指针HP可以移动与块大小差不多。之后,可以将对流窗口SW1的访问重定向到与更新的头指针HP的位置相对应的块数据CH1。这样,缓冲器1235的指针移动。
图10示出了根据本发明构思的实施例的用于在存储设备中执行的存储内计算的流读取命令以及存储设备对流读取命令的响应的示图。参考图10,假设主机设备1100向存储设备1200请求特定的数据(例如,诸如数据库扫描操作的数据密集型工作负载操作)。
在操作S10中,主机设备1100将数据请求(Dara Request)传送到存储设备1200。这里,主机设备1100传送的数据请求可以是对存储在存储设备1200中的数据的数据库扫描的请求。实际上,可以将对数据密集型工作负载的请求传送到存储设备1200中设置的存储设备内计算块1210。这里,给出当主机设备1100传送数据请求时的描述。然而,数据请求可以从各种外围设备发出,所述外围设备例如是主机设备1100中的CPU 1110、GPU 1130或网络接口卡1170、或者被设置成外围设备的现场可编程门阵列(FPGA)、ASIC等。
在操作S20中,存储设备1200中设置的存储设备内计算块1210将本发明构思的实施例的流读取命令传送到SSD 1230的SSD控制器1231。在这种情况下,存储设备内计算块1210可以与流读取命令一起另外提供目的地地址。这里,流读取命令可以包括流ID、LBA列表、块大小CS和优先级。
在操作S30中,SSD控制器1231响应于流读取命令,传送用于读取存储在非易失性存储器设备1233中的数据的预取命令。SSD控制器1231控制非易失性存储器设备1233,使得通过使用从LBA列表收集的地址信息从非易失性存储器设备二1233读取块大小CS的数据。
在操作S40中,非易失性存储器设备1233响应于来自SSD控制器1231的预取命令,将块大小CS的流数据输出到缓冲器1235。可以在缓冲器1235中累积与多个块大小CS相对应的数据。
在操作S50中,可以由存储设备内计算块1210的DMA引擎1211访问在虚拟存储器空间1161处注册的流窗口。在这种情况下,访问可以被重定向到与缓冲器1235的头指针HP相对应的位置,并且与排入缓冲器1235中的块Chunk_0相对应的流数据被传送到存储设备内计算块1210。具体地,与从缓冲器1235输出的块Chunk_0相对应的流数据可以被直接传送到被设置为内核存储器的SRAM 1213。
在操作S32中,SSD控制器1231响应于缓冲器1235的数据输出将预取命令传送到非易失性存储器设备1233。SSD控制器1231可以考虑到已传送的流数据和接下来要传送的流数据来执行预取操作。
在操作S42中,非易失性存储器设备1233在SSD控制器1231的控制下将块大小CS的流数据输出到缓冲器1235。
在操作S52中,可以由存储设备内计算块1210的DMA引擎1211访问在虚拟存储器空间1161处注册的流窗口。在这种情况下,访问可以被重定向到与缓冲器1235的头指针HP相对应的位置,并且排入缓冲器1235中的块Chunk_1相对应的流数据被传送到存储设备内计算块1210。具体地,与从缓冲器1235输出的块Chunk_1相对应的流数据可以被直接传送到被设置为内核存储器的SRAM 1213。可以重复上述的块单元的预取操作和到存储设备内计算块1210的传送,直到重复最后一个块Chunk_N-1为止。
在操作S34中,SSD控制器1231响应于缓冲器1235的数据输出,执行从非易失性存储器设备1233到缓冲器1235的预取操作。SSD控制器1231可以考虑到已传送的流数据和接下来要传送的流数据来执行预取操作。
在操作S44中,非易失性存储器设备1233在SSD控制器1231的控制下将在LBA列表中定义的最后一个流数据Chunk_N-1输出到缓冲器1235。
在操作S54中,可以由存储设备内计算块1210的DMA引擎1211访问在虚拟存储器空间1161处注册的流窗口。在这种情况下,防问可以被重定向到与缓冲器1235的头指针HP相对应的位置,并且与排入缓冲器1235中的最后一个块Chunk_N-1相对应的流数据被传送到存储设备内计算块1210。
在操作S60中,存储设备内计算块1210收集获得的流数据以执行存储内计算。例如,存储设备内计算块1210可以对获得的流数据执行诸如数据库扫描操作的处理。当存储内计算完成时,存储设备内计算块1210可以最终选择向主机设备1100请求的值。
在操作S70中,存储设备内计算块1210可以仅将通过存储内计算的结果选择的数据返回到主机设备1100。
上述主机设备1100和存储设备1200之间的数据输入/输出仅包括操作S10的数据请求和操作S70的请求数据的返回。因此,在使用根据本发明构思的实施例的流存取命令的情况下,可以明显改善执行数据密集型工作负载操作的存储设备1200的带宽的减小。
图11示出了根据本发明构思的实施例的图5的SSD控制器的框图。参考图11,SSD控制器1231可以包括处理器121、工作存储器123、接口125、缓冲管理器127、闪存接口129和被实现为硬件块的流管理器1232。这里,处理器121、工作存储器123、接口125、缓冲管理器127、闪存接口129与参照图6所述的对应组件基本上相同,因此将省略附加的描述以避免冗余。
在从外部接收到流存取命令SA_CMD的情况下,流存取命令SA_CMD被存储在接口125的命令寄存器(未示出)中。接口125可以基于存储的命令向处理器121通知读取/写入命令被输入到处理器121。在这种情况下,流管理器1232可以响应于流存取命令SA_CMD,通过使用LBA列表以块大小为单位将所请求的数据从非易失性存储器设备1233预取到缓冲器1235。另外,流管理器1232将缓冲器1235的状态传送到外部,并且可以允许目标设备自由地访问缓冲器1235。
例如,流管理器1232从非易失性存储器设备1233读取与LBA列表相对应的流数据。流管理器1232以块大小CS为单位从非易失性存储器设备1233预取流数据,并将预取的流数据加载到缓冲器1235上。流管理器1232可以向外部设备告知加载到缓冲器1235上的流数据的头指针和/或尾指针。流管理器1232检测外部设备对缓冲器1235的访问,以管理缓冲器1235的头指针和尾指针。另外,流管理器1232可以管理虚拟存储器空间1161的流窗口,其中将以块大小为单位将所请求的流数据加载到所述流窗口上。
如图11所示的根据本发明构思的实施例的SSD控制器1231可以响应于流存取命令SA CMD以块大小CS为单位来管理缓冲器1235。可以由流管理器1232将缓冲器1235的状态信息传送到SSD 1230的外部。以块大小CS为单位传送数据的目标设备的DMA操作可以参考传送到外部的缓冲器1235的状态信息。
图12示出了图11的流管理器的配置的框图。参考图12,流管理器1232可以包括命令解析器1410、LBA列表管理器1420、流窗口管理器1430、预取器1440、流缓冲管理器1450和访问检测器1460。
命令解析器1410可以解析流存取命令SA_CMD。命令解析器1410可以从解析的流存取命令SA_CMD获得诸如LBA列表和块大小的信息。命令解析器1410可以将获得的信息提供给LBA列表管理器1420和流窗口管理器1430。
LBA列表管理器1420可以基于从命令解析器1410获得的LBA列表来管理以下信息:要从非易失性存储器设备1233读取的整段数据和先前读取的数据(并因此排入循环队列中)。
流窗口管理器1430可以管理流窗口,其中流窗口基于从命令解析器1410获得的LBA列表和由LBA列表管理器1420管理的信息,将从整段数据划分的流数据提供给外部设备。例如,流窗口管理器1430可以在虚拟存储器空间处注册流窗口,使得排队数据被提供给外部设备,并且可以管理注册的流窗口。流窗口管理器1430可以将用于管理流窗口的信息提供给主机设备1100的存储器管理单元1160。
流缓冲管理器1450可以管理缓冲器1235的用于流数据的存储器区域。流缓冲管理器1450可以管理缓冲器1235的状态和操作,使得流数据关于由流窗口管理器1430管理的流窗口来入队和出队。例如,流缓冲管理器1450可以采用循环队列的数据结构,但是本发明构思的实施例不限于该示例。
预取器1440可以基于由LBA列表管理器1420管理的信息,将从存储器设备读取的数据预取到缓冲器1235。预取器1440可以以块大小为单位预取从非易失性存储器设备1233读取的数据。预取器1440可以将数据预取到缓冲器1235的由流缓冲管理器1450指向的存储器区域。
访问检测器1460可以检测外部设备访问流窗口。访问检测器1460可以检测外部设备或主机设备1100对缓冲器1235的访问,并且可以根据检测结果更新缓冲器1235的头指针HP。另外,可以根据访问检测器1460的检测结果来执行从非易失性存储器设备1233到缓冲器1235的预取操作。
在一些实施例中,可以在存储设备1200内提供流管理器1232。例如,SSD 1230可以在SSD控制器1231的控制下执行上述流写入操作和读取操作。例如,SSD控制器1231可以包括流管理器1232。另外,流管理器1232可以用软件和/或固件的程序代码来实现,并且SSD控制器1231的处理器核可以执行程序代码的指令集以提供流读取操作和流写入操作。
在一些实施例中,流管理器1232可以用被配置为执行上述操作的硬件电路(例如,模拟电路、逻辑电路、FPGA和ASIC)来实现。可以将硬件电路包括在SSD控制器1231中,或者可以设置在SSD控制器1231外部。在一些实施例中,可以将流管理器1232以软件和硬件的混合形式来设置。
在一些实施例中,可以将流管理器1232设置在存储设备1200外部。例如,流管理器1232被设置在存储设备的输入/输出级,因此存在于存储设备1200与外部设备之间。流管理器1232可以对输入到存储设备1200的数据和从存储设备1200输出的数据执行上述操作。此外,可以对流管理器1232的实现进行不同地改变或修改。
另外,可以关于读取操作和写入操作提供以上描述,但是本发明构思的实施例可以应用于伴随存储设备1200与外部设备之间的通信的任何类型的操作。
图13示出了展示根据本发明构思的实施例的在主机的虚拟存储器空间中指派流区域的方法的示图。参考图13,可以在主机设备1100的虚拟存储器空间1161处注册包括第一SSD(SSD1)1230、第二SSD(SSD2)1240和第三SSD(SSD3)1250的多个SSD的缓冲器1235、1245和1255的存储器区域。
可以将缓冲器1235映射到虚拟存储器空间1161的第一流区域(流区域1)1162,以管理排入第一SSD 1230的缓冲器1235中的流数据。指派给第一流区域1162的流窗口的数量可以与要存储在缓冲器1235中的流数据的流ID的数量差不多(或在数量上相对应)。也就是说,第一流区域1162可以被指派给用于一个第一SSD 1230的虚拟存储器以与外部交换流数据。当外部设备对虚拟存储器空间1161的第一流区域1162进行访问时,可以通过主机设备1100的存储器管理单元1160将访问重定向到第一SSD 1230的缓冲器1235。
相反,第二SSD 1240和第三SSD 1250的缓冲器1245和1255被映射到虚拟存储器空间1161的第二流区域(流区域2)1164。也就是说,一个第二流区域1164可以覆盖输入到第二SSD 1240和第三SSD1250的缓冲器1245和1255或从缓冲器1245和1255输出的流数据。例如,在第二SSD 1240和第三SSD 1250以RAID(独立磁盘冗余阵列或廉价磁盘冗余阵列)的形式实现的情况下,虚拟存储器空间1161的这种映射是可能的。
在使用基于NVMe的接口的SSD 1230、1240和1250的情况下,可以通过使用基地址寄存器(BAR)在虚拟存储器空间1161处注册缓冲器1235、1245和1255的存储器区域。在这种情况下,当外部设备访问在虚拟存储器空间1161上指派的虚拟地址时,可以由存储器管理单元1160然后重定向对缓冲器1235、1245和1255中的任何一个的访问。存储设备内计算块1210、主机设备1100或任何其他外围设备可以通过虚拟存储器空间来共享缓冲器1235、1245和1255。
图14示出了根据本发明构思的实施例的根据流写入命令在其上传送数据的路径的框图。参考图14,SSD 1230可以基于流写入命令SW_CMD的LBA列表将加载到缓冲器1235上的数据编程到非易失性存储器设备1233中。
当向诸如主机设备1100、外围设备或存储设备内计算块1210的设备请求流写入操作时,流写入命令SW_CMD可以被传送到SSD 1230。当SSD 1230响应于流写入命令SW_CMD进入就绪状态时,存储设备内计算块1210可以将流数据作为目标传送到在虚拟存储器空间1161中指派的流窗口流窗口#1。流区域1162在图14中被示为包括流窗口#1、和流窗口#2至流窗口#N。在这种情况下,主机设备1100的存储器管理单元1160可以将流窗口流窗口#1重定向到缓冲器1235。
可以以块大小为单位将流数据存储在缓冲器1235中。在实施例中,在以环形缓冲器的形式管理缓冲器1235的情况下,即使在写入操作中,缓冲器1235的头指针HP和尾指针TP也可以以块大小为单位移动。应当理解,可以在本发明构思的其他实施例中对缓冲器1235的数据结构进行各种改变或修改。
以上简要描述了响应于流写入命令SW_CMD来管理流数据的方式。可以基本上以与关于图8所述的流读取操作相反的顺序执行流写入操作。
图15示出了根据本发明构思的实施例的包括存储设备的计算系统的框图。参考图15,计算系统2000可以包括主机设备2100、存储设备2200和FPGA 2300。这里,主机设备2100的功能和配置与图1的主机设备1100的功能和配置基本上相同,因此将省略附加的描述以避免冗余。
存储设备2200可以响应于从外部提供的流存取命令SA_CMD,以请求的块大小为单位将流数据排入缓冲器2260中。这里,流读取命令SR_CMD和流写入命令SW_CMD可以被统称为“流存取命令SA_CMD”。存储设备2200可以是包括固态驱动器(SSD)、安全数字卡或嵌入式多媒体卡的存储设备。
具体地,缓冲器2260的存储器区域可以被映射到主机2100的虚拟存储器空间上,并且可以被构成计算系统2000的设备共享。缓冲器2260可以被映射到与虚拟存储器空间的流窗口相对应的虚拟地址上。可以以主机2100、FPGA 2300或外围设备访问虚拟存储器空间的流窗口的方式共享缓冲器2260的存储器区域。流存取命令SA_CMD可以包括LBA列表、流ID、块大小、优先级等的信息。应当理解,FPGA 2300仅是处理与存储设备2200交换的流数据的示例性组件。FPGA 2300可以用各种处理器、知识产权(IP)或能够处理流数据的ASIC来实现。
FPGA 2300可以响应于流存取命令SA_CMD来处理存储设备2200输出的流数据,并且可以将处理的结果值传送到主机2100。例如,存储设备2200可以响应于流读取命令SR_CMD,以所请求的数据大小(块大小)为单位将流数据加载到缓冲器2260上。在这种情况下,FPGA 2300可以通过使用在虚拟存储器空间中指派的流窗口来接收加载到缓冲器2260上的流数据。在这种情况下,主机2100与存储设备2200之间的带宽不会由于流数据的传送而减小。因此,FPGA 2300的操作可以明显改善(即,最小化)由于存储设备2200与主机2100之间流数据的交换而导致的带宽的减小。
以上简要描述了根据本发明构思的实施例的计算系统2000的结构。在这些实施例中,处理数据密集型工作负载的FPGA 2300位于存储设备2200外部。这里,应当理解,流存取命令SA_CMD是由主机2100或FPGA 2300生成的或在存储设备2200内生成的。流存取命令SA_CMD可以允许本发明构思的计算系统2000有效地处理流数据。
图16示出了图15的主机、存储设备和FPGA的示例性配置的框图。参考图16,与图1或图2的存储设备1200不同,存储设备2200和FPGA 2300作为单独的设备被设置在计算系统2000内。
根据本发明构思,主机2100可以包括中央处理单元2110、主机存储器2150、接口电路2190和存储器管理单元2160,以处理流数据。这里,应当理解,主机2100还可以包括诸如图15中所示的图形处理器2130和网络接口卡2170之类的组件。中央处理单元2110、主机存储器2150和接口电路2190与图2的对应组件基本上相同,因此将省略附加的描述以避免冗余。
可以在主机2100的虚拟存储器空间中指派流窗口,该流窗口可以允许FPGA 2300的DMA引擎2211访问存储设备22000中的缓冲器2260的存储器区域。主机2100可以包括存储器管理单元2160,以管理映射到虚拟存储器空间的流窗口。在计算系统2000的引导或初始化中,存储器管理单元2160可以在虚拟存储器空间处注册存储设备2200的缓冲器2260,为流数据的输入/输出提供存储器共享。
存储设备2200包括存储控制器2220、非易失性存储器设备2240和缓冲器2260。存储设备2200响应于流读取命令SR_CMD,以块大小为单位将从非易失性存储器设备2240读取的数据加载到缓冲器2260上。备选地,存储设备2200响应于流写入命令SW_CMD,以块大小为单位将从缓冲器2260读取的数据编程到非易失性存储器设备2240。缓冲器2260被映射到主机2100的虚拟存储器空间上,因此缓冲器2260可以由FPGA 2300的DMA引擎2211来访问。
在实施例中,FPGA 2300可以包括DMA引擎2211和内核存储器2213。例如,FPGA2300可以用一个或多个处理器核、FPGA等来实现。FPGA 2300可以响应于主机2100的请求将本发明构思的流存取命令SA_CMD提供给存储设备2200。FPGA 2300可以处理从存储设备2200传送的流数据,并且可以将处理后的数据传送到主机2100。DMA引擎2211可以读取加载到存储设备2200的缓冲器2260上的块大小的流数据,并且可以将读取的数据传送到内核存储器2213。
根据本发明构思的实施例,可以仅通过使用单个流存取命令将流数据从存储设备传送到目标设备。因此,当传送流数据时,可以最小化存储设备的输入/输出通道的带宽的减小和传送延迟时间,并且可以提高存储内计算的效率。
尽管已经参考本发明构思的示例性实施例描述了本发明构思,但是对于本领域普通技术人员来说显而易见的是,在不脱离所述的本发明构思的精神和范围的情况下,可以进行各种改变和修改。
Claims (25)
1.一种连接到使用虚拟存储器的主机的存储设备,包括:
固态驱动器,所述固态驱动器包括非易失性存储器设备和缓冲器,所述固态驱动器被配置为接收包括逻辑块地址LBA列表和块大小的流存取命令,根据所述LBA列表和所述块大小从所述非易失性存储器设备预取请求的流数据而无需额外的命令,并且顺序地将所预取的流数据加载到所述缓冲器上;以及
存储设备内计算块,被配置为访问在所述虚拟存储器上注册的流区域,来以所述块大小为单位顺序地读取加载到所述缓冲器上的流数据,
其中所述缓冲器被映射到所述流区域的虚拟存储器地址。
2.根据权利要求1所述的存储设备,其中固态驱动器被配置为在所述主机的初始化操作期间将所述缓冲器的物理地址映射到所述虚拟存储器上的所述流区域。
3.根据权利要求2所述的存储设备,其中所述固态驱动器被配置为根据PCIe或NVMe接口协议与所述主机通信,并且
其中在所述初始化操作期间,所述固态驱动器被配置为通过设置所述主机的基地址寄存器BAR,在所述虚拟存储器的所述流区域处注册所述缓冲器。
4.根据权利要求1所述的存储设备,其中所述流存取命令还包括所述流数据的流标识符ID和优先级,并且
其中所述LBA列表对应于所述流数据的所有逻辑地址,
所述块大小定义所述流数据的管理单位,并且所述优先级被指派给所述流标识符。
5.根据权利要求4所述的存储设备,其中所述流存取命令还包括用于接收所述流数据的目的地地址。
6.根据权利要求1所述的存储设备,其中所述存储设备内计算块被配置为对以所述块大小为单位读取的所述流数据执行数据库扫描操作。
7.根据权利要求6所述的存储设备,其中所述存储设备内计算块还被配置为将所述数据库扫描操作的结果传送到所述主机。
8.根据权利要求1所述的存储设备,其中所述流存取命令是从所述主机或所述存储设备内计算块下发的。
9.根据权利要求1所述的存储设备,其中由存储器管理单元重定向所述存储设备内计算块对所述流区域的所述访问。
10.根据权利要求9所述的存储设备,其中所述流区域包括一个或多个流窗口,所述流窗口是用于以所述块大小为单位管理所述流数据的虚拟地址范围。
11.根据权利要求10所述的存储设备,其中流存取命令还包括所述流数据的流标识符ID,并且
其中指派的多个流窗口对应于指派给所述固态驱动器的多个流标识符。
12.一种计算系统,包括:
主机,被配置为通过使用虚拟存储器空间来管理存储器资源;
存储设备,所述存储设备包括非易失性存储器设备和缓冲器,所述存储设备被配置为接收流存取命令,根据包括在所述流存取命令中的逻辑块地址LBA列表和块大小从所述非易失性存储器预取请求的流数据而无需额外的命令,并且顺序地将预取的流数据加载到所述缓冲器;以及
现场可编程门阵列FPGA,被配置为访问在所述虚拟存储器空间处注册的流区域,来以所述块大小为单位顺序地读取加载到所述缓冲器上的流数据。
13.根据权利要求12所述的计算系统,其中所述缓冲器被配置用于所述存储设备的数据输入/输出,并且被映射到所述虚拟存储器空间的所述流区域。
14.根据权利要求12所述的计算系统,其中所述流存取命令包括所述流数据的流标识符ID、优先级、与所述流数据的所有逻辑地址相对应的LBA列表、以及定义所述流数据的管理单位的块大小,并且
其中所述优先级被指派给所述流标识符。
15.根据权利要求12所述的计算系统,其中所述主机和所述FPGA根据PCIe接口协议来进行通信,并且所述存储设备根据NVMe接口协议来进行通信。
16.根据权利要求12所述的计算系统,其中所述存储设备包括:
流管理器,被配置为解析所述流存取命令来以所述块大小为单位从所述非易失性存储器设备读取所述流数据,并将所读取的流加载到所述缓冲器上。
17.根据权利要求16所述的计算系统,其中所述流管理器包括:
命令解析器,被配置为对所述流存取命令进行解码以提取所述LBA列表和所述块大小;
LBA列表管理器,被配置为参考所述LBA列表来管理要从所述非易失性存储器设备读取的数据以及传送到FPGA的数据的信息;
流窗口管理器,被配置为基于所述LBA列表和所述块大小来管理指派给所述虚拟存储器空间的流窗口;
流缓冲管理器,被配置为基于所述LBA列表和所述块大小来监测和管理排入所述缓冲器中的流数据;以及
预取器,被配置为基于所述LBA列表和所述块大小从所述非易失性存储器设备读取所述流数据,并且将所读取的流数据加载到所述缓冲器上。
18.根据权利要求17所述的计算系统,其中所述流管理器还包括:访问检测器,所述访问检测器被配置为检测所述FPGA或所述主机对所述缓冲器的访问,并且向所述流缓冲管理器告知所述访问检测器的检测结果。
19.根据权利要求12所述的计算系统,其中所述主机包括存储器管理单元,所述存储器管理单元被配置为将对所述虚拟存储器空间的所述流区域的访问重定向到所述缓冲器。
20.一种存储设备的操作方法,所述存储设备被连接到使用虚拟存储器空间的主机,并且包括非易失性存储器设备和缓冲器,所述方法包括:
由所述存储设备将所述缓冲器的物理地址映射到与所述虚拟存储器空间的流窗口相对应的地址范围;
在所述存储设备处接收流存取命令,所述流存取命令包括与流数据相对应的LBA列表和所述流数据的管理单位;
由所述存储设备参考所述LBA列表从所述非易失性存储器设备预取所述流数据,来以所述管理单位将所预取的流数据顺序地加载到所述缓冲器上;
在目标设备处访问所述虚拟存储器空间的所述流窗口;
将对所述流窗口的访问重定向到所述缓冲器;以及
以所述管理单位将顺序加载到所述缓冲器上的流数据传送到所述目标设备。
21.一种电子系统,包括:
主机设备,所述主机设备包括虚拟存储器空间;
存储设备,所述存储设备包括非易失性存储器、缓冲器、控制器和存储设备内计算块,
所述控制器被配置为接收流存取命令,并且参考所述流存取命令将流数据从所述非易失性存储器顺序地加载到所述缓冲器,并且
所述存储设备内计算块被配置为访问所述虚拟存储器空间,以顺序地读取加载在所述缓冲器中的流数据。
22.根据权利要求21所述的电子系统,其中由所述主机设备将所述流存取命令提供给所述存储设备。
23.根据权利要求21所述的电子系统,其中由除所述主机设备之外的外围设备将所述流存取命令提供给所述存储设备。
24.根据权利要求21所述的电子系统,其中所述控制器包括固态驱动器SSD控制器。
25.根据权利要求21所述的电子系统,其中所述控制器包括:流管理器,所述流管理器被配置为设置所述缓冲器的头指针和尾指针,并且当所述流数据被加载到所述缓冲器以及从所述缓冲器读取时,移动所述头指针和所述尾指针。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2018-0133653 | 2018-11-02 | ||
KR20180133653 | 2018-11-02 | ||
KR1020190027103A KR20200051450A (ko) | 2018-11-02 | 2019-03-08 | 스트림 데이터를 처리하는 스토리지 장치, 그것의 포함하는 컴퓨팅 시스템, 그리고 그것의 동작 방법 |
KR10-2019-0027103 | 2019-03-08 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111143234A true CN111143234A (zh) | 2020-05-12 |
Family
ID=68387145
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911064637.6A Pending CN111143234A (zh) | 2018-11-02 | 2019-11-01 | 存储设备、包括这种存储设备的系统及其操作方法 |
Country Status (3)
Country | Link |
---|---|
US (2) | US11061591B2 (zh) |
EP (1) | EP3647932B1 (zh) |
CN (1) | CN111143234A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114598660A (zh) * | 2020-12-04 | 2022-06-07 | 大唐移动通信设备有限公司 | 传输窗口的调整方法、装置、发送设备、接收设备及介质 |
WO2022121287A1 (zh) * | 2020-12-11 | 2022-06-16 | 上海阵量智能科技有限公司 | 命令下发方法、装置、处理设备、计算机设备及存储介质 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7442025B2 (ja) * | 2019-08-30 | 2024-03-04 | 株式会社ユニテックス | インタフェース変換装置 |
US11422921B2 (en) * | 2019-12-31 | 2022-08-23 | Western Digital Technologies, Inc. | Debug systems for deterministic validation of data storage devices |
JP2023027970A (ja) * | 2021-08-18 | 2023-03-03 | キオクシア株式会社 | メモリシステム |
US11733927B2 (en) * | 2021-11-30 | 2023-08-22 | Microsoft Technology Licensing, Llc | Hybrid solid-state drive |
US20230185739A1 (en) * | 2021-12-10 | 2023-06-15 | Samsung Electronics Co., Ltd. | Efficient and concurrent model execution |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040205299A1 (en) * | 2003-04-14 | 2004-10-14 | Bearden Brian S. | Method of triggering read cache pre-fetch to increase host read throughput |
US20070043909A1 (en) * | 2003-05-30 | 2007-02-22 | Mips Technologies, Inc. | Microprocessor with improved data stream prefetching |
US20070055824A1 (en) * | 2003-05-30 | 2007-03-08 | Mips Technologies, Inc. | Microprocessor with improved data stream prefetching |
US20130013851A1 (en) * | 2011-07-04 | 2013-01-10 | Phison Electronics Corp. | Data stream dispatching method, memory controller, and memory storage apparatus |
US20150317091A1 (en) * | 2014-05-02 | 2015-11-05 | Cavium, Inc. | Systems and methods for enabling local caching for remote storage devices over a network via nvme controller |
US20160077976A1 (en) * | 2014-05-27 | 2016-03-17 | Mellanox Technologies Ltd. | Address translation services for direct accessing of local memory over a network fabric |
US20170228157A1 (en) * | 2015-07-13 | 2017-08-10 | Samsung Electronics Co., Ltd. | Automatic stream detection & assignment algorithm |
EP3367248A1 (en) * | 2017-02-24 | 2018-08-29 | Advanced Micro Devices, Inc. | Streaming translation lookaside buffer |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH1060506A (ja) | 1996-08-14 | 1998-03-03 | Sumitomo Metal Ind Ltd | 高炉操業方法 |
JP4060506B2 (ja) | 1999-12-28 | 2008-03-12 | 株式会社東芝 | ディスク制御装置 |
US6799264B2 (en) | 2001-02-20 | 2004-09-28 | Koninklijke Philips Electronics N.V. | Memory accelerator for ARM processor pre-fetching multiple instructions from cyclically sequential memory partitions |
US6760818B2 (en) | 2002-05-01 | 2004-07-06 | Koninklijke Philips Electronics N.V. | Memory region based data pre-fetching |
US7627693B2 (en) | 2002-06-11 | 2009-12-01 | Pandya Ashish A | IP storage processor and engine therefor using RDMA |
KR100881748B1 (ko) | 2002-12-30 | 2009-02-06 | 주식회사 하이닉스반도체 | 고속으로 데이터를 출력하기 위한 메모리 장치 |
JP4862566B2 (ja) | 2006-09-04 | 2012-01-25 | 富士通株式会社 | 動画像処理装置及びプリフェッチ制御方法 |
US8719455B2 (en) | 2010-06-28 | 2014-05-06 | International Business Machines Corporation | DMA-based acceleration of command push buffer between host and target devices |
US9817761B2 (en) | 2012-01-06 | 2017-11-14 | Sandisk Technologies Llc | Methods, systems, and computer readable media for optimization of host sequential reads or writes based on volume of data transfer |
KR102074329B1 (ko) | 2013-09-06 | 2020-02-06 | 삼성전자주식회사 | 데이터 저장 장치 및 그것의 데이터 처리 방법 |
KR101757098B1 (ko) | 2014-12-14 | 2017-07-26 | 비아 얼라이언스 세미컨덕터 씨오., 엘티디. | 메모리 액세스에 의한 효용성 기반 공격성 레벨 프리패칭 |
US9760281B2 (en) | 2015-03-27 | 2017-09-12 | Intel Corporation | Sequential write stream management |
JP1566737S (zh) | 2015-10-12 | 2017-01-10 | ||
US9977623B2 (en) * | 2015-10-15 | 2018-05-22 | Sandisk Technologies Llc | Detection of a sequential command stream |
US9916269B1 (en) | 2016-04-14 | 2018-03-13 | Amazon Technologies, Inc. | Packet queueing for network device |
US10564853B2 (en) * | 2017-04-26 | 2020-02-18 | Western Digital Technologies, Inc. | System and method for locality detection to identify read or write streams in a memory device |
-
2019
- 2019-09-05 US US16/562,094 patent/US11061591B2/en active Active
- 2019-10-28 EP EP19205624.0A patent/EP3647932B1/en active Active
- 2019-11-01 CN CN201911064637.6A patent/CN111143234A/zh active Pending
-
2021
- 2021-06-10 US US17/344,112 patent/US11635902B2/en active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040205299A1 (en) * | 2003-04-14 | 2004-10-14 | Bearden Brian S. | Method of triggering read cache pre-fetch to increase host read throughput |
US20070043909A1 (en) * | 2003-05-30 | 2007-02-22 | Mips Technologies, Inc. | Microprocessor with improved data stream prefetching |
US20070055824A1 (en) * | 2003-05-30 | 2007-03-08 | Mips Technologies, Inc. | Microprocessor with improved data stream prefetching |
US20130013851A1 (en) * | 2011-07-04 | 2013-01-10 | Phison Electronics Corp. | Data stream dispatching method, memory controller, and memory storage apparatus |
US20150317091A1 (en) * | 2014-05-02 | 2015-11-05 | Cavium, Inc. | Systems and methods for enabling local caching for remote storage devices over a network via nvme controller |
US20160077976A1 (en) * | 2014-05-27 | 2016-03-17 | Mellanox Technologies Ltd. | Address translation services for direct accessing of local memory over a network fabric |
US20170228157A1 (en) * | 2015-07-13 | 2017-08-10 | Samsung Electronics Co., Ltd. | Automatic stream detection & assignment algorithm |
EP3367248A1 (en) * | 2017-02-24 | 2018-08-29 | Advanced Micro Devices, Inc. | Streaming translation lookaside buffer |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114598660A (zh) * | 2020-12-04 | 2022-06-07 | 大唐移动通信设备有限公司 | 传输窗口的调整方法、装置、发送设备、接收设备及介质 |
WO2022121287A1 (zh) * | 2020-12-11 | 2022-06-16 | 上海阵量智能科技有限公司 | 命令下发方法、装置、处理设备、计算机设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
EP3647932A1 (en) | 2020-05-06 |
US11635902B2 (en) | 2023-04-25 |
US20200142621A1 (en) | 2020-05-07 |
US20210303189A1 (en) | 2021-09-30 |
US11061591B2 (en) | 2021-07-13 |
EP3647932B1 (en) | 2023-06-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11635902B2 (en) | Storage device processing stream data, system including the same, and operation method | |
KR102518095B1 (ko) | 스토리지 장치 및 시스템 | |
US9785545B2 (en) | Method and apparatus for providing dual memory access to non-volatile memory | |
US9858015B2 (en) | Solid-state storage management | |
EP2849076B1 (en) | Dma transmission method and system | |
EP2849077B1 (en) | Method for writing data into storage device and storage device | |
CN107621959B (zh) | 电子装置及其软件训练方法、计算系统 | |
US11379374B2 (en) | Systems and methods for streaming storage device content | |
KR20150081424A (ko) | 순응적 존속을 위한 시스템, 방법 및 인터페이스 | |
TWI696188B (zh) | 混合式記憶體系統 | |
KR20100116396A (ko) | 컨트롤러, 이를 포함하는 데이터 저장 장치 및 데이터 저장 시스템, 및 그 방법 | |
US10007464B1 (en) | Method and apparatus for integration of non-volatile memory | |
CN110275840B (zh) | 在存储器接口上的分布式过程执行和文件系统 | |
US10275175B2 (en) | System and method to provide file system functionality over a PCIe interface | |
GB2519534A (en) | Persistent caching system and method for operating a persistent caching system | |
US10761736B2 (en) | Method and apparatus for integration of non-volatile memory | |
US20170139607A1 (en) | Method and system for shared direct access storage | |
US10564847B1 (en) | Data movement bulk copy operation | |
KR20200051450A (ko) | 스트림 데이터를 처리하는 스토리지 장치, 그것의 포함하는 컴퓨팅 시스템, 그리고 그것의 동작 방법 | |
KR20190033921A (ko) | 스토리지 장치 및 그 동작 방법 | |
WO2024088150A1 (zh) | 基于开放通道固态盘的数据存储方法、装置、设备、介质及产品 | |
CN115809018A (zh) | 改善系统的读取性能的设备和方法 | |
CN112703481A (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 |