CN115993931A - 用于计算存储设备中的资源隔离的方法和系统 - Google Patents
用于计算存储设备中的资源隔离的方法和系统 Download PDFInfo
- Publication number
- CN115993931A CN115993931A CN202211286819.XA CN202211286819A CN115993931A CN 115993931 A CN115993931 A CN 115993931A CN 202211286819 A CN202211286819 A CN 202211286819A CN 115993931 A CN115993931 A CN 115993931A
- Authority
- CN
- China
- Prior art keywords
- memory
- memory range
- command
- session
- range
- 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 53
- 238000002955 isolation Methods 0.000 title claims abstract description 20
- 230000004044 response Effects 0.000 claims description 61
- 238000004364 calculation method Methods 0.000 claims description 5
- 238000007726 management method Methods 0.000 description 61
- 239000008186 active pharmaceutical agent Substances 0.000 description 47
- 238000004891 communication Methods 0.000 description 31
- 238000012795 verification Methods 0.000 description 30
- 238000012545 processing Methods 0.000 description 26
- 238000004590 computer program Methods 0.000 description 18
- 238000010586 diagram Methods 0.000 description 15
- 238000010200 validation analysis Methods 0.000 description 11
- 238000013507 mapping Methods 0.000 description 9
- 238000012986 modification Methods 0.000 description 9
- 230000004048 modification Effects 0.000 description 9
- 230000001360 synchronised effect Effects 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 238000013519 translation Methods 0.000 description 5
- 239000000872 buffer Substances 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 239000000284 extract Substances 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000001413 cellular effect Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 230000000644 propagated effect Effects 0.000 description 3
- 238000013515 script Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 239000003990 capacitor Substances 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 241000258963 Diplopoda Species 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- RJCRUVXAWQRZKQ-UHFFFAOYSA-N oxosilicon;silicon Chemical compound [Si].[Si]=O RJCRUVXAWQRZKQ-UHFFFAOYSA-N 0.000 description 1
- 230000037361 pathway Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000008685 targeting Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000000007 visual effect Effects 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage systems
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
-
- 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/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1416—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
- G06F12/1425—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
- G06F12/1441—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
- G06F12/1483—Protection against unauthorised use of memory or access to memory by checking the subject access rights using an access-table, e.g. matrix or list
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0605—Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
-
- 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/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage systems
- G06F3/0622—Securing storage systems in relation to access
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0637—Permissions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction 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/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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
-
- 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
- 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- 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/10—Address translation
- G06F12/109—Address translation for multiple virtual address spaces, e.g. segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1416—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
- G06F12/145—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5011—Pool
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1052—Security improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1056—Simplification
-
- 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/65—Details of virtual memory and virtual address translation
- G06F2212/652—Page size control
-
- 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/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Storage Device Security (AREA)
- Nitrogen Condensed Heterocyclic Rings (AREA)
- Stabilization Of Oscillater, Synchronisation, Frequency Synthesizers (AREA)
- Peptides Or Proteins (AREA)
Abstract
提供了用于计算存储设备中的资源隔离的方法和系统。该方法包括在计算存储(CS)设备的控制器处接收向主机设备的应用分配计算存储的请求。该请求包括与应用相关联的资源集标识符(ID)。该方法还包括识别CS设备的存储器区域内的存储器范围。该方法还包括在与资源集ID相关联的数据结构中存储该存储器范围的存储器范围ID、存储器区域和存储器区域内的偏移之间的关联。该方法还包括向主机设备发送存储器范围ID。
Description
技术领域
本公开一般涉及用于计算存储设备中的资源隔离(resource isolation)的系统和方法。
背景技术
计算存储设备提供计算功能和数据存储。因此,主机设备可以将数据存储在计算存储设备上并将计算卸载到计算存储设备。然而,主机设备的一个应用可以修改由另一应用使用的计算存储设备的资源。这可能导致应用的不可预测的执行结果。
背景技术部分中公开的以上信息仅用于增强对本公开的背景的理解,因此其可能包含不构成现有技术的信息。
发明内容
在各种实施例中,本文描述的包括与计算存储设备中的资源隔离相关的系统、方法和装置。
一种方法包括在计算存储(computational storage,CS)设备的控制器处接收向主机设备的应用分配计算存储的请求。该请求包括与应用相关联的资源集标识符(identifier,ID)。该方法还包括识别CS设备的存储器区域内的存储器范围。该方法还包括在与资源集ID相关联的数据结构中存储存储器范围的存储器范围ID、存储器区域和存储器区域内的偏移之间的关联。该方法还包括向主机设备发送存储器范围ID。
一种计算存储(CS)设备包括存储器和控制器。控制器被配置为接收向主机设备的应用分配计算存储的请求。该请求包括与应用相关联的资源集ID。控制器还被配置为识别存储器的存储器区域内的存储器范围。控制器还被配置为在与资源集ID相关联的数据结构中存储存储器范围的存储器范围ID、存储器区域和存储器区域内的偏移之间的关联。控制器还被配置为向主机设备发送存储器范围ID。
一种系统包括主机设备,该主机设备被配置为存储与在主机设备处执行的应用相关联的会话上下文。会话上下文与资源集ID相关联。主机设备还被配置为响应于从应用接收到分配计算存储的请求,将资源集ID插入到该请求中。该系统还包括计算存储设备,该计算存储设备包括存储器和控制器。控制器被配置为接收分配计算存储的请求。控制器还被配置为识别存储器的存储器区域内的存储器范围。控制器还被配置为在与资源集ID相关联的数据结构中存储存储器范围的存储器范围ID、存储器区域和存储器区域内的偏移之间的关联。控制器还被配置为向主机设备发送存储器范围ID。
附图说明
当根据以下附图阅读本申请时,将会更好地理解本技术的上述方面和其他方面,在附图中,相同的数字表示相似或相同的元件:
图1是用于在计算存储设备中提供资源隔离的系统的框图。
图2A是用于在计算存储设备中提供资源隔离的另一系统的图的第一部分。
图2B是用于在计算存储设备中提供资源隔离的另一系统的图的第二部分。
图3A是描绘对计算存储命令的修改的图的第一部分,其中该修改可以发生在用于在计算存储设备中提供资源隔离的系统的主机中。
图3B是描绘对计算存储命令的修改的图的第二部分,其中该修改可以发生在用于在计算存储设备中提供资源隔离的系统的主机中。
图4是描绘用于在计算存储设备中提供资源隔离的系统中的存储器范围和存储器区域之间的关系的图。
图5是用于在计算存储设备中提供资源隔离的方法的流程图。
图6是在用于在计算存储设备中提供资源隔离的系统中分配存储器范围的方法的流程图。
图7是示出用于在计算存储设备中提供资源隔离的替代系统中的计算资源管理的图。
虽然本技术容易受到各种修改和替代形式的影响,但是其具体实施例在附图中以示例的方式示出,并且将在本文中进行描述。附图可能不是按比例绘制的。然而,应当理解,附图及其详细描述并不旨在将本技术限制于所公开的特定形式,相反,本发明旨在覆盖落入由所附权利要求限定的本技术的精神和范围内的所有修改、等同物和替代物。
具体实施方式
本文描述的主题的一个或多个实施例的细节在附图和以下描述中阐述。根据说明书、附图和权利要求,本主题的其他特征、方面和优点将变得明显。
现在将在下文中参考附图更全面地描述本公开的各种实施例,附图中示出了一些但不是所有的实施例。实际上,本公开可以以许多不同的形式来体现,并且不应被解释为限于本文阐述的实施例;相反,提供这些实施例是为了使本公开满足适用的法律要求。除非另有说明,否则术语“或”在本文中用于替代和结合两种意义。术语“说明性的”和“示例”被用作没有量级指示的示例。相同的附图标记始终指代相同的元素。每个图中的箭头描绘双向数据流和/或双向数据流能力。术语“路径”、“途径”和“路线”在本文中可互换使用。
本公开的实施例可以以各种方式实施,包括作为包括制品的计算机程序产品。计算机程序产品可以包括存储应用、程序、程序组件、脚本、源代码、程序代码、目标代码、字节代码、编译代码、解释代码、机器代码、可执行指令等(在本文中也称为可执行指令、用于执行的指令、计算机程序产品、程序代码和/或在本文中可互换使用的类似术语)的非暂时性计算机可读存储介质。这种非暂时性计算机可读存储介质包括所有计算机可读介质(包括易失性和非易失性介质)。
在一个实施例中,非易失性计算机可读存储介质可以包括软盘、软磁盘、硬盘、固态存储(solid-state storage,SSS)(例如固态驱动器(solid-state drive,SSD))、固态卡(solid state card,SSC)、固态组件(solid state component,SSM)、企业闪存驱动器、磁带或任何其他非暂时性磁介质等。非易失性计算机可读存储介质还可以包括穿孔卡、纸带、光学标记片(或具有孔图案或其他光学可识别标记的任何其他物理介质)、光盘只读存储器(compact disc read only memory,CD-ROM)、可重写光盘(compact disc-rewritable,CD-RW)、数字通用光盘(digital versatile disc,DVD)、蓝光光盘(Blu-ray disc,BD)、任何其他非暂时性光学介质等。这种非易失性计算机可读存储介质还可以包括只读存储器(read-only memory,ROM)、可编程只读存储器(programmable read-only memory,PROM)、可擦除可编程只读存储器(erasable programmable read-only memory,EPROM)、电可擦除可编程只读存储器(electrically erasable programmable read-only memory,EEPROM)、闪存(例如串行、NAND、NOR等)、多媒体存储器卡(multimedia memory card,MMC)、安全数字(secure digital,SD)存储器卡、智能媒体卡、压缩闪存(CompactFlash,CF)卡、记忆棒等。此外,非易失性计算机可读存储介质还可以包括导电桥接随机存取存储器(conductive-bridging random access memory,CBRAM)、相变随机存取存储器(phase-change randomaccess memory,PRAM)、铁电随机存取存储器(ferroelectric random-access memory,FeRAM)、非易失性随机存取存储器(non-volatile random-access memory,NVRAM)、磁阻随机存取存储器(magnetoresistive random-access memory,MRAM)、电阻随机存取存储器(resistive random-access memory,RRAM)、硅-氧化物-氮化物-氧化物-硅存储器(Silicon-Oxide-Nitride-Oxide-Silicon memory,SONOS)、浮动结栅随机存取存储器(floating junction gate random access memory,FJG RAM)、Millipede存储器、赛道存储器等。
在一个实施例中,易失性计算机可读存储介质可以包括随机存取存储器(randomaccess memory,RAM)、动态随机存取存储器(dynamic random access memory,DRAM)、静态随机存取存储器(static random access memory,SRAM)、快速页面模式动态随机存取存储器(fast page mode dynamic random access memory,FPM DRAM)、扩展数据输出动态随机存取存储器(extended data-out dynamic random access memory,EDO DRAM)、同步动态随机存取存储器(synchronous dynamic random access memory,SDRAM)、双倍数据速率同步动态随机存取存储器(double data rate synchronous dynamic random accessmemory,DDR SDRAM)、双倍数据速率类型二同步动态随机存取存储器(double data ratetype two synchronous dynamic random access memory,DDR2SDRAM)、双倍数据速率类型三同步动态随机存取存储器(double data rate type three synchronous dynamicrandom access memory,DDR3 SDRAM)、Rambus动态随机存取存储器(Rambus dynamicrandom access memory,RDRAM)、双晶体管RAM(Twin Transistor RAM,TTRAM)、晶闸管RAM(Thyristor RAM,T-RAM)、零电容器(Zero-capacitor,Z-RAM)、Rambus直插式存储器组件(Rambus in-line memory component,RIMM)、双列直插式存储器组件(dual in-linememory component,DIMM)、单列直插式存储器组件(single in-line memory component,SIMM)、视频随机存取存储器(video random access memory,VRAM)、高速缓存存储器(包括各种等级)、闪存、寄存器存储器等。应当理解,在实施例被描述为使用计算机可读存储介质的情况下,其他类型的计算机可读存储介质可以替代上述计算机可读存储介质,或者除了上述计算机可读存储介质之外,还可以使用其他类型的计算机可读存储介质。
应当理解,本公开的各种实施例也可以实施为方法、装置、系统、计算设备、计算实体等。由此,本公开的实施例可以采取执行存储在计算机可读存储介质上的指令以执行某些步骤或操作的装置、系统、计算设备、计算实体等的形式。因此,本公开的实施例也可以采取执行某些步骤或操作的完全硬件实施例、完全计算机程序产品实施例、和/或包括计算机程序产品和硬件的组合的实施例的形式。
下面参考框图和流程图图示来描述本公开的实施例。因此,应当理解,框图和流程图图示的每个块可以以在计算机可读存储介质上执行用于执行的指令、操作、步骤和可互换使用的类似词语(例如可执行指令、用于执行的指令、程序代码等)的计算机程序产品、完全硬件实施例、硬件和计算机程序产品的组合、和/或装置、系统、计算设备、计算实体等的形式来实施。例如,可以顺序执行代码的检索、加载和执行,使得一次检索、加载和执行一个指令。在一些示例实施例中,检索、加载和/或执行可以并行执行,使得多个指令一起被检索、加载和/或执行。因此,这样的实施例可以产生执行框图和流程图图示中指定的步骤或操作的专门配置的机器。因此,框图和流程图图示支持用于执行指定指令、操作或步骤的实施例的各种组合。
如本文所使用的,计算存储(CS)设备是指支持计算任务的存储设备。例如,CS设备可以包括存储元件(例如,非易失性存储器,诸如闪存、硬盘驱动器等)和计算元件(例如,中央处理器单元(CPU)、图形处理器单元(GPU)、现场可编程门阵列(FPGA)、专用集成电路(ASIC)(诸如张量处理单元)、处理器核等)并且被配置为支持计算元件处的数据存储和计算元件处的计算任务的执行。因此,CS设备可以向CS客户端(例如,计算设备)提供存储能力,并且可以支持将计算任务从CS客户端卸载到CS设备。
多于一个的应用可以在CS设备的主机设备(例如,CS客户端)上执行。然而,如果第一应用访问正在被第二应用使用的计算存储器(例如,CS资源),则第一应用可能修改存储在计算存储器中的数据并破坏第二应用的执行。公开了一种基于应用(租户)的计算资源(例如,计算存储器)隔离机制。根据本公开,系统可以提供识别应用(租户)的方法、基于应用(租户)管理和保护计算资源引用的方法、以及保护计算资源免受诸如缓冲器溢出攻击的恶意访问的方法。
在一些实施方式中,CS会话管理核可以提供识别应用(租户)的方法。每个应用可以具有唯一的会话令牌和资源集ID。通过会话(或会话上下文)提交的CS请求可以具有唯一的资源集ID来标识应用。此外,计算资源管理核可以基于会话上下文(例如,基于资源集ID)来管理存储器范围实例。
根据本公开的一些示例还提供了一种机制来监控CS命令正在使用哪些存储器范围,以防止多于一个CS命令访问存储器范围。根据本公开的一些示例提供了一种将地址从存储器范围对象标记(notation)转换成CS设备特定地址标记的方法。
根据本公开的一些示例提供CS命令验证逻辑,其被配置为提供存储器范围验证、存储器范围边界检查和存储器范围地址转换。
根据本公开的一些示例,应用可以通过存储器范围对象(句柄)而不是直接存储器地址来接收对CS设备的计算存储器的访问。
参考图1,示出了用于保护CS资源的系统100的图。系统100包括主机设备102和CS设备104。主机102通信地耦接到CS设备104。在一些示例中,主机102和CS设备104通过外围组件快速互连(peripheral component interconnect express,PCIe)链路连接。在其他示例中,主机102和CS设备104通过以太网连接来连接。应当注意,主机102和CS设备104之间的其他连接类型(包括无线连接)是可能的。此外,主机102和CS设备104可以彼此间接连接(例如,通过一个或多个网络)。在一些示例中,主机102和CS设备104通过非易失性存储器快速(non-volatile memory express,NVMe)协议进行通信。在其他示例中,使用不同的协议。
主机102包括处理器106和存储器108。处理器106可以包括CPU、GPU、ASIC、FPGA、另一类型的处理器或其组合。存储器108可以包括易失性存储器、非易失性存储器或其组合。应当注意,主机102可以包括除了示出之外的附加组件。例如,主机102可以包括通信接口、用户输入设备(例如,鼠标、键盘等)、输出设备(例如,显示器、扬声器等)、其他组件或其组合。此外,主机102可以包括多于一个在本文中描述或示出的组件。例如,主机102可以包括多于一个处理器、多于一个存储器等。主机102的组件可以通过一个或多个总线、一个或多个直接连接或其组合来连接。
CS设备104包括控制器114、处理设备118、存储器116和存储介质120。控制器114可以包括ASIC、FPGA、中央处理器单元或被配置为处理与存储介质120相关联的输入和输出操作的其他处理单元。例如,响应于来自主机102的写入命令,控制器114可以从主机102读取数据并将数据写入存储介质120。作为另一示例,响应于来自主机102的读取命令,控制器114可以从存储介质120读取数据并将数据写入主机102。
存储介质120可以包括非易失性计算机可读存储介质、易失性计算机可读存储介质或其组合。在一些示例中,存储介质120包括闪存。
存储器116可以包括易失性计算机可读存储介质、非易失性计算机可读存储介质或其组合。存储器116被配置为作为操作存储器操作,并存储用于在处理设备118处执行的程序的程序数据。程序数据可以包括程序输入、程序输出和用于程序执行的临时数据。在一些实施方式中,存储器116和存储介质120在相同的物理设备上实施。
处理设备118可以包括ASIC、FPGA、CPU、GPU、其他类型的处理器单元或其组合。处理设备118被配置为执行加载到程序槽(program slot)中的应用。程序槽可以是与处理设备118相关联的逻辑单元,并且可以对应于或者可以不对应于不同的物理设备(例如,处理核等)。
虽然未示出,但是CS设备104可以包括各种附加组件,诸如主机接口层、闪存转换层等。例如,主机接口层可以被配置为将从主机102接收的命令转换成控制器114可识别的形式的命令。这种转换可以包括将主机102使用的寻址方案转换成控制器114使用的寻址方案。闪存转换层可以将来自控制器114的命令转换成存储介质120可识别的格式。这种转换可以包括将主机102使用的寻址方案转换成存储介质120使用的寻址方案。此外,CS设备104中可以包括多于一个所示的组件。例如,CS设备104可以包括多于一个存储器116、多于一个存储介质120、多于一个处理设备118、多于一个控制器114等。此外,虽然未示出,但是CS设备104可以包括组件之间的各种连接。例如,CS设备104的组件可以通过总线、通过一个或多个直接连接或其组合来连接。此外,图1中示出的一些组件可以被组合。例如,控制器114和处理设备118可以实施为相同的处理设备(或多个处理设备)。
在操作中,主机102可以发出一个或多个分配命令,以将存储器116的一个或多个部分分配给在主机102处执行的一个或多个应用。此外,主机102可以向CS设备发出输入/输出命令,以便向存储介质120或存储器116写入数据或从存储介质120或存储器116检索数据。此外,主机102可以向处理设备118发出一个或多个CS命令。CS命令可以指示CS设备将数据/指令存储在存储器116中,访问存储器116中的数据,在处理设备118处执行程序,或者其组合。分配命令、输入/输出命令和CS命令可以由在处理器106处执行的一个或多个应用发出。系统100提供隔离CS设备的资源的机制,使得在处理器106处执行的一个应用不会干扰在处理器106处执行的另一应用所使用的资源。在特定示例中,可以基于会话来管理资源。
存储器108存储可由处理器106执行的CS管理核指令110,以提供CS管理核。CS管理核被配置为验证命令、防止重放攻击(replay attack)或其组合。存储器108还存储库112。库112可以包括可由处理器106使用的一个或多个应用编程接口(applicationprogramming interface,API),以处理分配命令、输入/输出命令、CS命令或其组合,以用于由CS管理核进行处理。
例如,库112可以包括API,该API被配置为响应于来自应用的创建会话和/或会话上下文的请求来生成会话信息(例如,会话令牌、会话标识符(ID)、随机数等)。由处理器106执行的每个应用可以与唯一的会话上下文相关联。为了开始向CS设备104传递CS命令,应用可以向库112中的API发送生成新会话上下文的请求。响应于该请求,API可以生成并存储会话信息,诸如对应于应用的新会话上下文的会话令牌。会话上下文可以包括多于一个会话。API可以被配置为为来自应用的每个会话请求生成并存储新的会话ID。在一些示例中,API可以为每个新会话存储初始随机数。如本文进一步描述的,这样的随机数可以用于防止重放攻击。API还可以响应于创建会话和/或会话上下文的请求来生成资源集ID。在一些示例中,每个会话上下文具有其自己唯一的资源集ID。在其他示例中,每个会话具有其自己唯一的资源集ID。在一些实施方式中,资源集ID被CS管理核插入到发送给CS设备104的命令中,如下面进一步描述的。
库112还可以包括API,该API被配置为响应于来自在处理器106处执行的应用的分配请求,发起到CS设备104的分配存储器的请求的传输。在一些实施方式中,API可以将资源集ID插入到传输到CS设备104的分配存储器的请求中。资源集ID可以标识请求该分配的会话上下文(例如,应用)或会话(例如,应用内的流)。API可以响应于分配存储器的请求向应用返回存储器范围对象。存储器范围对象是存储器116的一部分的抽象化。在一些实施方式中,存储器范围对象包括存储器范围ID和大小(例如,以字节、千字节等为单位)。
库112还可以包括API,该API被配置为在传输到CS设备104之前修改CS请求。例如,API可以将存储的会话信息(例如,会话令牌、会话ID、随机数)插入到计算请求中。
此外,库112可以包括API,该API被配置为从应用接收存储器分配请求并返回对应的存储器对象。存储器对象是CS设备104的存储器116的抽象化,并且在本文中进一步描述。库112还可以包括API,该API被配置为将会话信息(例如,会话令牌、会话标识符(ID)、随机数、其他信息或其组合)添加到从主机102的应用发出的输入/输出命令和CS命令。CS管理核可以基于附加会话信息来验证命令。有效命令可以被传递给CS设备104,而无效命令可以被阻止发出给CS设备104。
CS会话管理核被配置为确定CS命令(例如,由库112修改的)是否有效。例如,CS会话管理核可以将与会话相关联的命令的接收到的随机数和与会话相关联的存储的随机数进行比较。响应于确定随机数匹配,CS会话管理核可以确定命令有效。有效命令可以被转发给控制器114。此外,CS管理核可以用新的随机数更新会话的存储的随机数,以防止重放攻击。
控制器114被配置为执行计算资源管理器指令126以提供计算资源管理器核,以及执行CS命令验证指令124以提供CS命令验证核。计算资源管理器核被配置为响应于分配请求将存储器分配给资源集ID。例如,存储器116可以包括一个或多个存储器区域(例如,物理或逻辑区域),并且计算资源管理器核可以将来自一个或多个存储器区域的一个或多个存储器范围分配给每个资源集ID。计算资源管理器核可以维护标识与资源集ID相关联的每个存储器范围的映射数据结构(例如,散列表)。每个存储器范围可以由存储器范围ID、包括该存储器范围的存储器区域的存储器区域ID、到存储器区域的偏移以及存储器区域的大小来标识。响应于来自主机102的分配请求,计算资源管理器核可以识别满足该请求的存储器区域内的存储器范围,更新由该请求指示的资源集ID以包括所识别的存储器范围,并且向主机102返回识别该存储器范围的存储器范围对象。存储器范围对象可以包括存储器范围ID和存储器范围的大小。
除了分配存储器范围之外,计算资源管理器核还可以基于由CS命令指示的资源集ID的存储的映射数据结构,提供有效CS命令中的一个或多个地址到另一地址空间(例如,另一虚拟地址空间或存储器116的地址空间)的转换。
CS命令验证核可以被配置为确定接收到的CS命令是否有效。例如,响应于接收到CS命令,CS命令验证核可以从计算命令中提取资源集ID、存储器范围ID和偏移。CS命令然后可以确定计算资源管理器核是否具有用于资源集ID的映射数据结构,其中该映射数据结构包括到存储器范围ID的映射。此外,CS命令验证核可以确定偏移是否在存储器范围内。此外,CS验证核可以确定存储器范围是否正在被另一CS命令使用。CS命令验证核可以使用这些因素中的一个或多个来确定CS命令是否有效。下面将进一步给出CS验证的更详细的描述。应当注意,CS命令验证指令124和计算资源管理器指令126可以由不同于控制器114的不同组件来执行。在一些示例中,CS命令验证指令和计算资源管理器指令126由主机102的处理器106执行。
因此,来自主机102的应用的CS命令可以与会话/会话上下文相关联。CS设备104可以基于每会话/会话上下文来管理对资源(例如,存储器116)的访问,以防止一个应用访问另一应用的资源。
参考图2A和图2B,示出了用于在CS设备中提供资源隔离的另一系统200的图。在一些实施方式中,系统200可以对应于系统100。系统200包括主机202和CS设备204。主机202可以对应于主机102,CS设备204可以对应于图1的CS设备104。主机202在处理器(例如,处理器106)处执行应用A 210、应用B 212和应用C 214。在其他示例中,主机102可以执行不同数量的应用。
CS设备204还提供第一程序槽250、第二程序槽252、第三程序槽254和第N程序槽256。CS设备204可以提供不同数量的程序槽。每个程序槽对应于被配置为执行加载到对应的程序槽中的应用的计算引擎。CS设备204包括对应于第一程序槽250的第一计算引擎258、对应于第二程序槽252的第二计算引擎260、对应于第三程序槽254的第三计算引擎262以及对应于第N程序槽256的第M计算引擎264。应当注意,在程序槽和计算引擎之间可能没有一一对应关系。每个计算引擎被配置为执行(多个)对应的程序槽中的应用。计算引擎258、260、262、264可以由CS设备204的一个或多个处理器(例如,处理设备118)提供。计算引擎258、260、262、264对应于一个或多个处理器的抽象化。
CS设备204还包括第一存储器区域266、第二存储器区域268和第L存储器区域270。在其他示例中,CS设备204可以包括不同数量的存储器区域。存储器区域266、268、270可以对应于CS设备204的存储器(例如,存储器116)的物理或虚拟区域。
CS设备204还包括命名空间272。命名空间可以对应于存储介质(例如,存储介质120)(诸如SSD)的可寻址区域。CS设备204可以支持与所示出的不同数量的命名空间。
CS设备204还包括直接存储器访问(direct memory access,DMA)引擎240,其被配置为从主机202检索数据并将数据写入存储器区域266、268、270和命名空间272(例如,响应于来自应用210、212、214的CS命令)。
CS设备204可以响应于来自应用210、212、214的CS命令,将应用加载到程序槽250、252、254、256中。此外,计算引擎258、260、262、264可以使用由来自应用210、212、214的CS命令定义的参数来执行程序槽250、252、254、256中的应用。这样的参数可以包括CS命令所针对的存储器地址。所公开的系统200提供了防止来自不同应用(例如,系统200的不同租户)的CS命令访问相同资源的机制。
在说明性示例中,主机202在存储器(例如,存储器108)中存储CS库216(例如,库112)。CS库216包括会话管理API 218、包装API 220和存储器API 222。在一些实施方式中,API 218、220、222可以被组合成更少的API。会话管理API 218可以被配置为响应于来自在主机202处执行的应用的请求,创建会话/会话上下文并生成相关联的会话信息(例如,会话令牌、会话ID、随机数、资源集ID、其他信息或其组合)。例如,响应于来自应用210、212、214的请求,会话管理API 218可以为应用210、212、214中的每一个生成会话上下文,并且存储会话上下文的数据(例如,在存储器108中)。每个会话上下文可以包括标识会话上下文(例如,以及相关联的应用)的会话令牌。此外,在一些实施方式中,每个会话上下文可以支持多于一个会话(例如,应用可以在会话上下文中打开多于一个通信会话)。对于会话上下文中的每个会话,会话管理API可以创建会话ID、下一随机数和随机数生成器(例如,种子值)。
包装API 220可以被配置为将会话信息添加到来自应用210、212、214的传入CS请求中。会话信息可以响应于来自应用的会话创建请求而先前已经由会话管理API 218生成并且被存储(例如,在存储器108中)。例如,包装API 220可以被配置为添加对应于发出请求的应用的会话令牌。此外,包装API 220可以被配置为添加会话的会话ID和下一随机数。
存储器API 222可以被配置为从应用210、212、214接收分配CS设备204的存储器的请求,将请求转发给CS设备204,并将存储器范围对象返回给应用210、212、214。应用210、212、214可以在CS命令中使用存储器范围对象和偏移来寻址CS设备204的存储器。存储器范围对象可以包括存储器范围的存储器范围ID和存储器范围的大小(例如,以字节、千字节、页面等为单位)。图2A示出了示例存储器范围对象246。在一些实施方式中,分配存储器的请求在在存储器API 222处被接收之前由包装API 220处理。
主机202还提供(例如,通过在处理器106处执行CS管理核指令110)CS会话管理核208。在一些实施方式中,CS会话管理核208包括FPGA核、可由处理器执行的软件或其组合。CS会话管理核208被配置为基于CS请求中包括的会话信息和所存储的会话信息来确定是否授权CS请求。在所示的示例中,CS会话管理核208存储(例如,在存储器108中)与和应用A210相关联的第一会话上下文226、和应用B 212相关联的第二会话上下文228以及和应用C214相关联的第三会话上下文230相关的数据。
第一会话上下文226包括会话令牌232和与几个会话相关的信息。第一会话的第一会话ID 234与第一下一随机数236和第一随机数生成器238相关联。对于从应用接收的CS请求(或存储器分配请求),CS会话管理核208可以被配置为确定会话令牌是否与针对该应用的所存储的会话令牌相匹配。例如,响应于来自应用A 210的CS请求,CS会话管理核可以确定CS请求中的会话令牌是否匹配与应用A 210相关联的第一会话上下文226中的会话令牌232。响应于确定令牌之间不匹配,CS会话管理核可以确定CS命令可以被确定为未授权。此外,CS会话管理核208可以确定CS命令中包括的会话ID是否包括在第一会话上下文226中。如果不是,则CS命令可以被确定为未授权。响应于确定会话ID被包括在第一会话上下文226中,CS会话管理核208可以确定CS命令中包括的随机数是否与会话ID的预期的下一随机数相匹配。响应于随机数之间的不匹配,CS命令可以被确定为未授权。响应于确定CS设备的会话令牌、会话ID、随机数或其组合与存储的值相匹配,CS会话管理核208可以确定CS命令被授权。响应于确定CS命令被授权,CS会话管理核208可以将资源集ID添加到CS命令,并将CS命令发送到CS设备204。资源集ID可以对应于会话或会话上下文。CS设备204可以使用资源集ID来确定什么资源对于CS命令是有效的。因为每个会话上下文/会话都与应用相关联,所以基于会话上下文/会话选择性地将资源集ID添加到被授权的命令可以防止应用访问CS设备处的另一应用的资源。
在一些实施方式中,CS会话管理核208还被配置为响应于从会话ID接收到被授权的命令,基于存储的随机数生成器更新会话ID的下一随机数。例如,响应于确定用于第一会话上下文226中的第一会话ID 234的命令被授权,CS会话管理核208可以使用第一随机数生成器238来生成新的下一随机数,以替换用于第一会话ID 234的第一下一随机数236。以这种方式更新会话ID的随机数可以防止成功的“重放”攻击(其中,恶意应用试图重复先前来自先前授权的CS命令的会话信息)。
参考回CS设备204,CS设备204提供CS命令验证核242和计算资源管理器核244(例如,通过在控制器114处执行CS命令验证指令124和计算资源管理器指令126)。在一些实施方式中,CS命令验证核242、计算资源管理器核244或其组合包括FPGA核、可由处理器执行的软件或其组合。计算资源管理器核244被配置为响应来自主机202的存储器分配请求(例如,通过包装API 220和存储器API 222发送的)并维护将存储器范围对象映射到每个资源ID的存储器范围的数据结构。在所示的示例中,计算资源管理器核244维护对应于与应用A 210和第一会话上下文226相关联的资源ID的数据结构296(例如,散列表)。应当注意,在替代示例中,资源ID可以对应于会话而不是会话上下文(例如,应用可以具有多于一个的相关联的资源ID)。数据结构296将(例如,第一会话上下文226的)应用A 210的存储器范围对象映射到存储器范围。在所示的示例中,存储器范围248被映射到存储器范围对象246。存储器范围(MR)可以被定义为存储器范围ID、包括存储器范围的存储器区域的存储器区域ID、存储器区域内的偏移、和大小。在所示的示例中,第一存储器区域266包括分配给应用C 214(例如,分配给对应于应用C的会话上下文的资源集ID)的第一存储器范围276、分配给应用B 212的第五存储器范围278和第六存储器范围280、以及分配给应用A 210的第八存储器范围282。第二存储器区域268包括分配给应用C 214的第二存储器范围284和第三存储器范围286以及分配给应用A 210的第九存储器范围288。第L存储器区域270包括分配给应用A 210的第十存储器范围290、分配给应用C 214的第四存储器范围292和分配给应用B 212的第七存储器范围294。因此,数据结构296可以包括以下映射的条目:第八存储器范围282的存储器范围ID到第八存储器范围282、第九存储器范围288的存储器范围ID到第九存储器范围288、以及第十存储器范围290的存储器范围ID到第十存储器范围290。
存储器区域可以定义为{存储器区域ID,大小}。存储器区域ID可以定义为存储器类型|存储器区域号。存储器类型可以包括控制器存储器缓冲器、永久存储器区域、设备本地存储器(device local memory,DLM)等。存储器范围可以被定义为{存储器区域ID,存储器区域内的页面偏移,页面计数}。在一些实施方式中,存储器范围ID是16位ID,但是其他实施方式可以具有不同大小的存储器范围ID。存储器范围对象可以是{存储器范围ID,大小}。
响应于分配存储器的请求,计算资源管理器核244可以识别存储器区域266、268、270之一中的可用范围,生成对应的存储器范围对象,并且将存储器范围对象到范围的映射存储在由分配存储器的请求所指示的资源ID的数据结构中。计算资源管理器核244被配置为将存储器范围对象(例如,存储器范围对象246)返回给主机202。主机202的存储器API222被配置为将存储器范围对象报告回发出请求的应用,该发出请求的应用然后可以在CS命令中使用存储器范围对象来寻址CS设备204中的存储器。
CS命令验证核242被配置为确定接收到的CS命令是否有效。CS命令验证核242可以基于资源集ID(例如,由CS会话管理核208添加到CS命令中的)、由计算资源管理核244维护的数据结构、由CS命令指示的存储器范围对象、由CS命令指示的存储器大小、由CS命令指示的偏移或其组合来确定CS命令是否有效。例如,接收到的CS命令可以指示资源集ID和要基于与存储器范围对象ID相关联并且具有特定大小的存储器范围中的偏移处的存储器的部分来执行的操作。CS命令验证核242可以从计算资源管理器244检索与资源集ID相关联的数据结构,以确定该数据结构是否包括存储器范围对象ID。CS命令验证核242可以被配置为响应于数据结构不包括对存储器范围对象ID的引用,或者响应于确定(例如,基于偏移和特定大小)CS命令所指示的存储器的部分落在存储器范围对象ID所指示的存储器范围之外,来确定CS命令无效。CS命令验证核242可以响应于确定存储器范围对象ID被列在与关联于CS命令的资源集ID相关联的数据结构中并且存储器的该部分在与存储器范围对象ID相关联的存储器范围内,来确定CS命令有效。在一些实施方式中,CS命令验证核242还被配置为确定另一CS命令是否正在使用由CS命令中的存储器范围对象ID标识的存储器范围。CS命令验证核242可以被配置为响应于确定另一命令正在访问存储器范围而确定CS命令无效,或响应于确定命令未在使用中而确定CS命令有效。CS命令验证核242可以维护标识正在使用中的存储器范围的数据结构。
响应于确定CS命令有效,CS命令验证核242被配置为将由CS命令指示的存储器的该部分的基于存储器范围ID的地址转换成存储器区域地址,并且将具有该转换的CS命令转发给计算引擎258、260、262、264之一来执行。
因此,CS命令验证核242可以防止由应用发出的CS命令访问分配给其他应用(或未分配)的资源(例如,存储器的部分)。
在第一示例使用场景中,在1处,应用A 210向会话管理API 218发出会话管理请求。响应于会话管理请求,会话管理API 218创建(例如,在存储器108中)第一会话上下文226。会话管理API 218生成会话令牌232来唯一地标识第一会话上下文226。此外,会话管理API 218生成第一随机数生成器238(例如,种子值),并使用第一随机数生成器238来生成第一下一随机数236。第一下一随机数236和第一随机数生成器238存储在第一会话上下文226中。
在2处,应用A 210可以发出存储器分配请求。响应于存储器分配请求,在3处,包装API 220可以将会话令牌232、第一会话ID 234和第一下一随机数236添加到存储器分配请求,并将存储器分配请求发送到存储器API 222。在4处,存储器API 222可以向CS会话管理核208发送存储器分配请求以进行授权。CS会话管理核208可以通过将由存储器分配请求指示的会话令牌232、第一会话ID 234、第一下一随机数236或其组合与存储在第一会话上下文226中的值进行比较来确定存储器分配请求被授权。CS会话管理核可以基于第一随机数生成器238更新存储在第一会话上下文226中的第一下一随机数236,并且响应于确定存储器分配请求被授权,将存储器分配请求发送到具有对应于第一会话上下文226的资源集ID的CS设备204。
响应于存储器分配请求,在5处,计算资源管理器核244可以分配第十存储器范围290。存储器分配请求可以基于分配请求中所请求的大小、分配请求中所请求的存储器区域类型或其组合来分配第十存储器范围290。例如,响应于第L存储器区域270与存储器分配请求中所请求的存储器类型相对应,可以从第L存储器区域270中选择第十存储器范围290。计算资源管理器核244可以将第十存储器范围290的存储器范围ID之间的映射存储在数据结构296中,并将指示第十存储器范围290的存储器范围ID和大小的存储器范围对象返回给存储器API 222。存储器API 222可以将存储器范围对象返回给应用A 210。
在2处,应用A 210可以向包装API 220发出以第十存储器范围290的部分为目标的CS命令。包装API可以基于第一会话上下文226向CS命令添加会话令牌232、第一会话ID 234和更新的随机数。第十存储器范围290的部分可以由第十存储器范围290的存储器范围ID、存储器范围内的偏移、和大小来标识。
CS会话管理核可以通过将会话令牌232、第一会话ID 234、更新的随机数或其组合与存储在第一会话上下文226中的数据进行比较来确定CS命令是否被授权。响应于确定CS命令被授权,CS会话管理核208可以基于第一随机数生成器238更新存储在第一会话上下文226中的更新的随机数,添加对应于第一会话上下文226的资源集ID,并且将CS命令发送到CS设备204。在其中未找到匹配会话令牌232的会话上下文、在第一会话上下文226内未找到第一会话ID 234、或者更新的随机数与第一会话ID 234不匹配的替代示例中,CS会话管理核208可以确定CS命令未被授权。
在6处,CS命令验证核242可以接收CS命令,并基于资源集ID和存储器区域ID来确定CS命令是否有效。例如,CS命令验证核242可以检索对应于CS命令中指示的资源集ID的数据结构296,并确定数据结构296包括由CS命令指示的第十存储器范围290的存储器区域ID。此外,CS命令验证核242可以基于由数据结构296指示的第十存储器范围290的大小、由CS命令指示的偏移和由CS命令指示的大小来确定该部分在第十存储器范围290内。此外,CS命令验证核242可以确定附加的数据结构指示第十存储器范围290没有正在被另一CS命令使用。因此,CS命令验证核242可以确定CS命令是有效的。在其中数据结构296中未列出第十存储器范围290、该部分落在第十存储器范围290之外或者第十存储器范围正在被另一CS命令使用的替代示例中,CS命令验证核242可以确定CS命令无效。响应于确定CS命令有效,在7处,CS命令验证核242可以将第十存储器范围290的该部分的地址转换成第L存储器区域270内的地址(例如,偏移和大小),并将具有转换后的地址的CS命令转发到第一程序槽250以供第一计算引擎258执行。
因此,系统200可以提供对CS设备204的资源的访问。此外,对资源的访问是以每会话上下文的方式来管理的,从而防止应用访问另一应用的资源或未分配的资源。
图3A和图3B描绘了示出发生在主机(诸如主机102或主机202)内的CS命令修改的图300。如图所示,主机维护应用302的会话上下文308。例如,会话上下文可以由图2A的会话管理API 218创建。在所示的示例中,会话上下文308包括第一会话316、第二会话318和第N会话320。会话管理库304(例如,图2A的包装API 220)被配置为接收CS请求并将会话信息(例如,会话令牌信息、会话ID信息312和下一随机数信息314)添加到每个请求中。在所示的示例中,第一请求322作为第一会话316的一部分被接收。因此,会话管理库304插入会话上下文308的消息会话令牌324、与第一会话316相关联的消息会话ID 326以及与第一会话316相关联的消息当前随机数328。
CS会话管理核306(例如,CS会话管理核208)被配置为通过比较会话上下文308的实际会话令牌350与消息会话令牌324、比较第一会话316的实际会话ID 332与消息会话ID326、以及比较与第一会话316相关联的实际当前随机数334与消息当前随机数328来确定第一请求322是否被授权。
响应于确定第一请求322被授权,CS会话管理核306可以使用第一会话316的随机数生成器336(例如,种子值)来更新第一会话316的下一随机数信息。此外,CS会话管理核306可以将第一请求322封装在CS命令340中,并将具有计算资源集ID 342的CS命令340作为消息338的一部分发送给CS设备。因此,被授权的请求可以与和发出被授权的请求的应用相关联的资源集ID一起发送。CS设备可以使用资源集ID来验证CS命令340。应当注意,在一些实施方式中,会话316、318、320中的每一个可以具有唯一的资源集ID。
图4是示出存储器范围和存储器区域之间的关系的图400。图400示出了CS设备的存储器的(例如,存储器116的)第一存储器区域424、第二存储器区域426和第L存储器区域428。存储器区域包括分配给第一会话上下文410、第二会话上下文412和第三会话上下文414之一的存储器范围。CS设备(例如,计算资源管理器核244)可以为每个会话上下文维护将相关联的存储器范围ID链接到存储器范围的数据结构(例如,散列表)。如图4所示,存储器范围ID和位于第一存储器区域424中的第一存储器范围422之间的关联被存储在第一会话上下文410的散列表中。类似地,存储器范围ID和位于第L存储器区域428中的第四存储器范围430之间的关联被存储在第一会话上下文的散列表中。此外,第一会话上下文包括与位于第二存储器区域中的第二存储器范围和第三存储器范围相关的信息。第二会话上下文412包括与第一存储器区域424中的第五存储器范围和第六存储器范围以及第L存储器区域428中的第七存储器范围相关的信息。第三会话上下文414包括与第一存储器区域424中的第八存储器范围、第二存储器区域426中的第九存储器范围和第L存储器区域428中的第十存储器范围相关的信息。
存储在会话上下文的散列表中的信息可以包括存储器范围ID、相关联的存储器区域ID、存储器区域内存储器范围的偏移、以及存储器范围的大小。例如,与第一存储器范围422相关的第一会话上下文410可以包括第一信息408。第一信息408包括存储器范围ID、第一存储器区域424的存储器区域ID、第一存储器区域424内的偏移、以及第一存储器范围422的大小。然而,表示第一存储器范围422的存储器范围对象404(而不是所有的第一信息408)可以被返回给主机设备以用于寻址第一存储器范围422。存储器范围对象404包括第一存储器范围422的存储器范围ID和第一存储器范围422的大小。因此,可以防止应用直接寻址存储器区域。类似地,第一会话上下文410的散列表可以存储与第四存储器范围430相关的第二信息406(例如,存储器范围ID、存储器区域ID、存储器区域内的偏移、存储器范围的大小),但是向主机设备返回存储器范围对象402(存储器范围ID和大小)以用于寻址第四存储器范围430。
图5是示出在CS设备中提供资源隔离的方法500的流程图。在一些实施方式中,方法500由系统100、系统200或其组合来执行。方法500包括在504处从应用接收CS请求。例如,CS会话管理核208可以从应用A 210接收CS命令(例如,由包装API 220修改的)。
方法500还包括在506处确定请求是否被授权。例如,CS会话管理核208可以从CS请求中提取会话令牌(例如,消息会话令牌)、会话ID(例如,消息会话ID)和下一随机数(例如,消息下一随机数),并将这些值与第一会话上下文226中存储的值进行比较,以确定CS请求是否被授权。CS会话管理核208可以响应于确定消息会话令牌不匹配第一会话上下文226的会话令牌232、消息会话ID不存在于第一会话上下文226中、或者与第一会话上下文226中的消息会话ID相关联的存储的随机数不匹配消息下一随机数,来确定CS请求未被授权。可替代地,CS会话管理核208可以响应于确定消息会话令牌匹配会话令牌232、消息会话ID位于第一会话上下文226内、以及在第一会话上下文226中为消息会话ID识别的下一随机数匹配消息下一随机数,来确定CS请求被授权。
响应于确定CS请求未被授权,方法500包括在502处输出错误报告。例如,响应于CS请求未被授权的确定,CS会话管理核208可以触发错误报告的输出。
响应于确定CS请求被授权,方法500包括在508处将资源集ID添加到CS请求,并将CS请求发送到CS设备,其中从CS请求中提取存储器范围对象。例如,CS命令验证核242可以从CS请求中提取存储器范围对象(例如,存储器范围ID和大小)、CS范围内的偏移以及存储器范围内的存储器访问的大小。
方法500还包括在510处基于每会话上下文存储器范围集合512,确定CS请求是否请求对存储器范围的有效访问。例如,CS命令验证核242可以确定从CS请求中提取的存储器范围对象所指示的存储器范围ID是否存在于第一会话上下文226的数据结构296(例如,散列表)中。可以基于CS请求中的资源ID来识别数据结构296。如果存储器范围ID不在数据结构296中,则CS请求可以被确定为无效。此外,CS命令验证核242可以基于存储器范围的大小、到存储器范围的偏移和所请求的访问的大小来确定对存储器范围的所请求的访问是否落在存储器范围之外。如果所请求的访问落在存储器范围之外,则CS请求可以被确定为无效。例如,在大小为4KB的存储器范围中从偏移0KB开始的8KB的所请求的访问可以是无效的,因为所请求的访问将超出存储器范围的边界。
方法500包括在522处,响应于确定CS请求无效,输出错误报告。例如,CS命令验证核242可以向主机202返回错误消息。
响应于确定CS请求请求对存储器范围的有效访问,方法500包括在514处确定存储器范围是否正在被另一CS命令使用。例如,CS命令验证核242可以维护指示哪些存储器范围正在被CS命令使用的数据结构。CS命令验证核242可以基于该数据结构来确定CS请求所请求的存储器范围是否正在使用中。
响应于确定存储器范围正在使用中,方法500包括在520处重新调度CS请求。例如,CS命令验证核242可以将CS请求保存在缓冲器中,并在稍后重新检查正在使用中的数据结构。
响应于确定存储器范围没有正在被另一CS请求使用,方法500包括在516处确定是否已经到达由CS请求标识的存储器对象列表的末尾。例如,CS命令验证核242可以确定CS请求是否包括对附加存储器对象的引用。
响应于确定CS请求尚未到达列表的末尾,方法500返回到508并提取下一存储器范围对象。
响应于确定已经到达列表的末尾,方法500包括在518处将对存储器范围的引用转换成设备特定的存储器标记。例如,CS命令验证核242可以基于存储在数据结构296中的信息,将对存储器范围的引用转换成对存储器区域的引用。地址转换逻辑的示例包括以下伪代码:新地址标记={Get-Start-Address Memory-Region(存储器区域ID)+页面偏移*页面大小+偏移,大小}。
因此,方法500可以用于基于会话上下文提供对CS资源的访问。因此,资源可以被隔离,并且可以防止未授权访问。
参考图6,示出了响应存储器分配请求的方法600。方法600可以由诸如CS设备104或CS设备204的CS设备或者由诸如主机102或主机202的主机设备来执行。
方法600包括在602处接收向主机设备的应用分配计算存储的请求,其中该请求包括与应用相关联的资源集ID。例如,计算资源管理器核244可以接收向应用A 210分配CS设备204的计算存储的请求。该请求可以包括与应用A 210(和第一会话上下文226)相关联的资源集ID。
方法600还包括在604处识别CS设备的存储器区域内的存储器范围。例如,计算资源管理器核244可以识别第L存储器区域270内的第十存储器范围290。计算资源管理器核244可以基于第L存储器区域270中可用的存储器的大小与由该请求所请求的大小的比较、基于第L存储器区域270的类型是否匹配由该请求所请求的存储器类型、或其组合,来选择第L计算区域270以分配第十存储器范围290。
方法600还包括在606处,在与资源集ID相关联的数据结构中存储存储器范围的存储器范围ID、存储器区域和存储器区域内的偏移之间的关联。例如,计算资源管理器核244可以在数据结构296中存储第十存储器范围290的存储器范围ID和第十存储器范围290的大小以及第十存储器范围290在第L存储器区域270内的偏移(例如,位置)之间的关联。数据结构296与资源集ID相关联(例如,计算资源管理器核244可以为每个唯一的资源集ID维护单独的数据结构)。
方法600还包括在608处向主机设备发送存储器范围ID。例如,计算资源管理器核244可以向主机202返回标识第十存储器范围290的存储器范围ID和第十存储器范围290的大小的存储器范围对象。
因此,方法600可以用于在每资源集(例如,会话上下文)的基础上管理存储器范围的分配。因此,主机的每个应用可以被分配其自己的(多个)存储器范围。
一些CS设备可以支持控制器存储器缓冲器样式的存储器模型,其中存储器区域通过PCI配置寄存器基址寄存器展示给主机。在这样的实施方式中,主机可以管理存储器范围分配。在一些实施方式中,主机可以简单地实施如上所述的计算资源管理核。在图7所描绘的替代示例中,系统700的计算资源管理核展示存储器范围对象中的物理地址描述符。在这样的示例中,CS库(例如,图1的库112)可以被修改以通过posix mmap()API将存储器范围地址空间映射到应用的虚拟地址空间。
在一些示例中,基于X匹配Y,X对应于Y。例如,可以确定第一ID对应于与第一ID匹配(例如,具有相同值)的第二ID。在其他示例中,基于X与Y相关联(例如,链接到Y),X对应于Y。例如,X可以通过映射数据结构与Y相关联。
特定实施例可以以硬件、固件和软件之一或其组合实施。其他实施例也可以被实施为存储在计算机可读存储设备上的指令,这些指令可以被至少一个处理器读取和执行以执行本文描述的操作。计算机可读存储设备可以包括用于以机器(例如,计算机)可读的形式存储信息的任何非暂时性存储机制。例如,计算机可读存储设备可以包括只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储介质、光存储介质、闪存设备以及其他存储设备和介质。
词语“示例性”在本文中被用于表示“用作示例、实例或说明”。本文描述为“示例性”的任何实施例不一定被解释为比其他实施例更优选或更有利。本文使用的术语“计算设备”、“用户设备”、“通信站”、“站”、“手持设备”、“移动设备”、“无线设备”和“用户设备”(UE)是指无线通信设备,诸如蜂窝电话、智能手机、平板电脑、上网本、无线终端、膝上型计算机、毫微微小区、高数据速率(HDR)订户站、接入点、打印机、销售点设备、接入终端或其他个人通信系统(PCS)设备。设备可以是移动的或固定的。
如在本文档中所使用的,术语“通信”旨在包括发送、或接收、或发送和接收两者。当描述由一个设备发送并由另一设备接收的数据的组织时,这在权利要求中可能特别有用,但是只需要这些设备中的一个的功能就侵犯了权利要求。类似地,两个设备之间的双向数据交换(在交换期间,两个设备都发送和接收)可以被描述为“通信”,此时只要求这些设备中的一个的功能。本文针对无线通信信号使用的术语“通信”包括发送无线通信信号和/或接收无线通信信号。例如,能够通信无线通信信号的无线通信单元可以包括向至少一个其他无线通信单元发送无线通信信号的无线发送器,和/或从至少一个其他无线通信单元接收无线通信信号的无线通信接收器。
一些实施例可以与各种设备和系统结合使用,例如个人计算机(PC)、台式计算机、移动计算机、膝上型计算机、笔记本计算机、平板计算机、服务器计算机、手持计算机、手持设备、个人数字助理(PDA)设备、手持PDA设备、车载设备、非车载设备、混合设备、车辆设备、非车辆设备、移动或便携式设备、消费者设备、非移动或非便携式设备、无线通信站、无线通信设备、无线接入点(AP)、有线或无线路由器、有线或无线调制解调器、视频设备、音频设备、音频-视频(A/V)设备、有线或无线网络、无线区域网、无线视频区域网(WVAN)、局域网(LAN)、无线LAN(WLAN)、个人区域网(PAN)、无线PAN(WPAN)等。
一些实施例可以与单向和/或双向无线电通信系统、蜂窝无线电话通信系统、移动电话、蜂窝电话、无线电话、个人通信系统(PCS)设备、包含无线通信设备的PDA设备、移动或便携式全球定位系统(GPS)设备、包含GPS接收器或收发器或芯片的设备、包含射频标识(RFID)元件或芯片的设备、多输入多输出(MIMO)收发器或设备、单输入多输出(SIMO)收发器或设备、多输入单输出(MISO)收发器或设备、具有一个或多个内部天线和/或外部天线的设备、数字视频广播(DVB)设备或系统、多标准无线电设备或系统、有线或无线手持设备,例如智能手机、无线应用协议(WAP)设备等。
一些实施例可以与遵循一种或多种无线通信协议的一种或多种类型的无线通信信号和/或系统结合使用,例如,射频(RF)、红外(IR)、频分复用(FDM)、正交FDM(OFDM)、时分复用(TDM)、时分多址(TDMA)、扩展TDMA(E-TDMA)、通用分组无线电业务(GPRS)、扩展GPRS、码分多址(CDMA)、宽带CDMA(WCDMA)、CDMA 2000、单载波CDMA、多载波CDMA、多载波调制(MDM)、离散多音调(DMT)、蓝牙TM、全球定位系统(GPS)、Wi-Fi、Wi-Max、ZigBeeTM、超宽带(UWB)、全球移动通信系统(GSM)、2G、2.5G、3G、3.5G、4G、第五代(5G)移动网络、3GPP、长期演进(LTE)、高级LTE、增强型数据速率GSM演进(EDGE)等。其他实施例可以用于各种其他设备、系统和/或网络中。
虽然上面已经描述了示例处理系统,但是本文描述的主题和功能操作的实施例可以在其他类型的数字电子电路中实施,或者在计算机软件、固件或硬件(包括在本说明书中公开的结构及其结构等同物)中实施,或者在它们中的一个或多个的组合中实施。
本文描述的主题和操作的实施例可以在数字电子电路中实施,或者在计算机软件、固件或硬件(包括在本说明书中公开的结构及其结构等同物)中实施,或者在它们中的一个或多个的组合中实施。本文描述的主题的实施例可以被实施为一个或多个计算机程序,即计算机程序指令的一个或多个组件,其被编码在计算机存储介质上,用于由信息/数据处理装置执行或控制信息/数据处理装置的操作。可替代地或附加地,程序指令可以被编码在人工生成的传播信号上,例如机器生成的电、光或电磁信号,该信号被生成以编码信息/数据,用于传输到合适的接收器装置,以由信息/数据处理装置执行。计算机存储介质可以是或被包括在计算机可读存储设备、计算机可读存储基底、随机或串行存取存储器阵列或设备、或者它们中的一个或多个的组合中。此外,虽然计算机存储介质不是传播信号,但是计算机存储介质可以是编码在人工生成的传播信号中的计算机程序指令的源或目的地。计算机存储介质也可以是或被包括在一个或多个单独的物理组件或介质中(例如多个CD、盘或其他存储设备)。
本文描述的操作可以被实施为由信息/数据处理装置对存储在一个或多个计算机可读存储设备上或从其他源接收的信息/数据执行的操作。
术语“数据处理装置”涵盖用于处理数据的所有种类的装置、设备和机器,包括例如可编程处理器、计算机、片上系统或前述的多个或组合。装置可以包括专用逻辑电路,例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)。除了硬件之外,装置还可以包括为所讨论的计算机程序创建执行环境的代码,例如构成处理器固件、协议栈、数据库管理系统、操作系统、跨平台运行时环境、虚拟机或者它们中的一个或多个的组合的代码。装置和执行环境可以实现各种不同的计算模型基础设施,诸如web服务、分布式计算和网格计算基础设施。
计算机程序(也称为程序、软件、软件应用、脚本或代码)可以用任何形式的编程语言编写,包括编译或解释语言、声明或过程语言,并且它可以以任何形式部署,包括作为独立程序或作为组件、部件、子例程、对象或适用于计算环境的其他单元。计算机程序可以但不需要对应于文件系统中的文件。程序可以存储在保存其他程序或信息/数据的文件的部分中(例如存储在标记语言文档中的一个或多个脚本),存储在专用于所讨论的程序的单个文件中,或者存储在多个协作文件中(例如存储一个或多个组件、子程序或代码部分的文件)。计算机程序可以被部署为在一个计算机或位于一个地点或分布在多个地点并通过通信网络互连的多个计算机上执行。
本文描述的过程和逻辑流程可以由一个或多个可编程处理器执行,该一个或多个可编程处理器执行一个或多个计算机程序以通过对输入信息/数据进行操作并生成输出来执行动作。举例来说,适于执行计算机程序的处理器包括通用和专用微处理器,以及任何种类的数字计算机的任何一个或多个处理器。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和信息/数据。计算机的基本元件是用于根据指令执行动作的处理器和用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括或可操作地耦接到用于存储数据的一个或多个大容量存储设备,例如磁盘、磁光盘或光盘,以从其接收信息/数据或向其传送信息/数据,或两者兼有。然而,计算机不需要有这样的设备。适于存储计算机程序指令和信息/数据的设备包括所有形式的非易失性存储器、介质和存储器设备,包括例如半导体存储器设备,例如EPROM、EEPROM和闪存设备;磁盘,例如内部硬盘或可移动磁盘;磁光盘;以及CD-ROM和DVD-ROM盘。处理器和存储器可以由专用逻辑电路来补充或并入其中。
为了提供与用户的交互,本文描述的主题的实施例可以在计算机上实施,该计算机具有用于向用户显示信息/数据的显示设备,例如CRT(阴极射线管)或LCD(液晶显示器)监视器,以及用户可以用来向计算机提供输入的键盘和定点设备,例如鼠标或轨迹球。也可以使用其他类型的设备来提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感觉反馈,例如视觉反馈、听觉反馈或触觉反馈;并且可以以任何形式接收来自用户的输入,包括声音、语音或触觉输入。此外,计算机可以通过向用户使用的设备发送文档和从用户使用的设备接收文档来与用户交互;例如,通过响应于从web浏览器接收的请求,向用户的客户端设备上的web浏览器发送web页面。
本文描述的主题的实施例可以在计算系统中实施,该计算系统包括后端组件(例如作为信息/数据服务器),或者包括中间件组件(例如应用服务器),或者包括前端组件(例如具有图形用户界面或web浏览器的客户端计算机,用户可以通过该图形用户界面或web浏览器与本文描述的主题的实施例进行交互),或者一个或多个这样的后端、中间件或前端组件的任何组合。系统的组件可以通过任何形式或介质的数字信息/数据通信(例如通信网络)来互连。通信网络的示例包括局域网(“LAN”)和广域网(“WAN”)、互联网(例如因特网)和对等网络(例如自组织对等网络)。
计算系统可以包括客户端和服务器。客户端和服务器通常彼此远离,并且通常通过通信网络进行交互。客户端和服务器的关系是由于在各自的计算机上运行并且彼此具有客户端-服务器关系的计算机程序而产生的。在一些实施例中,服务器将信息/数据(例如HTML页面)传输到客户端设备(例如为了向与客户端设备交互的用户显示信息/数据并从其接收用户输入)。在客户端设备处生成的信息/数据(例如用户交互的结果)可以在服务器处从客户端设备接收。
虽然本说明书包含许多具体的实施例细节,但是这些细节不应被解释为对任何实施例的范围或可能要求保护的范围的限制,而是对特定实施例特有的特征的描述。在单独实施例的上下文中描述的特定特征也可以在单个实施例中组合实施。相反,在单个实施例的上下文中描述的各种特征也可以在多个实施例中单独或以任何合适的子组合来实施。此外,尽管特征可能在上面被描述为在特定组合中起作用,并且甚至最初被如此要求保护,但是来自所要求保护的组合的一个或多个特征在一些情况下可以从组合中删除,并且所要求保护的组合可以针对子组合或子组合的变型。
类似地,虽然在附图中以特定的顺序描绘了操作,但是这不应被理解为要求这些操作以所示的特定顺序或连续顺序执行,或者要求所有示出的操作都被执行,来获得期望的结果。在特定情况下,多任务和并行处理可能是有利的。此外,上述实施例中的各种系统组件的分离不应被理解为在所有实施例中都需要这样的分离,并且应当理解,所描述的程序组件和系统通常可以一起集成在单个软件产品中或者打包到多个软件产品中。
因此,已经描述了主题的特定实施例。其他实施例在所附权利要求的范围内。在一些情况下,权利要求中所述的动作可以以不同的顺序执行,并且仍能获得期望的结果。此外,附图中描绘的过程不一定需要所示的特定顺序或连续顺序来获得期望的结果。在特定实施例中,多任务和并行处理可能是有利的。
受益于前述描述和相关附图中所呈现的教导,这些实施例所属领域的技术人员将会想到本文阐述的本公开的许多修改和其他实施例。因此,应当理解,实施例不限于所公开的具体实施例,并且修改和其他实施例旨在包括在所附权利要求的范围内。尽管本文采用了特定的术语,但是它们仅用于一般的和描述性的意义,而不是为了限制的目的。
Claims (20)
1.一种用于资源隔离的方法,包括:
在计算存储CS设备的控制器处接收向主机设备的应用分配计算存储的请求,其中,所述请求包括与所述应用相关联的资源集标识符ID;
识别所述CS设备的存储器区域内的存储器范围;
在与所述资源集ID相关联的数据结构中存储所述存储器范围的存储器范围ID、所述存储器区域和所述存储器区域内的偏移之间的关联;以及
向所述主机设备发送所述存储器范围ID。
2.根据权利要求1所述的方法,还包括:
接收包括所述资源集ID和所请求的存储器范围ID的CS命令;以及
部分基于与所述资源集ID相关联的数据结构是否包括所请求的存储器范围ID来确定所述CS命令是否有效。
3.根据权利要求2所述的方法,其中,确定所述CS命令是否有效还包括,响应于确定所请求的存储器范围ID对应于所述存储器范围的存储器范围ID,确定相对于所述存储器范围的第二偏移和所述CS命令的访问大小是否超过所述存储器范围的边界。
4.根据权利要求3所述的方法,还包括响应于确定所述CS命令有效,基于所述数据结构将所述第二偏移转换为所述CS设备的存储器区域内的第三偏移。
5.根据权利要求2所述的方法,还包括响应于确定所述CS命令无效,向所述主机设备返回错误报告。
6.根据权利要求2所述的方法,还包括确定对应于所请求的存储器范围ID的所请求的存储器范围是否正在被另一CS命令使用。
7.根据权利要求6所述的方法,还包括响应于确定所请求的存储器范围正在使用中,重新调度所述CS命令的执行。
8.根据权利要求1所述的方法,还包括基于所述存储器区域对应于由分配计算存储的所述请求所指示的存储器类型,从所述存储器区域中选择所述存储器范围。
9.一种计算存储CS设备,包括:
存储器;和
控制器,被配置为:
接收向主机设备的应用分配计算存储的请求,其中,所述请求包括与所述应用相关联的资源集标识符ID;
识别所述存储器的存储器区域内的存储器范围;
在与所述资源集ID相关联的数据结构中存储所述存储器范围的存储器范围ID、所述存储器区域和所述存储器区域内的偏移之间的关联;以及
向所述主机设备发送所述存储器范围ID。
10.根据权利要求9所述的CS设备,其中,所述控制器还被配置为:
接收包括所述资源集ID和所请求的存储器范围ID的CS命令;以及
部分基于与所述资源集ID相关联的数据结构是否包括所请求的存储器范围ID来确定所述CS命令是否有效。
11.根据权利要求10所述的CS设备,其中,确定所述CS命令是否有效还包括:响应于确定所请求的存储器范围ID对应于所述存储器范围的存储器范围ID,确定相对于所述存储器范围的第二偏移和所述CS命令的访问大小是否超过所述存储器范围的边界。
12.根据权利要求11所述的CS设备,其中,所述控制器还被配置为响应于确定所述CS命令有效,基于所述数据结构将所述第二偏移转换为所述CS设备的存储器区域内的第三偏移。
13.根据权利要求10所述的CS设备,其中,所述控制器还被配置为响应于确定所述CS命令无效,向所述主机设备返回错误报告。
14.根据权利要求10所述的CS设备,其中,所述控制器还被配置为确定与所请求的存储器范围ID相对应的所请求的存储器范围是否正在被另一CS命令使用。
15.根据权利要求14所述的CS设备,其中,所述控制器还被配置为响应于确定所请求的存储器范围正在使用中,重新调度所述CS命令的执行。
16.根据权利要求9所述的CS设备,其中,所述数据结构包括散列表。
17.根据权利要求9所述的CS设备,其中,所述控制器还被配置为向所述主机设备发送所述存储器范围的大小。
18.一种用于资源隔离的系统,包括:
主机设备,被配置为:
存储与在所述主机设备处执行的应用相关联的会话上下文,所述会话上下文与资源集标识符ID相关联;
响应于从所述应用接收到分配计算存储的请求,将所述资源集ID插入到所述请求中;和
计算存储设备,包括:
存储器;和
控制器,被配置为:
接收分配计算存储的所述请求;
识别所述存储器的存储器区域内的存储器范围;
在与所述资源集ID相关联的数据结构中存储所述存储器范围的存储器范围ID、所述存储器区域和所述存储器区域内的偏移之间的关联;以及
向所述主机设备发送所述存储器范围ID。
19.根据权利要求18所述的系统,其中,分配计算存储的所述请求与会话ID和随机数相关联,并且其中,所述主机设备还被配置为确定所述会话ID和所述随机数是否匹配与所述会话上下文相关联的预期会话ID和预期随机数。
20.根据权利要求19所述的系统,其中,所述主机设备还被配置为存储与所述会话ID相关联的更新的预期随机数。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202163270049P | 2021-10-20 | 2021-10-20 | |
US63/270,049 | 2021-10-20 | ||
US17/558,587 | 2021-12-21 | ||
US17/558,587 US11941266B2 (en) | 2021-10-20 | 2021-12-21 | Resource isolation in computational storage devices |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115993931A true CN115993931A (zh) | 2023-04-21 |
Family
ID=83899769
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211286819.XA Pending CN115993931A (zh) | 2021-10-20 | 2022-10-20 | 用于计算存储设备中的资源隔离的方法和系统 |
Country Status (6)
Country | Link |
---|---|
US (2) | US11941266B2 (zh) |
EP (1) | EP4170495A1 (zh) |
KR (1) | KR20230056583A (zh) |
CN (1) | CN115993931A (zh) |
AU (1) | AU2022256120A1 (zh) |
TW (1) | TW202324090A (zh) |
Family Cites Families (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6223289B1 (en) | 1998-04-20 | 2001-04-24 | Sun Microsystems, Inc. | Method and apparatus for session management and user authentication |
US7690026B2 (en) | 2005-08-22 | 2010-03-30 | Microsoft Corporation | Distributed single sign-on service |
CN101682505B (zh) | 2007-05-07 | 2013-10-23 | Lg电子株式会社 | 用于安全通信的方法和系统 |
WO2010090664A1 (en) | 2009-02-05 | 2010-08-12 | Wwpass Corporation | Centralized authentication system with safe private data storage and method |
US7891560B2 (en) | 2009-05-15 | 2011-02-22 | Visa International Service Assocation | Verification of portable consumer devices |
US8458776B2 (en) | 2009-10-21 | 2013-06-04 | Microsoft Corporation | Low-latency peer session establishment |
KR101684753B1 (ko) | 2010-02-09 | 2016-12-08 | 인터디지탈 패튼 홀딩스, 인크 | 신뢰적인 연합 아이덴티티를 위한 방법 및 장치 |
US8700892B2 (en) | 2010-03-19 | 2014-04-15 | F5 Networks, Inc. | Proxy SSL authentication in split SSL for client-side proxy agent resources with content insertion |
WO2012040198A1 (en) | 2010-09-20 | 2012-03-29 | Interdigital Patent Holdings, Inc. | Identity management on a wireless device |
US8850545B2 (en) | 2011-03-23 | 2014-09-30 | Interdigital Patent Holdings, Inc. | Systems and methods for securing network communications |
KR101981229B1 (ko) | 2011-04-15 | 2019-05-22 | 삼성전자주식회사 | 머신-대-머신 노드 소거 절차 |
US8958559B2 (en) | 2011-06-03 | 2015-02-17 | Apple Inc. | System and method for secure instant messaging |
WO2015034435A1 (en) | 2013-09-03 | 2015-03-12 | Nanyang Technological University | A method for managing a data center network |
GB2518255A (en) | 2013-09-13 | 2015-03-18 | Vodafone Ip Licensing Ltd | Communicating with a machine to machine device |
EP3117575B1 (en) | 2014-03-14 | 2018-08-22 | Telefonaktiebolaget LM Ericsson (publ) | Systems and methods related to establishing a temporary trust relationship between a network-based media service and a digital media renderer |
US10129031B2 (en) | 2014-10-31 | 2018-11-13 | Convida Wireless, Llc | End-to-end service layer authentication |
US20160173529A1 (en) | 2014-12-15 | 2016-06-16 | King Fahd University Of Petroleum And Minerals | Controlled resource access to mitigate economic denial of sustainability attacks against cloud infrastructures |
CN108347410B (zh) | 2017-01-24 | 2021-08-31 | 华为技术有限公司 | 安全实现方法、设备以及系统 |
US10931595B2 (en) | 2017-05-31 | 2021-02-23 | Futurewei Technologies, Inc. | Cloud quality of service management |
US10558497B2 (en) | 2017-08-28 | 2020-02-11 | International Business Machines Corporation | Prevention and resolution of a critical shortage of a shared resource in a multi-image operating system environment |
US11030123B2 (en) * | 2018-06-06 | 2021-06-08 | Oracle International Corporation | Fine grained memory and heap management for sharable entities across coordinating participants in database environment |
WO2020000175A1 (en) | 2018-06-26 | 2020-01-02 | Intel Corporation | Oversubscribable resource allocation |
US20190114195A1 (en) | 2018-08-22 | 2019-04-18 | Intel Corporation | Virtual device composition in a scalable input/output (i/o) virtualization (s-iov) architecture |
EP3874857A1 (en) | 2018-11-02 | 2021-09-08 | Nokia Solutions and Networks Oy | Methods and apparatuses for network slice minimum and maximum resource quotas |
US20200371700A1 (en) * | 2019-05-22 | 2020-11-26 | Kove Ip, Llc | Coordinated allocation of external memory |
US11240241B2 (en) | 2019-06-19 | 2022-02-01 | Servicenow, Inc. | Discovery and mapping of a cloud-based authentication, authorization, and user management service |
US20220264439A1 (en) | 2020-05-08 | 2022-08-18 | Nec Corporation | Support for network slice quota event notification |
US11442637B1 (en) * | 2021-07-12 | 2022-09-13 | EMC IP Holding Company LLC | Managing drive space among different data services environments within a storage system |
US11966343B2 (en) * | 2021-07-19 | 2024-04-23 | Samsung Electronics Co., Ltd. | Universal mechanism to access and control a computational device |
US20210389890A1 (en) * | 2021-08-27 | 2021-12-16 | Intel Corporation | Automatic selection of computational non-volatile memory targets |
-
2021
- 2021-12-21 US US17/558,587 patent/US11941266B2/en active Active
-
2022
- 2022-09-13 KR KR1020220115100A patent/KR20230056583A/ko not_active Application Discontinuation
- 2022-10-19 AU AU2022256120A patent/AU2022256120A1/en active Pending
- 2022-10-19 EP EP22202416.8A patent/EP4170495A1/en active Pending
- 2022-10-19 TW TW111139649A patent/TW202324090A/zh unknown
- 2022-10-20 CN CN202211286819.XA patent/CN115993931A/zh active Pending
-
2024
- 2024-03-18 US US18/608,871 patent/US20240220139A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
EP4170495A1 (en) | 2023-04-26 |
US11941266B2 (en) | 2024-03-26 |
AU2022256120A1 (en) | 2023-05-04 |
TW202324090A (zh) | 2023-06-16 |
KR20230056583A (ko) | 2023-04-27 |
US20230124665A1 (en) | 2023-04-20 |
US20240220139A1 (en) | 2024-07-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10083131B2 (en) | Generating and/or employing a descriptor associated with a memory translation table | |
CN103607428B (zh) | 一种访问共享内存的方法和装置 | |
CN110837479B (zh) | 数据处理方法、相关设备及计算机存储介质 | |
US20220236902A1 (en) | Systems and methods for data transfer for computational storage devices | |
EP4064086A1 (en) | Secure applications in computational storage devices | |
US20240143203A1 (en) | Systems and methods for storage device resource management | |
CN107197000B (zh) | 静态动态混合缓存方法、装置及系统 | |
US20220107752A1 (en) | Data access method and apparatus | |
KR102715658B1 (ko) | 연산 저장 장치에 대한 데이터 전송을 위한 시스템 및 방법 | |
CN115993931A (zh) | 用于计算存储设备中的资源隔离的方法和系统 | |
US11755251B2 (en) | Virtual computational storage devices | |
US11899953B1 (en) | Method of efficiently identifying rollback requests | |
US20240176750A1 (en) | Systems, methods, and apparatus for memory protection for computational storage devices | |
CN116795282A (zh) | 用于向贮存设备发送命令的系统和方法 | |
TW202409857A (zh) | 用於資料比較的系統、裝置以及方法 | |
CN117407720A (zh) | 用于数据比较的系统和方法 | |
CN118114317A (zh) | 电子系统以及用于管理存储器的方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination |