Secure processing in data conversion accelerator
By introducing secure and insecure partitions into the data conversion accelerator, the problem of insufficient access control for sensitive data is solved, achieving effective protection and enhanced security for sensitive data.
Patent Information
- Application Number
- CN202480024895.4
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2024-02-08
- Filing Date
- 2024-02-09
- Publication Date
- 2025-11-14
AI Technical Summary
Existing data transformation accelerators struggle to effectively restrict access to sensitive data when processing it, resulting in insufficient security.
By introducing secure and insecure partitions in the data transformation accelerator to store sensitive and public data respectively, and by restricting access to sensitive data through the internal processor, it is ensured that it can only be accessed by the internal processor.
It effectively protects sensitive data, prevents access by external processors, and improves the security of the data conversion accelerator and the privacy protection capabilities of data processing.
Smart Images

Figure CN120958445A_ABST
Abstract
Description
Cross-references to related applications
[0001] This U.S. patent application claims priority to U.S. Provisional Patent Application No. 63 / 484,461, filed February 10, 2023, entitled “SECURE PROCESSING FOR ADATA TRANSFORM ACCELERATOR,” the disclosure of which is incorporated herein by reference in its entirety. Technical Field
[0002] This disclosure generally relates to data transformation acceleration, and more specifically, to the secure handling of data in data transformation accelerators. Background Technology
[0003] Unless otherwise stated herein, the materials described herein are not prior art as claimed in the claims of this application, nor are they admitted as prior art simply because they are included in this section.
[0004] A data transformation accelerator is a co-processor device used to accelerate data transformation operations for various applications, such as data analytics, big data, storage, encryption, and web applications. For example, a data transformation accelerator can be configured as a storage accelerator and / or an encryption accelerator.
[0005] The subject matter claimed in this disclosure is not limited to implementations that address any shortcomings or operate only in the environment described above. Rather, this background art is provided merely as an exemplary technical field to illustrate the feasibility of some implementations described in this disclosure. Summary of the Invention
[0006] In an exemplary embodiment, a method may include obtaining an address associated with a data conversion command. This address may be located in a container situated in a first memory. The method also includes obtaining metadata associated with the data conversion command. The data conversion command may be situated in the first memory and may be pointed to by the address. The data conversion command may include a conversion command description and / or other metadata, such as, but not limited to, additional metadata pointing to a data conversion operation, and descriptors serving as pointers to a source data buffer and / or a target data buffer. A first portion of the metadata may be public data, while a second portion of the metadata may be sensitive data. The method also includes storing public data in the first memory and storing sensitive data in a second memory situated within a data conversion accelerator. The method further includes configuring a data conversion pipeline in the data conversion accelerator based on the data conversion command and / or associated metadata (including metadata publicly disclosed as public data in the first memory and metadata of sensitive data in the second memory).
[0007] The objectives and advantages of the embodiments will be realized and achieved, at least by means of the elements, features and combinations particularly pointed out in the claims.
[0008] The preceding general description and the following detailed description are given as examples and are illustrative, and do not constitute a limitation on the claimed invention. Attached Figure Description
[0009] Exemplary embodiments will be described and explained with additional specificity and detail using the accompanying drawings, in which: Figure 1 A block diagram of an exemplary operating environment for secure data processing in a data transformation accelerator is shown; Figure 2 A block diagram is shown of an exemplary environment for operations associated with data security processing in a data transformation accelerator; Figure 3 A block diagram is shown of an exemplary operating environment in a data transformation accelerator for secure data processing using input / output virtualization; Figure 4 A flowchart illustrating an exemplary method for an external device to communicate with a data conversion accelerator to perform secure data processing is shown. Figure 5 A flowchart illustrating an exemplary method for a data transformation accelerator to perform data security processing is shown; Figure 6 A flowchart illustrating an exemplary method for secure processing in a data conversion accelerator is shown; and Figure 7 An exemplary computing device is shown. Detailed Implementation
[0010] Data transformation accelerators can be used in conjunction with host devices as coprocessor devices to accelerate data transformation operations for various applications, such as data analytics, big data, storage, and / or networking. Data transformation operations may include, but are not limited to, compression, decompression, encryption, decryption, authentication tag generation, authentication, data deduplication, NVMe (non-volatile memory express) protection information (PI) generation, NVMe PI verification, and / or real-time verification.
[0011] In some cases, the data transmitted to the data conversion accelerator and / or the data generated by the data conversion accelerator may be sensitive data or private data (referred to as sensitive data in this disclosure). Therefore, maintaining restricted access to sensitive data may be beneficial and / or desirable, including restricting access to sensitive data during data conversion operations performed by the data conversion accelerator.
[0012] In some embodiments of this disclosure, the data conversion accelerator may include memory, which may include at least a partition configured to store sensitive data. In some embodiments, sensitive data may be stored separately from non-sensitive (or public) data, and / or access to sensitive data may be restricted. For example, in some embodiments, sensitive data may be accessible by an internal processor of the data conversion accelerator, but may not be accessible by an external processor, such as a processor associated with a host device configured to communicate with the data conversion accelerator.
[0013] In some embodiments, sensitive data may be acquired by a data transformation accelerator, for example, transmitted from a host device and / or other external devices. Alternatively or additionally, sensitive data may be generated by the data transformation accelerator (e.g., as part of a data transformation operation performed by the data transformation accelerator). In these and other embodiments, as described herein, the data transformation accelerator may be configured to store and restrict access to sensitive data. Therefore, the data transformation accelerator (and its associated components) may be configured to restrict access by other processors and / or devices to sensitive data acquired and / or generated by the data transformation accelerator.
[0014] Figure 1 A block diagram of an exemplary operating environment 100 for secure data processing in a data conversion accelerator 120 according to at least one embodiment of the present disclosure is shown. The operating environment 100 may include an external device 110 and a data conversion accelerator 120. The external device 110 may include an external processor 112 and external memory 114. The data conversion accelerator 120 may include an internal processor 122, internal memory 124, and a data conversion engine 126. The internal memory 124 may include a secure partition 130 and a non-secure partition 132.
[0015] In some embodiments, an external device 110 (e.g., a host computer, host server, etc.) may communicate with the data conversion accelerator 120 via a data communication interface (e.g., a Peripheral Component Interconnect Express (PCIe) interface, a Universal Serial Bus (USB) interface, and / or other similar data communication interfaces). In some embodiments, when a user requests the conversion of source data that may be located in external memory 114, software (e.g., a software driver) operated by an external processor 112 on the external device 110 may be directed to generate metadata related to the source data being converted in external memory 114 (e.g., but not limited to, conversion command pre-data including command descriptions, a list of descriptors indirectly referencing different parts of the metadata, and a list of descriptors indirectly referencing the source data and the target data buffer; command pre-data including the conversion algorithm and related parameters; source tokens and action tokens describing different parts of the source data and the conversion operations to be applied to the different parts; and additional command metadata). In some embodiments, the software may generate metadata in external memory 114 based on source data that may be obtained from one or more sources. For example, source data can be obtained from a memory (e.g., a storage device) associated with external device 110, a buffer associated with external device 110, a data stream from another device, etc. In these and other embodiments, obtaining source data may include copying or moving the source data to external memory 114.
[0016] In some embodiments, the software may instruct an external processor 112 to generate metadata associated with the source data. In some embodiments, the metadata may be stored in one or more input buffers. For example, in instances where the metadata includes a transformation command that may contain a list of source descriptors, a list of target descriptors, command preconditions, source tokens and action tokens, and additional command metadata, each individual component of the metadata may be stored in a separate input buffer (e.g., the transformation command in a first input buffer, the preconditions in a second input buffer, the source tokens and action tokens in a third input buffer, etc.). In some embodiments, the input buffers associated with the metadata may reside in external memory 114. Alternatively or additionally, the input buffers associated with the metadata may reside in internal memory 124. Alternatively or additionally, the input buffers may reside in both external memory 114 and internal memory 124. For example, one or more input buffers associated with the metadata may reside in external memory 114, and one or more input buffers associated with the metadata may reside in internal memory 124. In these and other embodiments, the external processor 112 may instruct the software to reserve one or more output buffers that may be used to store the output from the data transformation accelerator 120. In some embodiments, the output buffer may be located in external memory 114. In some embodiments, the output buffer may be located in internal memory 124 of the data conversion accelerator 120.
[0017] In an instance where software instructs external processor 112 to generate metadata and store it in internal memory 124 (e.g., in an input buffer located in internal memory 124), external processor 112 may transmit commands to data conversion accelerator 120 via a data communication interface (e.g., to components of data conversion accelerator 120, such as internal processor 122 or insecure partition 132 of internal memory 124). For example, insecure partition 132 of internal memory 124 may be accessible and / or addressable by external processor 112 via the data communication interface, and in an instance where the data communication interface is PCIe, insecure partition 132 of internal memory 124 may be mapped to the address space of external device 110 via a base address register associated with a PCIe endpoint (e.g., data conversion accelerator 120).
[0018] In some embodiments, the first part of the metadata may be public data, while the second part of the metadata may be sensitive data. Public data may be data that can be accessed by one or more devices remote from the data conversion accelerator 120 (e.g., external device 110 (e.g., external processor 112)) and / or by the data conversion accelerator 120 (e.g., internal processor 122). Sensitive data may be data that can be accessed by the internal processor 122 of the data conversion accelerator 120 and / or by other components included in the data conversion accelerator 120 (e.g., data conversion engine 126), but not by one or more devices remote from the data conversion accelerator 120 (e.g., external processor 112). For example, in an instance where the external processor 112 attempts to access sensitive data, the internal processor 122 may return an error, obfuscated random data, and / or may provide an indication to the external device 110 (e.g., external processor 112) that the sensitive data located in the secure partition 130 is inaccessible and / or accessible by the internal processor 122.
[0019] In these and other embodiments, public data may be stored in the insecure partition 132 of internal memory 124 and / or external memory 114. For example, public data may be stored entirely in external memory 114, entirely in insecure partition 132, or a first portion of public data may be stored in external memory 114, and a second portion of public data may be stored in insecure partition 132. Alternatively or additionally, sensitive data may be stored in the secure partition 130 of internal memory 124. In these and other embodiments, internal memory 124 may be partitioned such that secure partition 130 and insecure partition 132 may be adjacent. Alternatively or additionally, internal memory 124 may be partitioned such that secure partition 130 and insecure partition 132 may not be adjacent. In some embodiments, internal memory 124 may be divided into more than Figure 1 More partitions are shown, of which at least one partition can be a security partition 130.
[0020] One or more partitioning techniques can be used to divide the internal memory 124 into at least a secure partition 130 and a non-secure partition 132. In some embodiments, the secure partition 130 can be hard-connected to the internal memory 124 of the data conversion accelerator 120. In some embodiments, one or more electronic fuse bits on the data conversion accelerator 120 can be set to enable partitioning of the internal memory 124. By enabling and / or disabling the eFuse bits in the data conversion accelerator 120, the internal memory 124 can be divided into one or more partitions of predefined sizes.
[0021] In some embodiments, the internal processor 122 may execute secure boot read-only memory (ROM) code (e.g., a master boot ROM or secondary boot ROM) that results in the creation of a secure partition 130 in the internal memory 124. Alternatively or additionally, the internal processor 122 may obtain secure runtime firmware that can be used to enable the partition of the internal memory 124. In some embodiments, the secure runtime firmware may be authenticated by secure boot ROM code executed by the internal processor 122.
[0022] In some embodiments, the internal processor 122 may obtain commands from software in a portion of the external device 110 (e.g., a trusted region), trusted software from the external processor 112, trusted code, and / or trusted applications (collectively, trusted sources), wherein the commands may instruct the internal processor 122 to configure a security partition 130 in internal memory 124. For example, the command may originate from software rooted in a chain of trust using a trusted platform module (TPM). In this case, the internal processor 122 may receive and / or verify the commands from the trusted source and subsequently establish the security partition 130 in internal memory 124.
[0023] In some embodiments, a trusted source (e.g., trusted software in external processor 112) may bootstrap partitioning of internal memory 124 to include secure partition 130 after data conversion accelerator 120 is initialized, and / or the trusted source may define a partition as operable until a threshold is met (e.g., data conversion accelerator 120 is reset or restarted). In some embodiments, the trusted source may be configured to update the partitioning of secure partition 130 and / or obfuscate secure partition 130 before establishing a session with data conversion accelerator 120. Alternatively or additionally, the trusted source may be configured to dynamically adjust the partitioning of secure partition 130 and / or obfuscate secure partition 130 via communication with internal processor 122. Dynamic adjustment of the partitions may be performed before commands are transmitted to secure partition 130 in internal memory 124. Alternatively or additionally, other partitioning techniques besides those described herein may be employed to create secure partition 130 in internal memory 124.
[0024] In some embodiments, the software may instruct the data conversion accelerator 120 to process data conversion commands. For example, the software may instruct the data conversion accelerator 120 to obtain an address that can point to the data conversion command. In some embodiments, the data conversion command may be used by the data conversion accelerator 120 to convert source data based on data conversion operations included in the data conversion command. In some embodiments, the data conversion operation performed according to the instructions of the data conversion command may be performed by the data conversion engine 126. In some embodiments, the data conversion engine 126 may be arranged according to the data conversion command and / or metadata (e.g., public data in the insecure partition 132 of external memory 114 and / or sensitive data in the secure partition 130 of internal memory 124), such that the data conversion engine 126 forms a data conversion pipeline that can be configured to perform data conversion operations on the source data.
[0025] In some embodiments, address and / or data translation commands may reside in external memory 114. In this case, the data translation accelerator 120 (e.g., internal processor 122) can obtain the address and / or access the data translation commands in external memory 114 using a data communication interface. Alternatively or additionally, the address and / or data translation commands may reside in internal memory 124 (e.g., in a non-secure partition 132), and the address may be obtained by internal processor 122 and / or data translation engine 126.
[0026] In these and other embodiments, external device 110 can use a data communication interface to transfer metadata to data conversion accelerator 120, internal processor 122 can instruct the storage of such metadata in internal memory 124 (e.g., sensitive data in secure partition 130 and public data in insecure partition 132), and internal processor 122 can return the address of the stored metadata to external processor 112. Alternatively or additionally, external device 110 can use a data communication interface to directly transfer metadata (e.g., public data) to the insecure partition 132 of internal memory 124 of data conversion accelerator 120. When the address of the metadata (e.g., sensitive data) stored in secure partition 130 is returned to external processor 112, operations associated with the sensitive data (e.g., read / write) can be performed via internal processor 122 and / or other internal components of data conversion accelerator 120 (e.g., data conversion engine 126). For example, external processor 112 can submit one or more messages to internal processor 122 to request reading sensitive data from and / or writing sensitive data to secure partition 130, and receive results (e.g., confirmation of sensitive data and / or completion) from secure partition 130 of internal memory 124 via a data communication interface. In some embodiments, after successful transmission (e.g., after receiving confirmation from internal processor 122 that sensitive data has been stored in secure partition 130), sensitive data transmitted from external processor 112 to secure partition 130 of internal memory 124 via internal processor 122 can be removed from external device 110 (e.g., removed from external memory 114). In some embodiments, requests to read, write, and / or delete secure data can be sent by software rooted in the root of trust of external processor 112. In some embodiments, the data communication interface can be a secure connection that may include encrypted data and / or digital signatures. For example, the data communication interface may include a secure socket layer (SSL) connection or a transport layer security (TLS) connection.
[0027] In some embodiments, upon receiving sensitive data to be stored in secure partition 130, the internal processor 122 may perform a verification of the size of secure partition 130 relative to the size of the sensitive data. If the size of the sensitive data is larger than the size of secure partition 130, the internal processor 122 may return an error to the external processor 112 and / or the internal processor 122 may not store the sensitive data in secure partition 130 (and / or any other portion of internal memory 124). Alternatively or additionally, if the sensitive data is stored in secure partition 130, the internal processor 122 may transmit confirmation to the external processor 112 that the sensitive data has been stored.
[0028] In some embodiments, data transformation operations performed by data transformation engine 126 (e.g., one or more data transformation operations performed in a data transformation pipeline as described herein) may produce intermediate data that can be used in subsequent data transformation operations (e.g., used by a data transformation engine configured to perform subsequent data transformation operations using the intermediate data). In some embodiments, the intermediate data may include public data and / or sensitive data. In the case that the intermediate data is sensitive data, the portion of the intermediate data that is sensitive data may be stored in secure partition 130. Alternatively or additionally, in response to the intermediate data being used in subsequent data transformation operations and / or in response to the intermediate data not being planned for use in subsequent data transformation operations, internal processor 122 (and / or other internal components included in data transformation accelerator 122, such as data transformation engine 126) may delete the intermediate data from secure partition 130.
[0029] In some embodiments, data transformation accelerator 120 may be configured to support multiple data transformation sessions, wherein a data transformation session may include source data, associated metadata (e.g., including public and sensitive data), and a data transformation engine 126 as described herein (e.g., arranged in a data transformation pipeline). In some embodiments, one or more data transformation commands may include the same or similar algorithms in the data transformation operation. In this case, individual data transformation commands may be grouped together to form a data transformation session. In some embodiments, multiple data transformation commands grouped into a data transformation session may include the same or similar metadata, including the same or similar sensitive data. In this case, as described herein, data transformation accelerator 120 may store sensitive data in a secure partition 130, and data transformation accelerator 120 may provide an address to external device 110 such that external device 110 may include the address in the data transformation commands belonging to the session. In these and other embodiments, multiple data transformation commands may include one or more source descriptors, which may point to one or more input buffers, which may be configured to store secure and / or insecure metadata shared by multiple commands in the session. Alternatively or additionally, multiple data transformation commands may include one or more source descriptors, which may point to one or more input buffers. These input buffers may be configured to store source data, as well as other security and non-security metadata that may be unique to different commands within the session. When the first and second data transformation commands have the same input data and / or metadata, the corresponding source descriptors may point to the same (one or more) input buffer(s). When the first and second data transformation commands have different input data and / or metadata, the corresponding source descriptors may point to different input buffers (if applicable).
[0030] For example, a first data conversion session may include a first data conversion command, which may include first source data and associated first metadata in a first input buffer, wherein the first public data may be stored in a second input buffer in a non-secure partition 132 of internal memory 124, and the first secure data may be stored in a third input buffer in a secure partition 130 of internal memory 124, and one or more data conversion engines 126 may be arranged in the first data conversion pipeline. In the case where the first data conversion pipeline of the first data conversion session generates first intermediate data of sensitive data, the first intermediate data may be stored in an intermediate buffer of secure partition 130, and may be associated with sensitive data of the first metadata in secure partition 130 of internal memory 124.
[0031] Continuing this example, the first data transformation session may include a second data transformation command, which may include first source data (stored in a first input buffer) and first metadata, wherein public data may be stored in a second input buffer in a non-secure partition 132, and sensitive data may be stored in a third input buffer in a secure partition 130. Alternatively or additionally, the second data transformation command may perform data transformation operations using shared source data and / or shared metadata. In this example, the first and second data transformation commands may include the same source descriptor as the first data transformation command, and the second data transformation command may use the same source data and / or metadata stored in the respective input buffers.
[0032] In the example, external processor 112 can use a data communication interface to transmit communication (e.g., commands) to internal processor 122. Commands may instruct internal processor 122 to establish one or more input buffers and / or one or more output buffers in internal memory 124 (e.g., which may include secure partition 130 and / or insecure partition 132). In some embodiments, commands may be transmitted from a trusted area of external processor 112, and / or the transmission may be performed via a secure connection (e.g., encryption, digital signature, etc.) through the data communication interface.
[0033] In response to a received command, the internal processor 122 may create one or more buffers, and the internal processor 122 may return the individual addresses of one or more buffers to the external processor 112. In this case, the internal processor 122 may use the secure address associated with the secure partition 130 to read and / or write the associated buffer, while the external processor 112 may not use the secure address to read and / or write the associated buffer.
[0034] External processor 112 can generate one or more source descriptors, which can be associated with data transformation commands and can point to one or more input buffers. Data transformation commands can be used to establish a data transformation pipeline and / or perform data transformation operations on source data. In some embodiments, a single source descriptor can be associated with a single component of metadata, which may include sensitive data. Input buffers can be used to store input data to data transformation accelerator 120, and input buffers can be pointed to by source descriptors. In some embodiments, software on external device 110 can generate source data and / or associated metadata, and external processor 112 can instruct the storage of source data and / or associated metadata in one or more input buffers, which may reside in external memory 114 and / or internal memory 124 (e.g., secure partition 130 and / or insecure partition 132).
[0035] Metadata associated with the source data may be stored in external memory 114 and / or may be transferred from external device 110 to data conversion accelerator 120 for storage in internal memory 124. If the metadata includes sensitive data, the sensitive data may be transferred from external device 110 to data conversion accelerator 120 and stored in a secure partition 130 within internal memory 124. Internal processor 122 may determine whether secure partition 130 includes sufficient memory to store the sensitive data. If the storage used by the sensitive data is greater than the available storage in secure partition 130, internal processor 122 may return an error to external device 110 (e.g., external processor 112), and internal processor 122 may choose not to store the sensitive data in internal memory 124. Alternatively or additionally, if the storage used by the sensitive data is less than (or an equivalent amount of) the available storage in secure partition 130, internal processor 122 may instruct the sensitive data to be stored in secure partition 130 within internal memory 124. In this scenario, the internal processor 122 can return the address of the sensitive data within the secure partition 130 to the software of the external device 110 (e.g., the external processor 112 running the software). Alternatively or additionally, in response to an indication that sensitive data has been stored in the secure partition 130, the external processor 112 can instruct the removal of the sensitive data from the external memory 114 of the external device 110. Alternatively or additionally, after the command is completed, the data conversion engine 126 can remove the sensitive data from the secure partition 130.
[0036] Alternatively or additionally, the external processor 112 may generate one or more target descriptors that can be associated with data conversion commands and may point to one or more output buffers. The output buffers can be used to store output from the data conversion accelerator 120 and / or intermediate data generated during the data conversion operation (e.g., sensitive data generated during the data conversion operation and stored in intermediate / output buffers in the secure partition 130). For example, the software may reserve external memory 114 and / or instruct the internal processor 122 in the data conversion accelerator 120 to configure internal memory 124 to reserve at least a portion of the memory for one or more output buffers that can be used to store the output of the data conversion operation.
[0037] In some embodiments, external processor 112 may instruct the storage of addresses associated with data transformation commands in containers located in external memory 114 and / or internal memory 124 (e.g., non-secure partition 132). In some embodiments, data transformation accelerator 120 may obtain addresses from containers, and data transformation accelerator 120 may dereference source descriptors to obtain metadata (e.g., both public and sensitive data). Using metadata, data transformation accelerator 120 (e.g., internal processor 122) may configure data transformation engine 126 into a data transformation pipeline, and may obtain one or more algorithms that can be used in data transformation operations. For example, various components of metadata (e.g., command metadata, command pre-data, additional command metadata) may provide algorithm parameters, source tokens (e.g., input data type and / or input data length), action tokens (e.g., location within data and / or application of the algorithm to data at a determined location), and the like.
[0038] In response to obtaining an address, the data conversion accelerator 120 (e.g., data conversion engine 126) can access portions of the internal memory 124, such as its secure partition 130. If the data conversion engine 126 reads the secure partition 130 or the read operation exceeds the boundary of the secure partition 130, the data conversion engine 126 may generate an error and / or transmit the error to the external device 110, and the data conversion engine 126 may stop the execution of the data conversion operation.
[0039] Data conversion accelerator 120 can acquire input data and perform data conversion operations on the input data using data conversion engine 126 and a data conversion pipeline. After the data conversion operation, data conversion accelerator 120 can output the converted data to an output buffer, as indicated by the destination descriptor. In the case where the data conversion operation generates sensitive data, data conversion engine 126 can direct the sensitive data to be stored in an intermediate buffer in a secure partition 130 of internal memory 124. Optionally or additionally, if the intermediate data is larger than the secure partition, data conversion accelerator 120 (e.g., data conversion engine 126) can generate an error and / or transmit the error to external device 110, and can instruct the intermediate data not to be stored in secure partition 130.
[0040] The operating environment 100 can be modified, added to, or removed without departing from the scope of this disclosure. For example, the naming of different elements in the manner described is intended to aid in the explanation of the concepts described herein and is not restrictive. Furthermore, the operating environment 100 may include any number of other elements, or may be implemented in other systems or environments besides those described. For example, Figure 1 Any component can be divided into more components or merged into fewer components.
[0041] Figure 2 According to at least one embodiment of this disclosure, a block diagram of an example operating environment 200 for secure data processing in a data conversion accelerator is shown. The operating environment 200 may include a first memory 202 and a second memory 220. The first memory 202 may include a command data structure 204, a data conversion command 206, a first input buffer 212, and a first output buffer 214. The data conversion command 206 may include a source descriptor 208 and a target descriptor 210. The second memory 220 may include a second input buffer 222 and an intermediate buffer 226.
[0042] In some embodiments, the first memory 202 may be the same as or similar to the external memory 114, or may be related to... Figure 1 The insecure partition 132 of the internal memory 124 shown and / or described is the same as or similar to that of the internal memory 124. Alternatively or additionally, the second memory 220 may be... Figure 1 The security partition 130 of the internal memory 124 shown and / or described is the same as or similar to that of the internal memory 124.
[0043] In some embodiments, external devices (e.g.) Figure 1 The software in the external device 110 can instruct the data conversion accelerator (e.g., Figure 1 The data conversion accelerator 120 obtains address 230 from the first memory 202. In some embodiments, the software may instruct the address 230 to be stored in the command data structure 204 and instruct the data conversion accelerator to obtain address 230 from the command data structure 204. In some embodiments, the command data structure 204 may include one or more addresses, wherein a single address may correspond to a single data conversion command (e.g., address 230 may correspond to data conversion command 206). In some embodiments, address 230 may point to data conversion command 206.
[0044] In some embodiments, the data conversion accelerator can use address 230 pointing to data conversion command 206 to obtain the source descriptor 208 and / or target descriptor 210 included in data conversion command 206. Alternatively or additionally, the data conversion accelerator can use source descriptor 208 to obtain source data (e.g., relative to...). Figure 1 (as described) and metadata. In some embodiments, metadata may include public data and / or sensitive data, wherein public data may be stored in a first memory 202 and sensitive data may be stored in a second memory 220.
[0045] In some embodiments, the data conversion accelerator may monitor command data structure 204 to detect address 230 associated with data conversion command 206. In response to acquiring address 230, the data conversion accelerator may acquire source data and / or associated metadata using source descriptor 208 as described herein, and the data conversion accelerator may acquire at least a portion of the source data and / or associated metadata to store in first memory 202 (e.g., first input buffer 212). If the source data and / or associated metadata includes public data, the public data may be stored in first memory 202. Alternatively or additionally, if the source data and / or associated metadata includes sensitive data, the sensitive data may be stored in second memory 220 (e.g., second input buffer 222).
[0046] In cases where a data conversion operation performed by a data conversion accelerator generates intermediate data that may be sensitive data (e.g., as part of the data conversion operation), the data conversion accelerator may instruct the intermediate data to be stored in a second memory 220, such as in an intermediate buffer 226. In some embodiments, the intermediate data may be retained in the intermediate buffer 226 during the execution of the data conversion operation that resulted in the generation of the intermediate data. In some embodiments, the intermediate data may be deleted from the intermediate buffer 226 once the data conversion operation is complete, and / or in response to an indication provided by the data conversion operation that the intermediate data may not be used for subsequent operations associated with that data conversion operation.
[0047] In these and other embodiments, the first memory 202 may store public data and / or components associated with data conversion operations, such as command data structure 204, data conversion command 206 including source descriptor 208 and target descriptor 210, first input buffer 212, and first output buffer 214. In some embodiments, the first memory 202 may be located in an external device (e.g., a device communicating with a data conversion accelerator). Alternatively or additionally, the first memory 202 may be located in a data conversion accelerator. Alternatively or additionally, a first portion of the first memory 202 (e.g., Figure 2 The first portion of the components shown (located in the first memory 202) may be located in an external device, and the second portion of the first memory 202 (e.g., Figure 2The second portion of the components shown (located in the first memory 202) may be located in the data conversion accelerator. For example, command data structure 204 (e.g., including address 230) and data conversion command 206 (e.g., including source descriptor 208 and destination descriptor 210) may be located in an external device, and the first input buffer 212 and the first output buffer 214 may be located in the data conversion accelerator. Other variations in the location of the data conversion components may be implemented without affecting the operability of this disclosure. In these and other embodiments, the second memory 220 may be located in the data conversion accelerator, such that the data conversion accelerator can restrict access to sensitive data that may be stored in the second memory 220.
[0048] The operating environment 200 can be modified, added to, or removed without departing from the scope of this disclosure. For example, the naming of different elements in the manner described is intended to aid in the explanation of the concepts presented herein and is not restrictive. Furthermore, the operating environment 200 may include any number of other elements, or may be implemented in other systems or environments besides those described. For example, Figure 2 Any component can be divided into more components or merged into fewer components.
[0049] Figure 3 According to at least one embodiment of this disclosure, a block diagram of an example operating environment 300 for data security processing using virtualization in a data conversion accelerator 320 is shown. The operating environment 300 may include an external device 310 and a data conversion accelerator 320. The data conversion accelerator 320 may include an internal processor 322, internal memory 324, and a data conversion engine 326. The internal memory 324 may include a first memory 328a allocated to a first virtual machine (VM) and a second memory 328b allocated to a second virtual machine, collectively referred to as virtual machine memory 328. The first memory 328a may include a first secure partition 330a and a first insecure partition 332a, and the second memory 328b may include a second secure partition 330b and a second insecure partition 332b. The first secure partition 330a and the second secure partition 330b may be collectively referred to as secure partition 330, and the first insecure partition 332a and the second insecure partition 332b may be collectively referred to as insecure partition 332.
[0050] In some embodiments, one or more components included in the operating environment 300 may be compatible with... Figure 1 The components included in the operating environment 100 are the same as or similar. For example, external device 310, data conversion accelerator 320, internal processor 322, internal memory 324, and data conversion engine 326 can be respectively related to... Figure 1The external device 110, data conversion accelerator 120, internal processor 122, internal memory 124, and data conversion engine 126 are the same as or similar. Therefore, unless otherwise stated, Figure 3 Included with Figure 1 The same or similar components included can be configured to perform the same or substantially the same functions and / or operations.
[0051] In some embodiments, when the operating environment 300 is configured to support input / output (I / O) virtualization, the data transformation accelerator 320 may be used. For example, where software drivers can run on virtual machines that may utilize the data transformation accelerator 320, I / O virtualization may be supported by the data transformation accelerator 320 and / or components included in the data transformation accelerator 320. In some embodiments, the internal memory 324 may be partitioned in conjunction with the supported virtual machines, for example, a first memory 328a and a second memory 328b may support a first virtual machine and a second virtual machine, respectively.
[0052] In some embodiments, internal memory 324 may be partitioned into multiple memory portions (e.g., first memory 328a and second memory 328b), wherein each memory portion may be associated with one or more virtual functions. In some embodiments, each virtual machine may run one or more instances of a software driver that can create one or more sessions. One or more sessions may be configured to submit commands to data conversion accelerator 320. In some embodiments, each of the one or more sessions may be configured to store sensitive and / or public data corresponding to the virtual machine and / or software driver that created the one or more sessions. Although internal memory 324 is illustrated as including only first memory 328a and second memory 328b, data conversion accelerator 320 may contain any number of virtual machines and associated virtual machine memories 328, and / or may be limited by the amount of memory available in internal memory 324.
[0053] In some embodiments, with respect to the first virtual machine and relative to the data conversion accelerator 320, the first memory 328a can be configured to perform memory operations, similar to... Figure 1Interaction between internal memory 124 and data conversion accelerator 120. For example, a first secure partition 330a may store sensitive data that can be obtained from external device 310 and / or generated as part of the operation of data conversion accelerator 320, and / or the first secure partition 330a may restrict access to the sensitive data stored therein (e.g., an external processor of external device 310 may not be able to access the sensitive data in the first secure partition 330a, while the internal processor 322 may be able to access the sensitive data). Continuing this example, with respect to the first virtual machine, a first insecure partition 332a may store public data that is obtained from external device 310 and / or generated as part of the operation of data conversion accelerator 320, and / or the first insecure partition 332a may not restrict access to the public data stored therein (e.g., an external processor of external device 310 and / or the internal processor 322 may be able to access the public data). With respect to the second virtual machine, the second memory 328b may be the same as or similar to the first memory 328a.
[0054] Typically, secure partition 330 and insecure partition 332 can be respectively connected to... Figure 1 The security partition 130 and the insecure partition 132 are the same or similar. The security partition 330 and the insecure partition 332 can each be configured to support one or more virtual functions associated with each virtual machine. For example, first sensitive data and first public data associated with a first virtual function can be stored in the first secure partition 330a and the first insecure partition 332a, respectively; second sensitive data and second public data associated with a second virtual function can be stored in the second secure partition 330b and the second insecure partition 332b, respectively, and so on.
[0055] In some embodiments, the secure partition 330 may be partitioned from the non-secure partition 332 within the corresponding virtual machine memory 328. In some embodiments, partitioning of the secure partition 330 within the virtual machine memory 328 can be achieved by using a method relative to... Figure 1 The partitioning of the internal memory 124 can be implemented using one or more operations described herein. For example, the partitioning of the virtual machine memory 328 can be implemented using one or more eFuse bits, hardware included in the data conversion accelerator 320, software obtained by the internal processor 322 from a trusted system or device, secure boot read-only memory (ROM) code, secure runtime firmware, and / or other partitioning techniques described herein.
[0056] In some embodiments, each virtual machine can be configured to run an instance of a software driver that can create one or more sessions for submitting commands to the data conversion accelerator 320. Alternatively or additionally, in response to the creation of one or more sessions, a corresponding virtual machine memory 328 and its associated partitions (e.g., a first secure partition 330a, a first insecure partition 332a, etc.) can be established for operations associated with the corresponding virtual machine. In this case, sensitive data that the data conversion accelerator 320 may generate or acquire may correspond to the secure partition 330 of the virtual machine memory 328 stored by the virtual machine. Similarly, public data that the data conversion accelerator 320 may generate or acquire may correspond to the insecure partition 332 of the virtual machine memory 328 stored by the virtual machine. Thus, different portions of the internal memory 324 can be used independently and in parallel based on the software associated with the virtual machine.
[0057] The operating environment 300 can be modified, added to, or removed without departing from the scope of this disclosure. For example, the naming of different elements in the manner described is intended to aid in the explanation of the concepts presented herein and is not restrictive. Furthermore, the operating environment 300 can include any number of other elements, or can be implemented in other systems or environments besides those described. For example, Figure 3 Any component can be divided into more components or merged into fewer components.
[0058] Figure 4 According to at least one embodiment of this disclosure, a flowchart of an example method 400 for an external device communicating with a data conversion accelerator to perform secure data processing is shown. Method 400 can be executed by processing logic, which may include hardware (circuit, dedicated logic, etc.), software (such as software running on a general-purpose computer system or a dedicated machine), or a combination of both. This processing logic can be included in any computer system or device, for example... Figure 1 External device 110.
[0059] For ease of explanation, the methods described herein are depicted and described as a series of actions. However, actions according to this disclosure may occur in various orders and / or simultaneously, and may also occur with other actions not presented and described herein. Furthermore, not all actions shown can be used to implement the methods according to the disclosed subject matter. Additionally, those skilled in the art will understand and recognize that these methods may alternatively be represented as a series of interrelated states by state diagrams or events. Furthermore, the methods disclosed in this specification may be able to be stored on an article of art (e.g., a non-transitory computer-readable medium) to facilitate the transfer and assignment of these methods to a computing device. As used herein, the term article of art is intended to encompass a computer program accessible from any computer-readable device or storage medium. Although shown as discrete boxes, individual boxes may be divided into additional boxes, merged into fewer boxes, or eliminated depending on the desired implementation.
[0060] At box 402, an external device (e.g., Figure 1 External devices 110) and data conversion accelerators (e.g., Figure 1 A data communication interface is established between the data conversion accelerator 120 and the data conversion accelerator 120. In some embodiments, the data communication interface may include secure communication, such as by using encrypted data and / or digital signatures. For example, the data communication interface may include a secure socket layer (SSL) connection, a transport layer security (TLS) connection, etc. In some embodiments, the data communication interface may implement the PCIe standard, the USB standard, and / or other similar data communication standards.
[0061] In some embodiments, the host device may generate a container that can be configured to store one or more addresses. These addresses may point to data transformation commands. In some embodiments, the data transformation commands may be configured to include one or more references to source descriptors and / or target descriptors (e.g., source descriptors and / or target descriptors generated by method 400), which may point to one or more input buffers and / or one or more output buffers, respectively.
[0062] At box 404, the host device can transmit data to the data conversion accelerator. In some embodiments, this data may include sensitive data, which the data conversion accelerator can store in a secure partition of its internal memory. In cases where multiple data conversion commands share common sensitive data, the transmission of sensitive data can be performed once for all data conversion commands.
[0063] At box 406, the internal processor of the data conversion accelerator can determine whether sensitive data obtained from the host device can be stored within a secure partition of the data conversion accelerator's internal memory. If the size of the sensitive data (e.g., a first storage size) is greater than the size of the secure partition (e.g., a second storage size), as shown in box 410, the data conversion accelerator can abort the data conversion operation and / or return an error to the host device. Alternatively or additionally, if the size of the sensitive data is less than or equal to the size of the secure partition, the sensitive data can be stored in the secure partition.
[0064] At box 408, the host device can obtain addresses from the data conversion accelerator, whereby these addresses can be associated with sensitive data stored in a secure partition. In some embodiments, in response to obtaining these addresses, the host device can remove sensitive data from host memory.
[0065] At block 412, the host device may instruct the data conversion accelerator to reserve a portion of its internal memory (e.g., a portion of a secure partition) for storing intermediate data that may be generated during the data conversion operation. In some embodiments, the intermediate data may include sensitive data that is access-restricted, allowing the data conversion accelerator to access the intermediate data while the host device cannot.
[0066] At block 414, the internal processor of the data conversion accelerator can determine whether the secure partition contains a certain amount of space (e.g., memory) to store intermediate data that may be generated as part of the data conversion operation. If the data conversion accelerator determines that the available memory of the secure partition is less than the intermediate data memory (e.g., an estimate of the amount of intermediate data memory), as shown in block 410, the data conversion accelerator can abort the data conversion operation and / or can return an error to the host device. If the data conversion accelerator determines that the available memory of the secure partition is greater than or equal to the estimate of the intermediate data memory, method 400 can continue at block 416. In these and other embodiments, the amount of intermediate data memory can be an estimate because the data conversion operation that generates the intermediate data may not have been performed when determining whether the available memory of the secure partition is sufficient to hold the intermediate data.
[0067] At box 416, the host device can obtain the intermediate data address from the data conversion accelerator. The intermediate data address can be associated with intermediate data that may be generated and / or stored in a secure partition as part of the data conversion operation.
[0068] At box 418, the host device can generate input data and / or metadata associated with the input data, which can be stored in one or more input buffers for data transformation operations. In some embodiments, the host device can instruct respective components of the input data and / or metadata to be stored in their respective input buffers. For example, the input data can be stored in a first buffer, a first component of the metadata can be stored in a second buffer, a second component of the metadata can be stored in a third buffer, and so on. Where the metadata includes sensitive data, the sensitive data can be stored in an input buffer located within a secure partition of the data transformation accelerator memory.
[0069] In some embodiments, the host device may instruct a portion of memory to be reserved as an output buffer, which can be configured to store the output of a data conversion operation. In some embodiments, the output buffer may be located in the host device's memory. Alternatively or additionally, the output buffer may be located in the data conversion accelerator's memory.
[0070] In these and other embodiments, the host device may generate one or more source descriptors pointing to input buffers and / or one or more target descriptors pointing to output buffers. For example, the host device may generate a first set of source descriptors pointing to a first input buffer, a second set of source descriptors pointing to a second input buffer, etc., and the host device may generate a first set of target descriptors pointing to an output buffer and a second set of target descriptors pointing to an intermediate buffer. In these and other embodiments, the source descriptors and / or target descriptors may be stored in a data conversion command.
[0071] At box 420, the host device may update the address within the container. The updated address may include an address pointing to a data transformation command. Alternatively or additionally, the updated address may point to a source descriptor and / or a target descriptor, which may include a source descriptor associated with sensitive data and / or a target descriptor associated with intermediate data (e.g., sensitive data generated during the data transformation operation). Alternatively or additionally, the host device may use an address obtained from the data transformation accelerator to update the source descriptor and / or target descriptor.
[0072] Method 400 may be modified, added to, or removed without departing from the scope of this disclosure. For example, the names of the different elements described herein are intended to help explain the concepts described herein and are not restrictive. Furthermore, method 400 may include any number of other elements or may be implemented in other systems or environments besides those described.
[0073] Figure 5According to at least one embodiment of this disclosure, a flowchart of an example method 500 for performing data security processing by a data conversion accelerator is shown. Method 500 can be executed by processing logic, which may include hardware (circuit, dedicated logic, etc.), software (such as software running on a general-purpose computer system or a dedicated machine), or a combination of both. This processing logic can be included in any computer system or device, such as… Figure 1 Data conversion accelerator 120.
[0074] At box 502, the data transformation accelerator (e.g., Figure 1 The data conversion accelerator 120 can use a data communication interface to transfer data from external devices (e.g., Figure 1 The address is obtained from the external device 110. This address may be located in a container that may be stored in the external device's memory. Alternatively or additionally, this container may be stored in the memory of the data conversion accelerator. In these and other embodiments, the address may point to a data conversion command that may include information and / or data that the data conversion accelerator can use to perform a data conversion operation.
[0075] At block 504, the data conversion accelerator can use the address obtained at block 502 to retrieve a data conversion command. In some embodiments, the data conversion command may be stored in the memory of an external device. Alternatively or additionally, the data conversion command may be stored in the memory of the data conversion accelerator. In these and other embodiments, the data conversion command may include one or more source descriptors and / or one or more destination descriptors, which may point to one or more input buffers and / or one or more output buffers, respectively.
[0076] At block 506, the data transformation accelerator can retrieve data and / or metadata from the input buffer associated with a data transformation command by indirectly referencing one or more source descriptors included in the data transformation command. In some embodiments, the data may include metadata (e.g., may include multiple components), wherein the metadata may include public data and / or sensitive data. For example, the data transformation accelerator can retrieve command metadata (e.g., possibly public data) from a first input buffer by indirectly referencing a first source descriptor in the data transformation command, retrieve sensitive metadata from a second input buffer by indirectly referencing a second source descriptor in the data transformation command, and so on.
[0077] At box 508, the data transformation accelerator can configure the data transformation pipeline using metadata (e.g., public and / or sensitive data). The data transformation pipeline can include an arrangement of data transformation engines configured to perform data transformation operations based on the metadata.
[0078] At box 510, the data transformation accelerator can acquire input data (e.g., data associated with metadata), and the data transformation accelerator can perform data transformation operations on the input data using a data transformation pipeline. In some embodiments, intermediate data that may be generated as part of the data transformation operation during the data transformation operation can be sensitive data.
[0079] At box 512, the data conversion accelerator can determine whether the secure partition of the data conversion accelerator memory includes space to store intermediate data (e.g., determining whether the size of the secure partition is greater than or equal to the size of the intermediate data). If the amount of memory occupied by the intermediate data is greater than the amount of memory in the secure partition, as shown in box 516, the data conversion accelerator can abort the data conversion operation and / or the data conversion accelerator may not store the intermediate data. Alternatively or additionally, the data conversion accelerator can continue performing the data conversion operation (e.g., if the amount of memory occupied by the intermediate data is less than the amount of memory in the secure partition).
[0080] At block 514, the data conversion accelerator can use a data conversion pipeline to output the output data generated by a data conversion operation to one or more output buffers. In some embodiments, the data conversion accelerator can instruct the output data to be stored in one or more output buffers by indirectly referencing one or more target descriptors included in the data conversion command.
[0081] Method 500 may be modified, added to, or deleted from without departing from the scope of this disclosure. For example, the names of the different elements of the method are intended to help explain the concepts described herein and are not restrictive. Furthermore, method 500 may include any number of other elements, or may be implemented in other systems or environments besides those described.
[0082] Figure 6 According to at least one embodiment of this disclosure, a flowchart of an example method 600 for secure processing in a data conversion accelerator is shown. Method 600 can be executed by processing logic, which may include hardware (circuit, dedicated logic, etc.), software (such as software running on a general-purpose computer system or a dedicated machine), or a combination of both. This processing logic can be contained in any computer system or device, for example... Figure 1 External devices 110 and / or data conversion accelerators 120.
[0083] Method 600 may begin at block 602, wherein an address associated with a data conversion command may be obtained. In some embodiments, this address may be located within a container that may be located in a first memory. In some embodiments, the first memory may be located in an external device relative to the data conversion accelerator.
[0084] At box 604, metadata associated with a data conversion command can be retrieved. In some embodiments, the data conversion command may reside in a first memory, and / or the address may point to the data conversion command. In some embodiments, a first portion of the metadata may be public data, and a second portion of the metadata may be sensitive data.
[0085] In some embodiments, the first memory may be a first partition of the device memory, and the second memory may be a second partition of the device memory. In some embodiments, the first partition and the second partition may be adjacent within the device memory.
[0086] At block 606, public data may be stored in a first memory, while sensitive data may be stored in a second memory. In some embodiments, the second memory may be internal to the data conversion accelerator. In some embodiments, external devices may not be able to access the sensitive data in the second memory.
[0087] In some embodiments, an error may be generated when the second portion of the metadata (e.g., sensitive data) meets a threshold size relative to the second memory. Alternatively or additionally, the second portion of the metadata may not be stored in the second memory when it meets the threshold size relative to the second memory.
[0088] At block 608, a data conversion pipeline can be configured using public data in a first memory and / or sensitive data in a second memory. In some embodiments, software instructions that may be associated with performing one or more data conversion operations can be received from an external device. In this case, input data associated with a first descriptor that may be contained in a container can be acquired. Alternatively or additionally, the data conversion pipeline can be used to perform one or more operations on the input data. Alternatively or additionally, the result of one or more operations can be output to an output buffer. In some embodiments, if the software instructions point to a buffer located in the second memory, errors can be generated and / or transmitted to an external device.
[0089] In some embodiments, one or more operations may cause a data transformation pipeline to generate intermediate data. In some embodiments, the intermediate data may be sensitive data. In this case, the intermediate data may be stored in a second memory.
[0090] Method 600 may be modified, added to, or removed from without departing from the scope of this disclosure. For example, the naming of different elements in the manner described is intended to aid in the explanation of the concepts described herein, and is not restrictive. Furthermore, method 600 may include any number of other elements, or may be implemented in other systems or environments besides those described.
[0091] Figure 7 An example computing device 700 is illustrated, within which a set of instructions can be executed to cause a machine to perform any or more of the methods discussed herein. The computing device 700 may include mobile phones, smartphones, netbooks, rack-mount servers, router computers, server computers, personal computers, mainframes, laptops, tablets, desktop computers, or any computing device having at least one processor, within which a set of instructions can be executed to cause a machine to perform any or more of the methods discussed herein. In alternative implementations, the machine may be connected (e.g., networked) to other machines in a local area network (LAN), intranet, extranet, or the Internet. The machine may operate as a server machine in a client-server network environment. The machine may include a personal computer (PC), set-top box (STB), server, network router, switch, or bridge, or any machine capable of executing a set of instructions (sequentially or otherwise) to specify the actions the machine should take. Furthermore, although only a single machine is shown, the term "machine" may also include any collection of machines that individually or jointly execute a set (or more) of instructions to perform any or more of the methods discussed herein.
[0092] Example computing device 700 includes processing device (e.g., processor) 702, main memory 704 (e.g., read-only memory (ROM), flash memory, dynamic random access memory (DRAM), such as synchronous DRAM (SDRAM)), static memory 706 (e.g., flash memory, static random access memory (SRAM)) and data storage device 716, which communicate with each other via bus 708.
[0093] Processing device 702 represents one or more general-purpose processing devices, such as microprocessors, central processing units, etc. More specifically, processing device 702 may include complex instruction set computing (CISC) microprocessors, reduced instruction set computing (RISC) microprocessors, very long instruction word (VLIW) microprocessors, or processors implementing other instruction sets, or processors implementing combinations of instruction sets. Processing device 702 may also include one or more special-purpose processing devices, such as application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), digital signal processors (DSPs), network processors, etc. Processing device 702 is configured to execute instructions 726 to perform the operations and steps discussed herein.
[0094] The computing device 700 may also include a network interface device 722 capable of communicating with the network 718. The computing device 700 may also include a display device 710 (e.g., a liquid crystal display (LCD) or a cathode ray tube (CRT)), an alphanumeric input device 712 (e.g., a keyboard), a cursor control device 714 (e.g., a mouse), and a signal generation device 720 (e.g., a speaker). In at least one implementation, the display device 710, the alphanumeric input device 712, and the cursor control device 714 may be combined into a single component or device (e.g., an LCD touchscreen).
[0095] Data storage device 716 may include computer-readable storage medium 724 on which one or more instruction sets 726 embodying any or more of the methods or functions described herein are stored. During execution by computing device 700, the instructions 726 may also reside wholly or at least partially in main memory 704 and / or processing device 702, which also constitute computer-readable media. The instructions may be further transmitted or received on network 718 via network interface device 722.
[0096] Although computer-readable storage medium 724 is shown as a single medium in the example implementation, the term "computer-readable storage medium" can include a single medium or multiple media (e.g., a centralized or distributed database and associated caches and servers) storing one or more sets of instructions. The term "computer-readable storage medium" can also include any medium capable of storing, encoding, or carrying a set of instructions executable by a machine and enabling the machine to perform any or more methods of this disclosure. Therefore, the term "computer-readable storage medium" should be considered to include, but is not limited to, solid-state memory, optical media, and magnetic media.
[0097] The terms used in this disclosure, especially those in the appended claims (e.g., the body of the appended claims), are generally intended to be “open terms” (e.g., the term “comprising” should be interpreted as “including but not limited to”).
[0098] Furthermore, if there is an intent to introduce a specific number of claim references, this intent will be explicitly stated in the claims; without such references, this intent does not exist. For example, for ease of understanding, the appended claims may contain the use of the introductory phrases “at least one” and “one or more” to introduce claim references. However, the use of these phrases should not be construed as implying that introducing a claim reference by the indefinite article “a” or “an” would limit any particular claim containing such an introduction to only one implementation of such a reference, even if the same claim includes the introductory phrases “one or more” or “at least one” and indefinite articles (e.g., “a” and / or “an”) (e.g., “a” and / or “an” should be interpreted as “at least one” or “one or more”); the same applies to the use of definite articles for introducing claim references.
[0099] Furthermore, even when a specific number of claims are explicitly cited, those skilled in the art will recognize that such citations should be interpreted as indicating at least the number cited (e.g., citing "two citations" without any other modifiers implies at least two citations, or two or more citations). Additionally, in the use of conventions such as "at least one of A, B, and C, etc." or "one or more of A, B, and C, etc.", such constructions are generally intended to include A alone, B alone, C alone, A and B together, A and C together, B and C together, or A, B, and C together, etc.
[0100] Furthermore, any separating word or phrase preceding two or more alternative terms in the specification, claims, or drawings should be understood to cover the possibility of including one of the terms, any one of the two terms, or both terms. For example, the phrase "A or B" should be understood to include "A" or "B" or "A and B".
[0101] All examples and conditional language cited in this disclosure are intended for pedagogical purposes to help readers understand this disclosure and the concepts contributed by the inventors to advance the field, and should not be construed as limiting oneself to these specific examples and conditions. Although implementations of this disclosure have been described in detail, various changes, substitutions, and modifications can be made thereto without departing from the spirit and scope of this disclosure.
Claims
1. A method comprising: Obtain the address associated with the data conversion command, the address being set within a container located in the first memory; Obtain the metadata associated with the data conversion command located in the first memory pointed to by the address, wherein the first part of the metadata is public data and the second part of the metadata is sensitive data; The publicly disclosed data is stored in the first memory, and the sensitive data is stored in a second memory located inside the data conversion accelerator; and A data conversion pipeline is configured in the data conversion accelerator based on the public data in the first memory and the sensitive data in the second memory.
2. The method according to claim 1, wherein, The first memory is located in an external device relative to the data conversion accelerator.
3. The method according to claim 1, wherein, The first memory is a first partition of the device memory, and the second memory is a second partition of the device memory, and the first memory and the second memory are adjacent within the device memory.
4. The method according to claim 1, wherein, In response to the second portion of the metadata satisfying a threshold size relative to the second memory, an error is generated and the second portion of the metadata is not stored in the second memory.
5. The method according to claim 1, further comprising: In response to receiving software instructions from an external device, the following steps are performed: Obtain the input data associated with the first descriptor included in the data conversion command; Based on the first part and the second part of the metadata, one or more operations are performed on the input data using the data transformation pipeline in the data transformation accelerator; as well as The results generated by the one or more operations are output to the output buffer.
6. The method according to claim 5, wherein, The external device cannot access the sensitive data in the second memory.
7. The method according to claim 5, wherein, The one or more operations generate intermediate data, and the intermediate data is stored in the second memory.
8. The method according to claim 7, wherein, The intermediate data is sensitive data.
9. The method according to claim 5, further comprising: In response to the software instruction pointing to a buffer located in the second memory, an error is generated and the error is transmitted to the external device.
10. A data transformation accelerator, comprising: A memory with a first partition and a second partition; as well as One or more data transformation engines are configured as follows: Obtain the address set in a container in a second memory, the address being associated with a data conversion command; Obtain the data and related metadata associated with the data transformation command, the metadata including sensitive data and public data; Instruct that the sensitive data be stored in the first partition; Instruct that the public data be stored in the second partition; The one or more data transformation engines are arranged into a data transformation pipeline based on the public data and the sensitive data; as well as Instructs the use of the data conversion pipeline to convert the data into converted data.
11. The data conversion accelerator according to claim 10, wherein, The second memory is located outside the data conversion accelerator.
12. The data conversion accelerator according to claim 10, wherein, The first partition and the second partition are adjacent within the memory.
13. The data conversion accelerator according to claim 10, wherein, The data transformation command includes one or more source descriptors that indicate memory locations associated with the sensitive data and the public data.
14. The data conversion accelerator according to claim 10, wherein, The data conversion command includes one or more target descriptors for storing the converted data.
15. The data conversion accelerator according to claim 10, wherein, In response to receiving a request from an external device to retrieve the sensitive data from the first partition, the processor is further configured to: Restrict the external device from accessing the sensitive data; Error generated; as well as The error is transmitted to the external device.
16. The data conversion accelerator according to claim 10, wherein, In response to acquiring the sensitive data associated with the data transformation operation, the processor is also configured to compare the size of the sensitive data with the size of the first partition.
17. The data conversion accelerator of claim 16, wherein, In response to the sensitive data being larger than the size of the first partition, the processor is further configured to: Abort the data conversion operation; and Errors are transmitted to an external device associated with the data conversion operation.
18. The data conversion accelerator according to claim 10, wherein, In response to generating intermediate data associated with the data transformation operation, the processor is also configured to compare the size of the intermediate data with the size of the first partition.
19. The data conversion accelerator according to claim 18, wherein, In response to the intermediate data being larger than the size of the first partition, the processor is further configured to: Abort the data conversion operation; and Errors are transmitted to an external device associated with the data conversion operation.
20. The data conversion accelerator according to claim 18, wherein, The intermediate data is sensitive data.