用于在存储设备中进行计算的方法及装置、存储设备与流程

文档序号:26588245发布日期:2021-09-10 20:01阅读:104来源:国知局
用于在存储设备中进行计算的方法及装置、存储设备与流程

1.本说明书实施例涉及计算机技术领域,具体地,涉及一种用于在存储设备中进行计算的方法及装置、存储设备。


背景技术:

2.存储设备和处理器之间的工艺和封装均不同,两者之间的性能差距也较大。存储设备主要用于数据存储和读取,cpu、gpu等处理器则通过强大的性能支持来执行更多的数据计算任务。例如,一个操作系统需要执行一个进程时,通过使用该操作系统中的处理器来执行该进程,在执行完进程得到相应的数据后,处理器将数据发送给存储设备进行存储,存储设备接收到数据后将其存储在本地。
3.在处理器将数据发送给存储设备的过程中,需要对数据进行移动。相应地,处理器从存储设备中读取数据时,也需要先将所读取的数据移动至处理器,然后由处理器进行数据处理。


技术实现要素:

4.鉴于上述,本说明书实施例提供了一种用于在存储设备中进行计算的方法及装置、存储设备。通过该方案,在存储设备中配置计算单元,并将第一操作系统中的i/o进程卸载至计算单元中来执行,减少了处理器的资源损耗的同时,缩短了i/o进程中需要使用存储设备的数据的移动距离,减少了数据移动的功耗。
5.根据本说明书实施例的一个方面,提供了一种用于在存储设备中进行计算的方法,所述方法由所述存储设备来执行,所述存储设备中配置有计算单元,所述计算单元用于执行针对所述存储设备的i/o进程,所述方法包括:在所述存储设备所接入的运行第一操作系统的主机执行的业务中存在针对所述存储设备的i/o进程时,响应于在所述第一操作系统中发起的所述i/o进程,通过所述计算单元的对外接口将所述i/o进程卸载至所述计算单元;在所述计算单元处执行所述i/o进程;以及针对所述i/o进程的数据,在所述存储设备中执行写入或读取操作。
6.根据本说明书实施例的另一方面,还提供一种用于在存储设备中进行计算的装置,其中,所述存储设备中配置有计算单元,所述计算单元用于执行针对所述存储设备的i/o进程,所述装置包括:至少一个处理器,与所述至少一个处理器耦合的存储器,以及存储在所述存储器上的计算机程序,所述至少一个处理器执行所述计算机程序来实现:在所述存储设备所接入的运行第一操作系统的主机执行的业务中存在针对所述存储设备的i/o进程时,响应于在所述第一操作系统中发起的所述i/o进程,通过所述计算单元的对外接口将所述i/o进程卸载至所述计算单元;在所述计算单元处执行所述i/o进程;以及针对所述i/o进程的数据,在所述存储设备中执行写入或读取操作。
7.根据本说明书实施例的另一方面,还提供一种存储设备,包括:计算单元、对外接口、闪存转换层和存储器,所述存储设备用于执行如上所述的用于在存储设备中进行计算
的方法。
附图说明
8.通过参照下面的附图,可以实现对于本说明书实施例内容的本质和优点的进一步理解。在附图中,类似组件或特征可以具有相同的附图标记。
9.图1示出了根据本说明书实施例的存储设备的一个示例的示意图。
10.图2示出了根据本说明书实施例的用于在存储设备中进行计算的方法的一个示例的流程图。
11.图3示出了本说明书实施例的用于在存储设备中进行计算的方法的另一个示例的示意图。
12.图4示出了根据本说明书实施例的用于在存储设备中进行计算的装置的一个示例的方框图。
13.图5示出了本说明书实施例的用于实现在存储设备中的计算方法的电子设备的方框图。
具体实施方式
14.以下将参考示例实施方式讨论本文描述的主题。应该理解,讨论这些实施方式只是为了使得本领域技术人员能够更好地理解从而实现本文描述的主题,并非是对权利要求书中所阐述的保护范围、适用性或者示例的限制。可以在不脱离本说明书实施例内容的保护范围的情况下,对所讨论的元素的功能和排列进行改变。各个示例可以根据需要,省略、替代或者添加各种过程或组件。另外,相对一些示例所描述的特征在其它例子中也可以进行组合。
15.如本文中使用的,术语“包括”及其变型表示开放的术语,含义是“包括但不限于”。术语“基于”表示“至少部分地基于”。术语“一个实施例”和“一实施例”表示“至少一个实施例”。术语“另一个实施例”表示“至少一个其他实施例”。术语“第一”、“第二”等可以指代不同的或相同的对象。下面可以包括其他的定义,无论是明确的还是隐含的。除非上下文中明确地指明,否则一个术语的定义在整个说明书中是一致的。
16.存储设备和处理器之间的工艺和封装均不同,两者之间的性能差距也较大。存储设备主要用于数据存储和读取,cpu、gpu等处理器则通过强大的性能支持来执行更多的数据计算任务。例如,一个操作系统需要执行一个进程时,通过使用该操作系统中的处理器来执行该进程,在执行完进程得到相应的数据后,处理器将数据发送给存储设备进行存储,存储设备接收到数据后将其存储在本地。
17.在处理器将数据发送给存储设备的过程中,需要对数据进行移动。相应地,处理器从存储设备中读取数据时,也需要先将所读取的数据移动至处理器,然后由处理器进行数据处理。
18.然而,由于存储设备的性能远远落后于处理器的性能,导致数据移动过程中需要的能量较大,从而功耗较大。此外,数据移动的周期在整个数据计算中占比较大,比如,一般来说,数据移动所消耗的时间几乎是浮点计算的4到1000倍。尤其是外设的存储设备,从处理器到外设存储设备的数据移动的功耗会更大,周期会更长。
19.鉴于上述,本说明书实施例提供了一种用于在存储设备中进行计算的方法及装置。存储设备中配置有计算单元,计算单元用于执行针对存储设备的i/o进程,在该方法中,在存储设备所接入的第一操作系统执行的业务中存在针对存储设备的i/o进程时,响应于第一操作系统发起i/o进程,通过计算单元的对外接口将i/o进程卸载至计算单元中,在计算单元中执行i/o进程,以及针对i/o进程的数据,在存储设备中进行写入或读取。通过该方案,在存储设备中配置计算单元,并将第一操作系统中的i/o进程卸载至计算单元中来执行,减少了处理器的资源损耗的同时,缩短了i/o进程中需要使用存储设备的数据的移动距离,减少了数据移动的功耗。
20.图1示出了根据本说明书实施例的存储设备的一个示例的示意图。
21.如图1所示,存储设备可以包括存储设备接口、ftl(flash translation layer,闪存转换层)、内存、多个nand闪存和nand接口。存储设备接口用于将存储设备接入主机等其他设备,可以与其他设备对接通信。ftl用于将逻辑地址与物理地址进行映射、断电回复以及耗损平均等。存储设备中的各个nand闪存是非易失性的,nand接口用于各个nand闪存。
22.此外,存储设备还包括计算单元,计算单元可以用于执行信息处理、程序运行等。在一个示例中,计算单元可以用于执行针对存储设备的信息处理和程序中的各种进程,针对存储设备的信息处理操作和程序是需要使用到存储设备的信息处理操作和程序,比如,从存储设备中读取数据,或者将数据存储到存储设备中。
23.进一步地,计算单元可以用于执行针对存储设备的i/o进程,针对存储设备的i/o进程可以是需要在存储设备中进行存储操作和/或从存储设备中读取数据的进程。计算单元所执行的i/o进程可以是该存储设备所接入的主机执行的业务程序中的i/o进程,例如,主机执行的业务程序需要从存储设备读取数据或者将业务程序的数据存储至存储设备中,这样,主机可以发起针对存储设备的i/o进程,然后由存储设备中的计算单元来执行该i/o进程。
24.在一个示例中,针对存储设备的i/o进程可以包括压缩进程、解压缩进程和数据库i/o进程中的至少一种。在压缩进程中,可以从存储的数据中读取待压缩的数据,还可以将经过压缩的数据存储至存储设备。在解压缩进程中,可以从存储的数据中读取待解压缩的数据,还可以将经过解压缩得到的数据存储至存储设备。在数据库i/o进程中,可以对数据库中的数据进行读取或存储。
25.在一个示例中,计算单元所能执行的计算可以指定,即,计算单元可以执行指定类型的计算。计算单元用于执行指定类型计算的计算执行能力可以定制,可以根据指定类型的计算来定制对应的计算执行能力。计算执行能力可以通过可执行的程序文件、用于执行计算的操作系统等来体现。例如,预先编程针对指定类型的i/o进程的可执行程序文件,并将该可执行程序文件存储在计算单元中,计算单元通过运行该程序文件即可获得执行该i/o进程的计算执行能力,进而执行相应的i/o进程。
26.在一个示例中,计算单元定制计算执行能力的方式可以是通过编程得到可执行的程序文件。计算单元可以具备可编程能力,能够根据指定类型的计算来编程得到对应的程序文件。计算单元通过运行该程序文件便能获得执行该指定类型计算的计算执行能力。在一个示例中,计算单元可以是可编程集成电路,例如,计算单元可以是fpga(field programmable gate array)。
27.此外,计算单元定制计算执行能力的方式还可以是运行操作系统。计算单元可以是由多个具有指定功能的集成电路组合而成的,计算单元可以包括有处理器(比如,cpu,dsp等)、存储器、接口控制模块以及互联总线等。计算单元能够通过所集成的器件实现运行一个操作系统,操作系统具备计算执行能力,从而在操作系统中可以实现执行相应的计算。在一个示例中,计算单元可以是soc(system on chip,片上系统)。
28.在一个示例中,计算单元中的处理器具备可编程能力,从而计算单元中的处理器能够根据指定类型的计算来编程得到对应的程序文件。在计算单元运行的操作系统中运行指定类型的计算对应的程序文件,从而实现在操作系统中执行指定类型的计算。
29.图2示出了根据本说明书实施例的用于在存储设备中进行计算的方法的一个示例的流程图。
30.图2所示的方法可以由存储设备来执行。在一个示例中,存储设备可以是外设的存储设备,还可以是非易失性内存。下面以外设的存储设备为例进行说明。
31.在图2所示的方法中,存储设备接入主机,从而该主机可以对存储设备进行读取、存储等操作。主机可以包括终端设备、服务器等中的任一种设备。主机可以运行第一操作系统,在第一操作系统中,主机可以执行各种业务。
32.主机可执行的业务可以包括涉及存储相关的业务,业务涉及存储可以是指该业务中包括有存储相关的操作,存储相关的操作可以包括从存储设备中读取数据、将数据进行存储等。
33.存储相关的操作可以是通过主机发起的i/o进程来具体执行。基于此,主机在针对存储相关的业务执行过程中,在需要执行与存储相关的操作时,主机可以发起i/o进程,以便于该i/o进程能够被执行。
34.如图2所示,在210,在存储设备所接入的主机执行的业务中存在针对存储设备的i/o进程时,响应于主机发起的i/o进程,可以通过计算单元的对外接口将i/o进程卸载至计算单元中。
35.在本说明书实施例中,计算单元的对外接口可以用于计算单元与主机之间的交互,交互的方式可以包括数据传输、程序调用等。在一个示例中,通过对外接口,计算单元可以与主机之间进行数据传输。在另一个示例中,主机还可以通过调用计算单元的对外接口以使得计算单元中对应的应用程序执行。
36.在本说明书实施例中,进程卸载是将进程转移给另一个主体来执行,通过进程卸载的方式将进程的执行主体进行转移,发起进程的主体与执行进行的主体不同,进程卸载的接收方是执行该进程的执行主体。在本说明书中,主体将i/o进程卸载至计算单元,则该i/o进程的执行主体转移至计算单元,由计算单元来执行该i/o进程。
37.在本说明书实施例的一个示例中,计算单元可以运行第二操作系统,第二操作系统中可以执行主机发起的i/o进程。在一个示例中,第二操作系统与第一操作系统的类型相同,从而第二操作系统能够执行第一操作系统中发起的进程。
38.在该示例中,计算单元的对外接口可以用于计算单元与主机之间的通信,比如,数据传输。在第一操作系统中需要执行i/o进程时,通过计算单元的对外接口,计算单元接收主机发送的i/o进程对应的程序文件。i/o进程对应的程序文件通过运行即是执行该i/o进程。
39.在一个示例中,i/o进程对应的程序文件可以是源码文件。在该示例中,主机将i/o进程对应的源码文件通过计算单元的对外接口传输给计算单元,计算单元接收到源码文件后,可以对该源码文件进行编译,得到对应的二进制文件,然后运行该二进制文件,即执行该i/o进程。
40.在另一个示例中,i/o进程对应的程序文件可以是经过编码后的二进制文件。在该示例中,主机发起i/o进程时,对i/o进程对应的源码文件进行编译,得到对应的二进制文件。然后,主机将i/o进程对应的二进制文件通过计算单元的对外接口传输给计算单元,计算单元接收到二进制文件后可以值机运行该二进制文件,从而实现执行i/o进程。
41.在一个示例中,计算单元可以是soc,soc可以运行第二操作系统。在另一个示例中,计算单元可以是可编程集成电路,比如,fpga。可编程集成电路可以通过编程的方式定制用于模拟第二操作系统的程序文件,可编程集成电路运行该定制的程序文件,从而以软件方式来模拟运行第二操作系统,在所模拟的第二操作系统中可以执行i/o进程。
42.在本说明书实施例的另一个示例中,计算单元中存储有i/o进程对应的程序文件。在一个示例中,程序文件可以是源码文件,此时,计算单元可以对该源码文件进行编译,经过编译的文件比如可以是二进制文件,然后,计算单元运行经过编译的文件,以执行该i/o进程。在另一个示例中,程序文件可以是经过编译的文件,比如,二进制文件。在该示例中,计算单元可以直接运行该程序文件。
43.在一个示例中,计算单元具有编程能力,计算单元通过编程的方式可以定制所执行的计算类型,从而可以执行指定类型的进程。在该示例中,计算单元中的程序文件可以是经过计算单元编程得到的。计算单元可以有针对性地根据不同类型的i/o进程来编程得到对应的程序文件,计算单元运行程序文件即执行对应的i/o进程。
44.在该示例中,计算单元中可以存储有多个程序文件,不同的程序文件可以对应不同的进程。在一个示例中,计算单元中存储的多个程序文件分别对应不同类型的i/o进程,从而计算单元可以执行该不同类型的i/o进程。各个i/o进程分别对应有对外接口,通过对外接口可以调用各个i/o进程,从而便于主机通过对外接口来调用各个i/o进程,节省主机中处理器的计算资源。
45.在该示例中,在第一操作系统中主机可以调用i/o进程对应的对外接口,响应于计算单元的对外接口被调用,计算单元可以根据对外接口与程序文件之间的对应关系,来确定主机所调用的程序文件。在确定出程序文件后,计算单元可以执行该程序文件。
46.在i/o进程卸载至计算单元后,在220,在计算单元处可以执行i/o进程。
47.在执行i/o进程的一种方式中,在计算单元运行第二操作系统的情况下,计算单元可以在第二操作系统中运行执行i/o进程对应的程序文件,以执行i/o进程。
48.在执行i/o进程的另一种方式中,在计算单元存储程序文件的情况下,计算单元可以运行调用的对外接口对应的程序文件,以执行i/o进程。
49.在230,针对i/o进程的数据,在存储设备中执行写入或读取操作。
50.在i/o进程的执行过程中,可以从存储设备中读取数据,已用于所执行的i/o进程,还可以将i/o进程产生的数据写入存储设备中。
51.图3示出了本说明书实施例的用于在存储设备中进行计算的方法的另一个示例的示意图。
52.如图3所示,存储设备接入主机,存储设备中的计算单元通过该计算单元的对外接口来与主机关联,关联的方式包括数据传输和接口调用。主机在所运行的第一操作系统中执行业务,所执行的业务中存在需要执行的i/o进程。在主机需要执行该业务中的i/o进程时,发起i/o进程,并通过计算单元的对外接口将i/o进程卸载至计算单元中。
53.在i/o进程被卸载至计算单元后,计算单元可以执行该i/o进程,然后在i/o进程的执行过程中,可以从计算单元所在的存储设备中读取数据,或者将i/o进程的数据存储至计算单元所在的存储设备中。
54.通过本说明书实施例提供的上述方案,在存储设备中配置计算单元,利用存储设备中的计算单元来执行主机中针对存储设备的i/o进程,便于对i/o进程的数据进行近存储侧计算,减少了数据移动,从而减少了数据移动导致的损耗以及缩短了数据移动的周期,进而提高了业务执行的效率。此外,将主机中的部分进程转移到由存储设备中的计算单元来执行,减少了主机处理器的负载压力,节省了主机处理器的计算资源。
55.图4示出了根据本说明书实施例的用于在存储设备中进行计算的装置(以下称为存储设备计算装置400)的一个示例的方框图。
56.如图4所示,存储设备计算装置400可以位于存储设备中。存储设备中配置有计算单元,计算单元用于执行针对所述存储设备的i/o进程。
57.存储设备计算装置400包括进程卸载单元410、计算单元420和数据读写单元430。
58.进程卸载单元410,被配置为在存储设备所接入的运行第一操作系统的主机执行的业务中存在针对存储设备的i/o进程时,响应于在第一操作系统中发起的i/o进程,通过计算单元的对外接口将i/o进程卸载至计算单元。
59.计算单元420,被配置为在计算单元处执行i/o进程。
60.数据读写单元430,被配置为针对i/o进程的数据,在存储设备中执行写入或读取操作。
61.在一个示例中,计算单元被配置为运行用于执行i/o进程的第二操作系统。进程卸载单元410被配置为响应于在第一操作系统中发起的i/o进程,通过计算单元的用于与主机通信的对外接口,接收主机传输的i/o进程对应的程序文件。计算单元420被配置为在计算单元的第二操作系统中运行程序文件,以执行i/o进程。
62.在一个示例中,计算单元存储有i/o进程对应的程序文件。进程卸载单元410被配置为响应于在第一操作系统中调用i/o进程对应的对外接口,确定计算单元中对外接口对应调用的程序文件。计算单元420被配置为计算单元运行所确定的程序文件,以执行i/o进程。
63.在一个示例中,计算单元中的程序文件是经过计算单元进行编程得到的。
64.在一个示例中,计算单元包括可编程集成电路或者soc。
65.在一个示例中,可编程集成电路用于编程和/或运行第二操作系统,soc用于运行第二操作系统。
66.在一个示例中,i/o进程包括压缩进程、解压缩进程和数据库i/o进程中的至少一种。
67.在本说明书的一个实施例中,存储设备可以包括计算单元、对外接口、闪存转换层以及存储器,在一个示例中,存储器可以包括内存和/或多个nand。存储设备可以执行上述
图2

3中所述的用于在存储设备中进行计算的方法。
68.以上参照图1到图4,对根据本说明书实施例的用于在存储设备中进行计算的方法及装置、存储设备的实施例进行了描述。
69.本说明书实施例的用于在存储设备中进行计算的装置可以采用硬件实现,也可以采用软件或者硬件和软件的组合来实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在设备的处理器将存储器中对应的计算机程序指令读取到内存中运行形成的。在本说明书实施例中,用于在存储设备中进行计算的装置例如可以利用电子设备实现。
70.图5示出了本说明书实施例的用于实现在存储设备中的计算方法的电子设备500的方框图。
71.如图5所示,电子设备500可以包括至少一个处理器510、存储器(例如,非易失性存储器)520、内存530和通信接口540,并且至少一个处理器510、存储器520、内存530和通信接口540经由总线550连接在一起。至少一个处理器510执行在存储器中存储或编码的至少一个计算机可读指令(即,上述以软件形式实现的元素)。
72.在一个实施例中,在存储器中存储计算机可执行指令,其当执行时使得至少一个处理器510:在存储设备所接入的运行第一操作系统的主机执行的业务中存在针对存储设备的i/o进程时,响应于在第一操作系统中发起的i/o进程,通过计算单元的对外接口将i/o进程卸载至计算单元;在计算单元处执行i/o进程;以及针对i/o进程的数据,在存储设备中执行写入或读取操作。
73.应该理解,在存储器中存储的计算机可执行指令当执行时使得至少一个处理器510进行本说明书的各个实施例中以上结合图1

4描述的各种操作和功能。
74.根据一个实施例,提供了一种例如机器可读介质的程序产品。机器可读介质可以具有指令(即,上述以软件形式实现的元素),该指令当被机器执行时,使得机器执行本说明书的各个实施例中以上结合图1

4描述的各种操作和功能。
75.具体地,可以提供配有可读存储介质的系统或者装置,在该可读存储介质上存储着实现上述实施例中任一实施例的功能的软件程序代码,且使该系统或者装置的计算机或处理器读出并执行存储在该可读存储介质中的指令。
76.在这种情况下,从可读介质读取的程序代码本身可实现上述实施例中任何一项实施例的功能,因此机器可读代码和存储机器可读代码的可读存储介质构成了本发明的一部分。
77.本说明书各部分操作所需的计算机程序代码可以用任意一种或多种程序语言编写,包括面向对象编程语言,如java、scala、smalltalk、eiffel、jade、emerald、c++、c#、vb、net以及python等,常规程序化编程语言如c语言、visual basic 2003、perl、cobol2002、php以及abap,动态编程语言如python、ruby和groovy,或者其他编程语言等。该程序编码可以在用户计算机上运行,或者作为独立的软件包在用户计算机上运行,或者部分在用户计算机上运行另一部分在远程计算机运行,或者全部在远程计算机或服务器上运行。在后一种情况下,远程计算机可以通过任何网络形式与用户计算机连接,比如局域网(lan)或广域网(wan),或连接至外部计算机(例如通过因特网),或者在云计算环境中,或者作为服务使用,比如软件即服务(saas)。
78.可读存储介质的实施例包括软盘、硬盘、磁光盘、光盘(如cd

rom、cd

r、cd

rw、
dvd

rom、dvd

ram、dvd

rw、dvd

rw)、磁带、非易失性存储卡和rom。可选择地,可以由通信网络从服务器计算机上或云上下载程序代码。
79.上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
80.上述各流程和各系统结构图中不是所有的步骤和单元都是必须的,可以根据实际的需要忽略某些步骤或单元。各步骤的执行顺序不是固定的,可以根据需要进行确定。上述各实施例中描述的装置结构可以是物理结构,也可以是逻辑结构,即,有些单元可能由同一物理实体实现,或者,有些单元可能分由多个物理实体实现,或者,可以由多个独立设备中的某些部件共同实现。
81.在整个本说明书中使用的术语“示例性”意味着“用作示例、实例或例示”,并不意味着比其它实施例“优选”或“具有优势”。出于提供对所描述技术的理解的目的,具体实施方式包括具体细节。然而,可以在没有这些具体细节的情况下实施这些技术。在一些实例中,为了避免对所描述的实施例的概念造成难以理解,公知的结构和装置以框图形式示出。
82.以上结合附图详细描述了本说明书的实施例的可选实施方式,但是,本说明书的实施例并不限于上述实施方式中的具体细节,在本说明书的实施例的技术构思范围内,可以对本说明书的实施例的技术方案进行多种简单变型,这些简单变型均属于本说明书的实施例的保护范围。
83.本说明书内容的上述描述被提供来使得本领域任何普通技术人员能够实现或者使用本说明书内容。对于本领域普通技术人员来说,对本说明书内容进行的各种修改是显而易见的,并且,也可以在不脱离本说明书内容的保护范围的情况下,将本文所定义的一般性原理应用于其它变型。因此,本说明书内容并不限于本文所描述的示例和设计,而是与符合本文公开的原理和新颖性特征的最广范围相一致。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1