Bi-directional data transfer within a single i/o operation
Abstract
A computer program product, apparatus, and a method for facilitating input/output (I/O) processing for an I/O operation at a host computer system configured for communication with a control unit. The method includes receiving, by a control unit, a command block configured to hold a plurality of commands including an input command and/or an output command, the plurality of commands specified by a transport command word (TCW) including a read indicator configured to indicate whether the I/O operation includes input data and a write indictor configured to indicate whether the I/O operation includes output data; based on the command block holding at least one output command, receiving the output data and executing the at least one output command; and based on the command block holding at least one input command, forwarding the input data to the channel subsystem for storage at a location specified by the TCW.
Term
2.4 yearsto projected expiry
Projected expiry 9 February 2029, counted from filing; an application has no term until it is granted.
- Priority
- Filed
- Published
- Today
- Projected expiry
10 claims: 3 independent, 7 dependent
- 1Patent claims Zastrzeżenia patentowe 1. A method of supporting I / O processing during I / O operations using a main computer system that communicates with the control module, including:1. Sposób wspomagania przetwarzania We/Wy podczas wykonywania operacji We/Wy z wykorzystaniem głównego systemu komputerowego komunikującego się z modułem sterującym, obejmujący: obtaining (1202) a transport control word for an I / O operation including both input and output, wherein the transport control word determines the location of the output and the location to store the input;uzyskanie (1202) słowa sterowania transportem dotyczącego operacji We/Wy obejmującej zarówno dane wejściowe, jak i dane wyjściowe, gdzie słowo sterowania transportem określa lokalizację danych wyjściowych i lokalizację przeznaczoną do zapisywania danych wejściowych;pobieranie (1206) danych wyjściowych odpowiadających lokalizacji określonej przez słowo sterowania transportem;retrieving (1206) output data corresponding to the location determined by the transport control word;przesłanie (1208) operacji We/Wy i danych wyjściowych do modułu sterującego w celu ich wykonania;sending (1208) I / O operations and output to the control module for execution;odebranie (1210) danych wejściowych przesyłanych przez moduł sterujący;i zapisanie (1212) danych wejściowych w lokalizacji określonej przez słowo sterowania transportem jako przeznaczona do zapisania danych wejściowych. receiving (1210) the input data sent by the control module;and storing (1212) the input data at the location specified by the transport control word as intended for storing the input data.
- 9A system comprising elements adapted to carry out all the steps of the method according to any one of the preceding claims. 9. System obejmujący elementy przystosowane do przeprowadzania wszystkich etapów sposobu według dowolnego z powyższych zastrzeżeń patentowych.
- 10A computer program comprising instructions for carrying out all the steps of the method according to any one of the preceding claims, wherein said computer program is executed using a computer system. 10. Program komputerowy obejmujący instrukcje umożliwiające przeprowadzenie wszystkich etapów sposobu według dowolnego z powyższych zastrzeżeń patentowych, przy czym wspomniany program komputerowy wykonywany jest z wykorzystaniem systemu komputerowego. International Business Machines Corporation; USA Pełnomocnik:International Business Machines Corporation;USA Proxy: FIG. 1 FIG. 1 MAIN SYSTEM SYSTEM GŁÓWNY MEMORY PAMIĘĆ GŁOWI IA HEAD IA ELEMENT STERUJĄCY PAM. MASOWĄ MEMORY CONTROL ELEMENT massaging CPU CPU PODSYSTEM OBSŁUG SERVICE SUBSYSTEM KA IIALOW KA IIALOW KAM. ;KAM. KAM. ;KAM. KAII. Kaii. 122 122 MODULE MODUŁ MODULE MODUŁ MODULE MODUŁ CONTROL STERUJĄCY CONTROL STERUJĄCY CONTROL STERUJĄCY 112 / 112 / JRZĄDZENII: JRZĄDZENII: URZĄDZENII URZĄDZENII JRZĄDZENII: JRZĄDZENII: WF OUT WF WY I / O WE/WY I / O WE/WY JRZĄDZENII JRZĄDZENII WF'WY < z oj 5 . IU o = WF'WY <with father 5. IU o = LL ί g | in LL ί g| w SŁOWO POLECENIA OBSŁUGI KANAŁU WORD OF THE CHANNEL OPERATION COMMAND L Ł FIG. 2B FIG. 2B STAN TECHNIKI TECHNICAL STATE From «3 Od «3 OJ From OJ Od FIG. 3 FIG. 3 STAN TECHNIKI TECHNICAL STATE FIG.4 FIG.4 CLOSING AND OPENING ONE EXCHANGE ZAMKNIĘCIE I OTWARCIE JEDNEJ WYMIANY CM CM Axis O s 6 discloses FIG.6 STAN TECHNIKI TECHNICAL STATE FIG. 7 FIG. 7 FIG. 9 FIG. 9 FIG. 10 FIG. 10 THREE SEQUENCES TRZY SEKWENCJE
Independent claims3
78 paragraphs in 1 section, as filed
[0001] The present invention relates generally to processing input / output (I / O) data, and in particular to providing an I / O operation involving both input and output data.
BACKGROUND OF THE INVENTION [0002] Input / output (I / O) operations are used to transfer data between the memory and the I / O devices of an I / O processing system. In particular, performing I / O operations saves data from memory to one or more I / O devices, and saves data from memory to one or more I / O devices.
[0003] In order to provide easier processing of I / O operations, the I / O subsystem of the I / O processing system is used. The I / O subsystem is connected to main memory and the I / O devices of the I / O processing system, and it directs the information flow between the memory and the I / O devices. One example of I / O subsystems is the channel handling subsystem. The channel maintenance subsystem uses the channel path as the communication medium. Each channel path includes a channel connected to the control module, wherein the control module is further connected to one or more I / O devices.
[0004] The channel support subsystem may use to transfer data between I / O devices and the channel command word (CCW) memory. The command word for the channel service specifies which command should be executed. For commands that initiate certain I / O operations, the word channel service command indicates the memory area associated with the operation, the action taken regardless of the end of the transfer to or from the area, as well as other options.
[0005] During I / O processing, the channel retrieves from the memory a list of the words of the channel handling commands. The channel analyzes each command from the list of command words of the channel service and sends to the control module connected to the channel the number of commands, each command is contained in a separate entity. The commands are then processed by the control module. The channel tracks the status of each command and checks when to send the next set of commands to the control module for processing. The channel ensures that each command is sent to the control module in a separate entity. The channel also performs inference certain information related to processing of the response sent by the control module with respect to each command.
[0006] Performing I / O processing based on channel service command words can be associated with a significant computational load on the channel service subsystem because the channels analyze the channel service command words, track status information, and respond to responses sent by control modules. Therefore, it may be beneficial to shift from the channel service subsystem to the control modules of the computational load associated with the interpretation and management of the words of channel service commands and status information. Simplifying the role of channels in communication between control modules and the operating system in an I / O processing system can increase communication throughput because fewer handshaking operations are performed. Simplifying the role of channels in communication can include grouping multiple commands into a single I / O operation. Changing the sequence of commands by grouping two or more commands in a single I / O operation can, however, cause the I / O operation to include both input and output. I / O operations can now support a single data area that can be used as data input and data output, but this is not possible in one I / O operation. This limits the types of commands that can be grouped together in a single I / O operation, and thus also limits the increase in bandwidth that can be achieved by grouping commands. In the current state of the art, there is therefore a need for a method of transferring input data and output data in a single I / O operation.
[0007] US 6,230,218 discloses a method of facilitating I / O processing with respect to I / O operations in a host computer system.
BRIEF SUMMARY OF THE INVENTION [0008] The invention provides a method according to claim 1 and a corresponding computer system and program.
BRIEF DESCRIPTION OF THE DRAWINGS [0009] The subject of the invention is indicated and clearly defined by the claims at the end of the description. The above and other purposes, properties and advantages of the invention will become apparent through the following detailed description made in relation to the accompanying drawings, in which:
Fig. 1 shows one embodiment of an I / O processing system including and using one or more aspects of the present invention;
Fig. 2A illustrates one example of a channel command word known in the prior art;
Fig. 2B is one example of a prior art channel handling program using the word channel handling command;
Fig. 3 shows one embodiment of the prior art link protocol used in communication between the channel and the control module to execute the channel program using the word of the channel command command shown in Fig. 2B;
Fig. 4 shows one embodiment of a channel handling program using the transport control word (TCW) in accordance with one aspect of the present invention;
Fig. 5 shows one embodiment of the link protocol used in communication between the channel and the control module to execute the channel program using the transport control word (TCW) shown in Fig. 4, which is in accordance with one aspect of the present invention;
Fig. 6 shows one embodiment of the prior art link protocol used in communication between the channel and the control module to execute four read commands of the channel program using the word channel service command;
Fig. 7 shows one embodiment of a link protocol used in communication between the channel and the control module to execute four channel read program read commands using the word channel service command that is in accordance with one aspect of the present invention;
Fig. 8 shows one embodiment of a control module and channel handling subsystem that is in accordance with one aspect of the present invention;
Fig. 9 illustrates one embodiment of the transport control word (TCW) that is in accordance with one aspect of the present invention;
Fig. 10 shows one embodiment of a channel program using a transport control word (TCW) that is in accordance with one aspect of the present invention;
Fig. 11 illustrates one embodiment of the link protocol used in communication between the channel and the control module to execute the channel program using the transport control word (TCW) shown in Fig. 10, which is in accordance with one aspect of the present invention;
Fig. 12 illustrates one embodiment of a two-way data transfer process in a single I / O operation that is in accordance with one aspect of the present invention;
Fig. 13 shows one embodiment of a manufactured product employing one or more aspects of the present invention.
[0010] The detailed description describes the preferred embodiments of the invention together with their advantages and features, and are merely an example and refer to the attached drawings.
DETAILED DESCRIPTION OF THE INVENTION [0011] According to one aspect of the present invention, input / output (I / O) processing has been facilitated by providing the ability to include both input and output data in a single I / O operation. Each of the I / O operations can therefore be used to transfer both the input stream and the output stream. This facilitates I / O processing by limiting communication between the components of the I / O processing system used to perform the I / O processing. For example, the number of exchanges and sequences between the I / O communication adapter, such as the channel and control module, has been reduced. This was achieved by sending many commands from the I / O communication adapter to the control module in the form of a single object intended for execution by the control module and by sending by the control module data resulting from the execution of commands (if such data exists) in the form of a single object. Many device handling command (DCW) words sent as a single object to the control module can contain both read and write commands.
[0012] Many commands are contained in a block, referred to herein as a transport command control block (TCCB), whose address is specified in the transport control word (TCW). The transport control word (TCW) is sent by the operating system (OS) or other application to the I / O communication adapter, which in turn sends the transport control block (TCCB) to the control module in a message containing commands for processing. The control module processes each of the commands, leaving the status of each command to be monitored by the I / O communication adapter. Many commands are also called a channel handler that is evaluated and executed by the control module rather than by the I / O communication adapter.
[0013] In an exemplary embodiment of the invention, the transport control word (TCW) provides channel indicators to all control blocks required to perform I / O operations. In an exemplary embodiment of the invention, the transport control word (TCW) includes indicators of the input address and output address. This allows data to be sent in both directions (for example, from the channel to the control module and from the control module to the channel) using a single I / O operation.
[0014] One example of an I / O processing system comprising and using one or more aspects of the present invention is described with reference to Fig. 1. The I / O processing system 100 includes a main system 101, which further includes, for example, main memory 102, one or more processors (CPUs) 104, storage control element 106 and channel handling subsystem 108. The main system 101 may be in the form of a large computing system, for example a mainframe computer system or a server. The I / O processing system 100 also includes one or more control modules 110 and one or more I / O devices 112, which will be described below.
[0015] Main memory 102 stores data and programs that can be input using I / O devices 112. Main memory 102 may include, for example, one or more operating systems (OS) 103, which are run using one or more more processors (CPUs) 104. For example, the Linux® 103 operating system and the z / OS® 103 operating system can be started using a single processor (CPU) 104 using separate instances of virtual machines. Main memory 102 is addressed directly and provides efficient data processing by processors (CPUs) 104 and channel support subsystem 108.
[0016] The processor (CPU) 104 is the control center of the I / O processing system 100. It has queuing and processing functions for executing instructions, interrupt functions, timing functions, and provides initial program loading and other machine functions. The processor (CPU) 104 is connected to the storage control element 106 via a connection 114, e.g. a two-way bus or a one-way bus.
[0017] Storage control element 106 is connected to main memory via connection 116 (e.g., bus), processors (CPU) 104 via connection 114, and channel support subsystem 108 via connection 118. Storage control element 106 controls for example, queuing and executing requests sent by one or more processors (CPUs) 104 and channel handling subsystem 108.
[0018] In an exemplary embodiment of the invention, the channel subsystem 108 provides a communication interface between the main system 101 and the control modules 110. The channel subsystem 108 is connected in the manner described above to the storage control element 106 and to each of the control modules 110 via connection 120 , for example, a serial link. Connection 120 may be implemented in any manner known in the art, for example using an optical link comprising single-mode or multi-mode waveguides that are fiber channel backbone elements (e.g., fiber channel networks). Channel handling subsystem 108 directs the flow of information between I / O devices 112 and main memory 102. It offloads processors (CPUs) 104 from the task of communicating directly with I / O devices 112 and allows data to be processed simultaneously with I / O processing. Channel service subsystem 108 uses one or more 122 channel paths constituting the communication links used when managing information flow to or from I / O devices 112. As part of the I / O processing, the channel subsystem 108 also performs track management functions that include checking the availability of channel path, selecting the available channel path 122, and initiating operations by the I / O devices 112.
[0019] Each channel path 122 includes a channel 124 (in one example, the channels 124 are in the channel handling subsystem 108, as shown in Figure 1), one or more control modules 110 and one or more connections 120 In another example, it is also possible to use one or more dynamic switches (not shown) that form part of the channel path 122. The dynamic switch can be connected to channel 124 and control module 110, providing the possibility of physical connection of two links that lead to the switch. In another example, it is also possible to use multiple systems, and thus many channel handling subsystems (not shown in the drawings), which are connected to one or more control modules 110.
[0020] The channel handling subsystem 108 also has subchannels (not shown in the drawings). One dedicated sub-channel is associated with each I / O device 112 available to the program through the channel subsystem 108. A subchannel (for example, a data structure such as an array) is a logical device form for the program. Each of the sub-channels provides information to the channel subsystem 108 about the associated I / O device 112 and its connections. The subchannel also provides information about I / O operations and other functions associated with the associated I / O device 112. The subchannel is the element through which the channel subsystem 108 provides information about the associated I / O devices 112 to processors (CPUs) 104 that obtain this information by executing the I / O instruction.
[0021] The channel support subsystem 108 is connected to one or more control modules 110. Each control module 110 has logic enabling the operation of one or more I / O devices 112, controlling them and adjusting using common programs supporting the properties of each of the We devices I / O 112 to the link interface provided by channel 124. Common support programs provide I / O operations, indications regarding the status of the I / O device 112 and control module 110, control of data synchronization via channel path 122, and control of certain levels of the I / O device 112.
[0022] Each of the control modules 110 is connected via connection 126 (e.g., bus) to one or more I / O devices 112. I / O devices 112 receive information or store information in main memory 102 and / or other memory. Examples of 112 I / O devices include, among others, card readers and perforators, memory modules using magnetic tapes, direct access mass storage devices, keyboards, printers, pointing devices, devices for remote data processing, communication controllers, equipment using sensors.
[0023] One or more of the above components of the I / O processing system 100 are further described in "IBM® z / Architecture Principles of Operation”, publication No. SA22-783205, 6th edition, April 2007; U.S. Patent No. 5,461,721 entitled "System For Transferring Data Between I / O Devices And Main Or Expanded Storage Under Dynamic Control Of Independent Indirect Address Words (IDAWS)", Cormier et al., October 24, 1995 and U.S. Patent No. 5,526,484 entitled "Method And System For Pipelining The Processing Of Channel Command Words ”, Casper et al., June 11, 1996. IBM is a registered trademark of International Business Machines Corporation, Armonk, New York, United States. Other names used in this description may be registered trademarks, trademarks or product names of International Business Machines Corporation or other companies.
[0024] In one embodiment of the invention, channel control command (CCW) words are used to transfer data between I / O devices 112 and memory 102. The Channel Handling Command (CCW) words specify the command to be executed and contain other fields used to control processing. One example of a channel command word (CCW) word is described with reference to Fig. 2A. The channel handling command (CCW) word 200 includes, for example, command code 202 specifying the command to be executed (e.g., read, reverse read, control, detection or write); multiple tags 204 used to control the I / O operation; for commands specifying data transfer, count field 206, which specifies the number of bits contained in the mass storage area and marked by the channel service command word (CCW) as being to be transmitted; and a data address 208 indicating in the case of direct addressing a location in the main storage containing the data or, in the case of using modified indirect addressing, a list (e.g., a continuous list) of the words modified indirect data addressing (MIDAW) that are to be processed. Modified indirect addressing is also described in U.S. Patent Application Publication No. 2008/0043563, entitled "Flexibly Controlling The Transfer Of Data Between Input / Output Devices And Memory", Brice et al., August 15, 2006.
[0025] The one or more channel handling command words (CCW) arranged so that they can be executed form a channel handling program, also referred to herein as a channel handling program using the channel handling command word (CCW). A channel handler program using the word channel handler command (CCW) is created, for example, by the operating system or other software. The software creates the channel handling command (CCW) words and sets the memory addresses allocated to the channel maintenance program. An example of a channel handler program using the channel handler command word (CCW) is described with reference to Fig. 2B. Channel service program 210 using the channel service command word (CCW) includes, for example, the channel service command word (CCW) with a defined range 212 including a pointer 214 defining in memory the location of the defined data range 216 that should be used in the scope definition command. In this example, channel transmission (TIC) 218 is performed after a range definition command that associates the channel handler with another memory area (e.g., application area) including one or more other channel handling command (CCW) words, e.g., record site 217 including a pointer 219 relating to site record data 220 and one or more channel handling command (CCW) words for reading 221. Each reading channel command (CCW) word 220 includes an indicator 222 associated with data area 224. The data area includes an address for direct access to data or data addressing words (e.g., MIDAW or IDAW) that can provide indirect access to data. The channel service program using the channel service command word (CCW) 210 further includes a predetermined area in the channel service subsystem defined by the device address called by the subchannel in the case of status 226 resulting from the execution of the channel service program using the channel service command word (CCW).
[0026] Processing of a channel handler using the channel handler word (CCW) is described with reference to Fig. 3 as well as with reference to Fig. 2B. Fig. 3 is in particular an example of the various exchanges and sequences that occur between a channel and the control module when executing a channel handler program using the channel handler word (CCW). In this example, the link protocol used in communication is FICON (Fiber Connectivity). Information on the FICON protocol can be found in the publication "Fiber Channel Single Byte Command Code Sets-3 Mapping Protocol" (FC-SB-3), T11 / Projekt 1357-D / Ed. 1.6, INCITS (March 2003).
[0027] Referring to Fig. 3, the channel 300 opens an exchange with the control module 302 by sending a range definition command and associated data 304 to the control module 302. The command is taken from the channel service command word (CCW) with the defined range 212 (Fig. 2B), while the data is obtained from the data area of the defined range 216. Channel 300 uses channel transmission (TIC) 218 to determine the location of the location record of the channel service command word (CCW) and the channel service command word (CCW) for reading. Retrieves site record command 305 (Fig. 3) from the channel service command word (CCW) for site record 217 (Fig. 2B) and retrieves data from site record data 220. Read command 306 (Fig. 3) is taken from the service command word channel (CCW) regarding 221 reading (Fig. 2B). They are sent to control module 302.
[0028] The control module 302 opens the exchange 308 with the channel 300 in response to opening the exchange via the channel 300. This can happen before or after the location command 305 and / or the reading command 306. Along with opening the exchange, a response is also sent to channel 300 (CMR). The CMT response informs channel 300 that the control module 302 is active and in operation.
[0029] The control module 302 sends the requested data 310 to channel 300. In addition, the control module 302 provides status information to the channel 300 and closes exchange 312. In response, the channel 300 writes data, checks the status and closes exchange 314, thus indicating to the control module 302 that status information has been received.
[0030] The processing of the above channel handling program using the channel handling command word (CCW) to read 4k data requires the opening and closing of two exchanges and the use of seven sequences. The total number of exchanges and sequences between the channel and the control module has been reduced by including many channel service program commands in the transport command control block (TCCB). A channel, e.g., channel 124 shown in Fig. 1, uses the transport control word (TCW) to identify the location of the transport command control block (TCCB), as well as locations providing access and storing status and data associated with the execution of the channel handling program. The transport control word (TCW) is interpreted by channel 124, and is not sent by the control module 110 or visible to that module.
[0031] Referring to Fig. 4, one example of a channel handling program for reading 4k data is described, wherein, compared to the solution shown in Fig. 2B, instead of the separate channel handling command words (CCW) a transport command control block ( TCCB). As seen, the channel handling program 400, also referred to herein as the channel handling program using the transport control word (TCW), includes the transport control word (TCW) 402 specifying the location of the transport command control block (TCCB) 404 in memory as well as the location in 406 data area memory or TIDAL 410 (i.e. a list of words indirectly addressing data in transport mode (TIDAW), which are similar to the words MIDAW) indicating data area 406 and status area 408.
[0032] Processing of the channel handler program using the transport control word (TCW) is described with reference to Fig. 5. The link protocol used in communication may be, for example, Fiber Channel Protocol (FCP). In particular, three phases of the FCP link protocol are used, which allows the use of main bus adapters that support the FCP protocol to perform controlled data transfers that are controlled by the channel service command words (CCW). The FCP protocol and its phases are described in the publication "Information Technology - Fiber Channel Protocol for SCSI, Third Version (FCP-3)" T10 Project 1560-D, edition 4, 13 September 2005.
[0033] Referring to Fig. 5, the channel 500 opens an exchange with the control module 502 by sending to the control module 502 the transport command block (TCCB) 504. In one example, the transport command block (TCCB) 504 and the init sequence are sent to the module 502 in the FCP command, called the FCP_CMND (IU) information unit, or the IU transport command. The control module 502 executes many commands contained in the transport command control block (TCCB) 504 (e.g., range definition command, record location command, read command in the form of device control command words (DCW)) and sends 506 data to channel 500, which is done for example using the FCU_Data IU. It also provides status information and closes 508 exchange. In one example, the final status is sent in the FCP status frame including the activity bit contained, for example, in byte 10 or 11 of the main content of the FCP_RSP IU, which is also called the IU transport response. The main content of FCP_RSP IU can be used to send the FICON final status together with additional status information.
[0034] In a further example, channel 500 uses 4k FCP link protocol phase data to store client data, as follows:
1. Transfer Command Control Block (TCCB) in FCP_CMND IU.
2. Transferring the data IU unit and initiation sequence to the 502 control module (FCP not ready to transfer).
3. The final status is sent in the FCP status frame including the activity bit contained, for example, in byte 10 or 11 of the main content of the FCP_RSP IU. The FCP_RES_INFO field or status field is used to send the FICON final status together with additional status information.
[0035] When executing the channel handling program using the transport control word (TCW) shown in Fig. 4, it is required to open and close only one exchange (see also Fig. 5) instead of the two exchanges used for the channel service program using the channel service command word (CCW) shown in Fig. 2B (see also Fig. 5). In the case of a channel program using the transport control word (TCW), there are three communication sequences (see Figs. 4 to 5) instead of the seven sequences used for a channel program using the channel command word (CCW) (see Fig. 2B to Fig. 3).
[0036] The number of exchanges and sequences remains unchanged for a channel handling program using the transport control word (TCW), even after additional commands have been added to the program. For example, it is possible to compare channel service program communication using the channel service command word (CCW) shown in Fig. 6 with channel service program communication using the transport control word (TCW) shown in Fig. 7. In the case of a channel handler using the word channel handler (CCW) in Fig. 6, each command (e.g., define range command 600, record location command 601, read command 604, read command 606, record location command 607 and read command 608 ) is sent from channel 610 to the control module 612 in a separate sequence. In a separate sequence, each block containing 4k data (e.g., data 614 - 620) is also sent from channel 610 to control module 612. This channel handler program using the word command channel (CCW) requires the opening and closing of two exchanges (e.g., opening exchanges 622, 624 and closing exchanges 656, 628) and fourteen communication sequences. For comparison, in the case of a channel handling program using the transport control word (TCW) in Fig. 7 that performs the same task as a channel handling program using the channel command word (CCW) in Fig. 6, three sequences and one exchange are required.
[0037] As shown in Figure 7, channel 700 opens an exchange with the control module 702, sending to the control module 702 a transport command control block (TCCB) 704. A transport command control block (TCCB) 704 includes a range definition command, two commands record location and four read commands in the form of device operation words (DCW) as described above. In response to the receipt of the transport command control block (TCCB) 704, control module 702 executes commands and sends to channel 700 in a single 16k data sequence 706. Control module 702 also provides status information to channel 700 and closes exchange 708. Compared to the service program a channel using the channel command word (CCW) shown in Fig. 2B, the channel handling program using the transport control word (TCW) therefore requires significantly less communication to send the same amount of data.
[0038] Referring to Fig. 8, one of the embodiments of the channel 124 in the channel subsystem 108 and the control module 110 and the channel 124 shown in Fig. 1 supporting the execution of the channel program using the transport control word (TCW) is shown here in more detail. Control module 110 includes CU 802 control logic for analyzing and processing a message containing commands including a transport command control block (TCCB), e.g., a transport command control block (TCCB) 704 in Fig. 7, which was received from channel 124 via a connection 120. The CU 802 control logic can obtain the device control command words (DCW) and control data from the transport command control block (TCCB) received by the control module 110 to control the operation of the device, e.g. the I / O device 112 via connection 126. CU control logic
802 sends device control commands and data to the I / O 112 device and receives status information and other feedback from the I / O 112 device. The I / O 112 device, for example, may be busy due to a previous reservation request for the 112 I / O device. In order to ensure management of potential problems related to the device reservation competition, which may arise when the control module receives multiple requests for access to the same I / O 112 device, the CU 802 control logic tracks and saves messages about the occupancy of the device and the associated data in the device busy queue 804. In an exemplary embodiment, the operating system (OS) 103 shown in Fig. 1 reserves the I / O device 112 to prevent access to the I / O device 112 by other operating systems (OS) 103 during the reservation. Reservation is not required for all I / O operations, but can be used to support operations that require exclusive access for a set amount of time, such as disk formatting.
[0039] The control module 110 may further include other buffer and memory elements (not shown in the drawings) for storing a plurality of messages and status information related to communication between the channel 124 and the I / O device 112. The register located in the control module 110 may for example, include the maximum control module replacement parameter, which specifies the maximum number of open exchanges supported by control module 110.
[0040] Channel 124 in the channel handling subsystem 108 includes a plurality of elements designed to support communication with the control module 110. In the exemplary invention, communication between the channel handling subsystem 108 and the control module 110 is controlled by the control logic CHN 806. The control logic CHN 806 can be directly connected to the control logic of the CU 802 via connection 120, so that it is possible to send commands and receive responses, e.g. transport handling commands and IU responses. Alternatively, there may be message interfaces and / or buffers (not shown in the figures) between the CHN 806 control logic and the CU 802 control logic.
[0041] An exemplary embodiment of the transport control word (TCW) 900 is shown in Fig. 9. The transport control word (TCW) 900 is used by channel 124 to configure I / O operations and is not sent to the control module 110. The transport control word (TCW) ) 900 shown in Fig. 9 ensures that both input and output data are used in a single I / O operation.
[0042] In the example of the transport control word (TCW) 900 shown in Fig. 9, a format field 902 with the value "00b" indicates the next occurrence of the transport control word (TCW). The transport control word (TCW) 900 also includes reserved bits 904 that may be used in the future.
[0043] The transport control word (TCW) 900 also includes a flag field 906. The first five bits of the flag field 906 are reserved for future use and their values are set to zero. The sixth bit of the flag field 906 is the TIDAL list read tag. In the exemplary embodiment of the invention, the value of the TIDAL list read tag is set to one if the input data address field 918 contains the address of the TIDAL list. If the value of the TIDAL list read flag is set to zero, the input data address field 918 contains the data address. The seventh bit of the flag field 906 is the flag of the TIDAL list of transport control blocks (TCCB). In the exemplary embodiment of the invention, the value of the TIDAL list tag of the transport control blocks (TCCB) is set to one if the transport command block (TCCB) 922 address field contains the address of the TIDAL list. If the TIDAL list tag value of the transport control blocks (TCCB) is set to zero, the transport command block (TCCB) 922 address field directly addresses the transport command block (TCCB). The TIDAL list tag of the transport control blocks (TCCB) allows you to divide the functions into layers and use the prefix of programs using the user channel by the operating system software or virtual machine monitor. The eighth bit of the 906 flag field is a TIDAL list marker. In an exemplary embodiment, the value of the TIDAL list write flag is set to one if the output address field 916 contains the address of the TIDAL list. If the value of the TIDAL write flag is set to zero, the output address field 916 contains the data address.
[0044] Bits nine to twenty-four in the state marker field 906 are reserved for future use.
[0045] The transport control word (TCW) 900 also includes the transport order control block (TCCB) 910 field, which indirectly represents the length of the transport command control block (TCCB) and can be used to determine the actual length of the transport command control block (TCCB).
[0046] The read / write bits 912 contained in the transport control word (TCW) 900 are used to indicate whether, as a result of the execution of the transport control word (TCW) 900, data is read and / or written. In the exemplary embodiment of the invention, the value of the read bit belonging to the read / write bits 912 is set to one to indicate that as a result of the execution of the transport control word (TCW) 900, the input data is transmitted from the I / O device 112 to the system storage (e.g. main memory 102) of main system 101. The value of the write bit belonging to the read / write bits 912 is set to one to indicate that as a result of the execution of the transport control word (TCW) 900, the output data is sent from the system mass memory (e.g. main memory 102) of the main system 101 to the device We /You.
[0047] The output address field 916 contains the output address (if any). As described above, the output data address field 916 may include the TIDAL output data address (e.g., indirect address) or the actual output address (e.g., direct address). Input field address 918 contains the input address (if any). As described above, the input data address field 918 may include the TIDAL input data address or the actual input data address. In the exemplary embodiment, the output data address field 916 and the input data address field 918 are implemented in the form of sixty-four bit addresses.
[0048] The transport control word (TCW) 900 also includes the address field of the transport status block 920. Under this address is stored part (e.g., extended status part) of the status of the completion of the IU transport response regarding the I / O operation. The transport control block (TCCB) 922 address field in the transport control word (TCW) 900 contains the address in the system storage at which the transport control block (TCCB) is located. As described above, the Transport Command Control Block (TCCB) is a control block that contains the device control command words (DCW) for the transport control word (TCW) 900 contained in it. As described above, the contents of the address field Transport Command Control Block (TCCB) 922 can be the TIDAL address of the Transport Command Control Block (TCCB) or the actual address of the Transport Command Control Block (TCCB). In the exemplary embodiment of the invention, the transport status block address field 920 and the transport command block address field (TCCB) 922 are implemented in the form of sixty-four-bit addresses.
[0049] Included in the transport control word (TCW) 900, the output count field 924 indicates the amount of output data to be transmitted using the transport control word (TCW) / transport control block (TCCB) in the output operation. In an exemplary embodiment, the output counting field 924 determines the number of bits in the mass storage output area that has been marked by the transport control word (TCW) (output address field 916) to be transmitted. The input count field 926 contained in the transport control word (TCW) 900 indicates the amount of output data to be sent using the transport control word (TCW) / transport control block (TCCB) in the input operation. In an exemplary embodiment, the input count field 926 determines the number of bits in the mass storage output area that has been marked by the transport control word (TCW) (input address field 918) to be transmitted. Some additional fields in the transport control word (TCW) 900 are reserved: reserved field 928, reserved field 930 and reserved field 932. The transport control word (TCW) 934 query field contains the address of another transport control word (TCW) and is used by channel 124 to query the status of the operation in the case of instructions to initiate or cancel an I / O subchannel.
[0050] The transport control word (TCW) shown in Fig. 9 is one example of the configuration of the command word. It is also possible to use other configurations in which additional fields are used and / or the fields shown in Fig. 9 are not used.
[0051] Fig. 10 is one embodiment of a channel handling program using the transport control word (TCW), which is in accordance with an aspect of the invention comprising including both input and output data in a single I / O operation.
[0052] As seen in Fig. 10, the channel handling program using the transport control word (TCW) 1000 includes the transport control word (TCW) 1002 determining the location in the memory of the transport command block (TCCB) 1004, the location of the memory area to be storage of 1006 input data or TIDAL 1010 list (i.e. a list of words indirectly addressing data in transport mode (TIDAW)) indicating the location of the input data, the location of the memory area intended for storing output data 1014 or the list of TIDAL 1012 indicating the output data area 1006 and status area 1008.
[0053] Processing of the channel handler program using the transport control word (TCW) 1000 of Fig. 10 is described with reference to Fig. 11. Referring to Fig. 11, channel 1100 opens an exchange with control module 1102 by sending a transport command control block to the control module (TCCB) 1104 and output 1105 located in output data area 1014 defined by the transport control word (TCW) 1002. Channel 1100 determines the amount of data to be transmitted based on the value of the output counting field 924 contained in the word transport control (TCW) 1002. Control module 1102 executes many commands contained in the transport command control block (TCCB) 1104 (e.g., range definition command, record location command, write command and read command in the form of device service command words (DCW)), receives 1105 output data from the channel 1100 and sends 1106 input data according to the counting of the data contained in the device service command word (DCW) to the channel, which is done, for example, using the FCU Data IU. Channel 1100 stores input 1105 at the location specified by the transport control word (TCW) 1002. Control module 1102 also provides status information and closes exchange 1108. In this way, data is entered into channel 110 and made available to control module 1102 using a single program operating a channel using the transport control word (TCW) 1000 (or I / O operations).
[0054] Fig. 12 shows one embodiment of a two-way data transfer process using a single I / O operation in accordance with one aspect of the present invention. In this exemplary embodiment of the invention, the processing shown in Fig. 12 is performed by a main computer system that is connected to the control module via a network. The main computer system may include an I / O processing system that performs the process. The I / O processing system may further include a channel handling subsystem that performs the process. In block 1202, the host computer obtains the transport control word (TCW). In an exemplary embodiment of the invention, the transport control word (TCW) is obtained (or received) from an operating system running on the host computer. The transport control word (TCW) includes both output address 916 and output count field 924, as well as input address 918 and input count field 926. In an exemplary embodiment, the transport control word (TCW) contains output if the write bit value of the read / write bits 912 is set to one and the transport control word (TCW) contains input if the value of the read bit belonging to the read / write bits 912 is set to one. In block 1204, the location of the transport command control block (TCCB) specified by the transport control word (TCW) 922 is downloaded and sent to the control module. The Transport Command Control Block (TCCB) contains the device service command (DCW) words that tell the control module what I / O operations to perform.
[0055] At block 1206, the output is taken from the location specified by the transport control word (TCW) (if the write bit value of the read / write bits 912 is set to one). The amount of downloaded data that should be included in the output is determined based on the output count field 924. As described above, the output address may be in the form of a direct output address or an indirect output address. An intermediate address is an address that contains a list of one or more addresses (for example, the TIDAL list) that indicate multiple storage locations that together form the output. The direct address is the address containing the output. In an exemplary embodiment, the value of the TIDAL list write flag contained in the transport control word (TCW) tag field 906 is set to one if output address field 916 contains the address of the TIDAL list, and is set to zero if the output address field 916 contains output address.
[0056] At block 1208, the output is sent to the control module. In this example, XFER_RDY is disabled.
[0057] In block 1210, input data is received that has been sent by the control module as a result of performing an I / O operation. In block 1212, input data is saved to the location specified by the transport control word (TCW) (input data address field 918). In an exemplary embodiment of the invention, the transport control word (TCW) includes input if the value of the read bit belonging to the read / write bits 912 is set to one. As described above, the input data address 918 may be in the form of a direct input address or, alternatively, it may be an address list address (for example, a TIDAL list or intermediate address) indicating multiple storage locations, each containing a part input data. In the exemplary embodiment of the invention, the value of the TIDAL list read tag in the transport markers field 906 of the transport control word (TCW) is set to one if the input address field 918 contains the address of the TIDAL list, and is set to zero if the input field address of the input 918 contains the address input data.
[0058] The technical effects of using exemplary embodiments of the invention include the ability to include both input data and output data in a single I / O operation. This provides the option of flexible grouping of device service command words (DCW) and can lead to a reduction in the number of exchanges required between the channel and the control module.
[0059] As described above, embodiments of the invention may be in the form of processes implemented using a computer and devices capable of carrying out these processes. In exemplary embodiments, it has been included in a computer program code that is executed using one or more network elements. Embodiments of the invention include a computer program 1300, for example as shown in FIG. 13, which is recorded on a computer readable medium 1302 and includes the logic of the 1304 program code recorded on the material media constituting the product being manufactured. Examples of manufactured products constituting the 1302 media that can be read by a computer can be floppy disks, CD-ROMs, hard disks, USB flash memory or any other media that can be read using a computer, but after loading the program code logic 1304 to the computer and its implementation, the computer becomes a device enabling the use of the invention. Embodiments of the invention include program code logic 1304 regardless of whether it is stored in non-volatile memory, loaded onto a computer, and / or performed using it, transmitted via a transmission medium, such as a medium using electric cables, optical fibers or electromagnetic radiation, using which, after loading and executing program code logic 1304 into a computer, the computer becomes a device enabling the use of the invention. When implemented with a general purpose microprocessor, the 1304 program code logic segments provide such a microprocessor configuration that specific logic circuits are created.
International Business Machines Corporation; USA 5 Proxy:
EP 2 218 009 B1 Z - 7981/11
8 priority claims, no other members on record
Priority claims8
| Document | Office | Kind | Date |
|---|---|---|---|
| 3095408 | United States of America | A | |
| 3095408 | United States of America | A | |
| 09709853 | European Patent Office (EPO) | A | |
| 2009051450 | European Patent Office (EPO) | W | |
| 2009051450 | European Patent Office (EPO) | W | |
| EP20090709853 | – | – | – |
| US20080030954 | – | – | – |
| WO2009EP51450 | – | – | – |
Numbers
- Publication, DOCDB
- 2218009
- Publication, EPODOC
- PL2218009T
- Application
- 709853
- Application, DOCDB
- 09709853
- Application, EPODOC
- PL20090709853T
Titles2
- English
- BI-DIRECTIONAL DATA TRANSFER WITHIN A SINGLE I/O OPERATION
- Polish
- Dwukierunkowe przesyłanie danych za pomocą pojedynczej operacji We/Wy
Classification
- CPC, 4
- G06F13/126
- G06F3/0613
- G06F3/0659
- G06F3/0673
- IPC, 1
- G06F13 10