In-line data packet conversion

In-line transformation processing using microcontrollers within the computing system and input/output subsystems addresses the need for external host controllers, improving system performance and flexibility in input/output operations.

JP7705213B2Active Publication Date: 2025-07-09INTERNATIONAL BUSINESS MACHINE CORPORATION
View PDF 3 Cites 0 Cited by

Patent Information

Application Number
JP2023535933
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2020-12-14
Filing Date
2021-11-10
Publication Date
2025-07-09
Estimated Expiration
2041-11-10

AI Technical Summary

Technical Problem

Existing input/output processing in computing environments requires external host controllers for transformation decisions, leading to increased latency and complexity.

Method used

In-line transformation processing is facilitated by using microcontrollers within the computing system and input/output subsystem to determine and execute transformations independently, utilizing input/output control blocks like transport control words to specify conversion types and subtypes.

Benefits of technology

This approach reduces latency and complexity by eliminating the need for external host controllers, enhancing system performance and flexibility in data processing.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007705213000001
    Figure 0007705213000001
  • Figure 0007705213000002
    Figure 0007705213000002
  • Figure 0007705213000003
    Figure 0007705213000003
Patent Text Reader

Abstract

In-line data packet transformation is provided. A transformation engine obtains data to be transformed and determines a transformation to apply to the data. The determination is made using an input / output control block that includes at least one field used in determining the transformation to apply. Based on the determination of the transformation to apply, the transformation is performed.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] One or more aspects generally relate to facilitating processing within a computing environment, and more specifically, to facilitating processing related to input / output processing within a computing environment.

Background Art

[0002] Input / output processing includes transferring data between the main memory of a computing system and one or more external devices coupled to the system. To facilitate the transfer of data, one or more input / output operations are used. An input / output operation is used to obtain data from one or more external storage devices, perform one or more operations on the data, and store the result back in one or more storage devices.

[0003] One type of operation executable on data is transformation. To perform such an operation, the system requests data from an external storage device, and the data is obtained from the external storage device via an input / output subsystem coupled to the system and the external storage device. The data obtained from the external storage device is provided to another machine that performs the transformation, which is external to the system and the input / output subsystem. Then, the system may obtain the transformation result and store it in the external storage device.

Summary of the Invention

[0004] By providing a computer program product for facilitating processing within a computing environment, the disadvantages of the prior art are overcome and further advantages are obtained. The computer program product includes one or more computer-readable storage media and program instructions for performing a method, collectively stored on the one or more computer-readable storage media. The method includes obtaining, by a conversion engine, data to be converted and determining, by the conversion engine, a selected conversion to apply to the data. The determination is made using an input / output control block. The input / output control block includes at least one field used in determining the selected conversion to apply. Based on determining the selected conversion to apply, the selected conversion is executed by the conversion engine.

[0005] By using the input / output control block for conversion, the determination of whether to apply the conversion and, if applicable, the execution of the conversion are performed independently of a separate machine such as a host controller that is external to the computing system and the input / output subsystem coupled to the computing system. Thereby, input / output processing is improved and, accordingly, system performance is enhanced.

[0006] In one embodiment, obtaining the data by the conversion engine is based on an instruction that a conversion should be applied to the data, and this instruction is provided by the input / output control block. The input / output control block is capable of identifying which operation to apply the conversion to and, if applicable, which conversion to apply.

[0007] As an example, the instruction that a conversion should be applied is provided by at least one field of the input / output control block. The at least one field of the input / output control block includes a conversion type field. The conversion type field is used to determine whether to apply the conversion. By using the conversion type field, the determination can be facilitated and processing and system performance can be improved.

[0008] In one embodiment, at least one field of the input / output control block includes a conversion type field, and determining the selected conversion includes checking the conversion type field for an indication of the selected conversion. Checking the conversion type field facilitates the determination of which conversion to apply, and can improve processing and system performance.

[0009] At least one field further includes a conversion subtype field, and determining the selected conversion further includes checking the conversion subtype field for an indication of the selected conversion. Providing the conversion subtype field provides additional precision for selecting a conversion. This provides flexibility, simplifies processing, and improves system performance.

[0010] In one embodiment, the input / output control block is a transport control word used to transfer data between the memory of a computing system and an external storage device coupled to the computing system via an input / output subsystem.

[0011] As an example, the transport control word includes a conversion type field and a conversion subtype field. Determining the selected conversion includes checking at least one of the conversion type field and the conversion subtype field. Using the transport control word facilitates the identification of which operation to apply the conversion to and which conversion to apply if applicable, thus simplifying processing. Further, checking the conversion type field or the conversion subtype field or both facilitates the determination of the selected conversion to be executed, thereby improving system performance, reducing complexity, and reducing the hardware used (e.g., eliminating the need for a separate machine to perform the check).

[0012] In one embodiment, the selected transformation is one of a plurality of types of transformations specified by an input / output control block. As an example, the plurality of types of transformations includes artificial intelligence transformation, packet filtering, statistical analysis, telemetry, and multicast replication.

[0013] In one embodiment, at least making a determination is performed inline with respect to the processing of data between the memory of the computing system and an external storage device coupled to the computing system. Thereby, a separate machine for at least making a determination is not required, the processing can be improved, and the cost can be reduced.

[0014] Computer-implemented methods and systems related to one or more aspects are also described and claimed herein. Further, services related to one or more aspects may also be described and claimed herein.

[0015] Additional features and advantages are realized by the techniques described herein. Other embodiments and aspects are described in detail herein and are considered a part of the claimed aspects.

Brief Description of the Drawings

[0016] One or more aspects are specifically pointed out and clearly claimed by way of example in the claims at the end of this specification. The above content, as well as the objectives, features, and advantages of one or more aspects, will become apparent from the following detailed description taken in conjunction with the accompanying drawings.

Figure 1

Figure 2

Figure 3

Figure 4

Figure 5A

Figure 5B

Figure 6A

Figure 6B

Figure 6C

Figure 7A

Figure 7B

Figure 8

Figure 9

Mode for Carrying Out the Invention

[0017] In one or more aspects, input / output (I / O) processing is facilitated by transforming data in transit between a computing system and an external storage device in-line with respect to the data movement. That is, the decision to perform the transformation and the performance of the transformation occur within a direct path between the computing system and the external storage device. As an example, one or more microcontrollers (or processing logic or both) in the computing system or the I / O system or both determine whether to perform the transformation and perform the transformation independently of an additional machine or other component, such as a host controller, external to the computing system and the I / O system.

[0018] An embodiment of a computing environment incorporating and using one or more aspects of the present invention will be described with reference to FIG. 1. As an example, the computing environment of FIG. 1 is based on the z / Architecture (registered trademark) hardware architecture provided by International Business Machines Corporation. One embodiment of the z / Architecture hardware architecture is described in "z / Architecture Principles of Operation", (IBM Publication SA22-7832-12, 13th Edition, September 2019). IBM and z / Architecture are registered trademarks of International Business Machines Corporation in at least one jurisdiction. However, the z / Architecture hardware architecture is merely an example of an architecture. Aspects of the present invention may be based on other architectures (without limitation, such as the Intel x86 architecture, other architectures of International Business Machines Corporation, or architectures of other companies or combinations thereof).

[0019] Referring to FIG. 1, as an 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, main storage, central storage, etc.).

[0020] 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. Other connections or buses may be used.

[0021] The I / O subsystem 104 includes one or more input / output drawers 120. The input / output drawer 120 includes, for example, one or more switches 122 and one or more network adapters 124. As an 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), which is a single network interface card (NIC) that includes both a Fibre Channel (FC) host bus adapter (HBA) and a TCP / IP (Transmission Control Protocol / Internet Protocol) Ethernet NIC. This connects, for example, a server to an FC-based storage area network (SAN) or an Ethernet-based local area network (LAN).

[0022] The input / output subsystem 104 is coupled to one or more external storage devices 126 and is used to couple the processor 106 to the external storage devices 126. Data 128 stored in the storage devices is transmitted between the processor and the external storage devices, for example, via input / output operations. As an example, operating systems such as the z / OS (registered trademark) operating system provided by International Business Machines Corporation (Armonk, New York) and the Linux (registered trademark) operating system, which are executed within a processor (e.g., processor 106), use one or more input / output operations to retrieve data (e.g., data 128) from an external storage device (e.g., external storage device 126) along a path such as path 130. Note that z / OS is a trademark or registered trademark of International Business Machines Corporation in at least one jurisdiction. The registered trademark Linux is used under a sublicense from the Linux Foundation, which is an exclusive licensee of Linus Torvalds, the worldwide owner of the trademark. Note that other operating systems may be used.

[0023] As an example, one or more processors 106 include one or more microcontrollers 110 that are used in accordance with one or more aspects 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 to apply a transformation to the data of the input / output operation and, if so, to perform the transformation. One or more microcontrollers (or the processing logic of the computing system or both) are used, for example, instead 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). Thus, the determination and execution of the transformation are performed inline with respect to the input / output operation. That is, the determination and execution of the transformation are performed within path 130 and are independent of a host controller or other such controller coupled to the I / O subsystem outside of path 130.

[0024] In further embodiments, one or more microcontrollers may be disposed within the input / output subsystem to determine whether to apply a transformation, or to perform such a transformation based on a determination to apply a transformation, or both, in accordance with one aspect of the present invention. Other embodiments are possible.

[0025] To determine whether to apply a transformation to a particular input / output operation, according to one aspect of the present invention, a control block such as a transport control word (also referred to herein as an input / output control block) is used. The transport control word specifies a transport control block having the content to be transmitted to an I / O device (e.g., external storage device 126) for processing. The transport control block includes one or more device command words and related options. In the case of a device command word that specifies a command to start the transfer of data (excluding the control data included in the transport command control block), the transport control word specifies one or more storage areas where the data is located.

[0026] An example of a transport control word will be described with reference to FIG. 2. As an example, the transport control word 200 is, for example, a 64-byte control block specified at a 64-byte boundary. As an example, the transport control word 200 includes a plurality of fields including, for example, the following.

[0027] Format (F) 202: This field (e.g., bits 0-1 of word 0) forms a transport control word format that includes a 2-bit unsigned integer value that defines the layout of the transport control word. The value of this field is, for example, 0.

[0028] Flag 204: This field (e.g., bytes 1-3 of word 0) includes information regarding the transport control word. Examples of flags include, for example, the following.

[0029] Input Transport Indirect Data Addressing flag (e.g., bit 5): When this flag is 0 and the read operation field (e.g., bit 14 of word 1) is 1, the input data address field specifies, for example, the absolute address of the input position. When this flag is 1 and the read operation field is 1, the input data address field specifies, for example, the transport indirect data address word that specifies each input storage position, or the absolute address of the first transport indirect data address word in the list of transport indirect data address words.

[0030] When the read operation field is 0, this flag has no meaning.

[0031] Transport Command Control Block Transport Indirect Data Address flag (e.g., bit 6): When this flag is 0, the transport command control block address field specifies, for example, the absolute address of the transport command control block for the transport control word. When this flag is 1, the transport command control block address field specifies, for example, the absolute address of the transport indirect data address word or the list of transport indirect data address words that specify the position of the transport control block for the transport control word.

[0032] Output Transport Indirect Data Addressing flag (e.g., bit 7): When this flag is 0 and the write operation field (e.g., bit 15 of word 1) is 1, the output data address field specifies, for example, an output position within absolute storage. When this flag is 1 and the write operation field is 1, the output data address field specifies, for example, the absolute address of a transport indirect data address word or a list of transport indirect data address words that each specify an output storage location.

[0033] When the write operation field is 0, this flag has no meaning.

[0034] Transport Command Control Block Length (TCCBL) 206: This field (e.g., bits 8 - 13 of word 1) specifies an unsigned integer with two zeros appended on the right. The value of the unsigned integer, when added to a selected value (e.g., 20) for unidirectional data transfer or another value (e.g., 24) for bidirectional data transfer, specifies the length of the transfer command control block in bytes.

[0035] Read operation (R) 208: When this field (e.g., bit 14 of word 1) is 1, the input count (e.g., word 11) is valid and contains a non - zero value indicating the number of bytes to be transferred to main storage.

[0036] Write operation (W) 210: When this field (e.g., bit 15 of word 1) is 1, the output count (e.g., word 10) is valid and contains a non - zero value indicating the number of bytes to be transferred from main storage.

[0037] If both the read operation field and the write operation field are 1, the device does not support bidirectional data transfer, and the selected flag indicator (e.g., bit 10) is 0, a program check condition is recognized. If the write operation field is 1 and the transport control word is an interrogate transport control word, a program check condition is recognized.

[0038] Output data address (212): When the write operation field is 1 and the output transport indirect data address specification flag in the flag field (e.g., bit 7) is 0, this field (e.g., words 2 - 3) specifies, for example, a 64 - bit output position in absolute storage. When the write operation field is 1 and the output transport indirect data address specification flag in the flag field is 1, this field specifies, for example, a 64 - bit position in absolute storage of a transport indirect data address word or a list of transport indirect data address words that specify an output storage location.

[0039] Input data address (214): When the read operation field is 1 and the input transport indirect data address specification flag in the flag field (e.g., bit 5) is 0, this field (e.g., words 4 - 5) specifies, for example, a 64 - bit input position within absolute storage. When the read operation field is 1 and the input transport indirect data address specification in the flag field is 1, this field specifies, for example, a 64 - bit position in absolute storage of a transport indirect data address word or a list of transport indirect data address words that specify an input storage location.

[0040] Transport Status Block Address (216): This field (e.g., words 6 - 7) specifies the 64 - bit location in the absolute storage of the transport status block, for example, related to the transport control word.

[0041] Transport Command Control Block Address 218: When the Transport Command Control Block Transport Indirect Data Address Flag (bit 6 of the flag field) is 0, this field (e.g., words 8 - 9) specifies the 64 - bit location in the absolute storage of the transport command control block. When the Transport Command Control Block Transport Indirect Data Address field is 0, the transport command control block is specified to reside within a contiguous area of storage. When the Transport Command Control Block Transport Indirect Data Address field is 1, this field specifies the 64 - bit location in the absolute storage of the transport indirect data address word or a list of transport indirect data address words that specify the location in the absolute storage of the transport command control block. When the Transport Command Control Block Transport Indirect Data Address Flag is 1, the transport command control block may be specified to reside within a non - contiguous area of storage.

[0042] The transport command control block is of variable length and includes, for example, a header, a trailer, and 1 - 30 device command words that specify one or more commands to be executed.

[0043] Output Count (220): When the write operation field is 1, this field (e.g., word 10) includes the unsigned integer total count of output bytes related to the transport control word.

[0044] Input Count (222): When the read operation field is 1, this field (e.g., word 11) contains the unsigned integer total count of the input bytes for the transport control word.

[0045] Transform Type (224): This field (e.g., bits 0-3 of word 12) contains an indication of whether to apply a transformation (also referred to herein as "transform") to the data being transferred, as indicated by the transport control word, according to an aspect of the present invention, and if a transformation is to be applied, which transformation to apply. Examples of transformations are as follows.

[0046] 0000 - Do not apply transformation

[0047] 0001 - Artificial Intelligence (AI) transformation

[0048] There are various examples of AI transformations and are not particularly limited, but include map(func) that returns a new distributed dataset formed by passing each element of the source through the function func, filter(func) that returns a new dataset formed by selecting elements of the source for which func returns true, union(other dataset) that returns a new dataset containing the union of the elements of the source dataset and the argument, intersection(other dataset) that returns a new dataset containing the intersection of the elements of the source dataset and the argument, and many other functions including, but not limited to, join, sort, cogroup, cartesian, pipe, coalesce, repartition, aggregate, reduce, distinct, sample, etc. Note that one or more transformations may be used in combination.

[0049] 0010 - Packet Filter

[0050] Packet filtering is used, for example, to permit or block packets at a network interface. This is used, for example, for security purposes.

[0051] 0011 - Stats (Statistical Analysis)

[0052] In statistical analysis, data transformation is, for example, applying a deterministic mathematical function to each data point in a dataset, whereby each data point z i is replaced by a transformed value y i = f (where f is a mathematical function).

[0053] 01xx - Telemetry Type

[0054] In telemetry transformation, sensory data can be acquired by the system and transformed to make it easier to use. Other examples are possible.

[0055] 1000 - Multicast

[0056] As an example, multicast is performed for FICON (Fiber Connection) replication. Data is mirrored to a second port for connection to an analysis section. Since the second port may not be encrypted, the data can be inspected and debugged while in - flight. Then, the traffic is sent to an encrypted card.

[0057] As another example, another form of dataset replication can be mentioned.

[0058] 1001 - Port Mirror

[0059] 1xxx - Undefined

[0060] Transform Subtype (226): This field (e.g., bits 4 - 7 of word 12) presents a specific subtype of transformation to apply to a particular operation according to one aspect of the present invention. For example, if the type field indicates an artificial intelligence transformation, this field indicates the specific type of artificial intelligence transformation to apply (e.g., map, filter, union, etc.). Other examples are possible.

[0061] Status Field (228): This field (e.g., byte 1 of word 12) indicates the result of the transformation, whether successful or not, according to one aspect of the present invention. As an example, this field indicates a status field offset pointer. This is the location of further information about what error (if any) occurred during the transformation. It is the number of x - byte blocks from the location of the transport control word where the status is located.

[0062] Interrogate Transport Control Word Address (230): This field (e.g., word 15) is used to initiate an interrogate operation, if appropriate.

[0063] In one embodiment of this specification, specific fields, field positions, field sizes, bits, and field or bit values are described for the transport control word. However, without departing from the scope of one or more aspects of the present invention, other fields, field positions, field sizes, bits, or field or bit values, or combinations thereof, can be used. Each field, field or subfield, or both, not described in this specification may, in one embodiment, be blank, may have a predetermined value (e.g., 0), or may contain values to be ignored, or combinations thereof. Further, the transport control word may include additional, fewer, or other, or combinations thereof, fields or subfields for use in input / output processing. There are many possibilities.

[0064] An example of determining whether to apply a conversion using the transport control word will be described with reference to FIG. 3. In one embodiment, at step 300, a microcontroller (e.g., microcontroller 110) obtains (e.g., receives, is provided with, or searches for) a data packet during an input / output operation. Then, at step 302, processing related to the data packet is executed. For example, the microcontroller determines at branch 304 whether to perform a conversion on the data of the data packet. As an example, the microcontroller checks the transport control word (e.g., transport control word 200) related to the data packet and determines whether a conversion should be applied to the data. For example, the microcontroller checks the conversion type field 224 to determine whether a conversion should be applied to the data. If a selected value (e.g., 0000) is indicated, no conversion is applied. However, if another value is indicated, the conversion type field 224 or the conversion subtype field 226, or both, indicate the specific conversion to be performed on the data.

[0065] When applying a transformation, the microcontroller executes the transformation on the data at step 306. For example, if an AI transformation is selected, specifically, if a specific AI function such as a filter function is selected, the microcontroller executes this specific function on the data. Similarly, other transformations are executed according to the type of transformation. However, if no transformation is applied, the transformation is not executed.

[0066] In one embodiment, checking whether to execute a transformation and (if so) determining the transformation to be executed are performed by one or more microcontrollers. For example, the same microcontroller may perform both the check and the determination, or different microcontrollers may perform the check and the determination. As another example, the check may be performed by, for example, the microcontroller or logic of a computing system, and based on this check, the selected microcontroller may execute the transformation. Various implementations are possible.

[0067] For further details on performing an in-line transformation on data using a microcontroller, reference is made to FIG. 4 for explanation. FIG. 4 is a diagram illustrating a store command. Similar processing is also performed for a fetch command. The processing in FIG. 4 is executed by one or more processors, using the hardware logic of the processor or one or more microcontrollers or both. The numbers adjacent to the arrows (e.g., numbers 1 to 20) correspond to the exemplary processing steps described below. Although the exemplary processing steps are described, additional, fewer, or other, or combinations of these steps may be executed in accordance with one or more aspects of the present invention.

[0068] 1: The PCI (e.g., network adapter 124) sends a store command to the data router 400. As an example, the store command is defined by an I / O control block (e.g., transport control word 200). For example, a program (e.g., an operating system) requests data (e.g., data 128) from an external storage device (e.g., external storage device 126), constructs a transport control word that defines the store command, and sends the transport control word to the I / O subsystem (e.g., I / O subsystem 104) for processing. The I / O subsystem retrieves the data, and the store command and data are processed as described herein in one embodiment.

[0069] 2: The store command comes in with the data. The command parse 401 receives the data, stores it in the next free location in the receive (RX) buffer 402, and records which address in the receive buffer 402 and how much data was written there.

[0070] 3: The command parse 401 reads the current active request count value in one or more active request count arrays 404 for the address control word of the PCI command and increments it by a selected value (e.g., 1).

[0071] The active request count is an internal counter maintained by the data router hardware for each address control word. The hardware increments this count by a selected value (e.g., 1) each time a store request (e.g., a PCIe store request) targeting this address control word is loaded into the byte store array. The hardware decrements the count when the store request is completed. The store request is completed when (1) the memory store request for the PCIe request is completed if the data was targeting a computing system (e.g., system 102), (2) the data for this PCIe request is dropped if a discard indicator is set in the address control word, or (3) the header is stored in the address control word if the PCIe request transferred only the header.

[0072] 4: The command parser 401 reads the address control word from the address control word cache 406 and sets the completion bit to a selected value (e.g., 0).

[0073] 5: The command parser 401 adds a new entry to the store command table 408 using, for example, a first in / first out (FIFO) approach.

[0074] 6: The store compare logic 410 retrieves the next entry from the store command table 408.

[0075] 7: The store compare logic 410 reads the address control word from the address control word cache 406 and checks various fields including, for example, valid, control, verify, status, and the next expected offset. The store compare logic 410 also updates the status and touch bit of the address control word.

[0076] 8: If there is no problem, the store comparison logic 410 presents this command to the store command logic 412.

[0077] 9: The store command logic 412 reads the address control word for the addresses and the working count of the transport indirect data address list.

[0078] 9a: If the transport indirect data address list is not in the transport indirect data address list cache 414, the store command logic 412 fetches one or more transport indirect data address lists from the host memory (e.g., memory 108). As an example, eight transport indirect data address lists are fetched at a time. This is done, in one example, via a high priority fetch to the data assist logic coupled to the data router 400.

[0079] 9b: The data assist writes the transport indirect data address list information to the transmit (TX) buffer 416.

[0080] 9c: The data assist makes a "done" reply, which the store command logic 412 intercepts.

[0081] 9d: The store command logic 412 reads the transmit buffer 416 and obtains the transport indirect data address list.

[0082] 9e: The store command logic 412 writes the transport indirect data address list to the transport indirect data address list cache 414.

[0083] 10: The store command logic 412 obtains the transport indirect data address list from the transport indirect data address list cache 414.

[0084] 11: The store command logic 412 stores enqueues in the data assist based on the transport indirect data address list information. If more transport indirect data address lists are needed, the store command logic 412 fetches more transport indirect data address lists from the host memory (e.g., memory 108).

[0085] 12: The store command logic 412 notifies the store command table 420 of how many enqueues were performed and for that particular PCI command.

[0086] 13: The store command logic 412 write - backs the remaining transport indirect data address list information to the transport indirect data address list cache 414.

[0087] 14: The store command logic 412 updates the address control word with the next location of the transport indirect data address cache 414 and the new working count.

[0088] 15: The data assist attempts to read the receive buffer 402 and start storing data to the host memory (e.g., memory 108). This is intercepted by the store command table 420 and put on hold.

[0089] 16: The store command table 420 reads the address control word for the current cyclic redundancy check (CRC) value and status. The store command table 420 also checks appropriate processing indicators (e.g., one or more bits) of the transport control word to determine whether to apply a conversion to the data. Thereafter, data assist is permitted to read the receive buffer. If a processing indicator (e.g., the conversion type field 224) is set to a selected value indicating that a conversion should be applied, the data passes through a conversion engine such as the generic transformation engine 430. The conversion engine is called "generic" because it can perform multiple conversions. As an example, the conversion engine is or is included within a microcontroller (e.g., the microcontroller 110).

[0090] The generic transformation engine 430 determines a selected conversion to be applied to the data according to one aspect of the present invention. For example, the generic transformation engine 430 checks the conversion type field 224 and / or the conversion subtype field 226 to determine the conversion to apply. The generic transformation engine 430 executes the indicated conversion (e.g., performs a specified mathematical function, analysis, or other conversion or combination thereof based on the selected conversion to be performed) and outputs the result (e.g., the converted data).

[0091] When the processing by the generic transformation engine 430 is complete, the data is transferred to the data assist and a new cyclic redundancy check is calculated. When the data assist finishes reading the receive buffer 402, the store command table 420 writes back the new cyclic redundancy check value and status to the address control word.

[0092] 17: After the data is stored in the host memory (e.g., the memory 108), the data assist returns "done" to the data router. These "done" are accumulated by the store command table 420.

[0093] In one embodiment, there may be duplication of data, and thus, copying and conversion of data may be performed.

[0094] 18: If there are sufficient "completions" received for the PCI command, the store command table 420 instructs the command parse logic 401 that a particular PCI command has been completed.

[0095] 19: The command parse 401 releases more receive buffer space, reads the active request count array 404, and decrements the value by the select value (e.g., 1). This is done after the address control word and the hardware response word have been executed and written.

[0096] 20: The command parse 401 also reads the address control word and updates the hardware response word and other bits of the address control word as necessary.

[0097] Exemplary logic for a data router is provided, but additional, fewer, or other, or combinations thereof, logic may be used for other commands or other embodiments or both of the processing target. The logic described herein is merely an example.

[0098] As described herein, in one embodiment, a microcontroller (e.g., a general-purpose conversion engine) determines a selected conversion to apply to the data of an input / output operation and applies the conversion to the data during in-line processing of the input / output operation. This is performed independently of a separate host controller or other component coupled to the input / output system or computing system. Thereby, by reducing the latency time when transmitting to a separate machine, the execution time of the input / output operation can be shortened, thereby improving system performance.

[0099] One or more aspects of the present invention are closely related to computer technology and facilitate processing including input / output processing in a computing environment and improve its performance. Further details of an embodiment of an aspect related to facilitating processing in a computing environment will be described with reference to FIGS. 5A and 5B.

[0100] Referring to FIG. 5A, in one embodiment, data to be converted is obtained by a conversion engine (500). Then, the conversion engine determines a selected conversion to be applied to the data (502). As an example, this determination uses an input / output control block (504). The input / output control block includes, for example, at least one field used in determining the selected conversion to be applied (506). Based on determining the selected conversion to be applied, the selected conversion is executed by the conversion engine (508).

[0101] By using the input / output control block for conversion, the determination of whether to apply the conversion and, if applicable, the execution of the conversion are performed independently of a separate machine such as a host controller that is external to the computing system and the input / output subsystem coupled to the computing system. Thereby, input / output processing is improved and thus system performance is enhanced.

[0102] In one embodiment, the obtaining of data by the conversion engine is based on, for example, an indication in the input / output control block that a conversion should be applied to the data (510). The ability to identify which operation to apply the conversion to and, if applicable, which conversion to apply is provided.

[0103] In one embodiment, the instruction that a transformation should be applied is provided by at least one field of the input / output control block, and at least one field of this input / output control block includes a transformation type field (512). The transformation type field is used to determine whether a transformation should be applied (514). By checking the transformation type field, the determination can be facilitated and the processing and system performance can be improved.

[0104] In one embodiment, determining the selected transformation includes checking the transformation type field for an instruction of the selected transformation (516). By checking the transformation type field, the determination of which transformation to apply can be facilitated and the processing and system performance can be improved.

[0105] In one embodiment, at least one field further includes a transformation subtype field (518), and determining the selected transformation further includes checking the transformation subtype field for an instruction of the selected transformation (520). By providing the transformation subtype field, further granularity for selecting a transformation is provided. Thereby, flexibility is obtained, the processing is facilitated, and the system performance is improved.

[0106] Referring to FIG. 5B, as an example, the input / output control block is a transport control word (530) used to transfer data between the memory of the computing system and an external storage device coupled to the computing system via the input / output subsystem. The transport control word includes, for example, a conversion type field and a conversion subtype field (532). In one embodiment, determining the selected conversion includes checking at least one of the conversion type field and the conversion subtype field (536). By using the transport control word, it is possible to identify which operation to apply the conversion to and which conversion to apply if applicable, thus facilitating the processing. Further, by checking the conversion type field or the conversion subtype field or both, it becomes easier to determine whether to perform a conversion and which conversion to perform if so, thereby enabling improvement in system performance, reduction in complexity, and reduction in the hardware used (e.g., eliminating the need for a separate machine to perform the check).

[0107] In one embodiment, the selected conversion is one of a plurality of types of conversions specified by the input / output control block (538). Examples of the plurality of types of conversions include artificial intelligence conversion, packet filtering, statistical analysis, telemetry, and multicast replication (540).

[0108] In one embodiment, at least the determination is executed inline with respect to the processing of data between the memory of the computing system and an external storage device coupled to the computing system. This eliminates the need for a separate machine to perform at least the determination, improving the processing and reducing costs.

[0109] Other variations and embodiments are possible.

[0110] The in-line packet conversion according to one or more aspects of the present invention can be incorporated into and used in many computing environments. An example of a computing environment incorporating and using one or more aspects of the present invention will be described with reference to FIG. 6A. As an example, the computing environment of FIG. 6A is based on the z / Architecture hardware architecture provided by International Business Machines Corporation. However, the z / Architecture hardware architecture is only an example of an architecture. The aspects of the present invention may be based on other architectures (not particularly limited, such as the Intel x86 architecture, other architectures of International Business Machines Corporation, or architectures of other companies or combinations thereof). Note that Intel is a trademark or registered trademark of Intel Corporation and its subsidiaries in the United States and other countries.

[0111] As an example, the computing environment 600 includes a central electronics complex (CEC) 602. The CEC 602 includes a plurality of components. The plurality of components includes, for example, a memory 604 (also known as system memory, main memory, main storage, central storage, storage) coupled to one or more processors (also known as central processing units (CPUs)) 606 and an input / output (I / O) subsystem 608.

[0112] The I / O subsystem 608 may be part of the central electronics complex or separated therefrom. The I / O subsystem 608 directs the flow of information between the main storage 604 and an input / output control unit 610 and an input / output (I / O) device 612 coupled to the central electronics complex.

[0113] A number of types of I / O devices can be used. As one particular type, a data storage device 614 is used. The data storage device 614 can store one or more programs 616, one or more computer-readable program instructions 618, or data or combinations thereof, etc. The computer-readable program instructions can be configured to perform the functions of embodiments according to aspects of the present invention.

[0114] In one embodiment, one or more of the processors 606 include one or more microcontrollers 620. As described herein, the microcontroller is used to determine whether to apply a conversion to a data packet of an input / output operation and, if a conversion is to be applied, to perform the conversion in accordance with one or more aspects of the present invention.

[0115] In another embodiment, one or more microcontrollers may be included in the I / O subsystem 608, similar to or instead of one or more of the processors 606. Other variations are possible.

[0116] The central electronic processing unit 602 can include, or be coupled to, or both, removable / non-removable volatile / non-volatile computer system storage media. For example, the central electronic processing unit 602 can include, or be coupled to, or both, a non-removable non-volatile magnetic medium (commonly referred to as a "hard disk"), a magnetic disk drive for reading and writing to a removable non-volatile magnetic disk (e.g., a "floppy disk"), or an optical disk drive for reading and writing to a removable non-volatile optical disk such as a CD-ROM, a DVD-ROM, or other optical media. Note that other hardware or software or both components may be used in combination with the central electronic processing unit 602. Examples of these components include, but are not limited to, microcode, device drivers, redundant processing units, external disk drive arrays, RAID systems, tape drives, and data archive storage systems.

[0117] Furthermore, the central electronic processing unit 602 is operable with a number of other general purpose or special purpose computing system environments or configurations. Examples of well-known computing systems, environments, or configurations or combinations thereof suitable for use with the central electronic processing unit 602 include, but are not limited to, personal computer (PC) systems, server computer systems, thin clients, thick clients, handheld or laptop devices, multiprocessor systems, microprocessor-based systems, set top boxes, programmable consumer electronics, network PCs, minicomputer systems, mainframe computer systems, and distributed cloud computing environments including any of these systems or devices.

[0118] The central electronic processing unit 602 provides logical partitioning and / or virtualization support, or both, in one or more embodiments. In one embodiment, as shown in FIG. 6B, the memory 604 includes, for example, one or more logical partitions 670, a hypervisor 672 that manages the logical partitions, and processor firmware 674. An example of the hypervisor 672 is the Processor Resource / System Manager (PR / SM) provided by International Business Machines Corporation, Armonk, N.Y. As used herein, firmware includes, for example, the microcode of the processor. Firmware includes, for example, hardware-level instructions and / or data structures used in the implementation of higher-level machine code, or both. In one embodiment, firmware is typically provided as microcode that includes, for example, microcode that includes trusted software or microcode specific to the underlying hardware, and includes unique code that controls access to the operating system by the system hardware.

[0119] Each logical partition 670 can function as a separate system. That is, each logical partition is reset independently and can execute a guest operating system 676 (such as the z / OS operating system provided by International Business Machines Corporation, Armonk, New York) or other control code 678 (such as coupling facility control code (CFCC)) and operate with different programs 680. Although the operating system or application program running within a logical partition appears to be able to access the entire complete system, in fact, only a part of it can be utilized. Although the Processor Resource / System Manager hypervisor and the z / OS operating system have been exemplified, other hypervisors or operating systems or both may be used in accordance with one or more aspects of the present invention.

[0120] Memory 604 is coupled to CPU 606 (FIG. 6A). CPU 606 is a physical processor resource that can be assigned to logical partitions. For example, logical partition 670 includes one or more logical processors, each of which represents all or a part of the physical processor resources 606 that can be dynamically assigned to the logical partition.

[0121] In a further embodiment, the central electronic processing unit provides virtual machine support (either with or without logical partitioning support). As shown in FIG. 6C, the memory 604 of the central electronic processing unit 602 includes, for example, one or more virtual machines 690, a virtual machine manager such as a hypervisor 692 that manages the virtual machines, and processor firmware 694. An example of the hypervisor 692 is the z / VM (registered trademark) hypervisor provided by International Business Machines Corporation, Armonk, N.Y. The hypervisor is sometimes referred to as a host. Note that PR / SM and z / VM are trademarks or registered trademarks of International Business Machines Corporation in at least one jurisdiction.

[0122] The CEC's virtual machine support provides the ability to operate a number of virtual machines 690, each operating with a different program 696 and capable of executing a guest operating system 698 such as the Linux operating system or other operating systems. Each virtual machine 690 can function as a separate system. That is, each virtual machine can be reset independently, execute a guest operating system, and operate with different programs. The operating system or application program executed within the virtual machine appears to have access to the entire complete system but in fact can only utilize a portion of it. Although the z / VM hypervisor and the Linux operating system have been exemplified, other virtual machine managers or operating systems or both may be used in accordance with one or more aspects of the present invention.

[0123] Another embodiment of a computing environment incorporating and using one or more aspects of the present invention will be described with reference to FIG. 7A. In this example, the computing environment 10 includes, for example, a native central processing unit (CPU) 12, a memory 14, and one or more input / output devices 16 or input / output interfaces 16 or both coupled to each other via, for example, one or more buses 18 or other connections or both. As an example, the computing environment 10 can include a PowerPC (registered trademark) processor provided by International Business Machines Corporation (Armonk, N.Y.), an HP Superdome with an Intel Itanium II processor provided by Hewlett Packard Co. (Palo Alto, Calif.), or other machines based on architectures provided by International Business Machines Corporation, Hewlett Packard, Intel Corporation, Oracle, or other companies, or combinations thereof. PowerPC is a trademark or registered trademark of International Business Machines Corporation in at least one jurisdiction. Itanium is a trademark or registered trademark of Intel Corporation or its subsidiaries in the United States and other countries.

[0124] The native central processing unit 12 includes one or more native registers 20, such as one or more general-purpose registers or one or more dedicated registers or both, used during processing within the environment. These registers contain information representing the state of the environment at any given point in time.

[0125] Furthermore, the native central processing unit 12 executes the instructions and code stored in the memory 14. In one specific example, the central processing unit executes the emulator code 22 stored in the memory 14. This code enables a computing environment configured with one architecture to emulate another architecture. For example, the emulator code 22 enables a machine based on an architecture other than the z / Architecture hardware architecture (such as a PowerPC processor, an HP Superdome server, etc.) to emulate the z / Architecture hardware architecture and execute software and instructions developed based on the z / Architecture hardware architecture.

[0126] Further details related to emulator code 22 will be described with reference to FIG. 7B. Guest instructions 30 stored in memory 14 include software instructions (e.g., associated with machine instructions) developed to be executed on an architecture other than the architecture of native CPU 12. For example, guest instructions 30 may have been designed to be executed on a processor based on the z / Architecture hardware architecture, but instead are being emulated on native CPU 12 (which may be, for example, an Intel Itanium II processor). As an example, emulator code 22 includes an instruction fetching routine 32 for obtaining one or more guest instructions 30 from memory 14 and optionally providing local buffering for the obtained instructions. Emulator code 22 also includes an instruction translation routine 34 for determining the type of the obtained guest instruction and converting the guest instruction into one or more corresponding native instructions 36. This conversion includes, for example, identifying the function to be performed by the guest instruction and selecting the native instruction for performing that function.

[0127] Furthermore, emulator code 22 includes an emulation control routine 40 for executing native instructions. The emulation control routine 40 causes the native CPU 12 to execute a routine of native instructions that emulate one or more previously fetched guest instructions, and at the end of such execution, may return control to the instruction fetch routine to emulate the fetch of the next guest instruction or group of guest instructions. Execution of the native instruction 36 may include loading data from the memory 14 into a register, storing the data back from the register into the memory, or performing some types of arithmetic or logical operations as determined by the conversion routine.

[0128] Each routine is implemented, for example, in software stored in memory and executed by the native central processing unit 12. In other examples, one or more of the routines or operations are implemented in firmware, hardware, software, or a combination thereof. The registers of the emulated processor may be emulated using the registers 20 of the native CPU or using locations within the memory 14. In an embodiment, the guest instruction 30, the native instruction 36, and the emulator code 22 may be present in the same memory or may be distributed among different memory devices.

[0129] The computing environments described above are merely examples of computing environments that can be used. Other environments (including, but not limited to, non-partitioned environments, partitioned environments, cloud environments, or emulated environments or combinations thereof) may be used, and embodiments are not limited to one environment. Although various examples of computing environments are described herein, one or more aspects of the present invention can be used with many types of environments. The computing environments provided herein are merely illustrative.

[0130] Each computing environment can be configured to include one or more aspects of the present invention. For example, each computing environment can be configured to perform in-line conversion processing according to one or more aspects of the present invention.

[0131] As described herein, in one or more aspects, in-line conversion is provided. In one aspect, control blocks such as transport control words are checked, and it is determined whether to apply a conversion to the data indicated by the control block. If a conversion is to be applied, the conversion indicated by the control block is applied and a result is returned. The conversion to be applied may be one of a plurality of types of conversions indicated by the control block. As an example, a microcontroller is configured to have at least the ability to determine the conversion to be applied and the ability to apply the conversion. By configuring the microcontroller to have the ability to determine the conversion to be applied and the ability to execute the conversion, it is not necessary to execute the conversion using a host controller outside the computing system and the input / output system. This can save time and improve the performance within the computing environment.

[0132] Although various embodiments are described herein, many variations and other embodiments are possible without departing from the scope of the aspects of the present invention. For example, in one embodiment, one or more conversions may be applied to the data, and each conversion to be applied is indicated in an I / O control block (e.g., transport control word 200). Other variations are also possible. Note that, unless otherwise particularly contradictory, each aspect or feature described herein and its variations may be combined with any other aspect or feature.

[0133] One or more aspects may be related to cloud computing.

[0134] This disclosure includes a detailed description regarding cloud computing, but it should be understood that the implementations of the teachings described herein are not limited to cloud computing environments. Rather, embodiments of the present invention can be implemented in combination with any other type of computing environment, whether currently known or later developed.

[0135] Cloud computing is a service - delivery model that enables convenient and on - demand network access to a shared pool of configurable computing resources (such as networks, network bandwidth, servers, processing, memory, storage devices, applications, virtual machines, and services), where the resources can be rapidly provisioned and released with minimal management effort or service - provider interaction. This cloud model can include at least five characteristics, at least three service models, and at least four deployment models.

[0136] The characteristics are as follows.

[0137] On - demand self - service: Cloud consumers can unilaterally provision computing capabilities such as server time and network storage automatically as needed, without the need for human interaction with the service provider.

[0138] Broad network access: Computing capabilities are available over the network and can be accessed via standard mechanisms, thereby facilitating use by heterogeneous thin or thick client platforms (such as mobile phones, laptops, PDAs).

[0139] Resource Pooling: The computing resources of the provider are pooled and provided to multiple consumers using a multi-tenant model. Various physical and virtual resources are dynamically allocated and reallocated according to demand. Generally, consumers have a sense of location independence because they do not manage or know the exact location of the provided resources. However, consumers may be able to specify the location at a higher level of abstraction (e.g., country, state, data center).

[0140] Rapid Elasticity: Computing capabilities can be quickly and flexibly provisioned, so that in some cases they can automatically scale out immediately and be quickly released and scale in immediately. To consumers, the computing capabilities available for provisioning often seem unlimited, and they can be purchased in any quantity at any time.

[0141] Measured Service: Cloud systems utilize a measurement function at a certain level of abstraction suitable for the type of service (e.g., storage, processing, bandwidth, active user accounts) to automatically control and optimize resource usage. It is possible to monitor, control, and report resource usage to provide transparency to both the provider and the consumer of the service being utilized.

[0142] The service model is as follows.

[0143] Software as a Service (SaaS): The function provided to consumers is that they can use the provider's application running on cloud infrastructure. The application can be accessed from various client devices via a client interface such as a web browser (e.g., webmail). Consumers do not manage or control the underlying cloud infrastructure, including the network, server, operating system, storage, and even individual application functions. However, this does not apply to limited settings of user-specific application configurations.

[0144] Platform as a Service (PaaS): The function provided to consumers is to deploy the applications created or obtained by consumers on cloud infrastructure using the programming languages and tools supported by the provider. Consumers do not manage or control the underlying cloud infrastructure, including the network, server, operating system, and storage, but can control the deployed applications and, in some cases, also control the configuration of the hosting environment.

[0145] Infrastructure as a Service (IaaS): The function provided to consumers is to prepare processors, storage, networks, and other basic computing resources on which consumers can deploy and run any software, including operating systems and applications. Consumers do not manage or control the underlying cloud infrastructure, but can control the operating system, storage, and deployed applications, and in some cases, can also partially control some network components (e.g., host firewalls).

[0146] The deployment models are as follows.

[0147] Private Cloud: This cloud infrastructure is operated exclusively for a specific organization. This cloud infrastructure can be managed by the organization or a third party and can exist on-premises or off-premises.

[0148] Community Cloud: This cloud infrastructure is shared by multiple organizations and supports a specific community with common concerns (e.g., mission, security requirements, policies, and compliance). This cloud infrastructure can be managed by the organization or a third party and can exist on-premises or off-premises.

[0149] Public Cloud: This cloud infrastructure is provided to an unspecified number of people or large industry groups and is owned by an organization that sells cloud services.

[0150] Hybrid Cloud: This cloud infrastructure is a combination of two or more cloud models (private, community, or public). It retains the entities specific to each model but is bound by standard or individual technologies to achieve data and application portability (e.g., cloud bursting for load distribution between clouds).

[0151] The cloud computing environment is a service-oriented environment that emphasizes statelessness, low coupling, modularity, and semantic interoperability. At the core of cloud computing is an infrastructure that includes a network of interconnected nodes.

[0152] Here, FIG. 8 illustrates an exemplary cloud computing environment 50. As shown, the cloud computing environment 50 includes one or more cloud computing nodes 52. In contrast, local computer devices used by cloud consumers (e.g., a PDA or mobile phone 54A, a desktop computer 54B, a laptop computer 54C, or an automotive computer system 54N or a combination thereof, etc.) can communicate. The nodes 52 can communicate with each other. The nodes 52 can be physically or virtually grouped (not shown) in one or more networks, such as, for example, the private, community, public, or hybrid clouds described above or a combination thereof. Thereby, the cloud computing environment 50 can provide infrastructure, platform, software, or a combination thereof as a service, and cloud consumers do not need to maintain resources on the local computer device. Note that the types of computer devices 54A - N shown in FIG. 8 are merely exemplary, and it should be understood that the computing nodes 52 and the cloud computing environment 50 can communicate with any type of electronic device via any type of network or network addressable connection (e.g., using a web browser) or both.

[0153] Here, FIG. 9 shows a set of functional abstraction layers provided by the cloud computing environment 50 (FIG. 8). It should be understood in advance that the components, layers, and functions shown in FIG. 9 are merely exemplary, and the embodiments of the present invention are not limited thereto. As shown, the following layers and corresponding functions are provided.

[0154] The hardware and software layer 60 includes hardware components and software components. Examples of hardware components include mainframe 61, servers 62 based on reduced instruction set computer (RISC) architecture, server 63, blade server 64, storage device 65, and network and network components 66. In some embodiments, software components include network application server software 67 and database software 68.

[0155] The virtualization layer 70 provides an abstraction layer. From this layer, virtual entities such as virtual server 71, virtual storage 72, virtual network 73 including a virtual private network, virtual applications and operating systems 74, and virtual clients 75 can be provided.

[0156] As an example, the management layer 80 can provide the following functions. Resource provisioning 81 enables the dynamic procurement of computing resources and other resources used to execute tasks within a cloud computing environment. Metering and pricing 82 enables cost tracking when resources are utilized within a cloud computing environment and invoicing or billing for the consumption of these resources. As an example, these resources may include licenses for application software. Security enables not only the protection of data and other resources but also the identification and authentication of cloud consumers and tasks. The user portal 83 provides access to the cloud computing environment for consumers and system administrators. Service level management 84 enables the allocation and management of cloud computing resources so that the required service levels are met. Service quality assurance (SLA) planning and fulfillment 85 enables the advance arrangement and procurement of cloud computing resources expected to be needed in the future according to the SLA.

[0157] The workload layer 90 provides examples of functions that can utilize a cloud computing environment. Examples of workloads and functions that can be provided from this layer include mapping and navigation 91, software development and lifecycle management 92, delivery of virtual classroom education 93, data analysis processing 94, transaction processing 95, and an in-line packet conversion processing keyword recommendation program 96.

[0158] Aspects of the present invention can be a system, method, computer program product, or combination thereof integrated at any possible level of technical detail. The computer program product may include a computer-readable storage medium storing computer-readable program instructions for causing a processor to execute aspects of the present invention.

[0159] The computer-readable storage medium can be a tangible device that can hold and store instructions for use by an instruction execution device. The computer-readable storage medium can, by way of example, be an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or a suitable combination thereof. A more specific example of the computer-readable storage medium can include a portable computer diskette, a hard disk, a RAM, a ROM, an EPROM (or flash memory), an SRAM, a CD-ROM, a DVD, a memory stick, a floppy disk, a punch card, a mechanically encoded device having instructions recorded thereon such as raised structures within grooves, and suitable combinations thereof. As used herein, the computer-readable storage medium should not be construed as being a transient signal per se, such as a radio wave or other freely propagating electromagnetic wave, an electromagnetic wave propagating through a waveguide or other transmission medium (e.g., an optical pulse passing through an optical fiber cable), or an electrical signal transmitted through a wire.

[0160] The computer-readable program instructions described herein are downloadable from a computer-readable storage medium to respective computing devices / processing devices. Alternatively, they are downloadable via a network (e.g., the Internet, a LAN, a WAN, or a wireless network or combinations thereof) to an external computer or external storage device. The network can comprise copper transmission cables, optical transmission fibers, wireless transmission, routers, firewalls, switches, gateway computers or edge servers or combinations thereof. A network adapter card or network interface within each computing device / processing device receives the computer-readable program instructions from the network and transfers the computer-readable program instructions for storage on a computer-readable storage medium in each respective computing device / processing device.

[0161] The computer-readable program instructions for carrying out the operations of the present invention may be source code or object code written in any combination of one or more programming languages, including assembler instructions, instruction set architecture (ISA) instructions, machine instructions, machine-dependent instructions, microcode, firmware instructions, state-setting data, configuration data for integrated circuits, or object-oriented programming languages such as Smalltalk and C++, and procedural programming languages such as the "C" programming language and similar programming languages. The computer-readable program instructions can be executed entirely on the user's computer as a stand-alone software package, or partially on the user's computer. Alternatively, it can be executed partially on the user's computer and partially on a remote computer, or entirely on a remote computer or server. In the latter case, the remote computer may be connected to the user's computer via any type of network including a LAN or WAN, or connected to an external computer (e.g., via the Internet using an Internet service provider). In some embodiments, an electronic circuit, including, for example, a programmable logic circuit, a field programmable gate array (FPGA), and a programmable logic array (PLA), can execute the computer-readable program instructions by utilizing the state information of the computer-readable program instructions to customize the electronic circuit for the purpose of implementing aspects of the present invention.

[0162] Aspects of the present invention are described herein with reference to flowchart illustrations and / or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the invention. Each block in the flowchart illustrations and / or block diagrams, and combinations of multiple blocks in the flowchart illustrations and / or block diagrams, can be implemented by computer-readable program instructions.

[0163] These computer-readable program instructions can be provided to a processor of a computer or other programmable data processing apparatus to produce a machine, such that the instructions executed via the processor of such a computer or other programmable data processing apparatus create means for implementing the functions / acts specified in one or more blocks in a flowchart and / or block diagram. These computer-readable program instructions may further be stored in a computer-readable storage medium that can direct a computer, programmable data processing apparatus, or other device to function in a particular manner, such that the computer-readable storage medium storing the instructions constitutes a manufacture including instructions for implementing the function / act manner specified in one or more blocks in a flowchart and / or block diagram.

[0164] Also, the computer-readable program instructions may be loaded onto a computer, other programmable apparatus, or other device to cause a series of operational steps to be performed on the computer, other programmable apparatus, or other device to produce a computer-executed process, such that the instructions executed on the computer, other programmable apparatus, or other device implement the functions / acts specified in one or more blocks in a flowchart and / or block diagram.

[0165] Flowcharts and block diagrams in the drawings illustrate the architecture, functionality, and operation of possible implementations 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 can represent a module, segment, or portion of instructions that include one or more executable instructions for performing a particular logical function. In some other implementations, the functions shown within a block may be executed in an order different from that shown in each figure. For example, depending on the relevant functions, two consecutively shown blocks may actually be accomplished as one step, may be executed simultaneously or substantially simultaneously, may be executed in a partially or fully temporally overlapping manner, or the blocks may be executed in the reverse order in some cases. Note that each block in a block diagram or flowchart or both, and combinations of multiple blocks in a block diagram or flowchart or both, can be executed by a dedicated hardware-based system that performs a particular function or operation, or executes a combination of dedicated hardware and computer instructions.

[0166] In addition to the above, one or more aspects may be provided, offered, deployed, managed, serviced, etc. by a service provider that provides management of a customer environment. For example, the service provider can create, maintain, support, etc. computer code or computer infrastructure or both for implementing one or more aspects for one or more customers. In return, the service provider can receive payment from the customer, for example, based on a subscription or fee contract or both. In addition to or instead of this, the service provider may also receive payment from the sale of advertising content to one or more third parties.

[0167] In one aspect, to implement one or more embodiments, an application may be deployed. As an example, the deployment of the application includes providing a computer infrastructure operable to implement one or more embodiments.

[0168] As a further aspect, a computing infrastructure may be deployed that includes integrating computer-readable code into a computing system. In this case, the code in combination with the computing system can implement one or more embodiments.

[0169] As yet another aspect, a process for integrating a computing infrastructure may be provided that includes integrating computer-readable code into a computer system. The computer system includes a computer-readable medium. The computer medium includes one or more embodiments. The code in combination with the computer system can implement one or more embodiments.

[0170] Although various embodiments have been described above, these are merely examples. For example, computing environments of other architectures can be used to incorporate and use one or more embodiments. Further, different control blocks, commands, or operations may be used. Additionally, different types of conversions may be specified. Many variations are possible.

[0171] This specification describes various aspects. Further, many variations are possible without departing from the scope of the aspects of the invention. Unless otherwise contradictory, each aspect or feature described herein, and its variations, may be combined with any other aspect or feature.

[0172] Furthermore, other types of computing environments can also benefit from and use the present invention. As an example, a data processing system suitable for storing or executing program code or both, including at least two processors directly or indirectly coupled to a memory element via a system bus, can be used. The memory elements include, for example, local memory used during actual execution of program code, bulk storage, and cache memory that provides temporary storage of at least some program code to reduce the number of times code is retrieved from bulk storage during execution.

[0173] Input / output or I / O devices (although not particularly limited, such as keyboards, displays, pointing devices, DASDs, tapes, CDs, DVDs, thumb drives, and other memory media, etc.) can be coupled to the system directly or via an I / O controller. Also, a network adapter can be coupled to the system to enable the data processing system to be coupled to other data processing systems, remote printers, or storage devices via a private network or a public network. Examples of available network adapters include modems, cable modems, Ethernet cards, and the like.

[0174] The terms used herein are for the purpose of describing particular embodiments only and are not intended to limit the various embodiments. In this specification, the singular forms "a," "an," and "the" are intended to include the plural forms as well, unless the context clearly indicates otherwise. Further, in this specification, when the terms "comprises," "comprising," or both are used, they specify the presence of the described features, integers, steps, operations, elements, or components or combinations thereof, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, or groups thereof or combinations thereof.

[0175] If present in the following claims, all corresponding structures, materials, acts, and equivalents of means-plus-function elements or step-plus-function elements are intended to include any structure, material, or act for performing the function in combination with other claimed elements that are specifically claimed. The description of one or more embodiments has been presented for purposes of illustration and description and is not intended to be exhaustive or to limit the invention to the forms disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art. The embodiments were chosen and described in order to best explain the various aspects and practical applications of the invention and to enable others of ordinary skill in the art to understand the invention for various embodiments with various modifications as are suited to the particular use contemplated.

Claims

1. A computer program for facilitating processing within a computing environment, comprising: obtaining, by a conversion engine, data to be converted; determining, by the conversion engine, a selected conversion to be applied to the data, the determination being made using an input / output control block that includes at least one field used in determining the selected conversion to be applied; executing, by the conversion engine, the selected conversion based on determining the selected conversion to be applied; causing a computer to execute; wherein the selected conversion is one of a plurality of types of conversions specified by the input / output control block, the plurality of types of conversions including artificial intelligence conversion, packet filtering, statistical analysis, telemetry, and multicast replication.

2. The computer program according to claim 1, wherein obtaining the data by the conversion engine is based on an instruction that the conversion should be applied to the data, the instruction being provided by the input / output control block.

3. The computer program according to claim 2, wherein the instruction is provided by the at least one field of the input / output control block, the at least one field of the input / output control block including a conversion type field used in determining whether to apply the conversion.

4. The computer program according to claim 1, wherein the at least one field of the input / output control block includes a conversion type field, and determining the selected conversion includes checking the conversion type field for an instruction for the selected conversion.

5. The computer program according to claim 4, wherein the at least one field further includes a conversion subtype field, and determining the selected conversion further includes checking the conversion subtype field for an instruction for the selected conversion.

6. The computer program according to claim 1, wherein the input / output control block is a transport control word used when transmitting the data between a memory of a computing system and an external storage device coupled to the computing system via an input / output subsystem.

7. The computer program according to claim 6, wherein the transport control word includes a conversion type field and a conversion subtype field, and determining the selected conversion includes checking at least one of the conversion type field and the conversion subtype field of the transport control word.

8. The computer program according to claim 1, wherein performing at least the determining is executed inline with respect to the processing of the data between a memory of a computing system and an external storage device coupled to the computing system.

9. A computer system for facilitating processing within a computing environment, including a memory, and at least one processor communicating with the memory, wherein the computer system obtains data to be converted by a conversion engine; determines a selected conversion to be applied to the data by the conversion engine, the determination being made using an input / output control block, the input / output control block including at least one field used for determining the selected conversion to be applied; executes the selected conversion by the conversion engine based on determining the selected conversion to be applied; and the selected conversion is one of a plurality of types of conversions specified by the input / output control block, the plurality of types of conversions including artificial intelligence conversion, packet filtering, statistical analysis, telemetry, and multicast replication, and is configured to execute a method.

10. The computer system according to claim 9, wherein the input / output control block is a transport control word used when transmitting the data between a memory of a computing system and an external storage device coupled to the computing system via an input / output subsystem.

11. The transport control word includes a conversion type field and a conversion subtype field, and determining the selected conversion includes checking at least one of the conversion type field and the conversion subtype field. The computer system according to claim 10.

12. The selected conversion is one of a plurality of types of conversions specified by the input / output control block. The computer system according to claim 9.

13. At least performing the determination is executed inline with respect to the processing of the data between the memory of the computing system and an external storage device coupled to the computing system. The computer system according to claim 9.

14. A computer-implemented method for facilitating processing in a computing environment, obtaining, by a conversion engine, data to be converted; determining, by the conversion engine, a selected conversion to be applied to the data, the determination being made using an input / output control block, the input / output control block including at least one field used for determining the selected conversion to be applied; executing, by the conversion engine, the selected conversion based on determining the selected conversion to be applied; including, The selected conversion is one of a plurality of types of conversions specified by the input / output control block, and the plurality of types of conversions include artificial intelligence conversion, packet filtering, statistical analysis, telemetry, and multicast replication. A computer-implemented method.

15. The input / output control block is a transport control word used when transmitting the data between the memory of the computing system and an external storage device coupled to the computing system via an input / output subsystem. The computer-implemented method according to claim 14.

16. The transport control word includes a conversion type field and a conversion subtype field, and determining the selected conversion includes checking at least one of the conversion type field and the conversion subtype field, the computer-implemented method according to claim 15.

17. The selected conversion is one type of conversion among a plurality of types of conversions specified by the input / output control block, the computer-implemented method according to claim 14.

18. At least performing the determination is executed inline with respect to the processing of the data between a memory of a computing system and an external storage device coupled to the computing system, the computer-implemented method according to claim 14.

Citation Information

Patent Citations

  • Disk controller

    JP1999232036A

  • Reproduction control circuit, integrated circuit, and information reproducing device

    JP2006277815A

  • Raid 1 write mirroring method for host adapters

    US6701385B1