CN115639952A - 存储设备及其操作方法 - Google Patents
存储设备及其操作方法 Download PDFInfo
- Publication number
- CN115639952A CN115639952A CN202210849202.8A CN202210849202A CN115639952A CN 115639952 A CN115639952 A CN 115639952A CN 202210849202 A CN202210849202 A CN 202210849202A CN 115639952 A CN115639952 A CN 115639952A
- Authority
- CN
- China
- Prior art keywords
- command
- storage device
- storage
- commands
- compute
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 45
- 238000012545 processing Methods 0.000 claims abstract description 26
- 239000007787 solid Substances 0.000 claims description 8
- 230000002093 peripheral effect Effects 0.000 claims description 7
- 238000011017 operating method Methods 0.000 claims 1
- 230000008569 process Effects 0.000 description 18
- 238000004519 manufacturing process Methods 0.000 description 14
- 230000006870 function Effects 0.000 description 12
- 239000004744 fabric Substances 0.000 description 11
- 230000007246 mechanism Effects 0.000 description 10
- 238000013519 translation Methods 0.000 description 6
- 230000001537 neural effect Effects 0.000 description 5
- 238000003491 array Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 4
- 230000004481 post-translational protein modification Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 238000012937 correction Methods 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000002441 reversible effect Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 206010000210 abortion Diseases 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000004888 barrier function Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 239000000969 carrier Substances 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000029305 taxis Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
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
-
- 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/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4027—Coupling between buses using bus bridges
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/20—Employing a main memory using a specific memory technology
- G06F2212/202—Non-volatile memory
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Hardware Design (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Debugging And Monitoring (AREA)
Abstract
公开了一种存储设备及其操作方法。存储设备可以包括数据的存贮器和用于处理来自主机处理器的对存贮器中的数据的输入/输出(I/O)请求的控制器。计算存储单元可以实现用于对存贮器中的数据执行的至少一个服务。命令路由器可以至少部分基于从主机处理器接收的命令来将该命令路由到控制器或计算存储单元。
Description
技术领域
本公开一般涉及存储设备,并且更具体地,涉及通过其他协议将计算设备的能力与存储设备一起使用。
背景技术
存储设备包括计算设备变得越来越普遍,这增强了存储设备的功能并支持近存储计算(near-storage computing)。然而,到这种存储设备的接口可能不支持对计算设备的所有特征的访问。
仍然需要提供对计算设备的所有特征的访问。
发明内容
本公开的实施例包括将命令路由到计算存储单元的能力。当接收到命令时,命令路由器可以确定该命令是要由存储设备还是要由计算存储单元处理的命令。然后,该命令可以被定向到存储设备或计算存储单元之一。
附图说明
下面描述的附图是如何实现本公开的实施例的示例,并且不旨在限制本公开的实施例。本公开的各个实施例可以包括在特定附图中未示出的元件和/或可以省略在特定附图中示出的元件。附图旨在提供说明,并且可以不按比例绘制。
图1示出了根据本公开的实施例的包括支持对计算存储设备的特征的访问的计算存储单元的系统。
图2示出了根据本公开的实施例的图1的机器的细节。
图3A示出了根据本公开的实施例的可以与图1的存储设备相关联的计算存储单元的第一示例布置。
图3B示出了根据本公开的实施例的可以与图1的存储设备相关联的计算存储单元的第二示例布置。
图3C示出了根据本公开的实施例的可以与图1的存储设备相关联的计算存储单元的第三示例布置。
图3D示出了根据本公开的实施例的可以与图1的存储设备相关联的计算存储单元的第四示例布置。
图4A示出了根据本公开的实施例的用于将命令路由到图1的计算存储单元的图1的存储设备的第一布置。
图4B示出了根据本公开的实施例的用于将命令路由到图1的计算存储单元的图1的存储设备的第二布置。
图5示出了根据本公开的实施例的被配置为将命令路由到图1的计算存储单元的图4A的命令路由器。
图6示出了根据本公开的实施例的支持将命令路由到图1的计算存储单元的固态驱动(SSD)。
图7示出了根据本公开的实施例的在图1的计算存储单元中的多个核中生成踪迹。
图8示出了根据本公开的实施例的用于图4A的命令路由器将命令路由到图1的计算存储单元的示例过程的流程图。
图9示出了根据本公开的实施例的使用图4A的命令路由器来路由命令的示例过程的流程图。
具体实施方式
现在将详细参考本公开的实施例,其示例在附图中示出。在以下详细描述中,阐述了许多具体细节,以使得能够彻底理解本公开。然而,应该理解,本领域普通技术人员可以在没有这些具体细节的情况下实践本公开。在其他情况下,没有详细描述公知的方法、过程、组件、电路和网络,以免不必要地模糊实施例的各方面。
应当理解,尽管术语第一、第二等可以在本文用来描述各种元件,但是这些元件不应该被这些术语所限制。这些术语仅用于区分一个元件和另一元件。例如,在不脱离本公开的范围的情况下,第一模块可以被称为第二模块,并且类似地,第二模块可以被称为第一模块。
本文公开的描述中使用的术语仅用于描述特定实施例的目的,并不旨在限制本公开内容。如在本公开和所附权利要求的描述中所使用的,单数形式“一个”和“该”也旨在包括复数形式,除非上下文清楚地指出不是这样。还应该理解,本文使用的术语“和/或”指的是并包含一个或多个相关联列出项目的任何和所有可能的组合。还将理解,术语“包括”、“包含”在本说明书中使用时,指定所陈述的特征、整数、步骤、操作、元件和/或组件的存在,但不排除一个或多个其他特征、整数、步骤、操作、元件、组件和/或其组合的存在或添加。附图的组件和特征不一定按比例绘制。
存储设备不断变得更大,存储越来越多的数据。从时间和处理器负载两方面来看,将所有数据从存储设备移动到主存储器以便处理器可以对数据进行操作可能是一个昂贵的过程。
为了解决这些困难,存储设备可以包括计算设备。计算设备可以支持近存储处理,避免了将数据从存储设备移动到主存储器所需的时间,并且减少了处理器上的负载,从而可以执行其他处理。
但是随着这些计算设备变得更加先进,用于访问这些存储设备的接口可能限制对计算设备所提供的功能的访问。例如,非易失性存储器高速(NVMe)规范可以定义如何与存储设备通信,但是没有定义如何访问由与存储设备相关联的计算设备提供的功能。
本公开的实施例通过向存储设备添加命令解析器/路由器来解决这些问题。命令解析器/路由器可以是附加元件,或者其可以被实现为存储设备的控制器的一部分。命令解析器/路由器可以分析传入命令,并确定该命令是否是存储设备可以处理的命令。如果是,则该命令可以被转发到存储设备;否则,该命令可以被传送到计算设备。以这种方式,可以支持访问计算设备的功能的请求。这些功能可以包括例如:生成踪迹信息;处理器管理(启用/禁用处理器;改变处理器频率);和纠错。可以使用新的供应商特定的命令或者通过利用现有的命令(诸如设置特征(set feature)命令)(以及识别存储设备未实现的特征)来访问这些功能。
图1示出了根据本公开的实施例的包括支持对计算存储设备的特征的访问的计算存储单元的系统。在图1中,机器105(也可以被称为主机或系统)可以包括处理器110、存储器115和存储设备120。处理器110可以是任何种类处理器。(为了便于说明,处理器110以及下面讨论的其他组件被示出在机器外部:本公开的实施例可以在机器内包括这些组件)。虽然图1示出单个处理器110,但是机器105可以包括任何数量的处理器,每个处理器可以是单核或多核处理器,每个处理器可以实现精简指令集计算机(RISC)架构或复杂指令集计算机(CISC)架构(以及其他可能性),并且可以以任何需要的组合混合。
处理器110可以耦合到存储器115。存储器115可以是任何种类的存储器,诸如闪存、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、持久性随机存取存储器、铁电随机存取存储器(FRAM)或非易失性随机存取存储器(NVRAM),诸如磁阻随机存取存储器(MRAM)等。存储器115也可以是不同存储器类型的任何需要的组合,并且可以由存储器控制器125管理。存储器115可以用于存储可以被称为“短期”的数据:即,不期望被长时间存储的数据。短期数据的示例可以包括临时文件、由应用在本地使用的数据(可能已经从其他存储位置复制)等。
处理器110和存储器115还可以支持操作系统,各种应用可以在该操作系统下运行。这些应用可以发出从存储器115或存储设备120读取数据或向其写入数据的请求(也可以被称为命令)。可以使用设备驱动130来访问存储设备120。
存储设备120可以与计算存储单元135相关联。如下面参考图3A-图3D所讨论的,计算存储单元135可以是存储设备120的一部分,或者它可以与存储设备120分离。短语“相关联”旨在覆盖包括计算存储单元的存储设备和与不是存储设备本身一部分的计算存储单元成对的存储设备。换句话说,当存储设备和计算存储单元是物理上分离的设备,但是以使它们能够相互通信的方式连接时,可以说它们是“成对的”。
此外,存储设备120和成对的计算存储单元135之间的连接可能使这两个设备能够通信,但是可能不能使一个(或两个)设备与不同的伙伴一起工作:即,存储设备120可能不能与另一计算存储单元通信,和/或计算存储单元135可能不能与另一存储设备通信。例如,存储设备120和成对的计算存储单元135可以串联连接(以任意顺序)到诸如总线的结构,使得计算存储单元135能够以另一计算存储单元可能无法实现的方式访问来自存储设备120的信息。
处理器110和存储设备120可以连接到结构(fabric)。该结构可以是任何可以沿其传递信息的结构。该结构可以包括位于机器105内部并且可以使用诸如外围组件互连高速(PCIe)、串行AT附接(SATA)、小型计算机系统接口(SCSI)等接口的结构。该结构也可以包括位于机器105外部并且可以使用诸如以太网、InfiniBand或光纤通道等接口的结构。此外,该结构可以支持一个或多个协议,诸如非易失性存储器(NVM)高速(NVMe)、基于结构的NVMe(NVMe over Fabrics,NVMe-oF)或简单服务发现协议(Simple Service DiscoveryProtocol,SSDP)等。因此,该结构可以被认为涵盖内部和外部网络连接两者,通过这些网络连接,命令可以被直接或间接地传送到存储设备120(更具体地,与存储设备120相关联的计算存储单元)。
虽然图1示出一个存储设备120和一个计算存储单元135,但是在机器105中可以有任何数量(一个或多个)的存储设备和/或任何数量(一个或多个)的计算存储单元。
虽然图1使用通用术语“存储设备”,但是本公开的实施例可以包括可以受益于计算存储单元的使用的任何存储设备格式,其示例可以包括硬盘驱动和固态驱动(SSD)。下面对“SSD”的任何引用都应该被理解为包括本公开的这些其他实施例。此外,虽然以上(和以下)的讨论集中于存储设备120与计算存储单元相关联,但是本公开的实施例可以扩展到除了存储设备之外的可以包括计算存储单元或与计算存储单元相关联的设备。以上(和以下)对“存储设备”的任何引用可以理解为也涵盖可能与计算存储单元相关联的其他设备。
图2示出了根据本公开的实施例的图1的机器105的细节。在图2中,通常,机器105包括一个或多个处理器110,处理器110可以包括存储器控制器120和时钟205,其可以用于协调机器的组件的操作。处理器110还可以耦合到存储器115,作为示例,存储器115可以包括随机存取存储器(RAM)、只读存储器(ROM)或其他状态保存介质。处理器110还可以耦合到存储设备125和网络连接器210,网络连接器210可以是,例如以太网连接器或无线连接器。处理器110还可以连接到总线215,用户接口220和可以使用I/O引擎225管理的输入/输出(I/O)接口端口以及其他组件可以附接到总线215。
图3A-图3D示出了根据本公开的实施例的可以与图1的存储设备120相关联的图1的计算存储单元135(也可以被称为“计算设备”或“设备”)的各种布置。在图3A中,示出了存储设备305和计算设备310-1。存储设备305可以包括控制器315和存贮器320-1,并且可以跨队列对可到达:队列对325可以用于管理存储设备305和控制存储设备305的I/O。
计算设备310-1可以与存储设备305成对。计算设备310-1可以包括任何数量(一个或多个)的处理器330,其可以提供一个或多个服务335-1和335-2。为了更清楚,每个处理器330可以提供任意数量(一个或多个)的服务335-1和335-2(尽管本公开的实施例可以包括恰好包括两个服务335-1和335-2的计算设备310-1)。每个处理器330可以是单核处理器或多核处理器。计算设备310-1可以跨队列对(QP)340可到达,队列对340可以用于管理计算设备310-1和/或控制计算设备310-1的I/O。
(多个)处理器330可以被认为是近存储处理:即,比图1的处理器110更靠近存储设备305的处理。因为(多个)处理器330更靠近存储设备305,所以与图1的处理器110命令相比,(多个)处理器330能够更快地对存储在存储设备305中的数据执行命令。虽然在图3A中未示出,但是(多个)处理器330可以具有相关联的存储器,该存储器可以用于对存储在存储设备305中的数据在本地执行命令。该相关联的存储器可以包括类似于图1的存储器115的本地存储器、片上存储器(其可以比诸如存储器115的存储器更快,但是制造起来可能更昂贵)或者两者。
虽然图3A将存储设备305和计算设备310-1示出为可通过结构345单独到达,但是本公开的实施例也可以包括串联连接的存储设备305和计算设备310-1(如图1所示)。也就是说,定向到存储设备305和计算设备310-1的命令可能都在到结构345的同一物理连接处被接收,并且可以通过一个设备到达另一设备。例如,如果计算设备310-1位于存储设备305和结构345之间,则计算设备310-1可以接收定向到计算设备310-1和存储设备305的命令:计算设备310-1可以处理定向到计算设备310-1的命令,并且可以将定向到存储设备305的命令传递给存储设备305。类似地,如果存储设备305位于计算设备310-1和结构345之间,则存储设备305可以接收定向到存储设备305和计算设备310-1的命令:存储设备305可以处理定向到存储设备305的命令,并且可以将定向到计算设备310-1的命令传递给计算设备310-1。
服务335-1和335-2可以提供多个不同的功能,这些功能可以对存储在存储设备305中的数据执行。例如,服务335-1和335-2可以提供预定义的功能,诸如数据的加密、解密、压缩和/或解压缩、擦除编码和/或应用正则表达式。或者,服务335-1和335-2可以提供更通用的功能,诸如数据搜索和/或SQL功能。服务335-1和335-2还可以支持运行应用特定的代码。也就是说,使用服务335-1和335-2的应用可以提供要使用存储设备305上的数据来执行的定制代码。服务335-1和335-2也可以是这些功能的任意组合。表1列出了可以由(多个)处理器330提供的服务的一些示例。
表1:服务类型
(多个)处理器330(以及实际上计算设备310-1)可以以任何期望的方式实现。示例实现可以包括本地处理器,诸如中央处理单元(CPU)或一些其他处理器、图形处理单元(GPU)、通用GPU(GPGPU)、数据处理单元(DPU)、张量处理单元(TPU)和神经处理单元(NPU),以及其他可能性。(多个)处理器330也可以使用现场可编程门阵列(FPGA)或专用集成电路(ASIC)以及其他可能性来实现。如果计算设备310-1包括多于一个处理器330,则每个处理器可以如上所述实现。例如,计算设备310-1可以具有CPU、TPU和FPGA中的每一个,或者计算设备310-1可以具有两个FPGA,或者计算设备310-1可以具有两个CPU和一个ASIC等。
取决于需要的解释,计算设备310-1或处理器330可以被认为是计算存储单元。
尽管图3A将存储设备305和计算设备310-1示出为分离的设备,但是在图3B中,它们可以被组合。因此,计算设备310-2可以包括控制器315、存贮器320-1和提供服务335-1和335-2的(多个)处理器330。如图3A的存储设备305和计算设备310-1一样,可以经由队列对340接收管理和I/O命令。即使计算设备310-2被示出为包括存贮器和(多个)处理器330,图3B仍可以被认为包括与计算存储单元相关联的存储设备。
在图3C所示的又一变型中,示出了计算设备310-3。计算设备310-3可以包括控制器315和存贮器320-1,以及提供服务335-1和335-2的(多个)处理器330。但是尽管计算设备310-3可以被认为是包括控制器315、存贮器320-1和(多个)处理器330(并且也被认为是与计算存储单元相关联的存储设备)的单个组件,与图3B所示的实现不同,控制器315和(多个)处理器330可以各自包括它们自己的队列对325和340(同样,队列对325和340可以用于管理和/或I/O)。通过包括队列对325,控制器315可以提供对存贮器320-1的透明访问(而不是要求所有通信通过(多个)处理器330进行)。
此外,(多个)处理器330可以具有对存贮器320-1的代理存储访问350。因此,代替通过控制器315路由访问请求,(多个)处理器330能够直接从存贮器320-1访问数据。
在图3C中,控制器315和代理存储访问350两者都用虚线示出,以表示它们是可选元件,并且可以取决于实现而被省略。
最后,图3D示出又一个实现方式。在图3D中,示出了计算设备310-4,其可以包括控制器315和类似于图3C的代理存储访问350。另外,计算设备310-4可以包括一个或多个存贮器320-1至320-4的阵列。虽然图3D示出了四个存储元件,但是本公开的实施例可以包括任何数量(一个或多个)的存储元件。此外,各个存储元件可以是其他存储设备,诸如图3A-图3D中所示的那些。
因为计算设备310-4可以包括多于一个存储元件320-1至320-4,所以计算设备310-4可以包括阵列控制器355。阵列控制器355可以管理如何将数据存储在存储元件320-1至320-4上以及如何从存储元件320-1至320-4检索数据。例如,如果存储元件320-1至320-4被实现为独立磁盘冗余阵列(Redundant Array of Independent Disks,RAID)的某一级别,则阵列控制器355可以是RAID控制器。如果使用某一形式的擦除编码来实现存储元件320-1至320-4,则阵列控制器355可以是擦除编码控制器。
图4A示出了根据本公开的实施例的用于将命令路由到图1的计算存储单元135的图1的存储设备120的第一布置。在图4A中,主机105可以发出可以被传送到存储设备120的命令。然后存储设备120可以包括命令路由器405。命令路由器405可以接收该命令、检查该命令,并确定该命令是存储命令还是计算存储单元命令。如果该命令是存储命令,则命令路由器405可以将该命令路由到存储模块410(其可以是,例如存储设备120内的控制器),然后存储模块410可以处理该存储命令。或者,如果该命令是计算存储单元命令,则命令路由器405可以将该命令路由到计算存储单元135,然后计算存储单元135可以处理该计算存储单元命令(可能使用存储器415)。例如,计算存储单元命令可以是执行诸如图3A-图3D的服务335-1和/或335-2的服务的命令;或者,计算存储单元命令可以是加载字节代码的命令或然后可以被执行的程序;或者,计算存储单元命令可以是对在计算存储单元135上运行的程序执行跟踪的命令。简而言之,计算存储单元命令可以是可以被传送到计算存储单元135的任何命令,而不管计算存储单元135是否在存储设备120的“后面”(在某种意义上,存储设备120可以接收该命令并确定在该命令被传送到计算存储单元135之前如何处理该命令)。
至于命令路由器405如何知道特定命令是存储命令还是计算存储单元命令,命令路由器405可以检查命令本身。如果该命令被辨识为存储命令,则该命令可以被路由到存储模块410;否则,该命令可以被路由到计算存储单元135。或者,如果该命令被辨识为计算存储单元命令,则该命令可以被路由到计算存储单元135;否则,该命令可以被路由到存储模块410。
作为示例,考虑表2,其中列出了各种NVMe特征。这些特征可以被定义为由存储设备使用。
表2:NVMe特征列表
注意,保留了特征19h至77h。这意味着这些特征当前没有被定义为由存储设备使用。通常,如果命令列出被标识为19h至77h的特征,则存储设备可能返回错误,不能确定如何处理这样的命令。但是这种特征标识符可以用于被传送到计算存储单元135的命令。例如,特征19h可以用于指示计算存储单元135对一部分代码执行跟踪。命令路由器405在看到使用这种特征标识符的命令时,可以确定该命令是计算存储单元命令,并且可以将该命令路由到计算存储单元135,而不是存储模块410。当前未用于存储命令的其他特征标识符可以类似地用于管理计算存储单元135的其他特征。
虽然上述示例集中于辨识作为存储命令的命令,并将任何其他命令路由到计算存储单元135,但是本公开的实施例可以反过来工作。也就是说,本公开的实施例可以辨识用于计算存储单元135的命令,并且可以将任何未被辨识的命令定向到存储模块410。本公开的实施例还可以组合这两种方法,辨识作为存储命令的命令和作为计算存储单元命令的命令,并适当地路由每一个;任何未被辨识为存储命令或计算存储单元命令的命令都可以导致返回错误。
命令路由器405可以确定将命令路由到哪里的事实并不保证该命令将被成功处理。例如,命令路由器405可以确定特定命令不是存储命令,并且可以将该命令路由到计算存储单元135。但是如果计算存储单元135不能辨识该命令,则计算存储单元135可以返回错误。
此外,命令路由器405可以执行转换。例如,如上所述,参考表2:NVMe特征列表,用于计算存储单元135的命令可以作为存储命令被传送,但是使用存储设备120当前不使用的特定特征。命令路由器405可以负责将由命令路由器405接收的存储格式化命令转换成可以由计算存储单元135处理的格式。(如果命令没有被格式化为存储命令,则命令路由器405还可以将命令转换成存储设备120可以处理的格式。但是通常,命令可以被格式化为存储命令,其可以由存储设备120处理而无需转换。)
在图4A中,计算存储单元135被示出为存储设备120的一部分。但是在本公开的一些实施例中,计算存储单元135可以与存储设备120分离(例如,如上面参考图3A所讨论的)。
图4B示出了根据本公开的实施例的用于将命令路由到图1的计算存储单元135的图1的存储设备的第二布置。图4A和图4B之间的区别在于,在图4B中,可以省略命令路由器135。相反,存储模块410(其同样可以是存储设备120中的控制器)可以检查接收到的命令,并且任何未被辨识为存储命令的命令可以被路由到计算存储单元135。注意,本公开的实施例在这里也可以反过来操作:命令可以首先被计算存储单元135检查,并且然后作为存储命令的任何命令可以被路由到存储模块410。在图4B所示的本公开的实施例中,存储模块410可以以任何期望的方式实现图4A的命令路由器405的处理,或者作为存储模块410内的组件(诸如电路),或者通过使用在存储模块410中的处理器或其他电路上运行的适当的固件或软件。
如上面所讨论的,图4A的命令路由器405(以及图4B的存储模块410,当图4B的存储模块410实现图4A的命令路由器405的逻辑时)可以检查命令,以确定该命令是要由存储模块410还是计算存储单元135处理的命令。但是在本公开的一些实施例中,存储模块410可以接收所有命令,并且可以处理存储模块410可以辨识的命令,并且然后任何未辨识的命令可以被传送到计算存储单元135。本公开的这些实施例可以在存在或不存在图4A的命令路由器405的情况下使用。例如,图4A的命令路由器405可以最初将所有命令路由到存储模块410;当从存储模块410接收到错误结果时,然后图4A的命令路由器405可以将该命令路由到计算存储单元135,以便计算存储单元135尝试处理该命令。在本公开的这些实施例中,图4A的命令路由器405可以包括一些存贮器来缓冲命令,直到存储模块410(成功或不成功)处理该命令为止。
如上面所讨论的,在图4A中,图4A的命令路由器405可以简单地将命令路由到存储模块410或计算存储单元135。图4A的命令路由器405可能不负责将命令转换成可由计算存储单元135执行的格式。可以由计算存储单元135来解释所接收的命令,包括对可以由计算存储单元135执行的一条或多条指令的任何转换。(因为用于存储模块410的命令可以已经是由存储模块410辨识的形式,所以图4A的命令路由器405也不负责转换路由到存储模块410的存储命令)。但是在本公开的一些实施例中,图4A的命令路由器405也可以执行路由到计算存储单元135的命令的转换。当图4B的存储模块410实现图4A的命令路由器405的逻辑时,图4B的存储模块410也是如此。
图5示出了根据本公开的实施例的被配置为将命令路由到图1的计算存储单元135的图4A的命令路由器405。在图5中,命令路由器405可以接收命令505。通过将命令505与存储命令的列表510和/或计算存储单元命令的列表515进行比较,命令路由器405可以确定命令505是存储命令520还是计算存储单元命令525,并且可以将命令505分别路由到存储模块410或计算存储单元135。存储命令的列表510和/或计算存储单元命令的列表515可以被存储在命令路由器405中的一些存贮器(易失性或非易失性的)中,并且可以根据需要进行更新:例如,存储命令的列表510和/或计算存储单元命令的列表515可以在命令路由器405上电时或者当命令路由器405从外部源接收到信号以更新存储命令的列表510和/或计算存储单元命令的列表515时更新。
以上描述使用存储命令的列表510和/或计算存储单元命令的列表515来确定命令505是存储命令520还是计算存储单元命令525。例如,存储命令的列表510可以包括NVMe设置特征命令,以及关于用于存储设备的特征的相关联的信息(如上面在表2中所描述的)。然后不在存储命令的列表510中的任何命令(或者使用未在存储命令的列表510中描述的特征)可以被理解为计算存储单元命令。也可以使用与除NVMe之外的其他协议(例如,高速缓存一致互连协议,诸如计算高速链路(CXL)协议或PCIe协议)相关联的命令。(计算高速链路(Compute Express Link)是计算高速链路联盟(Compute Express Link Consortium)公司的注册商标)。但是本公开的实施例也可以依赖于其他机制来确定命令505是存储命令520还是计算存储单元命令525。例如,命令505可以包括将命令505标识为存储命令520或计算存储单元命令525的标签(可能作为命令本身的一部分,或者可能作为命令元数据,诸如分组报头或其他分组信息)。或者,存储命令520和计算存储单元命令525可以使用不同的协议或不同的命令结构,或者在某种程度上是可区分的,而无需将命令505与存储命令的列表510和/或计算存储单元命令的列表515进行比较。或者,计算存储单元135可以使用供应商特定的命令。
虽然上述讨论将命令路由器405描述为使用存储命令的“列表”510和计算存储命令的列表515,但是本公开的实施例可以使用任何数据结构来存储关于存储命令520和/或计算存储单元命令525的信息。例如,“列表”510和515可以被存储为数组、链表、哈希表或任何其他需要的数据结构,以表示哪些命令是存储命令520,哪些命令是计算存储单元命令525。
图6示出了根据本公开的实施例的支持将命令路由到图1的计算存储单元135的固态驱动(SSD)。在图6中,SSD 120可以包括接口605。接口605可以是用于将SSD 120连接到图1的机器105的接口,并且可以从图1的处理器110(或其他请求源)接收I/O请求,诸如读取请求和写入请求。SSD 120可以包括多于一个接口605:例如,一个接口可能用于基于块的读取和写入请求,而另一接口可能用于键值读取和写入请求。虽然图6暗示接口605是图1的SSD120和机器105之间的物理连接,但是接口605也可以表示可以跨公共物理接口使用的协议差异。例如,SSD 120可以使用U.2或M.2连接器连接到机器105,但是可以支持基于块的请求和键值请求:处理不同类型的请求可以由不同的接口605来执行。
SSD 120也可以包括可以管理接口605的主机接口层610。如果SSD 120包括多于一个接口605,则单个主机接口层610可以管理所有接口,SSD 120可以包括用于每个接口的主机接口层,或者可以使用它们的一些组合。
SSD 120也可以包括SSD控制器615、各种通道620-1、620-2、620-3和620-4,各种闪存芯片625-1、625-2、625-3、625-4、625-5、625-6、625-7和625-8(闪存芯片625-1至625-8可以统称为闪存芯片625)可以沿着这些通道排列。SSD控制器615可以管理沿着通道620-1至620-4(可以统称为通道620)向闪存芯片625-1至625-8传送读取请求和写入请求。尽管图6示出四个通道和八个闪存芯片,但是本公开的实施例可以包括任意数量(一个或多个,无限制)的通道,包括任意数量(一个或多个,无限制)的闪存芯片。
在每个闪存芯片内,空间可以被组织成块,块可以被进一步细分成页,并且可以被分组为超级块。页大小可以根据需要变化:例如,一页可以是4KB的数据。如果要写入少于一整页的内容,则多余的空间是“未使用的”。块可以包含任意数量的页:例如,128或256。并且超级块可以包含任意数量的块。闪存芯片可能不会将数据组织成超级块,而只是块和页。
虽然可以写入和读取页,但SSD通常不允许数据被覆盖:也就是说,现有数据可以不被新数据“就地”替换。相反,当要更新数据时,新数据会被写入SSD上的新页,并且原始页被无效(标记为准备擦除)。因此,SSD页通常具有三种状态中的一个:空闲(准备写入)、有效(包含有效数据)和无效(不再包含有效数据,但在被擦除之前不可用)(这些状态的确切名称可以不同)。
虽然页可以被单独写入和读取,但块是可以被擦除的基本数据单位。也就是说,页不会被单独擦除:块中的所有页通常会同时被擦除。例如,如果一个块包含256页,那么块中的所有256页同时被擦除。这种安排可以导致SSD的一些管理问题:如果选择擦除仍包含一些有效数据的块,则在该块可以被擦除之前,该有效数据可以需要被复制到SSD上其他地方的空闲页。(在本公开的一些实施例中,擦除单位可以不同于块:例如,它可以是超级块,如上所述,超级块可以是多个块的集合)。
由于数据被写入和数据被擦除的单位不同(页对比块),如果SSD一直等到某个块仅包含无效数据时才擦除该块,则SSD可能会耗尽可用的存储空间,即使有效数据量可能少于SSD宣传的容量。为了避免这种情况,SSD控制器615可以包括垃圾收集控制器(图6中未示出)。垃圾收集的功能可以是识别包含所有或几乎所有无效页的块,并释放这些块,使得有效数据可以再次被写入其中。但是如果被选择用于垃圾收集的块包括有效数据,则该有效数据将被垃圾收集逻辑擦除(因为擦除的单位是块,而不是页)。为了避免这些数据丢失,垃圾收集逻辑可以将这些块中的有效数据编程到其他块中。一旦数据已经被编程到新的块中(并且将逻辑块地址(LBA)映射到物理块地址(PBA)的表被更新以反映数据的新位置),则该块可以被擦除,将该块中的页的状态返回到空闲状态。
在单元可能不被信任以正确地保留数据之前,SSD还具有每个单元可以被写入的有限数量。该数量通常被测量为单元经历的编程/擦除循环的数量的计数。通常,单元可以支持的编程/擦除循环的数量意味着SSD将在合理的时间段内保持可靠的功能:对于个人用户来说,用户可以更有可能因为存储容量不足而不是因为已经超过了编程/擦除循环的数量而更换SSD。但是在数据可能被更频繁地写入和擦除的企业环境中,单元超过其编程/擦除循环计数的风险可能更大。
为了帮助抵消这种风险,SSD控制器615可以采用损耗平衡(wear leveling)控制器(图6中未示出)。损耗均衡可以涉及基于块的编程/擦除循环计数来选择数据块以编程数据。通过选择具有较低编程/擦除循环计数的块来编程新数据,SSD可以能够避免增加一些块的编程/擦除循环计数超过它们的可靠操作点。通过保持每个块的损耗水平尽可能接近,SSD可以在更长的时间内保持可靠。
SSD控制器615可以包括闪存转换层(FTL)630(对于不使用闪存的存储设备,其可以更一般地被称为转换层)、命令路由器405、计算存储单元135和存储器415。FTL 630可以处理LBA或其他逻辑ID(由图1的处理器110使用)和物理块地址(PBA)或其他物理地址的转换,其中数据被存储在闪存芯片625-1至625-8中。FTL 630还可以负责将数据从一个PBA重新定位到另一PBA,这可以在执行垃圾收集和/或损耗均衡时发生。命令路由器405、计算存储单元135和存储器415可以是上面参考图1-图4B所讨论的。注意,在本公开的一些实施例中,诸如上面参考图4B描述的那些实施例,命令路由器405可以使用控制器615中的其他硬件来实现,而不是作为单独的模块或电路。
图7示出了根据本公开的实施例的在图1的计算存储单元135中的多个核中生成踪迹。在图7中,计算存储单元135可以包括多个核705-1至705-4(其可以被统称为核705)。图7将计算存储单元135示出为包括四个核705,但是本公开的实施例可以具有包括任何数量(一个或多个)的核705的计算存储单元135。
每个核705可以包括程序跟踪微单元(PTM),如PTM 710-1到710-4所示(并且其可以被统称为PTM 710)。通过写入特定PTM 710,可以启用或禁用核705的跟踪特征。因此,例如,如果用户对核705-1和705-4上的踪迹感兴趣,则PTM 710-1和710-4可以被启用,而PTM710-2和710-3可以被禁用。注意,每个PTM 710可以使用不同的号码来标识,使得能够使用单独的PTM。
随着踪迹的生成,信息可以被提供给漏斗715,漏斗715可以从PTM 710收集信息。然后该信息可以被传递到先入先出(FIFO)缓冲器720。踪迹信息的副本可以作为踪迹725被存储在内部存储器中。该信息还可以被传递给复制器730,复制器730可以将数据的副本传送给跟踪端口接口单元735和嵌入式跟踪缓冲器/嵌入式跟踪FIFO(ETB/ETF)745,跟踪端口接口单元735可以将踪迹740保存在外部捕获设备中,并且ETB/ETF 745可以将踪迹750保存在计算存储引擎135的图4的存储器415中。
PTM 710可以表示信息源,诸如在图7的示例中描述的踪迹。以类似的方式,可以指定信息宿(sink),标识应该保存踪迹的位置。因此,例如,ETB/ETF745可以被识别为踪迹宿。以类似的方式,TPIU 735和/或FIFO缓冲器720可以被识别为踪迹宿。
如上所述,本公开的一些实施例可以使用NVMe设置特征命令来表示图5的计算存储单元命令525。对于可以表示图5的计算存储单元命令525的特征,该特征可以包括可以被传递到计算存储单元135的任何期望的信息。例如,NVMe设置特征命令可以在命令双字(command double word,CDW)10中包括特征标识符(例如,最低有效的8比特可以用于标识该特征),并且可以在CDW 11中包括特征特定信息。该特征特定信息可以是,例如一个值,其中各种比特可以用于启用或禁用计算存储单元135中的各种特征。对于踪迹,一些比特可以表示源(可以被启用或禁用),而其他比特可以表示宿(可以被启用或禁用)。例如,值0x10F可以指示图7的PTM 710-1到710-4可以被启用(因为十六进制F是二进制1111),并且宿0可以被启用(因为十六进制1是二进制0001)。取决于计算存储单元135的特征,不同的值可以表示被启用和/或被禁用的特征的不同组合,并且不是该值中的所有比特都可以被使用(一些比特可能不需要或者可以被忽略)。
CDW 0可以用于返回NVMe设置特征命令的结果。
图7还示出本公开实施例的另一益处。当使用终端接口来管理计算存储单元135(或其他处理器)时,每个核或其他组件可以被单独启用或禁用。因此,可以向管理核705-1发出一个命令,可以向管理核705-2发出另一命令,可以使用另一命令来管理PTM 710-1,可以向管理PTM 710-2发出另一命令等。但是使用本公开的实施例,因为不同的值可以表示在计算存储单元135中不同服务被启用和/或禁用,所以使用这样的命令使得单个命令能够表示计算存储单元135的多个单独的指令。也就是说,使用值0xF的单个命令可以被用于启用PTM 710-1到710-4,而不是传送单独的命令以启用PTM 710-1,然后启用PTM 710-2等。因此,本公开的实施例支持用一个命令启用和/或禁用计算存储单元135的多个服务。
虽然以上示例描述了如何在计算存储单元135中启用和/或禁用跟踪,但是本公开的实施例也可以用于其他命令。例如,使用本公开的实施例,简单地通过使用不同的特征标识符(或不同的命令),核705可以被选择性地启用和/或禁用,CPU频率可以被改变,纠错可以被启用和/或禁用。
图8示出了根据本公开的实施例的图4A的命令路由器405将命令路由到图1的计算存储单元135的过程的流程图。在图8中,在块805,图4A的命令路由器405可以从图1的主机105接收图5的命令505。在块810,基于图5的命令505是用于图1的存储设备120还是图1的计算存储单元135,图5的命令路由器405可以为图5的命令505选择接收方,诸如图6的控制器615或图3的计算存储单元310。在块815,图4A的命令路由器405可以将图5的命令505路由到接收方。
图9示出了根据本公开的实施例的如何使用图4A的命令路由器405来路由命令。在图9中,在块905,图4A的命令路由器405可以查验图5的命令505是否在图5的存储命令的列表510中。如果图5的命令505在图5的存储命令的列表510中,则可以选择图1的存储设备120(或图6的控制器615)作为图5的命令505的接收方,并且在块910,图4A的命令路由器405可以将图5的命令505路由到图1的存储设备120。
或者,在块915,图4A的命令路由器405可以查验图5的命令505是否在图5的计算存储单元命令的列表515中。如果图5的命令505在图5的计算存储单元命令的列表515中,则可以选择图1的计算存储单元135作为图5的命令505的接收方,并且在块920,图4A的命令路由器405可以将图5的命令505路由到图1的计算存储单元135。否则,如果图5的命令505既不在图5的存储命令的列表510中,也不在图5的计算存储单元命令的列表515中,则在块925,可以报告错误。
注意,图9包括块905和915。在本公开的一些实施例中,包括这两种查验可能是多余的:即,如果图5的命令505不在图5的存储命令的列表510中,则图5的命令505可以被假定在图5的计算存储单元命令的列表515中,并且块915可以被省略。可以反过来考虑相同的可能性:如果图5的命令505不在图5的计算存储单元命令的列表515中,则图5的命令505可以被假定在图5的存储命令的列表510中,并且块905可以被省略。但是如果本公开的实施例可以被推广到支持旨在通过图1的存储设备120到达的其他模块的其他类型的命令,则块905和915两者(以及其他类似的块)可以被包括。或者,可以查验图5的存储命令的列表510和图5的计算存储单元命令的列表515:如果图5的命令505不在任一列表中,则可以返回错误。
在图8-图9中,示出了本公开的一些实施例。但是本领域技术人员将认识到,通过改变块的顺序、省略块或包括附图中未示出的链接,本公开的其他实施例也是可能的。无论是否明确描述,流程图的所有这些变化都被认为是本公开的实施例。
本公开的实施例可以使用通用控制特征,诸如图4A的命令路由器405、用于跨计算设备中的多个组件的计算存储,用于并发日志记录、跟踪和调试目的。本公开的实施例可以包括扩展和克服与计算设备通信的现有接口的限制的机制。
本公开的实施例可以通过扩展接口现有命令并将其直接映射到计算设备中的配置特征,来允许对计算设备硬件的配置、特征和设置的直接控制。
本公开的实施例可以提供将计算设备的功能扩展到执行程序和生成输出之外的能力。这种功能的示例可以包括配置处理器中支持的中断的数量;启用/禁用每个核或所有核的跟踪以实现多维调试(并行调试);在处理器中设置特定选项,诸如调试级别或启用/禁用纠错控制(ECC);以及为处理器中的MPU(存储器保护单元)配置区域的数量。
在非物理连接到计算设备的情况下实现跟踪和调试的能力对于可能无法直接访问设备的数据中心和云环境可以是有用的。
本公开的优点可以包括向主机暴露构建在计算设备中的特征,因此它可以被利用和使用。本公开的一些实施例可以包括当不存在对设备端口的直接访问时使用和控制计算设备中的特征的能力(诸如联合测试访问组(JTAG))。本公开的一些实施例可以包括使用一个接口来传递命令并从固态驱动(SSD)和计算设备获得结果的能力,而不需要两个不同的接口。
本公开的实施例,诸如图4A的命令路由器405,可以允许直接控制计算设备硬件特征和配置。本公开的实施例可以使用存储器映射区域作为将数据移动到设备、加载和执行计算命令以及将结果移回主机的方式,来避免可能限制主机和计算设备之间的交互。本公开的一些实施例可以包括获取调试数据或计算设备正在执行的指令的踪迹的机制。本公开的一些实施例可以包括用于多维调试(并行调试)的机制。本公开的一些实施例可以包括控制和配置计算设备的特征的机制。
本公开提出了一种机制,用于访问计算设备(其能够是ARM中央处理单元(CPU)、图形处理单元(GPU)、神经处理单元(NPU)等)功能,并通过非易失性存储器高速(NVMe)或计算高速链接(CXL)接口启用/禁用它们。本公开的一些实施例可以包括使用一个命令来启用/禁用特征和查验状态而不需要多个命令的能力。本公开的一些实施例可以使用命令解析器/重路由机制来查验传入命令并将它们重定向到计算设备或存储设备。
本公开的一些实施例可以包括图4A的命令路由器405,用于通过扩展接口现有命令并将其直接映射到计算设备中的配置特征来实现对计算设备硬件的配置、特征和设置的直接控制。本公开的一些实施例可以给出将计算设备的功能扩展到执行程序和生成输出之外的能力。例如,一些实施例可以配置处理器中支持的中断的数量。
本公开的一些实施例可以启用/禁用每个核或所有核的跟踪,以实现多维调试(并行调试)。本公开的一些实施例可以包括在处理器中设置特定选项,如调试级别或启用/禁用ECC。
本公开的一些实施例可以包括配置处理器中的存储器保护单元(MPU)中的区域数量,以通过在特权和非特权访问级别中定义不同的访问许可来保护存储器区域。
本公开的一些实施例可以包括计算存储设备,其中计算设备不具有主机可以用来微调计算设备的能力的接口。
本公开的一些实施例可以包括现有的设置特征(SET feature)命令,其可以用于启用/禁用计算设备的新特征及其参数,而无需为每个特征引入新命令。命令双字(CDW)10可以包括特征标识符,其中比特0-7指定该特征,并且CDW 11可以包括特征特定信息。剩余的命令字段可以被保留。命令结果可以在CDW 0中被返回。
本公开的一些实施例可以包括保留字段19h-77h,其可以用于启用/禁用ARM调试/跟踪特征或其他特征。
存储模块,诸如图4B的存储模块410,可以基于特征标识符重新路由命令。如果该命令包括存储设备NVMe命令,则存储模块可以像任何典型的NVMe命令一样处理该命令。如果该命令没有被识别为NVMe存储命令,并且该命令在计算设备命令的列表中,则存储模块可以将该命令重新路由到计算设备。
本公开的实施例可以克服NVMe/CXL接口的缺点,该缺点可以阻止主机处理器与计算设备直接通信。
本公开的一些实施例可以提供启用/禁用与用户不能直接访问设备的任何计算设备相关的特征的机制。
供应商特定的功能可以被添加到功能列表中。
本公开的一些实施例可以使用和利用计算设备提供的现有调试/跟踪和剖析工具,而不需要重新实现这些工具。
本公开的一些实施例可以提供使用一个命令来启用/禁用特征并查验状态而不需要多个命令的机制。
本公开的实施例可以引入充当命令解析器/重路由器的新特征,诸如图4A的命令路由器405,以查验传入命令并将它们重定向到计算设备或存储设备。
本公开的一些实施例可以包括通过NVMe/CXL接口或缺乏这种能力的任何其他接口来访问、配置和触发计算设备特征的机制。
本公开的一些实施例可以包括使用一个命令来启用/禁用特征和查验状态而不需要多个命令的能力。
本公开的一些实施例可以包括多组件计算存储设备内部架构,以查验传入命令并将它们重定向到计算设备或存储设备。第一个选项可以是使用命令解析器/重路由器来识别传入的命令并将它们重新路由到对应的硬件。第二个选项是将存储模块用作命令解析器/重路由器。例如,存储设备接收命令(例如,NVMe命令)。如果该命令是存储设备NVMe命令,则该命令可以被用作任何典型的NVMe命令。如果该命令未被识别为NVMe存储命令,并且该命令在计算设备命令的列表中,则存储模块将该命令重新路由到计算设备。
本公开的一些实施例可以设置命令解析器作业来识别命令并将其重新路由到对应的硬件。例如,如果命令是NVMe存储命令,则命令解析器可以将其重新路由到存储设备;如果命令是调试跟踪命令,则命令解析器可以将其重新路由到计算设备。
本公开的一些实施例可以包括存储设备(例如,SSD)内部的命令解析。本公开的其他实施例可以具有存储设备外部的命令解析。通过确定该命令所属的硬件,该命令可以被“重新路由”到对应的硬件。
本公开的一些实施例可以包括命令描述符以生成某些数据模式,而本公开的其他实施例可以集中于在计算设备环境中基于命令将命令重新路由到适当的硬件(存储设备或计算设备),其中命令能够以存储为目标或者能够旨在触发计算设备中的某些动作。
本公开的一些实施例可以包括基于Linux开放固件层命名约定的名称,其跟随设备的基本物理地址,其中设备名称跟随基本物理地址。
本公开的一些实施例可以通过启用(多个)踪迹源和踪迹宿来启用跟踪。在本公开的一些实施例中,在任何给定时刻可以启用的宿(或源)的数量没有限制。“启用”源可以立即触发踪迹捕获;“禁用”源可可以立即触发踪迹捕获。
在本公开的一些实施例中,系统中的每个核可以被映射到被称为嵌入式跟踪宏单元(ETM)的伴生块。操作系统驱动可以用特定的跟踪特性对跟踪宏单元进行编程。踪迹可以由硬件以称为程序流踪迹的格式生成。程序流踪迹可以包括:一些分支指令;例外;返回;和/或存储器障碍。在本公开的一些实施例中,通过使用原始程序映像和踪迹,有可能重构处理器通过代码所采用的路径。
一些实施例可以使用OpenCSD库(开放CoreSight解码库)来解码程序流踪迹。
本公开的一些实施例可以定义片上挂钩来实现片上指令和数据访问跟踪工具。本公开的实施例可以具有跟踪CPU核所做的事情而不影响其性能的能力。CPU核可以不参与,因此可以对性能没有影响。可以不需要连接到外部硬件。来自不同源的踪迹的同步可以包括多维调试。在本公开的一些实施例中,多维调试对于在条件发生时可能负担不起停止目标进行调试的调试场景可以是有用的。一些实施例可以包括不具有JTAG端口或者该端口不可访问的系统。
在本文公开的实施例中,可以使用跟踪解决的问题可以包括指针问题;非法指令和数据中止(诸如未对齐的写入);代码覆盖,诸如写入闪存、非期望的写入外围寄存器(SFR)、堆栈损坏;数据越界;未初始化的变量和数组;慢速程序;堆栈溢出;通信协议和定时问题;代码覆盖率;和执行源代码的时间。
本公开的实施例使得能够确定发送到存储设备的命令是用于存储设备还是用于计算存储单元。然后,基于该命令的预期接收方,该命令可以被路由到适当的硬件。本公开的一些实施例可以在命令解析器中执行路由(在存储设备内部或外部);本公开的其他实施例可以使用存储设备的控制器中的逻辑来执行路由。本公开的实施例还可以允许使用单个命令来表示多个指令(可能必须使用到计算存储单元的终端接口来单独发出这些指令)。
以下讨论旨在提供其中可以实施本公开的某些方面的一个或多个合适机器的简要概括描述。一个或多个机器可以至少部分地由来自诸如键盘、鼠标等的传统输入设备的输入,以及通过从另一台机器接收的指令、与虚拟现实(VR)环境的交互、生物反馈或其他输入信号来控制。如本文所使用的,术语“机器”旨在广泛地涵盖单个机器、虚拟机或通信耦合的机器、虚拟机或一起操作的设备的系统。示例性机器包括:计算设备,诸如个人计算机、工作站、服务器、便携式计算机、手持设备、电话、平板电脑等;以及运输设备,诸如私人或公共运输,例如汽车、火车、出租车等。
一个或多个机器可以包括嵌入式控制器,诸如可编程或不可编程逻辑设备或阵列、专用集成电路(ASIC)、嵌入式计算机、智能卡等。一个或多个机器可以利用到一个或多个远程机器的一个或多个连接,诸如通过网络接口、调制解调器或其他通信耦合。机器可以通过物理和/或逻辑网络互连,诸如内联网、互联网、局域网、广域网等。本领域技术人员将理解,网络通信可以利用各种有线和/或无线短程或远程载波和协议,包括射频(RF)、卫星、微波、电气和电子工程师协会(IEEE)802.11、蓝牙、光学、红外、电缆、激光等。
本公开的实施例可以通过参考或结合包括功能、过程、数据结构、应用程序等的相关数据来描述,其在被机器访问时导致机器执行任务或定义抽象数据类型或低级硬件上下文。相关联的数据可以被存储在例如易失性和/或非易失性存储器中,例如RAM、ROM等,或者被存储在其他存储设备及其相关存储介质中,包括硬盘驱动、软盘、光存储器、磁带、闪存、记忆棒、数字视频盘、生物存储器等。相关联的数据可以以分组、串行数据、并行数据、传播信号等的形式在包括物理和/或逻辑网络的传输环境中传递,并且可以以压缩或加密格式使用。相关联的数据可以在分布式环境中使用,并且本地和/或远程被存储以供机器访问。
本公开的实施例可以包括有形的、非暂时性的机器可读介质,该介质包括可由一个或多个处理器执行的指令,该指令包括执行如本文所述的本公开的元件的指令。
上述方法的各种操作可以由能够执行操作的任何合适的部件来执行,诸如各种硬件和/或(多个)软件组件、电路和/或(多个)模块。该软件可以包括用于实现逻辑功能的可执行指令的有序列表,并且可以体现在任何“处理器可读介质”中,以供指令执行系统、装置或设备使用或与之结合,诸如单核或多核处理器或包含处理器的系统。
结合本文公开的实施例描述的方法或算法和功能的块或步骤可以直接体现在硬件、由处理器执行的软件模块或两者的组合中。如果在软件中实现,则这些功能可以作为有形的非暂时性计算机可读介质上的一个或多个指令或代码来存储或发送。软件模块可以驻留在随机存取存储器(RAM)、闪存、只读存储器(ROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、寄存器、硬盘、可移动磁盘、CD ROM或本领域已知的任何其他形式的存储介质中。
已经参照所示实施例描述和图示了本公开的原理,将会认识到,所示实施例可以在布置和细节上进行修改而不背离这些原理,并且可以以任何期望的方式进行组合。并且,尽管前面的讨论集中在特定的实施例上,但是也可以考虑其他的配置。具体而言,尽管在此使用了诸如“根据本公开的实施例”等表述,但是这些短语意在泛指实施例的可能性,并不旨在将本公开限于特定的实施例配置。如本文所使用的,这些术语可以指相同或不同的实施例,这些实施例可以组合成其他实施例。
前述说明性实施例不应被解释为限制其公开内容。尽管已经描述了几个实施例,但是本领域技术人员将容易理解,在本质上不脱离本公开的新颖教导和优点的情况下,对这些实施例的许多修改是可能的。因此,所有这样的修改旨在包括在权利要求中定义的本公开的范围内。
本公开的实施例可以无限制地扩展到以下声明:
声明1.本公开的实施例包括一种存储设备,包括:
数据的存贮器;
控制器,用于处理来自主机处理器的对存贮器中的数据的输入/输出(I/O)请求;
计算存储单元,用于实现用于对存贮器中的数据执行的至少一个服务;以及
命令路由器,用于至少部分基于从主机处理器接收的命令将该命令路由到控制器或计算存储单元。
声明2.本公开的实施例包括根据声明1的存储设备,其中,该命令包括非易失性存储器高速(NVMe)命令、计算高速链接(CXL)命令或外围组件互连高速(PCIe)命令中的至少一个。
声明3.本公开的实施例包括根据声明1的存储设备,其中,该命令包括供应商特定的命令。
声明4.本公开的实施例包括根据声明1的存储设备,其中,该存储设备包括固态驱动(SSD)。
声明5.本公开的实施例包括根据声明1的存储设备,其中,该控制器包括命令路由器。
声明6.本公开的实施例包括根据声明5的存储设备,其中,该控制器包括用于实现命令路由器的逻辑。
声明7.本公开的实施例包括根据声明1的存储设备,其中,该命令路由器被配置为至少部分地基于该命令是存储设备命令来将该命令路由到控制器。
声明8.本公开的实施例包括根据声明1的存储设备,其中,该命令路由器被配置为至少部分地基于该命令是计算存储单元命令来将该命令路由到计算存储单元。
声明9.本公开的实施例包括根据声明1的存储设备,其中,该命令包括计算存储单元的至少两个服务。
声明10.本公开的实施例包括根据声明1的存储设备,其中,该命令路由器包括要被路由到计算存储单元的命令的列表。
声明11.本公开的实施例包括根据声明1的存储设备,其中,该命令路由器包括要被路由到控制器的命令的列表。
声明12.本公开的实施例包括根据声明1的存储设备,其中,该计算存储单元包括中央处理单元(CPU)、复杂指令集计算机(CISC)、精简指令集计算机(RISC)、现场可编程门阵列(FPGA)、专用集成电路(ASIC)、图形处理单元(GPU)、通用GPU(GPGPU)、张量处理单元(TPU)或神经处理单元(NPU)中的至少一个。
声明13.本公开的实施例包括根据声明1的存储设备,其中,该计算存储单元包括单个核。
声明14.本公开的实施例包括根据声明1的存储设备,其中,该计算存储单元包括至少两个核。
声明15.本公开的实施例包括一种方法,包括:
在命令路由器处接收来自主机处理器的命令;
至少部分基于该命令选择存储设备的控制器或计算存储单元作为接收方;和
将该命令路由到接收方。
声明16.本公开的实施例包括根据声明15所述的方法,其中,该命令包括非易失性存储器高速(NVMe)命令、计算高速链接(CXL)命令或外围组件互连高速(PCIe)命令中的至少一个。
声明17.本公开的实施例包括根据声明15所述的方法,其中,该命令包括供应商特定的命令。
声明18.本公开的实施例包括根据声明15的方法,其中,该存储设备包括固态驱动(SSD)。
声明19.本公开的实施例包括根据声明15的方法,其中,该命令路由器是存储设备的组件。
声明20.本公开的实施例包括根据声明15的方法,其中,该存储设备的控制器包括命令路由器。
声明21.本公开的实施例包括根据声明20的方法,其中,该控制器包括用于实现命令路由器的逻辑。
声明22.本公开的实施例包括根据声明15的方法,其中,该命令包括计算存储单元的至少两个服务。
声明23.本公开的实施例包括根据声明15所述的方法,其中,至少部分地基于该命令选择存储设备的控制器或计算存储单元作为接收方包括:在命令路由器处确定该命令是否在要被路由到计算存储单元的命令的列表中。
声明24.本公开的实施例包括根据声明15所述的方法,其中,至少部分地基于该命令选择存储设备的控制器或计算存储单元作为接收方包括:在命令路由器处确定该命令是否在要被路由到存储设备的命令的列表中。
声明25.本公开的实施例包括根据声明15的方法,其中,该计算存储单元包括中央处理单元(CPU)、复杂指令集计算机(CISC)、精简指令集计算机(RISC)、现场可编程门阵列(FPGA)、专用集成电路(ASIC)、图形处理单元(GPU)、通用GPU(GPGPU)、张量处理单元(TPU)或神经处理单元(NPU)中的至少一个。
声明26.本公开的实施例包括根据声明15的方法,其中,该计算存储单元包括单个核。
声明27.本公开的实施例包括根据声明15的方法,其中,该计算存储单元包括至少两个核。
声明28.本公开的实施例包括一种制品,该制品包括非暂时性存储介质,该非暂时性存储介质上存储有指令,当由机器执行时,该指令导致:
在命令路由器处接收来自主机处理器的命令;
至少部分基于该命令选择存储设备的控制器或计算存储单元作为接收方;和
将该命令路由到接收方。
声明29.本公开的实施例包括根据声明28所述的制品,其中,该命令包括非易失性存储器高速(NVMe)命令、计算高速链接(CXL)命令或外围组件互连高速(PCIe)命令中的至少一个。
声明30.本公开的实施例包括根据声明28所述的制品,其中,该命令包括供应商特定的命令。
声明31.本公开的实施例包括根据声明28所述的制品,其中,该存储设备包括固态驱动(SSD)。
声明32.本公开的实施例包括根据声明28的制品,其中,该命令路由器是存储设备的组件。
声明33.本公开的实施例包括根据声明28的制品,其中,该存储设备的控制器包括命令路由器。
声明34.本公开的实施例包括根据声明33的制品,其中,该控制器包括用于实现命令路由器的逻辑。
声明35.本公开的实施例包括根据声明28的制品,其中,该命令包括计算存储单元的至少两个服务。
声明36.本公开的实施例包括根据声明28所述的制品,其中,至少部分地基于该命令选择存储设备的控制器或计算存储单元作为接收方包括:在命令路由器处确定该命令是否在要被路由到计算存储单元的命令的列表中。
声明37.本公开的实施例包括根据声明28所述的制品,其中,至少部分地基于该命令选择存储设备的控制器或计算存储单元作为接收方包括:在命令路由器处确定该命令是否在要被路由到存储设备的命令的列表中。
声明38.本公开的实施例包括根据声明28的制品,其中,该计算存储单元包括中央处理单元(CPU)、复杂指令集计算机(CISC)、精简指令集计算机(RISC)、现场可编程门阵列(FPGA)、专用集成电路(ASIC)、图形处理单元(GPU)、通用GPU(GPGPU)、张量处理单元(TPU)或神经处理单元(NPU)中的至少一个。
声明39.本公开的实施例包括根据声明28的制品,其中,该计算存储单元包括单个核。
声明40.本公开的实施例包括根据声明28的制品,其中,该计算存储单元包括至少两个核。
因此,鉴于本文描述的实施例的各种排列,该详细描述和所附材料仅旨在说明,而不应被视为限制本公开的范围。因此,本公开所要求保护的是可以落入所附权利要求及其等同物的范围和精神内的所有此类修改。
Claims (20)
1.一种存储设备,包括:
数据的存贮器;
控制器,用于处理来自主机处理器的对所述存贮器中的数据的输入/输出I/O请求;
计算存储单元,用于实现用于对所述存贮器中的数据执行的至少一个服务;和
命令路由器,用于至少部分基于从所述主机处理器接收的命令来将所述命令路由到所述控制器或所述计算存储单元。
2.根据权利要求1所述的存储设备,其中,所述命令包括非易失性存储器高速NVMe命令、计算高速链接CXL命令或外围组件互连高速PCIe命令中的至少一个。
3.根据权利要求1所述的存储设备,其中,所述存储设备包括固态驱动SSD。
4.根据权利要求1所述的存储设备,其中,所述控制器包括所述命令路由器。
5.根据权利要求1所述的存储设备,其中,所述命令路由器被配置为至少部分基于所述命令是存储设备命令来将所述命令路由到所述控制器。
6.根据权利要求1所述的存储设备,其中,所述命令路由器被配置为至少部分基于所述命令是计算存储单元命令来将所述命令路由到所述计算存储单元。
7.根据权利要求1所述的存储设备,其中,所述命令包括所述计算存储单元的至少两个服务。
8.根据权利要求1所述的存储设备,其中,所述命令路由器包括要被路由到所述控制器的命令的列表。
9.根据权利要求1所述的存储设备,其中,所述计算存储单元包括至少两个核。
10.一种存储设备的操作方法,包括:
在命令路由器处接收来自主机处理器的命令;
至少部分基于所述命令来选择所述存储设备的控制器或计算存储单元作为接收方;以及
将所述命令路由到所述接收方。
11.根据权利要求10所述的操作方法,其中,所述命令包括非易失性存储器高速NVMe命令、计算高速链接CXL命令或外围组件互连高速PCIe命令中的至少一个。
12.根据权利要求10所述的操作方法,其中,所述存储设备的控制器包括所述命令路由器。
13.根据权利要求10所述的操作方法,其中,所述命令包括所述计算存储单元的至少两个服务。
14.根据权利要求10所述的操作方法,其中,至少部分基于所述命令来选择所述存储设备的控制器或计算存储单元作为接收方包括:在所述命令路由器处确定所述命令是否在要被路由到所述存储设备的命令的列表中。
15.根据权利要求10所述的操作方法,其中,至少部分基于所述命令来选择所述存储设备的控制器或计算存储单元作为接收方包括:在所述命令路由器处确定所述命令是否在要被路由到所述计算存储单元的命令的列表中。
16.根据权利要求10所述的操作方法,其中,所述计算存储单元包括至少两个核。
17.一种非暂时性存储介质,所述非暂时性存储介质上存储有指令,当由机器执行时,所述指令导致:
在命令路由器处接收来自主机处理器的命令;
至少部分基于所述命令来选择存储设备的控制器或计算存储单元作为接收方;以及
将所述命令路由到所述接收方。
18.根据权利要求17所述的非暂时性存储介质,其中,所述存储设备的控制器包括所述命令路由器。
19.根据权利要求17所述的非暂时性存储介质,其中,所述命令包括所述计算存储单元的至少两个服务。
20.根据权利要求17所述的非暂时性存储介质,其中,至少部分基于所述命令来选择存储设备的控制器或计算存储单元作为接收方包括:在所述命令路由器处确定所述命令是否在要被路由到所述存储设备的命令的列表中。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202163223544P | 2021-07-19 | 2021-07-19 | |
US63/223,544 | 2021-07-19 | ||
US17/482,412 | 2021-09-22 | ||
US17/482,412 US11966343B2 (en) | 2021-07-19 | 2021-09-22 | Universal mechanism to access and control a computational device |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115639952A true CN115639952A (zh) | 2023-01-24 |
Family
ID=82611219
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210849202.8A Pending CN115639952A (zh) | 2021-07-19 | 2022-07-19 | 存储设备及其操作方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11966343B2 (zh) |
EP (1) | EP4123465A1 (zh) |
KR (1) | KR20230013627A (zh) |
CN (1) | CN115639952A (zh) |
TW (1) | TW202314488A (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230112448A1 (en) * | 2021-10-12 | 2023-04-13 | Seagate Technology Llc | Computational storage drive using fpga implemented interface |
US11941266B2 (en) * | 2021-10-20 | 2024-03-26 | Samsung Electronics Co., Ltd. | Resource isolation in computational storage devices |
US11880568B2 (en) | 2021-11-17 | 2024-01-23 | Seagate Technology Llc | On demand configuration of FPGA interfaces |
Family Cites Families (84)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7673180B1 (en) | 2005-05-05 | 2010-03-02 | Sun Microsystems, Inc. | Method and apparatus for dispatching a remote debugging agent in a distributed computing environment |
US8209704B1 (en) | 2008-03-28 | 2012-06-26 | Emc Corporation | Techniques for user space and kernel space communication |
US8041849B2 (en) | 2008-07-02 | 2011-10-18 | Lsi Corporation | Method for handling small computer system interface (SCSI) commands via a redundant array of inexpensive disks (RAID) device driver |
US9703678B2 (en) | 2008-12-23 | 2017-07-11 | Microsoft Technology Licensing, Llc | Debugging pipeline for debugging code |
US8261361B2 (en) | 2009-03-11 | 2012-09-04 | Microsoft Corporation | Enabling sharing of mobile communication device |
US8055816B2 (en) | 2009-04-09 | 2011-11-08 | Micron Technology, Inc. | Memory controllers, memory systems, solid state drives and methods for processing a number of commands |
US8271557B1 (en) | 2009-04-20 | 2012-09-18 | Xilinx, Inc. | Configuration of a large-scale reconfigurable computing arrangement using a virtual file system interface |
US8806511B2 (en) | 2010-11-18 | 2014-08-12 | International Business Machines Corporation | Executing a kernel device driver as a user space process |
US8990536B2 (en) | 2011-06-01 | 2015-03-24 | Schneider Electric It Corporation | Systems and methods for journaling and executing device control instructions |
US20120311117A1 (en) | 2011-06-01 | 2012-12-06 | Morgan Stanley | Object Pipeline-Based Virtual Infrastructure Management |
US8898542B2 (en) | 2011-12-12 | 2014-11-25 | Cleversafe, Inc. | Executing partial tasks in a distributed storage and task network |
US8914785B2 (en) | 2012-07-30 | 2014-12-16 | International Business Machines Corporation | Providing virtual appliance system firmware images |
US9122794B2 (en) | 2012-10-30 | 2015-09-01 | Oracle International Corporation | System and method for debugging domain specific languages |
US9430412B2 (en) | 2013-06-26 | 2016-08-30 | Cnex Labs, Inc. | NVM express controller for remote access of memory and I/O over Ethernet-type networks |
US10187479B2 (en) | 2013-08-26 | 2019-01-22 | Vmware, Inc. | Cloud-scale heterogeneous datacenter management infrastructure |
WO2015067983A1 (en) | 2013-11-08 | 2015-05-14 | Sandisk Il Ltd. | Reduced host data command processing |
US9542224B2 (en) | 2014-01-30 | 2017-01-10 | Vmware, Inc. | User space function execution from a kernel context for input/output filtering from a thread executing in the user space |
US9696942B2 (en) | 2014-03-17 | 2017-07-04 | Mellanox Technologies, Ltd. | Accessing remote storage devices using a local bus protocol |
WO2016033718A1 (zh) | 2014-09-01 | 2016-03-10 | 华为技术有限公司 | 访问文件的方法、装置和存储系统 |
CN109766302B (zh) | 2014-09-12 | 2022-09-16 | 华为技术有限公司 | 设备管理的方法和装置 |
US9542122B2 (en) | 2014-10-23 | 2017-01-10 | Seagate Technology Llc | Logical block addresses used for executing host commands |
WO2016074166A1 (en) | 2014-11-12 | 2016-05-19 | Intel Corporation | Live migration of virtual machines from/to host computers with graphics virtualization |
US20160378545A1 (en) | 2015-05-10 | 2016-12-29 | Apl Software Inc. | Methods and architecture for enhanced computer performance |
US10552058B1 (en) * | 2015-07-17 | 2020-02-04 | Radian Memory Systems, Inc. | Techniques for delegating data processing to a cooperative memory controller |
US10705952B2 (en) | 2015-11-04 | 2020-07-07 | Sandisk Technologies Llc | User space data storage management |
EP3916536A1 (en) | 2015-12-28 | 2021-12-01 | Huawei Technologies Co., Ltd. | Data processing method and nvme storage device |
US9632848B1 (en) | 2015-12-29 | 2017-04-25 | Advanced Micro Devices, Inc. | Asynchronous submission of commands |
GB2546343A (en) | 2016-01-15 | 2017-07-19 | Stmicroelectronics (Grenoble2) Sas | Apparatus and methods implementing dispatch mechanisms for offloading executable functions |
US20200034073A1 (en) | 2016-02-22 | 2020-01-30 | Nutanix, Inc. | Accelerating background tasks in a computing cluster |
US10877911B1 (en) | 2016-03-30 | 2020-12-29 | Amazon Technologies, Inc. | Pattern generation using a direct memory access engine |
US10642496B2 (en) | 2016-04-01 | 2020-05-05 | Sandisk Technologies Inc. | Out of order read transfer with host memory buffer |
FR3051934A1 (fr) | 2016-05-24 | 2017-12-01 | Orange | Procede d'identification d'au moins une fonction d'un noyau d'un systeme d'exploitation |
KR102278721B1 (ko) | 2016-07-22 | 2021-07-16 | 삼성전자주식회사 | 비휘발성 메모리 익스프레스(NVMe) 장치의 커맨드의 실행 조정을 위한 시스템 및 방법 |
US10756816B1 (en) | 2016-10-04 | 2020-08-25 | Pure Storage, Inc. | Optimized fibre channel and non-volatile memory express access |
US10678432B1 (en) | 2016-10-04 | 2020-06-09 | Pure Storage, Inc. | User space and kernel space access to memory devices through private queues |
US10466903B2 (en) | 2017-03-24 | 2019-11-05 | Western Digital Technologies, Inc. | System and method for dynamic and adaptive interrupt coalescing |
CN110073323B (zh) | 2017-03-24 | 2022-10-25 | 西部数据技术公司 | 使用控制器存储器缓冲区进行推测性执行命令的系统和方法 |
US20180285252A1 (en) * | 2017-04-01 | 2018-10-04 | Intel Corporation | Optimized memory access bandwidth devices, systems, and methods for processing low spatial locality data |
KR102263357B1 (ko) | 2017-04-19 | 2021-06-11 | 한국전자통신연구원 | 분산 파일시스템 환경에서 사용자 수준 dma i/o를 지원하는 시스템 및 그 방법 |
US10534546B2 (en) | 2017-06-13 | 2020-01-14 | Western Digital Technologies, Inc. | Storage system having an adaptive workload-based command processing clock |
US10496335B2 (en) * | 2017-06-30 | 2019-12-03 | Intel Corporation | Method and apparatus for performing multi-object transformations on a storage device |
US10908998B2 (en) | 2017-08-08 | 2021-02-02 | Toshiba Memory Corporation | Managing function level reset in an IO virtualization-enabled storage device |
US10719474B2 (en) * | 2017-10-11 | 2020-07-21 | Samsung Electronics Co., Ltd. | System and method for providing in-storage acceleration (ISA) in data storage devices |
US11074114B1 (en) | 2017-12-29 | 2021-07-27 | Virtuozzo International Gmbh | System and method for executing applications in a non-native environment |
CN108415795B (zh) | 2018-02-12 | 2019-04-05 | 人和未来生物科技(长沙)有限公司 | 一种容器Dockerfile、容器镜像快速生成方法及系统 |
US11792307B2 (en) | 2018-03-28 | 2023-10-17 | Apple Inc. | Methods and apparatus for single entity buffer pool management |
US10592380B2 (en) | 2018-04-20 | 2020-03-17 | Sysdig, Inc. | Programmatic container monitoring |
US10769050B2 (en) | 2018-05-16 | 2020-09-08 | Texas Instruments Incorporated | Managing and maintaining multiple debug contexts in a debug execution mode for real-time processors |
US10740217B1 (en) | 2018-05-22 | 2020-08-11 | Parallels International Gmbh | Non-native system-level debugging using symbolic information |
US20200301898A1 (en) * | 2018-06-25 | 2020-09-24 | BigStream Solutions, Inc. | Systems and methods for accelerating data operations by utilizing dataflow subgraph templates |
US10783051B2 (en) | 2018-09-06 | 2020-09-22 | Servicenow, Inc. | Performance regression framework |
US10915381B2 (en) * | 2018-10-16 | 2021-02-09 | Ngd Systems, Inc. | System and method for computational storage device intercommunication |
US10949321B1 (en) | 2018-11-26 | 2021-03-16 | Amazon Technologies, Inc. | Operational management of a device |
KR20200076244A (ko) | 2018-12-19 | 2020-06-29 | 삼성전자주식회사 | 데이터 스토리지 장치를 포함하는 시스템 및 데이터 스토리지 장치의 디스카드 동작 제어 방법 |
US10678677B1 (en) | 2019-01-10 | 2020-06-09 | Red Hat Israel, Ltd. | Continuous debugging |
US11138134B2 (en) | 2019-05-22 | 2021-10-05 | Nxp Usa, Inc. | Non-intrusive semihosting solution for debug using direct memory access implementation-based library |
US11334404B2 (en) | 2019-05-31 | 2022-05-17 | Apple Inc. | Techniques for managing access to file systems |
US11086800B2 (en) | 2019-06-01 | 2021-08-10 | Apple Inc. | Execution space agnostic device drivers |
US10915426B2 (en) | 2019-06-06 | 2021-02-09 | International Business Machines Corporation | Intercepting and recording calls to a module in real-time |
US10901624B1 (en) | 2019-07-01 | 2021-01-26 | Western Digital Technologies, Inc. | Dummy host command generation for supporting higher maximum data transfer sizes (MDTS) |
US11334498B2 (en) | 2019-07-11 | 2022-05-17 | Vmware, Inc. | Zero copy method that can span multiple address spaces for data path applications |
US11294750B2 (en) | 2019-07-15 | 2022-04-05 | Micron Technology, Inc. | Media management logger for a memory sub-system |
US20210049036A1 (en) | 2019-08-13 | 2021-02-18 | Facebook Technologies, Llc | Capability Space |
US11194706B2 (en) | 2019-09-05 | 2021-12-07 | Facebook Technologies, Llc | System and method for split storage stack |
US11663746B2 (en) | 2019-11-15 | 2023-05-30 | Intel Corporation | Systolic arithmetic on sparse data |
US11496314B2 (en) | 2019-12-18 | 2022-11-08 | Intel Corporation | Integrity protected command buffer execution |
US11194695B2 (en) | 2020-01-07 | 2021-12-07 | Supercell Oy | Method for blocking external debugger application from analysing code of software program |
US11429299B2 (en) | 2020-02-13 | 2022-08-30 | Samsung Electronics Co., Ltd. | System and method for managing conversion of low-locality data into high-locality data |
US11507301B2 (en) * | 2020-02-24 | 2022-11-22 | Sunrise Memory Corporation | Memory module implementing memory centric architecture |
US11868622B2 (en) | 2020-02-25 | 2024-01-09 | Pure Storage, Inc. | Application recovery across storage systems |
US11507298B2 (en) * | 2020-08-18 | 2022-11-22 | PetaIO Inc. | Computational storage systems and methods |
US11487471B2 (en) * | 2020-08-20 | 2022-11-01 | Intel Corporation | Storage device with client reconfigurable protocol |
US20210117246A1 (en) | 2020-09-25 | 2021-04-22 | Intel Corporation | Disaggregated computing for distributed confidential computing environment |
CN112579254B (zh) | 2020-12-08 | 2022-03-29 | 成都海光微电子技术有限公司 | 图形处理器的仿真方法、装置、电子设备和存储介质 |
US11442733B2 (en) * | 2021-01-29 | 2022-09-13 | Seagate Technology Llc | Embedded computation instruction performance profiling |
US11645005B2 (en) * | 2021-02-26 | 2023-05-09 | PetaIO Inc. | Near-memory computing systems and methods |
CN112905472A (zh) | 2021-03-04 | 2021-06-04 | 黑芝麻智能科技(上海)有限公司 | 内核调试系统及方法 |
JP2022143959A (ja) * | 2021-03-18 | 2022-10-03 | キオクシア株式会社 | メモリシステム、方法及びデータ処理システム |
US12014052B2 (en) * | 2021-03-22 | 2024-06-18 | Google Llc | Cooperative storage architecture |
US11467987B1 (en) * | 2021-03-31 | 2022-10-11 | Seagate Technology Llc | Computational pipelines for computational storage devices |
US11561909B2 (en) * | 2021-04-28 | 2023-01-24 | Western Digital Technologies, Inc. | Bandwidth allocation for storage system commands in peer-to-peer environment |
US11687338B2 (en) * | 2021-04-30 | 2023-06-27 | Seagate Technology Llc | Computational storage with pre-programmed slots using dedicated processor core |
CN113342590B (zh) | 2021-08-06 | 2021-10-29 | 苏州浪潮智能科技有限公司 | NVMe设备调试功能实现方法、装置、设备及存储介质 |
US20220365709A1 (en) * | 2022-07-25 | 2022-11-17 | Intel Corporation | Computational storage for logical volumes that span physical devices |
-
2021
- 2021-09-22 US US17/482,412 patent/US11966343B2/en active Active
-
2022
- 2022-07-13 KR KR1020220086563A patent/KR20230013627A/ko unknown
- 2022-07-18 TW TW111126841A patent/TW202314488A/zh unknown
- 2022-07-18 EP EP22185404.5A patent/EP4123465A1/en active Pending
- 2022-07-19 CN CN202210849202.8A patent/CN115639952A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
TW202314488A (zh) | 2023-04-01 |
KR20230013627A (ko) | 2023-01-26 |
US11966343B2 (en) | 2024-04-23 |
EP4123465A1 (en) | 2023-01-25 |
US20230024949A1 (en) | 2023-01-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102480544B1 (ko) | 손상된 저장 디바이스 펌웨어의 검출 | |
CN115639952A (zh) | 存储设备及其操作方法 | |
US10296250B2 (en) | Method and apparatus for improving performance of sequential logging in a storage device | |
US20210320592A1 (en) | Address Translation for Storage Device | |
US20220066799A1 (en) | Mechanism to discover computational storage functions and devices | |
US20160062659A1 (en) | Virtual memory module | |
US11947839B2 (en) | Storage device, system, and method for customizable metadata | |
CN113468083B (zh) | 一种双端口NVMe控制器及控制方法 | |
US20240053917A1 (en) | Storage device, operation method of storage device, and storage system using the same | |
Nadig et al. | Venice: Improving Solid-State Drive Parallelism at Low Cost via Conflict-Free Accesses | |
US20230325277A1 (en) | Memory controller performing selective and parallel error correction, system including the same and operating method of memory device | |
US20190227740A1 (en) | Atomic write method for multi-transaction | |
KR20230071730A (ko) | 데이터 프로세싱 장치 및 그것의 동작 방법 | |
CN114281245A (zh) | 同步写方法及装置、存储系统、电子设备 | |
CN113721838A (zh) | 用于存储设备的写、读数据方法、存储控制器以及dma引擎 | |
US20230153237A1 (en) | Method and device for storing data | |
US20230214258A1 (en) | Storage controller and storage device | |
US20230325110A1 (en) | Operation method of host device and operation method of storage device | |
US20240086110A1 (en) | Data storage method, storage apparatus and host | |
US20230393749A1 (en) | Method and device of storage data | |
US20230084539A1 (en) | Computational storage device and storage system including the computational storage device | |
KR20230169885A (ko) | 영구 메모리 장치 및 컴퓨팅 시스템 | |
Dongiovanni Mancino | Next Generation Hardware Acceleration opportunities in Data Centers | |
KR20230034194A (ko) | 듀얼 모드 스토리지 장치 | |
CN117032555A (zh) | 用于管理设备存储器和程序的系统、方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination |