Memory Block-Address-List-Entry Translation Architecture
The SBALE conversion architecture enables I/O subsystems to independently perform data conversions, reducing complexity and enhancing performance by specifying conversions within the I/O subsystem, thus improving data transfer efficiency.
Patent Information
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- INTERNATIONAL BUSINESS MACHINE CORPORATION
- Filing Date
- 2022-08-25
- Publication Date
- 2026-04-10
AI Technical Summary
Existing I/O processing methods require external systems to determine and execute data conversions, leading to increased complexity and overhead, and lack the ability to perform conversions independently within the I/O subsystem.
A memory block address list entry (SBALE) conversion architecture that allows microcontrollers within the I/O subsystem to determine and execute data conversions directly, using transformation and placement operators specified in the SBAL control block, eliminating the need for external systems to manage conversions.
This approach simplifies conversion decisions, reduces hardware requirements, and enhances I/O processing performance by allowing simultaneous conversions to different destinations, improving data transfer speed and efficiency.
Smart Images

Figure 0007843838000001 
Figure 0007843838000002 
Figure 0007843838000003
Abstract
Description
Technical Field
[0001] The present invention generally relates to facilitating input / output (I / O) processing within a computing environment, and more particularly to providing a storage block address list entry (SBALE) conversion architecture.
Background Art
[0002] I / O processing includes the transfer of data between the main memory of a computing system and one or more external devices coupled to the computing system. To facilitate the transfer of data, one or more I / O operations are employed. By using I / O operations, data is obtained from one or more external storage devices, one or more operations are performed on the data, and the results are stored in one or more storage devices. One of the operations that can be performed on the data is conversion.
Summary of the Invention
[0003] Aspects of the present invention are directed to a storage block address list entry (SBALE) conversion architecture. A non-limiting and exemplary computer-implemented method includes obtaining data to be converted. Based on the SBALE in a storage block address list (SBAL), a selected conversion to be applied to the data is determined. The SBALE includes at least one field used to determine the selected conversion to be applied. The selected conversion is applied to the data to generate converted data, and the converted data is placed at a location specified by the SBAL.
[0004] Other aspects of the present invention implement the features of the above-described method in a computer system and a computer program product.
[0005] Additional technical features and benefits are realized by the technology of the present invention. Embodiments and aspects of the present invention are described in detail herein, but these are considered to be part of the subject matter of the claims. For a deeper understanding, refer to the description and drawings for further details.
[0006] The details of the exclusive rights described herein are expressed and asserted in the last claim herein. The above and other features and advantages of embodiments of the present invention will become apparent from the following detailed description in conjunction with the accompanying drawings. [Brief explanation of the drawing]
[0007] [Figure 1] This is a block diagram of a computing environment for providing a memory block address list entry (SBALE) translation architecture according to one or more embodiments of the present invention. [Figure 2] This is a block diagram of a memory block address list (SBAL) according to one or more embodiments of the present invention. [Figure 3] This is a block diagram of a command SBAL according to one or more embodiments of the present invention. [Figure 4] This is a block diagram of a queue-transfer-control (QTCB) SBALE and a data SBALE according to one or more embodiments of the present invention. [Figure 5] This is a block diagram of the operator SBALE according to one or more embodiments of the present invention. [Figure 6] This is a block diagram of the immediate placement operator SBALE according to one or more embodiments of the present invention. [Figure 7] This is a block diagram of the controlblock-based placement operator SBALE according to one or more embodiments of the present invention. [Figure 8]This is a block diagram of the control block-based transform operator SBALE according to one or more embodiments of the present invention. [Figure 9] This is a flowchart of a method for applying a transformation using the SBALE transformation architecture according to one or more embodiments of the present invention. [Figure 10] This is a block diagram of a plurality of conversion pipelines according to one or more embodiments of the present invention. [Figure 11] This figure shows a cloud computing environment according to one or more embodiments of the present invention. [Figure 12] This figure shows an abstraction model layer according to one or more embodiments of the present invention. [Figure 13] This figure shows a system for performing port mirroring according to one or more embodiments of the present invention. [Modes for carrying out the invention]
[0008] The figures described herein are illustrative. Many variations may exist in the drawings or the actions described therein without departing from the scope of the invention. For example, actions may be performed in a different order, and actions may be added, deleted, or modified. Furthermore, the term “coupled” and its variations indicate the presence of a transmission path between two elements, and do not imply a direct connection between elements without the intervention of an element / connection. All these variations are considered part of this specification.
[0009] One or more embodiments of the present invention facilitate queue direct input / output (QDIO) processing by providing a memory block address list entry (SBALE) translation architecture. According to one or more embodiments of the present invention, input / output (I / O) processing is facilitated by performing translations on data moving between a computing system and an external storage device in accordance with the data movement. That is, the decision to perform the translation and the execution of the translation occur in the direct path between the computing system and the external storage device. As an example, one or more microcontrollers (or processing logic or both) of the computing system or I / O system or both determine whether to perform the translation and then perform the translation independently of additional machines such as a host controller or other components outside the computing system and I / O system.
[0010] In one or more embodiments of the present invention, SBALE is used to specify one or more operators to be applied to inbound or outbound data. Operator types include transformation operators and placement operators. Transformation operators include, but are not limited to, filters and statistical and mathematical operations. Transformations may also have associated state machines that can change over time based on a series of events. State machines may be specified in a domain-specific language (DSL). Placement operators can specify, for example, the destination (virtual or physical) of the data, whether it is persistent or not, the transformations to be applied to the data heading towards the specified destination, and the order in which the transformations should be applied. According to one or more embodiments of the present invention, there may be multiple placement operators associated with a transaction, using different transformations, or multiple placements per storage block address list (SBAL). Each placement operator may refer to a set of transformation operator identifiers applied in a specified order.
[0011] QDIO is a data transfer architecture that can be used to improve the data transfer speed and efficiency of Transmission Control Protocol / Internet Protocol (TCP / IP) traffic compared to other data transfer architectures. QDIO provides a means for a program, such as an operating system (OS), to communicate directly and asynchronously with one or more I / O devices or a network of devices by using data queues built and managed in the main memory of the implementing computer system. Here, each QDIO queue contains one or more SBALs, and each SBAL contains multiple SBALEs. The SBAL count (for example, contained in one of the SBALEs) may indicate the number of SBALs that constitute an I / O request to an I / O device. The queues enable predictable and efficient communication that does not require the service of centralized control mechanisms such as an OS I / O supervisor and the resulting overhead implied by such mechanisms.
[0012] Current methods for performing data conversion in a QDIO environment include a system that requests data from an external storage device and retrieves data from the external storage device via an I / O subsystem coupled to this system and the external storage device. The data retrieved from the external storage device is provided to another machine outside the system and the I / O subsystem, which determines and executes any conversions (if any) applied to this data. The conversion results may then be retrieved by the system and stored in the external storage device.
[0013] This is in contrast to one or more embodiments of the present invention in which the conversion is determined and applied by the I / O subsystem based on the contents of the SBAL control block. By using an I / O control block (e.g., an SBAL control block), the determination of whether to perform the conversion and the determination of the performance of the conversion (if any) are performed independently of additional machines or computing systems such as a host controller and other components outside the I / O subsystem. This can improve I / O processing performance and potentially improve system performance.
[0014] Furthermore, by using an SBAL control block (e.g., SBALE in SBAL) to determine the type of transformation applied to the data, the decision of which transformations to perform is simplified, thereby improving system performance, reducing complexity, and decreasing the amount of hardware used (e.g., eliminating the need for a separate machine to perform checks). Also, according to one or more embodiments of the present invention, different transformations can be specified to be applied simultaneously to the same data stream, directing the results to different destinations. Moreover, the method for associating transformations with target data is defined in the SBAL control block.
[0015] Referring here to Figure 1, this diagram outlines a block diagram of a computing environment 100 for providing an SBALE conversion architecture according to one or more embodiments of the present invention. As an example, the computing environment in Figure 1 is based on the z / Architecture(R) hardware architecture provided by International Business Machines Corporation. However, the z / Architecture hardware architecture is merely one example of an architecture. Embodiments of the present invention may be based on other architectures, including but not limited to the Intel(R) x86 architecture, other architectures from International Business Machines Corporation, or architectures from other companies, or combinations thereof.
[0016] Referring to FIG. 1, in one example, a computing environment 100 includes a computing system 102 coupled to an input / output subsystem 104. As an example, the computing system 102 includes one or more processors 106 coupled to a memory 108 (also referred to as main memory, system memory, storage, primary storage, central storage, etc.). According to one or more embodiments of the present invention, the memory 108 includes a QDIO queue for storing SBAL. All or part of the computing system 102 shown in FIG. 1 can be implemented in one or more computing nodes 10 of FIG. 11 or the computer system 1300 of FIG. 13, or both.
[0017] The processor 106 is coupled to the I / O subsystem 104 via one or more connections or buses 112, such as one or more Peripheral Component Interconnect Express (PCIe) connections. Also, other connections or buses may be used. All or part of the connections or buses shown in FIG. 1 can be implemented by at least part of the cloud environment 50 of FIG. 11 or the network 1312 of FIG. 13, or both. [[ID==5]]
[0018] The I / O subsystem 104 includes one or more I / O drawers 120, and the I / O drawer 120 includes, for example, one or more switches 122 and one or more network adapters 124. All or part of the I / O subsystem 104 shown in FIG. 1 can be implemented in one or more computing nodes 10 of FIG. 11 or the computer system 1300 of FIG. 13, or both. In one example, the switch 122 is coupled to the processor 106 and the network adapter 124. The network adapter 124 is, for example, a converged network adapter (CNA) (e.g., a single network interface card (NIC) including both a Fibre Channel (FC) host bus adapter (HBA) and a TCP / IP Ethernet (R) NIC). This is an example of connecting a server to a FC-based storage area network (SAN) and an Ethernet-based local area network (LAN).
[0019] The I / O subsystem 104 is coupled to one or more external storage devices 126 and is used to couple the processor 106 to the external storage device 126. Between the processor 106 and the external storage device 126, for example, through I / O operations, the data 128 stored in the external storage device 126 is transmitted. As an example, an operating system (OS) (e.g., the processor 106) executed within the processor, such as the z / OS (R) operating system or the Linux (R) OS provided by International Business Machines Corporation, utilizes one or more I / O operations to retrieve data (e.g., the data 128) from an external storage device (e.g., the external storage device 126) along a path such as the path 130. Other operating systems may also be used.
[0020] In one example, one or more processors 106 comprises one or more microcontrollers 110 used according to one or more embodiments of the present invention. For example, as described herein, one or more of the microcontrollers 110 (or the processing logic of the computing system or both) are used to determine whether a conversion should be applied to the data of an I / O operation and to perform the conversion if it should be applied. According to one or more embodiments of the present invention, this conversion is performed by a separate microcontroller or by the conversion engine 132 of Figure 1, which is included in a microcontroller (for example, microcontroller 110).
[0021] One or more microcontrollers (or processing logic of a computing system, or both) are used in place of a host controller or other controller coupled to the I / O subsystem via one or more connections (e.g., PCIe connections) coupled to a switch (e.g., switch 122), for example. Therefore, the decision and execution of the translation occur in conjunction with the I / O operation. That is, the decision and execution of the translation occur within path 130, independently of the host controller or other such controller coupled to the I / O subsystem outside of path 130.
[0022] In another embodiment, one or more microcontrollers may be located in the I / O subsystem 104 and used, according to one aspect of the present invention, to determine whether a conversion should be applied, to perform such conversions based on a decision to apply a conversion, or both. Other embodiments are also possible.
[0023] With respect to the computing environment 100 of Figure 1, the embodiments described herein may be implemented with any suitable logic, which in various embodiments may include any suitable hardware (e.g., in particular a processor, embedded controller, or application-specific integrated circuit), software (e.g., in particular an application), firmware, or any suitable combination of hardware, software, and firmware.
[0024] Referring here to Figure 2, this outlines two examples (SBAL202 and SBAL204) of an SBAL according to one or more embodiments of the present invention. SBAL202 and SBAL204 can be stored, for example, in a queue in memory 108 in Figure 1. SBAL202 includes multiple entries (a command SBAL206, a QTCB SBALE208, and one or more data SBALE210). According to one or more embodiments of the present invention, the command SBAL206 is configured as shown in command SBAL300 in Figure 3, and the QTCB SBALE208 is configured as shown in QTCB SBALE402 in Figure 4 below. One or more data SBALE210 are located at the end of SBAL202, and according to one or more embodiments of the present invention, the data SBALE210 are configured as shown in data SBALE404 in Figure 4 below. According to one or more embodiments of the present invention, if the SBAL does not include any data conversion instructions or data placement instructions, an SBAL such as the one shown in SBAL202 can be used.
[0025] When data conversion is performed by the I / O subsystem, one or more embodiments of the present invention utilize SBAL204, as shown in SBAL204 in Figure 2, which is similar to SBAL202 but includes an additional operator SBALE212 that specifies data conversion and placement for placing the converted data. SBAL204 includes a command SBAL206, a QTCB SBALE208, one or more operators SBALE212, and one or more data SBALE210. Exemplary embodiments of the operator SBALE212 are shown in Figures 5 to 8 below. Embodiments of the present invention are not limited to the three conversion SBALEs and three placement SBALE212 shown in SBAL204 in Figure 2; it is also possible to omit any operators SBALE212, include only one operator SBALE212, or include more operators SBALE212.
[0026] According to one or more embodiments of the present invention, SBAL204 may or may not include any data SBALE210, and may or may not include QTCB SBALE208. For example, SBAL204 may include only a command SBAL206 followed by an additional operator SBALE212 that specifies the transformation and placement. This configuration may be used for the transmission or cancellation of persistent operators.
[0027] Referring now to Figure 3, which schematically shows a block diagram of a command SBAL300 according to one or more embodiments of the present invention. A command SBAL300 includes four words (word 0, word 1, word 2, word 3), each having four bytes (byte 0, byte 1, byte 2, byte 3). The fields of a command SBAL300 include a flag (set to zero to indicate that this block contains a command SBAL), a successor SBAL count, SBALF0, a first data partition SBALE count, a request ID, and two reserved fields. The successor SBAL count indicates the number of SBALs following a command SBAL, the first data partition SBALE count indicates the number of SBALEs in the write portion of a read / write request or the number of protected SBALEs in an I / O request, and the request ID is a unique identifier for all unresolved requests on the queue.
[0028] Referring to the SBALF0 field of command SBAL300 in Figure 3, bit 0 is reserved, bit 1 can indicate a program request progress report interrupt for reading command SBALE, bits 2 and 3 can indicate the type of operation (storage block) used only by command SBALE (status read, write, read, read write), bits 5 and 6 can indicate the type of SBAL sequence (last SBAL in a chain, no SBAL (no chain) (successor SBAL count = zero), middle SBAL in a chain, first SBAL in a chain (successor SBAL count greater than zero)), and bit 7 is reserved.
[0029] Referring now to Figure 4, this diagram outlines block diagrams of QTCB SBALE402 and data SBALE404 according to one or more embodiments of the present invention. QTCB SBALE402 and data SBALE404 are examples of SBALEs usable for outbound data, and they each contain four words (word 0, word 1, word 2, word 3), each having four bytes (byte 0, byte 1, byte 2, byte 3). The fields of QTCB SBALE402 shown in Figure 4 include a flag, a storage key, the size of the QTCB, the address of the QTCB in host memory, and two reserved fields. The fields of data SBALE404 shown in Figure 4 include a flag, the size of the storage block, the address of the storage block in host memory, and two reserved fields.
[0030] Referring to the flag fields of QTCB SBALE402 and data SBALE404, bit 0 can indicate whether it is an operator SBALE, bit 1 can indicate whether it is the last SBALE (entry), bit 2 can indicate whether the address points to contiguous storage in a 4K block (not used by the channel), and bits 3-7 are reserved. For both QTCB SBALE402 and data SBALE404 shown in Figure 4, bit 0 is not set because they are not operator SBALEs. According to one or more embodiments of the present invention, bit 7 of the flag field can be set to indicate that the conversion should be applied only to marked SBALEs. If bit 7 is not set, all data in the SBAL will be converted / placed.
[0031] Referring now to Figure 5, this schematically shows a block diagram of the operator SBALE500 for performing data transformation and placement according to one or more embodiments of the present invention. The operator SBALE500 shown in Figure 5 includes four words (word 1, word 2, word 3, word 4), each having four bytes (byte 0, byte 1, byte 2, byte 3). The fields of the operator SBALE500 in Figure 5 include a flag (bit 0 is set to indicate that it is the operator SBALE), an operator type flag, a transformation or placement identifier, an operator-specific flag, a type or transformation ID, a subtype or transformation ID, operator-specific (if necessary), and a control block pointer or operator-specific data. As shown in Figure 5, the operator type flag field indicates whether the operation is a transformation, placement, or immediate placement at the address location specified for the operator SBALE. The operator-specific flag field includes bits that apply to placement operations (including bits indicating whether the data is outbound or inbound data (used only when the placement operator is persistently applied, and not for conversion or one-time placement operators), whether the placement is a physical location (e.g., a port on a network adapter) or a virtual location (e.g., a memory address), and whether the placement location is used once, persistently, or once) and bits related to conversion operators (including bits indicating whether the conversion applies only to marked SBALEs (e.g., whether only a subset of data containing those with flag bits set is converted)).
[0032] As described above, data received from an I / O device may require transformation before it can be used by a program that requests it. Types of transformations that may be identified in the transformation or placement ID field of the operator SBALE, such as operator SBALE500, include, but are not limited to, artificial intelligence transformation, data hashing, data compression, packet filtering, data format transformation, transformation based on statistical analysis, telemetry transformation, and data replication. In statistical analysis, data transformations include, for example, each data point z iThe converted value is y i It is possible to apply a deterministic mathematical function to each data point in a dataset, such that it can be replaced by =f (where f is a mathematical function). In telemetry transformations, for example, sensory data may be acquired by the system, and the transformation may facilitate the use of this sensory data. In another example, multicast transformations may include data replication in which data is mirrored to a second port connected to an analyzer. The second port may not be encrypted so that the data can be viewed and debugged in flight. Here, the traffic is sent to an encrypted card. Embodiments of the present invention are not limited to the above examples of transformations, as they can be used to perform any transformation or set of transformations that receive input data and produce output data that is different from the input data (for example, fewer or more data records, different format, or different data, or a combination thereof).
[0033] According to one or more embodiments of the present invention, an example of a value in the type or transformation ID field includes packet capture, statistical calculation, telemetry, or port mirroring; an example of a value in the subtype or transformation ID field is an identifier for a specific type of packet capture, a certain statistical mean to be calculated, a mathematical transformation applied to telemetry data, or a certain type of port mirroring; and an example of a value in the operator-specific (if necessary) field is a value specific to the transformation specified by the type and subtype.
[0034] Referring here to Figure 6, this roughly illustrates a block diagram of the immediate placement operator SBALE600 for performing data transformation and placement according to one or more embodiments of the present invention. The immediate placement operator SBALE600 contains all the information necessary for placement to be performed in the SBAL itself, in contrast to cases where an external buffer is also required for the transmission of additional information. This suggests that the I / O engine, by having SBALE600, will have everything necessary for placement to be performed. Therefore, it is more compact than conventional methods and can be used when high efficiency is required, such as for non-persistent placement in individual operations.
[0035] The fields of the immediately placed location (IPL) operator SBALE600 shown in Figure 6 include a flag field (with bit 0 set to indicate the operator is SBALE), an operator type flag set to indicate immediate placement of data (at the addresses of words 2 and 3 of SBALE600), and a placement ID that identifies the placement operator and can be used to cancel (or remove) persistent placement operators (operators applied to multiple operations). Cancellation of persistent placement can be communicated by a translation ID reserved in byte 0 of word 1, or by using a special translation operator. The operator-specific flag indicates that the translation and placement operations occur only once and the result should be stored in a virtual location, the three translation IDs identify the translation applied to the data, the sentinel field indicates that no further translation IDs exist, and the destination memory address is where the translated data should be placed. In the example shown in Figure 6, three translations are applied to the data in the order shown in word 1, and the resulting data is stored starting from the addresses of words 2 and 3.
[0036] Referring here to Figure 7, this schematically shows a block diagram of a control block-based placement operator SBALE700 according to one or more embodiments of the present invention. Non-immediate cases of placement operators, such as the control block-based placement operator SBALE700, can enable more complex placement operations than those typically used in persistent cases. In this specification, the term “persistent case” refers to a placement that applies to all data in an SBAL. Although fetching control blocks incurs additional overhead, this is not a problem in persistent versions (or persistent cases) because it is performed only once for the SBAL. According to one or more embodiments of the present invention, a persistent case means that it applies not only to this SBAL but also to this operation and all subsequent operations. It should be noted that a single operation can be described by a chain of SBALs. There may be more SBALs, while the first SBAL of an operation is referred to as the command SBAL. Thus, a persistent placement operator may cover multiple independent SBALs or SBAL chains, establishing a set of transformations and placements for all subsequent operations until it is canceled.
[0037] An example of a more complex placement operation that can be performed using the control block-based placement operator SBALE700 shown in Figure 7 is the specification of the destination address of an external network device to which data or a portion of it should be transferred, but this is not limited to this. Another complex placement operator may specify the characteristics of a wrapping buffer, which may include any additional metadata about the buffer, such as the location and size in memory where the data should be placed.
[0038] The fields of the control block-based placement operator SBALE700 shown in Figure 7 include a flag field (with bit 0 set to indicate that the operator is SBALE), an operator type flag set to indicate non-immediate placement, a placement ID, an operator-specific flag indicating that data is persistently sent to a virtual location (i.e., a persistent case), and a placement control block address. According to one or more embodiments of the present invention, if the operator-specific flag indicates that data is placed or stored in a virtual location, the placement control block includes, but is not limited to, information such as a wrapping buffer flag, wrapping buffer size, wrapping buffer location, or current index to the wrapping buffer, or a combination thereof. If the operator-specific flag indicates that the placement is in a physical location, the placement control block includes information necessary for the placement of a network adapter (e.g., a host bus adapter).
[0039] Referring here to Figure 8, this schematically shows a block diagram of a control block-based translation operator SBALE800 according to one or more embodiments of the present invention. The control block-based translation operator SBALE800 can be used to perform translation operations, such as providing specific types of packet filters for operation capture, but is not limited to this. Specific filters are encoded in the control block to capture only certain parts or types of operations. The use of control block translation also allows specifying mathematical operations to be performed on data sets being read in I / O operations. These operations are applicable to telemetry data, and as a result, the translated data set may be placed by the relevant placement operator. The resulting data may be one or more values aggregated based on the application operator. Alternatively, a write data stream may be sent to the destination device without modification, and the mathematically reduced result may be stored in memory or one or more external devices via the placement operator. Similarly, a read data stream may be read into memory without modification, and the corresponding mathematically reduced data stream may be placed in memory or sent to an external device by the relevant placement operator.
[0040] The fields of the control block-based translation operator SBALE800 shown in Figure 8 include a flag field (with bit 0 set to indicate that the operator is SBALE), an operator type flag set to indicate a non-immediate translation, a translation ID which is the ID referenced by the placement operator of the placement operator SBALE, an operator-specific flag indicating that data is being transmitted, a type field set to "p" (which may be a numerical value indicating the translation type), a subtype field set to "q" (which may be a numerical value indicating the translation subtype), and a translation control block address where data or translation metadata describing the translation is located. The translation control block address may refer to a buffer, data file, state machine, etc. According to one or more embodiments of the present invention, p may represent an arithmetic capture translation, and q may represent an arithmetic capture subtype which includes packet capture by a trigger state machine. According to one or more embodiments of the present invention, the translation control block address may refer to state machine information that specifies the event that initiates capture, the event that terminates capture, and filters that determine what to capture when capture is in progress. According to one or more embodiments of the present invention, the translation metadata may include cryptographic keys used to encrypt or decrypt data.
[0041] In this specification, specific fields, field locations, field sizes, bits, and field or bit values have been illustrated and described for one or more embodiments of SBAL and SBALE in Figures 2 to 8. However, other fields, field locations, field sizes, bits, or field or bit values, or combinations thereof, may be used without departing from the scope of one or more embodiments of the present invention. Each field or subfield, or both, of fields not described herein may, in one embodiment, be blank, have a predetermined value (e.g., zero), contain a value to be ignored, or a combination thereof. Furthermore, SBAL and SBALE used in exemplary embodiments of the present invention may include additional fields or their subfields, fewer fields or their subfields, or other fields or their subfields, or combinations thereof, used in input / output processing. Many possibilities exist.
[0042] Referring now to Figure 9, this diagram outlines a flowchart of a method 900 for applying a transformation using the SBALE transformation architecture according to one or more embodiments of the present invention. For example, one or more microcontrollers 110 or transformation engines 132 or both in Figure 1 may perform all or part of the processing shown in Figure 9. The method 900 shown in Figure 9 is an example of using SBALE to determine whether a transformation should be applied to data moving between a computing system, such as the computing system 102 in Figure 1, and an external storage device, such as the storage device 126 in Figure 1, in conjunction with this data movement. In one or more embodiments of the present invention, in block 902 in Figure 9, the microcontroller acquires (e.g., receives, provides, or reads) a data packet during I / O input / output operation, and in block 904, it performs processing associated with the data packet. For example, in block 906, the microcontroller determines whether a transformation should be performed on the data in the data packet. As an example, the microcontroller checks the contents of the SBAL associated with the data packet (e.g., SBAL202 or SBAL204 in Figure 2) to determine whether a transformation should be applied to the data. For example, a microcontroller can check for SBALEs within an SBAL to determine if any of them are operator SBALEs, and if operator SBALEs are identified, it can determine that a transformation should be applied to the data. In one or more of the embodiments of SBALE described above, the use of bit 0 in the flag field of the SBALE indicates whether the SBALE is an operator SBALE.
[0043] In block 906, if it determines that a transformation should be applied, the microcontroller (for example, the transformation engine 132 in Figure 1) performs the transformation on the data. For example, if an artificial intelligence transformation is selected, and in particular a specific artificial intelligence function such as a filtering function is selected, the microcontroller performs this specific function on the data. Depending on the type of transformation, other transformations may be performed in a similar manner. However, if a transformation should not be applied, no transformation is performed.
[0044] According to one or more embodiments of the present invention, checking whether a transformation should be performed in block 906 and determining which transformation to perform (if any) in block 908 are performed by one or more microcontrollers. For example, the same microcontroller may perform both the check and the decision, or different microcontrollers may perform the check and the decision. In another example, the check may be performed by logic such as a microcontroller or computing system, and based on this check, a selected microcontroller or transformation engine performs the transformation. Various embodiments are possible.
[0045] The process shown in Figure 9 is not intended to suggest that operations should be performed in any particular order, or that all operations shown in Figure 2 should be included in all cases. Furthermore, the process shown in Figure 2 may include any number of additional operations as preferred.
[0046] Referring now to Figure 10, which schematically shows a block diagram 1000 of a plurality of transformation pipelines according to one or more embodiments of the present invention. As shown in Figure 10, an outbound data stream 1002 is specified in the SBALE of the SBAL. Each block 1004a, 1004b, 1004c (collectively referred to herein as block 1004), 1006a, 1006b, 1006c (collectively referred to herein as 1006) performs a transformation or placement of data. As shown in Figure 10, a chain of transformation operators (e.g., block 1004) has a placement operator (e.g., block 1006) at the end. According to one or more embodiments of the present invention, a single transaction (described by a single SBAL) includes one or more transformation / placement pipelines. The example shown in Figure 10 includes three transformation / placement pipelines programmable to a single SBAL on a single transaction. Each pipeline is located in a different location (Memory Area 1 1008a, Host Bus Adapter (HBA) 1008b, and Memory Area 2 1008c).
[0047] Providing and using different pipelines allows for different representations of the same transaction.
[0048] This disclosure includes a detailed description of cloud computing, but it should be understood that the implementation of the teachings enumerated herein is not limited to cloud computing environments. Rather, embodiments of the present invention can be implemented in conjunction with any other type of computing environment, whether currently known or hereafter developed.
[0049] Cloud computing is a service delivery model that enables convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, network bandwidth, servers, processing, memory, storage, applications, virtual machines, and services) that can be quickly set up and exposed with minimal administrative effort or interaction with service providers. This cloud model may include at least five characteristics, at least three service models, and at least four deployment models.
[0050] The characteristics are as follows:
[0051] On-demand self-service: Cloud users can unilaterally configure server time and computing functions such as network storage automatically as needed, without the need for human interaction with the service provider.
[0052] Extensive network access: Functionality is available over the network and accessed through standard mechanisms that facilitate use by heterogeneous thin-client or thick-client platforms (e.g., mobile phones, laptops, and PDAs).
[0053] Resource pooling: Using a multi-tenant model, a provider's computing resources are pooled for multiple users. Various physical and virtual resources are dynamically allocated and reallocated as needed. While users generally cannot control or know the exact location of the resources provided, a degree of location independence exists, as the location can be identified at a higher level of abstraction (e.g., country, state, or data center).
[0054] Rapid Flexibility: Features can be configured quickly and flexibly for rapid scale-out and rapidly exposed for rapid scale-in, sometimes automatically. For users, the features available for configuration are often seemingly unlimited and can be purchased at any time and in any quantity.
[0055] Service Measurement: Cloud systems automatically control and optimize resource usage by utilizing measurement capabilities at some level of abstraction appropriate to the type of service (e.g., storage, processing, bandwidth, and active user accounts). Resource usage can be monitored, controlled, and reported, providing transparency to both service providers and users.
[0056] The service model is as follows:
[0057] Software as a Service (SaaS): The functionality provided to the user is the use of the provider's applications running on a cloud infrastructure. These applications are accessible from various client devices through thin-client interfaces such as web browsers (e.g., web-based email). The user does not manage or control the underlying cloud infrastructure, including the network, servers, operating system, storage, or individual application functions, except for the configuration of user-specific, limited application configurations.
[0058] Platform as a Service (PaaS): The function provided to the user is to deploy user-created or acquired applications, created using programming languages and tools supported by the provider, onto the cloud infrastructure. The user does not manage or control the underlying cloud infrastructure, including the network, servers, operating system, or storage. However, they do control the deployed applications and, in some cases, the configuration of the application hosting environment.
[0059] Infrastructure as a Service (IaaS): The functionality provided to the user is the configuration of processing, storage, networking, and other basic computing resources, but the user can deploy and run any software, which may include operating systems and applications. The user does not manage or control the underlying cloud infrastructure. However, they do control the operating system, storage, and deployed applications, and in some cases, have limited control over selected network components (e.g., the host's firewall).
[0060] The layout model is as follows:
[0061] Private Cloud: This cloud infrastructure is operated independently for a specific organization. It may be managed by that organization or a third party, and may reside on-premises or off-premises.
[0062] Community Cloud: This cloud infrastructure is shared by multiple organizations and supports specific communities that share common concerns (e.g., mission, security requirements, policies, and compliance matters). It can be managed by this organization or a third party and can reside on-premises or off-premises.
[0063] Public Cloud: This cloud infrastructure is available to the general public or large industry groups and is owned by organizations that sell cloud services.
[0064] Hybrid Cloud: This cloud infrastructure is a combination of two or more clouds (private, community, or public) that maintain their own distinct entities while being coupled together by standard or proprietary technologies (e.g., cloud bursting for load balancing between clouds) to achieve data and application portability.
[0065] Cloud computing environments are service-oriented, focusing on statelessness, low coupling, modularity, and semantic interoperability. At the heart of cloud computing is infrastructure, including a network of interconnected nodes.
[0066] Referring now to Figure 11, which shows an exemplary cloud computing environment 50, the cloud computing environment 50 comprises one or more cloud computing nodes 10 that enable communication between local computing devices used by cloud users, such as personal digital assistive devices (PDAs) or mobile phones 54A, desktop computers 54B, laptop computers 54C, or automotive computer systems 54N, or a combination thereof. The nodes 10 may communicate with each other. They may be physically or virtually grouped in one or more networks, such as the private cloud, community cloud, public cloud, or hybrid cloud, or a combination thereof (not shown). This allows the cloud computing environment 50 to provide infrastructure as a service, platform as a service, or software as a service, or a combination thereof, without requiring cloud users to maintain resources on their local computing devices. The types of computing devices 54A to 54N shown in Figure 11 are for illustrative purposes only, and it should be understood that the computing node 10 and the cloud computing environment 50 can communicate with any type of computerized device over any type of network or network addressable connection, or both (for example, by using a web browser).
[0067] Referring now to Figure 12, this figure illustrates a set of functional abstraction layers provided by the cloud computing environment 50 (Figure 11). It should be understood that the components, layers, and functions shown in Figure 12 are illustrative only, and embodiments of the present invention are not limited thereto. As illustrated, the following layers and corresponding functions are provided:
[0068] The hardware and software layer 60 includes hardware components and software components. Examples of hardware components include a mainframe 61, RISC (Reduced Instruction Set Computer) architecture-based servers 62, 63, blade servers 64, storage devices 65, and network and networking components 66. In some embodiments, software components include network application server software 67 and database software 68.
[0069] The virtualization layer 70 provides an abstraction layer, which can provide examples of virtual entities such as virtual servers 71, virtual storage 72, virtual networks 73 (including virtual private networks), virtual applications and operating systems 74, and virtual clients 75.
[0070] For example, the management layer 80 may provide the functions described below. Resource configuration 81 provides dynamic procurement of resources, such as computing resources, used to execute tasks in the cloud computing environment. Measurement and pricing 82 provides cost tracking when resources are used in the cloud computing environment and billing or invoicing for the consumption of these resources. For example, these resources may include application software licenses. Security provides verification of the identity of cloud users and tasks, as well as protection of data and other resources. The user portal 83 provides users and system administrators with access to the cloud computing environment. Service level management 84 provides allocation and management of cloud computing resources to satisfy the required service levels. Service level agreement (SLA) planning and execution 85 provides pre-arrangement and procurement of cloud computing resources that are expected to meet future requirements in accordance with the SLA.
[0071] Workload Layer 90 provides examples of available capabilities in a cloud computing environment. Examples of workloads and capabilities available from this layer include mapping and navigation 91, software development and lifecycle management 92, virtual classroom education delivery 93, data analysis processing 94, transaction processing 95, and data encryption / decryption 96.
[0072] It is understood that one or more embodiments of the present invention can be implemented in conjunction with any type of computing environment currently known or to be developed in the future.
[0073] Referring here to Figure 13, which outlines a computer system 1300 according to one embodiment. All or part of the computer system 1300 shown in Figure 13 can be implemented by one or more cloud computing nodes 10 in Figure 11. As described herein, the computer system 1300 can be an electronic computer framework that includes or employs any number of computing devices and networks, or combinations thereof, utilizing various communication technologies. The computer system 1300 is easily scalable, expandable, and modular, and can be changed to different services or reconfigured to allow some functions to function independently of others. The computer system 1300 may be, for example, a server, desktop computer, laptop computer, tablet computer, or smartphone. In some examples, the computer system 1300 may be a cloud computing node. The computer system 1300 can be described in the general context that computer system executable instructions, such as program modules, are executed by the computer system. Generally, a program module may include routines, programs, objects, components, logic, data structures, etc., that perform a specific task or implement a specific abstract data type. The computer system 1300 may be implemented in a distributed cloud computing environment where tasks are performed by remote processing units linked via a communication network. In a distributed cloud computing environment, program modules may be located on both local and remote computer system storage media, including memory storage devices.
[0074] As shown in Figure 13, the computer system 1300 has one or more central processing units (CPUs) 1301a, 1301b, 1301c, etc. (collectively or generally referred to as processor 1301). The processor 1301 can be a single-core processor, a multi-core processor, a computing cluster, or any number of other configurations. The processor 1301 (also referred to as the processing circuit) is coupled to system memory 1303 and various other components via system bus 1302. System memory 1303 may include read-only memory (ROM) 1304 and random-access memory (RAM) 1305. ROM 1304 is coupled to system bus 1302 and may include a basic input / output system (BIOS) that controls certain basic functions of the computer system 1300. RAM is read-write memory coupled to system bus 1302 and used by processor 1301. System memory 1303 provides temporary memory space for the operation of the instructions during operation. System memory 1303 may include random access memory (RAM), read-only memory, flash memory, or any other suitable memory system.
[0075] The computer system 1300 includes an input / output (I / O) adapter 1306 and a communication adapter 1307 coupled to a system bus 1302. The I / O adapter 1306 may be a SATA (Serial Advanced Technology Attachment) adapter that communicates with a hard disk 1308 or any other similar component, or both. In this specification, the I / O adapter 1306 and the hard disk 1308 are collectively referred to as mass storage 1310.
[0076] Software 1311, which runs on the computer system 1300, may be stored in mass storage 1310. Mass storage 1310 is an example of a tangible storage medium readable by the processor 1301, and the software 1311 is stored as instructions executed by the processor 1301, causing the computer system 1300 to operate as described herein with respect to various drawings. Examples of computer program products and the execution of such instructions will be discussed in more detail herein. A communication adapter 1307 interconnects the system bus 1302 with a network 1312 (which may be an external network) so that the computer system 1300 can communicate with such other systems. In one embodiment, a portion of the system memory 1303 and mass storage 1310 collectively stores an operating system, which may be any suitable operating system (z / OS(R) or AIX(R) operating system) that links the functions of the various components shown in Figure 13.
[0077] Additional input / output devices are shown connected to the system bus 1302 via the display adapter 1315 and the interface adapter 1316. In one embodiment, adapters 1306, 1307, 1315, and 1316 may be connected to one or more I / O buses connected to the system bus 1302 via an intermediate bus bridge (not shown). The display adapter 1315 connects the display 1319 (e.g., a screen or display monitor) to the system bus 1302, which may include a graphics controller and video controller to improve the performance of graphics-intensive applications. A keyboard 1321, mouse 1322, speaker 1323, etc., may be interconnected to the system bus 1302 via the interface adapter 1316, which may include a super I / O chip that integrates multiple device adapters into a single integrated circuit. Suitable I / O buses for connecting peripherals such as hard disk controllers, network adapters, and graphics adapters typically include common protocols such as the Peripheral Component Interconnect (PCI). Thus, as shown in the configuration of Figure 13, the computer system 1300 includes processing capabilities in the form of a processor 1301, storage capabilities including system memory 1303 and mass storage 1310, input means such as a keyboard 1321 and a mouse 1322, and output capabilities including a speaker 1323 and a display 1319.
[0078] In some embodiments, the communication adapter 1307 can transmit data using any suitable interface or protocol, such as the Internet Small Computer System Interface, among others. The network 1312 may be a cellular network, a wireless network, a wide area network (WAN), a local area network (LAN), or the Internet, among others. The computer system 1300 may have external computing devices connected to it through the network 1312. In some examples, the external computing devices may be external web servers or cloud computing nodes.
[0079] It should be understood that the block diagram in Figure 13 is not intended to indicate that the computer system 1300 comprises all the components shown in Figure 13. Rather, the computer system 1300 may include fewer arbitrary components, and may also include additional components not shown in Figure 13 (e.g., additional memory components, embedded controllers, modules, additional network interfaces, etc.). Furthermore, the embodiments described herein with respect to the computer system 1300 may be implemented by any arbitrary logic, and in various embodiments, the logic referred herein may include any suitable hardware (e.g., processors, embedded controllers, or application-specific integrated circuits, among others), software (e.g., applications, among others), firmware, or any suitable combination of hardware, software, and firmware.
[0080] In this specification, various embodiments of the present invention are described with reference to the relevant drawings. Alternative embodiments of the present invention can be devised without departing from the scope of the present invention. In the following description and drawings, various connections and positional relationships (e.g., above, below, adjacent, etc.) are defined between elements. These connections or positional relationships, or both, can be direct or indirect unless otherwise specified, and in this respect, the present invention is not intended to limit. Thus, the joining of entities can represent direct or indirect joining, and the positional relationships between entities can be direct or indirect. Furthermore, the various tasks and process steps described herein can be incorporated into more comprehensive procedures or processes having additional steps or functions not described in detail herein.
[0081] One or more of the methods described herein can be implemented by any or a combination of technologies known in the art, such as discrete logic circuits having logic gates for performing logic functions on data signals, application-specific integrated circuits (ASICs) having appropriate combinational logic gates, programmable gate arrays (PGAs), field-programmable gate arrays (FPGAs), etc.
[0082] For the sake of simplification, prior art related to the configuration and use of aspects of the present invention may or may not be described in detail herein. In particular, various embodiments of computing systems and specific computer programs that implement the various technical features described herein are well known. Therefore, for the sake of simplification herein, many prior embodiments will be described only briefly, or omitted entirely, without giving details of the well known systems or processes or both.
[0083] In some embodiments, various functions and operations may occur in a given location, in relation to the operation of one or more devices or systems, or both. In some embodiments, a portion of a given function or operation may be performed on a first device or location, and other portions of this function or operation may be performed on one or more additional devices or locations.
[0084] The technical terms used herein are intended solely to describe specific embodiments and are not intended to limit them. As used herein, the singular forms "a," "an," and "the" are intended to include the plural forms as well, unless otherwise explicitly specified in the context. It should be further understood that the terms "comprise" or "comprising," as used herein, specify the presence of a described feature, integer, step, action, element, or component, or combination thereof, but do not exclude or preclude the presence of one or more other features, integers, steps, actions, elements, components, or groups thereof, or combination thereof.
[0085] In the following claims, the corresponding structures, materials, actions, and equivalents of all means-plus-function elements or step-plus-function elements are intended to include any structures, materials, or actions for performing a function in combination with other specifically claimed elements. This disclosure is presented for illustrative and explanatory purposes only, and is not intended to be exhaustive or to limit the forms of disclosure. Many improvements and modifications will become apparent to those skilled in the art without departing from the scope of this disclosure. The embodiments are selected and described to best illustrate the principles and practical applications of this disclosure and to enable those skilled in the art to understand the disclosure with various improvements suitable for specific conceivable uses.
[0086] The drawings described herein are illustrative. Many variations may exist in the drawings or the steps (or actions) described therein without departing from the scope of this disclosure. For example, actions may be performed in a different order, and actions may be added, deleted, or modified. Furthermore, the term “coupled” indicates the presence of a signal path between two elements and does not imply a direct connection between elements without the intervention of an element / connection. All these variations are considered part of this disclosure.
[0087] The following definitions and abbreviations shall be used for the purposes of the claims and interpretation of this specification. As used herein, the terms “comprise,” “comprising,” “include,” “including,” “have,” “having,” “contain,” or “containing,” or any other variation thereof, are intended to encompass non-exclusive inclusion. For example, a composition, mixture, process, method, item, or apparatus containing a list of elements is not necessarily limited to these elements and may include other elements that are neither expressly listed nor specific to such composition, mixture, process, method, item, or apparatus.
[0088] Furthermore, in this specification, the term “exemplary” is used to mean “serving as an example, case, or illustration.” No embodiment or design described as “exemplary” in this specification shall necessarily be construed as preferable or advantageous to other embodiments or designs. The terms “at least one” and “one or more” are understood to include one or more any integers, i.e., 1, 2, 3, 4, etc. The term “a plurality” is understood to include two or more any integers, i.e., 2, 3, 4, 5, etc. The term “connection” may include both indirect and direct “connections.”
[0089] The terms “about,” “substantially,” “approximately,” and their variations are intended to include the degree of error associated with the measurement of a particular quantity based on equipment available at the time of filing of this application. For example, “about” may include a range of ±8%, 5%, or 2% of a given value.
[0090] The present invention may be a system, method, or computer program product, or a combination thereof, at any possible level of technical detail integration. The computer program product may comprise a computer-readable storage medium (or a set of mediums) having computer-readable program instructions thereon for causing a processor to execute an aspect of the present invention.
[0091] Computer-readable storage media can be tangible devices capable of holding and storing instructions used by instruction execution devices. Computer-readable storage media may be, but are not limited to, electronic storage devices, magnetic storage devices, optical storage devices, electromagnetic storage devices, semiconductor storage devices, or any preferred combination thereof. A non-exhaustive list of more specific examples of computer-readable storage media includes portable computer diskettes, hard disk drives (HDDs), solid-state drives (SDDs), random-access memory (RAM), read-only memory (ROM), erasable and programmable read-only memory (EPROM or flash memory), static random-access memory (SRAM), portable compact disk read-only memory (CD-ROM), digital versatile disks (DVDs), memory sticks (R), floppy disks (R), mechanical encoding devices such as punch cards or grooved structures on which instructions are recorded, and any preferred combination thereof. As used herein, computer-readable storage media shall not be interpreted as transient signals themselves, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through waveguides or other transmission media (e.g., light pulses passing through optical fiber cables), or electrical signals transmitted through wires.
[0092] The computer-readable program instructions described herein may be downloaded from a computer-readable storage medium to each computer / processor, or they may be downloaded to an external computer or external storage device via, for example, the Internet, a local area network, a wide area network, or a wireless network, or a combination thereof. The network may include copper transmission cables, optical transmission fibers, wireless transmission, routers, firewalls, switches, gateway computers, or edge servers, or a combination thereof. The network adapter card or network interface of each computer / processor receives computer-readable program instructions from the network, transfers these computer-readable program instructions, and stores them in a computer-readable storage medium within each computer / processor.
[0093] The computer-readable program instructions for performing the operation of the present invention may be assembler instructions, instruction set architecture (ISA) instructions, machine instructions, machine-dependent instructions, microcode, firmware instructions, state setting data, integrated circuit configuration data, or source code or object code written in any combination of one or more programming languages, including object-oriented programming languages such as Smalltalk(R) and C++, and procedural programming languages such as the C programming language or similar programming languages. The computer-readable program instructions may be executed in whole or in part as a standalone software package on the user's computer, in part on the user's computer and in part on a remote computer, or in whole on a remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer via any type of network, including a local area network (LAN) or wide area network (WAN), or it may be connected to an external computer (for example, via the Internet by using an Internet service provider). In some embodiments, to carry out aspects of the present invention, electronic circuits may be personalized by utilizing state information of computer-readable program instructions, so that electronic circuits including, for example, programmable logic circuits, field-programmable gate arrays (FPGAs), or programmable logic arrays (PLAs) execute computer-readable program instructions.
[0094] In this specification, aspects of the present invention are described with reference to flowcharts or block diagrams, or both, of methods, apparatus (systems), and computer program products according to embodiments of the present invention. It is understood that each block in a flowchart or block diagram, or both, and any combination of blocks in a flowchart or block diagram, or both, can be implemented by computer-readable program instructions.
[0095] These computer-readable program instructions may be provided to a general-purpose computer, a dedicated computer, or a processor of another programmable data processing device to create a machine, such that instructions executed via the processor of a computer or other programmable data processing device generate means for implementing a specified function / operation in one or more blocks of a flowchart or block diagram, or both. Alternatively, these computer-readable program instructions may be stored in a computer-readable storage medium containing instructions, such that the storage medium contains a product containing instructions for implementing a specified mode of function / operation in one or more blocks of a flowchart or block diagram, or both, instructing a computer, a programmable data processing device, or other device, or a combination thereof, to function in a particular manner.
[0096] Furthermore, computer-readable program instructions may be loaded into a computer, another programmable data processing device, or another device to generate a computer implementation process in which instructions executed on a computer, another programmable device, or another device implement a specified function / operation in one or more blocks of a flowchart or block diagram, or both, and a series of operation steps may be executed on the computer, another programmable device, or another device.
[0097] The flowcharts and block diagrams in the figures illustrate the architecture, functionality, and operation of possible embodiments of systems, methods, and computer program products according to various embodiments of the present invention. In this regard, each block in a flowchart or block diagram may represent a module, segment, or part of an instruction containing one or more executable instructions for implementing a particular logical function. In some alternative embodiments, the functions described in a block may be performed in an order different from the order shown in the drawings. For example, two consecutively shown blocks may actually be executed substantially simultaneously, depending on the functions involved, or in some cases in reverse order. It should also be noted that each block in a block diagram or flowchart, or both, and any combination of blocks in a block diagram or flowchart, or both, can be implemented by a dedicated hardware-based system that performs a particular function or operation, or a combination of dedicated hardware and computer instructions.
[0098] The descriptions of various embodiments of the present invention are presented for illustrative purposes only and are not intended to be exhaustive or limit to the disclosed embodiments. Many improvements and modifications will become apparent to those skilled in the art without departing from the scope of the described embodiments. The terminology used herein has been selected to best describe the principles of the embodiments, their practical applications, or the technical improvements of the technology found in the market, or to enable other those skilled in the art to understand the embodiments described herein.
Claims
1. A computer implementation method, Obtaining the data to be converted, The determination of a selective transformation to be applied to the data based on a memory block address list entry (SBALE) in a memory block address list (SBAL), wherein the SBALE includes at least one field used to determine the selective transformation to be applied. Performing multiple transformations, including the aforementioned selection transformation, on the data to generate transformed data, The converted data is placed in the location specified by SBAL, Computer implementation methods including
2. The method according to claim 1, wherein at least two of the plurality of transformations are performed in parallel on the data, and at least a second transformed data is generated and placed in a second location.
3. The method according to claim 1, wherein at least two of the plurality of transformations are performed sequentially on the data.
4. The method according to claim 1, wherein the acquisition of the data to be converted is based on an indicator that the conversion is applied to the data, and the indicator is based on at least one additional field in the SBALE.
5. The method according to claim 1, wherein the at least one field of the SBALE includes a conversion type field, and determining the selected conversion includes checking the conversion type field against an index of the selected conversion.
6. The method according to claim 5, wherein the at least one field further includes a conversion subtype field, and determining the selected conversion further includes checking the conversion subtype field against the index of the selected conversion.
7. The method according to claim 1, wherein the SBAL is used for transmitting the data via an input / output (I / O) subsystem between the memory of the computing system and an external storage device coupled to the computing system.
8. The method according to claim 1, wherein the selected transformation is one of a plurality of types of transformations specified by the SBALE, and the plurality of types of transformations are selected from the group consisting of mathematical operations, packet filtering, statistical analysis, telemetry, and multicast replication.
9. The method according to claim 1, wherein the decision is performed in conjunction with the movement of the data between the memory of the computing system and an external storage device coupled to the computing system.
10. It is a system, It comprises one or more processors, and the one or more processors Obtaining the data to be converted, The determination of a selective transformation to be applied to the data based on a memory block address list entry (SBALE) in a memory block address list (SBAL), wherein the SBALE includes at least one field used to determine the selective transformation to be applied. Performing multiple transformations, including the aforementioned selection transformation, on the data to generate transformed data, The converted data is placed in the location specified by SBAL, The system on which the operation including the above is performed.
11. The system according to claim 10, wherein the acquisition of the data to be converted is based on an indicator that the conversion is applied to the data, and the indicator is based on at least one additional field in the SBALE.
12. The system according to claim 10, wherein the at least one field of the SBALE includes a conversion type field, and determining the selected conversion includes checking the conversion type field against an index of the selected conversion.
13. The system according to claim 10, wherein the SBAL is used for transmitting the data via an input / output (I / O) subsystem between the system's memory and an external storage device coupled to the system.
14. The system according to claim 10, wherein the selected transformation is one of a plurality of types of transformations specified by the SBALE, and the plurality of types of transformations are selected from the group consisting of mathematical operations, packet filtering, statistical analysis, telemetry, and multicast replication.
15. The system according to claim 10, wherein the decision is performed in conjunction with the movement of the data between the system's memory and an external storage device coupled to the system.
16. A computer program for causing one or more processors of a computer to perform the method according to any one of claims 1 to 9.
Citation Information
Patent Citations
Disk array device
JP2006113648A
Storage apparatus
JP2007028502A
Storage system, storage controller and storage control method
JP2012198711A
Storage system, control method for storage system, and virtual tape device control program
JP2016066285A
Efficient handling of queued-direct I / O requests and completions
US20110106990A1