Providing indirect data addressing in an input/output processing system where the indirect data address list is non-contiguous
Abstract
A computer program product for processing input/output (I/O) data is provided for performing a method that includes receiving a transport control word (TCW) including an indirect data address including a starting location of a transport mode indirect data address list (TIDAL) of storage addresses, the TIDAL including a plurality of entries configured as transport mode indirect data address words (TIDAWs). The method includes accessing an entry of the TIDAL, which includes: 1) based on the entry of the TIDAL indicating that the address is a data address, gathering data from a data storage location corresponding to the data address, and accessing a next entry of the TIDAL, and 2) based on the entry of the TIDAL indicating that the address is an address of a next entry of the TIDAL, obtaining the next entry of the TIDAL from another storage location that is located non-contiguously to the entry storage location.
Term
2.4 yearsto projected expiry
Projected expiry 10 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 way of indirectly addressing data in the I / O subsystem of an I / O processing system (100) including:1. Sposób pośredniego adresowania danych w podsystemie I/O systemu przetwarzania I/O (100) obejmujący: otrzymanie (1002) słowa sterującego dla operacji I/O w podsystemie I/O, które to słowo sterujące zawiera pośredni adres danych dla danych związanych z operacją I/O, a pośredni adres danych zawiera lokalizację początkową listy adresów pamięci łącznie określających dane, przy czym lista obejmuje dwie lub więcej nieciągłych lokalizacji pamięci;receiving (1002) a control word for an I / O operation in the I / O subsystem, which control word contains an intermediate data address for data related to the I / O operation, and the intermediate data address contains the start location of the list of memory addresses together specifying the data, wherein the list includes two or more discontinuous memory locations;collecting (1004) data corresponding to the list;and sending (1006) the collected data to the I / O processing system control unit;gromadzenie (1004) danych odpowiadających liście;oraz przesyłanie (1006) zgromadzonych danych do jednostki sterującej systemu przetwarzania I/O;w której lista zawiera ponadto pierwszy znacznik stanu związany z każdym adresem pamięci na liście, gdzie pierwszy stanu znacznik posiada pierwszą wartość dla wskazania, że związany adres pamięci odnosi się do porcji danych oraz drugą wartość dla wskazania, że związany adres pamięci odnosi się do lokalizacji pamięci, w której znajdują się dodatkowe adresy pamięci z listy;wherein the list further includes a first status flag associated with each memory address in the list, where the first status flag has a first value to indicate that the associated memory address refers to a data portion and a second value to indicate that the associated memory address refers to the memory location in which there are additional memory addresses from the list;in which, for each memory address in the list, collection includes: w której, dla każdego adresu pamięci na liście, gromadzenie obejmuje: gaining access to the memory address and the first flag associated with the memory address;uzyskanie dostępu do adresu pamięci i pierwszego znacznika stanu związanego z adresem pamięci;adding content from the memory address to the data in response to the first value of the first flag;characterized by: dodanie zawartości z adresu pamięci do danych w odpowiedzi na pierwszą wartość pierwszego znacznika stanu;znamienny : by accessing the second memory address and the second state marker located under the memory address in response to the second value of the first state marker, and adding the content from the second memory address to the data in response to the first value of the second state marker. uzyskaniem dostępu do drugiego adresu pamięci i drugiego znacznika stanu znajdującego się pod adresem pamięci w odpowiedzi na drugą wartość pierwszego znacznika stanu, oraz dodaniem zawartości z drugiego adresu pamięci do danych w odpowiedzi pierwszą wartość drugiego znacznika stanu.
- 9A system comprising means adapted to perform all the steps of the method defined in any one of the preceding claims. 9. System zawierający środki dostosowane do wykonywania wszystkich etapów sposobu określonego w którymkolwiek z poprzednich zastrzeżeń.
- 10Program komputerowy zawierający instrukcje do wykonywania wszystkich etapów spsoobu określonego w którymkolwiek z poprzednich zastrzeżeń dotyczących sposobu, kiedy wspomniany program komputerowy jest uruchamiany w systemie komputerowym. Ten. A computer program containing instructions for performing all steps of the spsoob defined in any one of the preceding claims regarding the method when said computer program is run on a computer system. International Business Machines Corporation, USA FULL SUPPORT:International Business Machines Corporation, USA PEŁ NOMOCNIK: EP 2 176 771 B1 EP 2 176 771 B1 Z-7978/11 Z-7978/11 FIG. 1 FIG. 1 EP 2 176 771 B1 EP 2 176 771 B1 Z-7978/11 Z-7978/11 CHANNEL COMMAND WORD cj SŁOWO POLECENIA KANAŁU cj C * L C*l OJ and OJ i\l EP 2 176 771 B1 EP 2 176 771 B1 EP 2 176 771 B1 EP 2 176 771 B1 Z-7978/11 <ο Z-7978/11 <ο FIG. 4 FIG. 4 EP 2 176 771 B1 Z-7978/11 Z-7978/11 CM CM ABOUT O FIG. 5 tn FIG. 5 tons EP 2 176 771 B1 EP 2 176 771 B1 CGW CHANNEL PROGRAM PROGRAM KANAŁU CGW Z-7978/11 Z-7978/11 EP 2 176 771 B1 EP 2 176 771 B1 Z-7978/11 Z-7978/11 EP 2 176 771 B1 EP 2 176 771 B1 Z-7978/11 Z-7978/11 EP 2 176 771 B1 EP 2 176 771 B1 Z-7978/11 Z-7978/11 EP 2 176 771 B1 EP 2 176 771 B1 Z-7978/11 Z-7978/11
Independent claims3
71 paragraphs in 2 sections, as filed
[0001] The present disclosure relates generally to input-output management, and in particular to the creation of a list of intermediate discontinuous data addresses in the input / output (I / O) subsystem of the I / O system.
BACKGROUND ART [0002] I / O operations are used to transfer data between memory and I / O devices of an I / O processing system. In particular, data is rewritten from memory to one or more I / O devices, and is also read from I / O devices to memory using I / O operations.
[0003] The I / O subsystem of the I / O processing system is used to enable I / O processing. The I / O subsystem is connected to main memory and I / O devices of the I / O processing system and controls the flow of information between memory and I / O devices. One example of an I / O subsystem is the channel subsystem. The channel subsystem uses channel paths as a means of communication. Each channel path includes a channel connected to the control unit, and the control unit is connected to one or more I / O devices.
[0004] The channel subsystem may use channel command words (CCW) for data transmission between I / O devices and memory. CCW specifies the command to be executed. For commands initiating certain I / O operations, CCW allocates a memory area associated with this operation, an action to occur as soon as the transfer to or from that area is completed, and other options.
[0005] During I / O processing, the CCW list is recalled from the memory from the channel. The channel analyzes each command in the CCW list and sends a number of commands, each command as a separate entity, to the control unit connected to that channel. The control unit then processes the commands. The channel tracks the status of each command and decides when to send the next set of commands to the control unit for processing. The channel ensures that each command is sent to the control unit as a separate object. In addition, the channel requests some information related to processing the response from the control unit for each command.
[0006] Performing I / O processing on the basis of CCW may involve a high processing overhead for the channel subsystem due to the channel's involvement in CCW analysis, status information tracking, and in responding to responses from the control unit. For this reason, it may be beneficial to shift a large portion of the processing load associated with CCW interpretation and management along with status information from the channel subsystem to the control unit. Simplifying the role of channels in communication between control units and the operating system in the I / O processing system can increase its capacity due to the smaller number of handshaking exchanges required. However, changing the command sequence, as well as the roles of the channel subsystem and control units, allows the amount of data sent in a single I / O operation to be greater than one megabyte. This is the maximum amount of data that can be transmitted with one continuous list of intermediate transfer data addresses when the system page size is 4 kilobytes. Currently, an existing Channel Command Word (CCW) cannot support data transfer over 64 kilobytes in a single I / O operation due to the CCW counter field being limited to two bytes. The Transmission Control Word (TCW) solved this problem by increasing the count to four bytes in the TCW, but then the next limitation to one megabyte was encountered because the list of TIDAL intermediate mode data addresses must be on one page of 4 bytes, which only allowed 256 address list entries.
[0007] US 5,584,039A discloses an indirect addressing method in an I / O subsystem.
SUMMARY OF THE INVENTION [0008] The present invention provides a method according to claim 1, a corresponding system and a computer program.
BRIEF DESCRIPTION OF THE DRAWINGS [0009] The essence of the issue considered to be the invention is in particular indicated and explicitly reserved in the claims at the end of this description. The above and other purposes, features and advantages of the invention are apparent from the following detailed description associated with the accompanying drawings in which :
FIG. 1 depicts one variant of the I / O processing system comprising and using at least one aspect of the present invention;
FIG. 2A illustrates one example of a prior art channel command word;
FIG. 2B illustrates one example of a channel program with a prior art channel command word;
FIG. 3 illustrates one variant of the prior art link protocol used in communication between the channel and the control unit to execute the channel program with the channel command word of FIG. 2B;
FIG. 4 illustrates one variant of the channel program with the message control word, consistent with one aspect of the present invention;
FIG. 5 illustrates one variant of the link protocol used in communication between the channel and the control unit to execute the channel program with the transfer control word of FIG. 4, in accordance with one aspect of the present invention;
FIG. 6 illustrates one variant of the prior art link protocol used in communication between a channel and the control unit to execute four channel program write commands with the channel command word;
FIG. 7 illustrates one variant of the link protocol used in communication between the channel and the control unit for processing four channel program write commands with the channel command word, in accordance with one aspect of the present invention;
FIG. 8 depicts one variant of the control unit and the channel subsystem in accordance with one aspect of the present invention;
FIG. 9 illustrates one variant of an intermediate transmission mode data address word (TIDAW) in accordance with one aspect of the present invention;
FIG. 10 depicts one variant of discontinuous indirect addressing of data in the I / O subsystem; and
FIG. 11 depicts one product variant comprising at least one aspect of the present invention.
[0010] The detailed description explains the preferred embodiments of the invention together with the advantages and features, by way of example with reference to the drawings.
DETAILED DESCRIPTION OF THE INVENTION [0011] According to one aspect of the present invention, input / output (I / O) processing is enabled. I / O processing is enabled in one example by limiting communication between the components of the I / O processing system used for I / O processing. For example, the number of exchanges and sequences between a communication adapter, such as a channel, and the control unit is reduced. This was done by sending a series of commands from the I / O communication adapter to the control unit, in the form of a single packet to be executed by the control unit, and by sending the result data resulting from the execution of the commands, if any, in a single packet.
[0012] A number of commands are contained in a block, herein referred to as transfer order control block (TCCB), whose address is specified in the transfer control word (TCW). TCW is sent from the operating system (OS) or other application to the I / O communication adapter, which in turn forwards the TCCB in a command message to the control unit for processing. The control unit processes each of the commands in which there is no status tracking relative to these individual commands using the I / O communication adapter. A series of commands is also referred to as a channel program that is analyzed and executed by the control unit rather than by the I / O communication adapter.
[0013] In an exemplary embodiment, the TCW for I / O operations includes pointers indicating the locations of control data (e.g., TCCB) and client data associated with the I / O operation. In the example variant, the indicators refer to intermediate data addresses, here referred to as transmittance mode data intermediate addresses list (TIDAL). TIDAL contains a list of data location addresses; these addresses are here referred to as indirect address words of transmission mode data (TIDAW). In the current form of the system, with 4K pages, TIDAL cannot be larger than 4 kilobytes (4K), thus limiting the number of continuous TIDAWs that can be contained in a single TIDAL to 256 (each TIDAL has a size of 16 bytes). This limits the overall amount of data that can be sent in one I / O operation to one megabyte, assuming the pages are 4K, each TIDAL is 16 bytes, and that each TIDAL must be contained in a 4K page. In an exemplary embodiment of the present invention, this restriction is removed by allowing the TIDAW address to point to the start location of the next TIDAW in a different memory location that may be on a different page. TIDAW uses a flag to indicate whether the TIDAW address contains the data address or the TIDAW list continuation address. In this way, TIDAWs that make up a single TIDAL can be in non-continuous memory areas, and therefore, there can be more than 256 TIDAWs in a single TIDAL list. This allows you to send more data in a single I / O operation. And so, in the example variant, in which the counter field in the TCW is four bytes, about four gigabytes (four gigabytes minus one byte) can be sent in a single I / O operation.
[0014] One example of an I / O processing system comprising and using at least one aspect of the present invention is described with reference to FIG. 1. The I / O processing system 100 includes a host system 101, which in turn includes, for example, main memory 102, at least one central processing unit 104 (CPU), memory controller element 106, and channel subsystem 108. Host system 101 can be a large computing system such as a mainframe or server. The I / O 100 processing system also has at least one control unit 110 and at least one I / O device 112, each of which is described below.
[0015] Main memory 102 stores data and programs that can be input from I / O device 112. For example, main memory 102 may contain at least one operating system (OS) 103 that is run by at least one CPU 104. For example , one CPU 104 can run the Linux® 103 operating system and the z / OS® 103 operating system as separate virtual machines. Main memory 102 is addressed directly and provides high-speed processing of data by CPU 104 and channel subsystem 108.
[0016] The CPU 104 is the control center of the I / O processing system 100.
It contains sequencing and processing programs to execute instructions, interrupt operations, synchronization functions, program preloading, and other machine functions. The CPU 104 is connected to the memory controller component 106 via a connection 114, such as a bi-directional or unidirectional bus.
[0017] The memory controller element 106 is connected to the main memory 102 via connections 116 such as a bus; with CPUs 104 via connection 114; and to the channel subsystem 108 through connection 118. The memory controller element 106 controls, for example, queuing and execution of requests from the CPU 104 and the channel subsystem 108.
[0018] In an exemplary embodiment, the channel subsystem 108 provides a communication interface between the host system 101 and the control unit 110. The channel subsystem 108 is connected to the memory controller element 106 as described above, and to each of the control units 110 via connection 120, such as serial link. Connection 120 can be implemented as an optical connection using single-mode or multi-mode waveguides on a Fiber Channel. The channel subsystem 108 controls the flow of information between I / O devices 112 and main memory 102. This frees CPU 104 from the task of communicating directly with I / O devices 112 and allows data to be processed in parallel with I / O processing. Channel subsystem 108 uses at least one channel path 122 as a communication link in managing information flow to and from I / O 112 devices. As part of the I / O processing, the channel subsystem 108 also performs the path management function in testing the availability of the channel path, in selecting the available channel path 122, and in initiating operations on the I / O 112 devices.
[0019] Each channel path 122 includes channel 124 (in one example, shown in FIG. 1, channels 124 are within channel subsystem 108), at least one control unit 110 and at least one connection 120. In another example, it is also possible the existence of at least one dynamic switch (not shown) being part of the channel path 122. The dynamic switch is connected to the em 124 channel and control unit 110 and provides the possibility of physical connection of any two connections connected to it. In another example, it is possible to connect multiple systems, and hence, multiple channel subsystems (not shown) with the control unit 110.
[0020] In the channel subsystem 108 there are also sub-channels (not shown). One subchannel created and dedicated to each I / O 112 device available to the program through the channel subsystem 108. The subchannel (e.g., data structure such as a table) is a logical image of the device for the program. Each subchannel provides information about the associated I / O device 112 and its connection to the channel subsystem 108. The subchannel also provides information about I / O operations and other functions involving the associated I / O 112 device. The subchannel is the means by which the channel subsystem 108 provides information about the associated I / O 112 device to CPUs 104 that obtain this information by executing the instruction I / O.
[0021] The channel subsystem 108 is connected to at least one control unit 110. Each control unit 110 provides logic to control and control the operation of at least one I / O device 112 and adapts, using typical assistive programs, the characteristics of each I / O device 112 to the link interface provided by channel 124. Typical support programs allow you to perform I / O operations, indicate the status of the I / O device 112 and the control unit 110, control the synchronization of data transfer via the channel path 122, and certain levels of control of the I / O devices 112. Each control unit 110 is connected via a connection 126 (e.g., a bus) to at least one I / O 112 device. I / O 112 devices receive information or store information in main memory 102 and / or other memory. Examples of I / O 112 devices, for example, include card readers and punching machines, magnetic tape drives, direct access memory devices, displays, keyboards, printers, indicator devices, remote data processing devices, communication controllers and sensor-based equipment.
[0022] One or more of the above components of the I / O 100 processing system are further described in the publications: "IBM® z / Architecture Principles of Operation," Publication No. SA22-7832-05, 6th Edition, April 2007; U.S. Patent Document 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., issued October 24, 1995; and US Patent No. 5,526,484 entitled "Method And System For Pipelining The Processing Of Channel Command Words," Casper et al., issued June 11, 1996. IBM is a registered trademark of International Business Machines Corporation based in Armonk, New York, USA. Other names used herein may be registered trademarks, trademarks or product names of International Business Machines Corporation or other companies. [0023] In one embodiment, channel command words are used to transfer data between I / O 112 devices and memory 102 CCW). CCW specifies the command to be executed and also contains other fields to control processing. One example of CCW is described with reference to FIG. 2A. CCW 200 includes, for example, command code 202 specifying the command to be executed (e.g. read, read backwards, check, detect and save); a series of status markers 204 used to control the I / O operation; for commands specifying data transfer, counter field 206 specifying the number of bytes in the memory area designated by the CCW for transfer; and data address 208 indicating a main storage location containing data when direct addressing or a list (e.g. continuous list) of modified data intermediate addressing (MIDAW) words to be processed when modified data intermediate addressing is used. Modified indirect addressing is further described in patent application US 2008/0043563, entitled "Flexibly Controlling The Transfer Of Data Between Input / Output Devices And Memory," Brice et al., Filed August 15, 2006.
[0024] One or more CCWs arranged for subsequent execution form a channel program, also referred to herein as a CCW channel program. The CCW channel program is created by, for example, an operating system or other software. The software creates CCW and obtains memory addresses for the channel program. An example of a CCW channel program is described with reference to FIG. 2B. The CCW channel program 210 includes, for example, the CCW 212 command specify an area, having a pointer 214, directing to the address location for the command data 216 specify the area to be used with this command. In this example, the transfer in the channel (TIC) 218 follows the command to specify the area that sends the channel program to another memory area (e.g. application area) containing one or more CCWs, such as locate record 217 having a data pointer 219, locate record 220, and one or more CCW 221 save. Each CCW 220 save has a pointer 222 to data area 224. The data area includes a direct data access address, or a list of words of a data address address (e.g., MIDAW or IDAW) for indirect data access. In addition, the CCW 210 channel program contains a predetermined area in the channel subsystem, defined by the device address, called the status subchannel
226, which is the result of the CCW of the channel program.
[0025] Processing of the CCW channel program is described with reference to FIG. 3, as well as with reference to FIG. 2B. In particular, FIG. 3 illustrates an example of the various exchanges and sequences that appear between a channel and a control unit when a CCW channel program is being executed. The link protocol used in the communication in this example is FICON (Fiber Connectivity). Information on FICON is contained in the publication "Fiber Channel Single Byte Command Code Sets-3 Mapping Protocol (FC-SB-3), T11 / Project 1357-D / Rev. 1.6, INCITS (March 2003).
[0026] Referring to FIG. 3, the channel 300 opens an exchange with the control unit 302 and sends a command specify area and associated data 304 to the control unit 302. The command is extracted from CCW 212 specify area (FIG. 2B) and the data is obtained from the data area specify area 216 Channel 300 uses TIC 218 to locate CCW, locate record and CCW save. It extracts the command locate record and data 306 (FIG. 3) from CCW 217 locate record (FIG. 2B) and data locate record 220. The save command and data 306 (FIG. 3) are extracted from CCW 221 save and area 224 (FIG. 2B). Both the command and data are sent to control unit 302.
[0027] Control unit 302 opens exchange 310 with channel 300 in response to opening exchange via channel 300. This may occur before or after sending command and data, locate 306 and / or send command and data, save 308. Simultaneously with opening the exchange, to channel 300 a response (CMR) is forwarded. The CMR is an indication for channel 300 that the control unit 302 is active and in operation.
[0028] Control unit 302 transmits status to channel 300 and closes exchange 312. In response, channel 300 stores data, checks status and closes exchange 314, which indicates to control unit 302 that status has been received.
[0029] The processing of the above CCW channel program to store 4K data requires the opening and closing of two exchanges and six sequences. The total number of exchanges and sequences between the channel and the control unit is reduced by packing many program channel commands into the TCCB. The channel, e.g., channel 124 of FIG. 1, uses TCW to identify the location of the TCCB, as well as the locations for access to status and data and their recording, related to the channel program execution. TCW is interpreted by the channel and is not transmitted or seen by the control unit.
[0030] An example of a channel program for 4K data recording, as in FIG. 2B, but using TCCB in place of separate, individual CCWs, is described with reference to FIG. 4. As shown, the channel 400 program, referred to herein as the TCW channel program, includes TCW 402 specifying the location in the memory of the TCCB 404, as well as the location in the memory of the data area 406 or TIDAL 410 (i.e. lists of intermediate address words of transmission mode data (TIDAW) similar to MIDAW ), which indicates data area 406 and status area 408. TIDAW zero 412, TIDAW one 414 and TIDAW two 416 (TIDAW 412 - 416 in total) can refer to different locations in data area 406 to obtain or store data. TIDAW 412 - 416 may refer to discontinuous data blocks or continuous data blocks. TIDAW 412 - 416 in TIDAL 410 can be placed in memory sequentially or discontinuously. Although only three TIDAW 412-416 are shown in TIDAL 410, it should be understood that any number of TIDAWs can be included in TIDAL 410.
[0031] Processing of the CCW channel program is described with reference to FIG. 5. The link protocol used in this communication is, for example, Fiber Channel Protocol (FCP). In particular, three phases of the FCP link protocol are used, allowing the use of host bus adapters to support FCP in data transfer controlled by CCW. FCP and its phases are described in more detail in the publication "Information Technology - Fiber Channel Protocol for SCSI, Third Version (FCP-3)," T10 Project 1560-D, Revision 4, September 13, 2005.
[0032] Referring to FIG. 5, channel 500 opens an exchange with the control unit 502 and sends the TCCB 504 to it. In one example, the TCCB 504 and the sequence initiative are sent to the control unit 502 in the FCP command, here referred to as the information unit (IU) FCP_CMND or IU transfer order. Control unit 502 forwards transfer readiness IU 510 (XFER_RDY) to channel 500 when it is ready to receive data for the write command received in TCCB 504. In response to the received XFER_RDY IU 510, channel 500 forwards data 506 to control unit 502 via, for example, FCP_Data IU. The control unit 502 executes many commands from TCCB 504 (e.g. commands: specify area, record, locate record, save; in the form of device control words (DCW)) and saves data 506 received from channel 500. It also provides status and closes exchange 508. For example, the final status is sent in an FCP status frame having an active bit in, for example, byte 10 or 11 of the FCP_RSP IU content, also referred to as the transfer response IU. The content of FCP_RSP IU can be used to convey FICON termination status along with additional status information.
[0033] The variant of the link protocol shown in FIG. 5 is used when XFER_RDY is enabled. In the variant shown in FIG. 5, channel 500 cannot send data 506 to control unit 502 until control unit 502 requests them using XFER_RDY IU 510. In an alternative example, XFER_RDY is turned off and the control unit does not send XFER_RDY IU 510 to channel 500. In this way, channel 500 does not need to wait until data 506 is sent until control unit 502 requests it. This alternative variant, in which XFER_RDY is turned off, can be used when channel 500 and control unit 502 are physically spaced apart (e.g. over twenty kilometers, over fifty kilometers) to improve performance. This discussion assumes that XFER_RDY is enabled, unless otherwise stated.
[0034] In a further example, channel 500 uses the FCP link protocol to record 4K client data, as follows:
1. Send the TCCB in FCP_CMND IU and sequence initiative to control unit 502.
2. Wait for XFER_RDY IU indicating that the control unit is ready to receive data.
3. Send IU data and sequence initiative to control unit 502.
4. The final status is sent in an FCP status frame having an active bit, for example, in byte 10 or 11 of the FCP_RSP IU content. The FCP_RSP_INFO field or detection field is used to send the FICON termination status with additional status information.
[0035] When executing the TCW channel program of FIG. 4 only one exchange is open (see also FIG. 5) instead of the two CCW channel program exchanges of FIG. 2B (see also FIG. 3). In addition, for the TCW channel program, there are four communication sequences (see FIGS. 4-5) in place of the six sequences for the CCW channel program (see FIGS. 2B-3).
[0036] The number of exchanges and sequences for the TCW channel program remains the same even if additional commands are added to the program. For example, please compare the communication of the CCW channel program of FIG. 6 with the TCW channel program communication of FIG. 7. In the CCW channel program of FIG. 6, each command (e.g. command specify area with data 600, command record locate record with data 601, command save with data 602, command save with data 604, command locate record with data 606, command save with data 608, and command save with data 620) is sent from channel 610 to control unit 612 in separate sequences. The CCW channel program requires two exchanges to open and close it (e.g. opening exchanges 622, 624 and closing exchanges 626, 628) and ten communication sequences. Compare this with the four sequences and one replacement in the TCW channel program of FIG. 7, which performs the same task as the CCW channel program of FIG. 6.
[0037] As shown in FIG. 7, channel 700 opens exchange with control unit 702 and sends TCCB 704 to control unit 702. TCCB 704 contains in DCWs define extent command, two commands locate record, and four commands save as described above. As in the example shown in FIG. 5, control unit 702 may use XFER_RDY IU 710 to notify channel 700 that it is ready to receive data, assuming that XFER_RDY is not turned off. Channel 700, after receiving XFER_RDY IU 710, sends 16K data 706 to control unit 702 in a single sequence. Channel 700 introduces to the CRC sequence after every 4K of 16K data 706. Introduction, CRC every 4K allows the control unit 702 to verify 16K data in sections rather than accumulating the entire 16K in the verification buffer, save to TCCB 704 before completing the commands. In addition, control unit 702 provides status to channel 700 and closes exchange 708. In this way, the TCW channel program of FIG. 7 requires significantly less communication to send the same amount of data as the CCW channel program of FIG. 6, with simultaneous support of verification in episodes, thanks to the introduction of multiple CRCs in the output data stream from channel 700.
[0038] Turning now to FIG. 8, an example of channel variant 124 in channel subsystem 108 and control unit 110 of FIG. 1, which supports TCW channel program execution. Control unit 110 includes CU 802 logic for analyzing and processing messages containing TCCB, such as TCCB 704 in FIG. 7 as well as data received from channel u 124 via connection 120. The CU 802 logic can extract DCW and control data from the received TCCB in the control unit 110 to control the device, for example, the I / O device 112 via connection 126. The CU 802 logic sends device commands and data to the I / O device 112, and receives status information and other feedback from the I / O device 112. When the CU 802 logic receives data, such as the check edges of the first block of 16K data 706 of FIG. 7, the CU 802 logic saves this received data to data buffer 804 for temporary storage, until the check CRC is received and the block edges are checked, after which the data can be sent to the I / O 112 device. This is repeated for each edge of the block check until the I / O operation is completed.
[0039] Control unit 110 may further include other queuing or memory elements (not shown) for storing additional message or status information related to communication between channel 124 and I / O device 112.
[0040] The channel 124 in the channel subsystem 108 includes means for operating communication with the control unit 110. For example, the channel 124 may include a CHN control logic 806 that connects to the data collection logic 812. The data collection logic 812 is described below with reference to FIG. 10. In the example embodiment, the CHN 806 control logic controls communication between the channel subsystem 108 and the control unit 110. The CHN 806 control logic can connect directly to the CU 802 logic through connection 120 for sending commands and receiving responses, such as transfer commands and response IUs. Alternatively, message interfaces and / or additional buffers (not shown) may be located between the CHN 806 control logic and the CU 802 logic. Registers of the CHN 814 subsystem may contain fixed values that provide configuration and status information, as well as dynamic status information that is updated as commands are received and responses are received. Registers of the CHN 814 subsystem may be dedicated hardware registers and / or virtual registers established using memory mapping.
[0041] In one variant, the registers of the CHN 814 subsystem include TIDAL 410 and TIDAW 412-416 of FIG. 4, as registers in mapped memory.
[0042] One example of the TIDAW 900 is shown in FIG. 9. TIDAW 900 provides indirect addressing of data used in the TCW channel program, such as TIDAW 412-416 of FIG. 4. TIDAW 900 contains status markers 902, counter 904 and address 906. Each field (eg status markers 902, counter 904 and address 906) in the TIDAW 900 format is assigned to a specific address byte to support analyzing these fields. Although in FIG. 9 one field arrangement inside TIDAW 900 is shown, it should be understood that the field order can be changed for different needs.
[0043] In an exemplary embodiment, the status markers 902 include, in addition to other status markers, the last TIDAW tag and the channel transfer-transfer (T-TIC) tag. The last TIDAW status flag indicates that the associated TIDAW is the last TIDAW in the TIDAL as defined by MIDAW. When counter 904 reaches zero with the last TIDAW status flag enabled, data transfer in the associated I / O operation is complete. The T-TIC flag indicates whether the contents of address 906 contain data or the address of the next TIDAW in TIDAL. In the example variant, when the T-TIG flag is enabled, the address 906 in TIDAW is the address of the next TIDAW in TIDAL. In this way, address 906 can be used to access from the current TIDAW to TIDAW in a discontinuous memory location. So the TIDAW list can contain more than 256 entries, thus exceeding the allowable number of words of indirect data addressing in current applications. In the example variant, when the T-TIC flag is enabled, the lowest four bits of the address 906 must be zeros because the 16 byte TIDAW must be on the edge of the 16 byte address. When the T-TIC flag is not enabled, the address 906 in TIDAW is the address of the data portion that makes up the data collected for I / O operations. The amount of data is indicated by the counter field 904. When the last TIDAW and T-TIC status markers are not enabled, the next TIDAW is located in the next memory location (e.g. it is adjacent to the current TIDAW).
[0044] With reference to FIG. 10, will now be described, according to an exemplary embodiment, and with reference to the I / O process system 100 of FIG. 1, 1000 data collection process for I / O operations. At block 1002, the channel subsystem 108 receives the control word for I / O operations (e.g., TCW). The control word contains an intermediate data address that points to the start address of a memory address list (e.g., TIDAL having multiple TIDAWs) that make up the data used by the I / O operation. In exemplary variants, the data is customer data (e.g., input or output data from I / O operations). In alternative example embodiments, the data is control data (e.g., TCCB). In the example embodiment, the memory address list extends to two or more discontinuous memory locations.
[0045] In block 1004, data is collected by instructions in the channel subsystem 108. The collection is based on the contents of the list. In the example variant, each entry in the list (e.g., each TIDAW) contains both a memory address and a T-TIC flag indicating whether the memory address is the location of a data portion, or whether the memory address points to the location of another portion of the list with more memory addresses . In this way, a single TIDAL can be included on many pages, removing any restrictions on its length. When the T-TIC status flag indicates that the memory address is the location of the data chunk (e.g., the T-TIC status flag is not enabled), the data at that memory address is found and added to the data. Attaching new data can be done in any way known in the art, e.g. merging with data collected so far, supplementing the data collected so far, etc.
[0046] When the T-TIC flag indicates that the current memory address is the location of another chunk of the list, processing continues through access to the new TIDAW located at the specified memory location. The data in the memory location specified in the new TIDAW is read and added to the data. In the example embodiment, TIDAW includes a 904 counter to determine the amount of data to read (or write) from each memory location. When TIDAW with the last TIDAW status flag is enabled, collection is complete. Otherwise, another TIDAW is read and data collection continues.
[0047] At block 1006, data is transmitted to the control unit 110 through the channel subsystem 108.
[0048] Technical effects of the exemplary variants include providing indirect addressing of discontinuous data in an I / O system. By allowing many 4 kilobyte pages to contain a list of memory addresses (TIDAL), it is possible to have an unlimited number of TIDAWs, so that more data can be associated with a single I / O operation. Large data transfers can reduce the communication load by avoiding additional confirmation exchanges and other delays associated with multiple smaller messages.
[0049] The following examples illustrate methods in which exemplary embodiments of the invention may be used to perform more than moving large blocks of data.
[0050] Exemplary variants can be used to help the operating system pre-adapt the channel program. For example, when a channel program is transferred to an operating system, the operating system may modify such channel program to add, exchange or modify CCW or DCW commands. In the example variant, this entails the creation of TCCB TIDAL at the point where the first TIDAW points to the memory area containing the first part of the modified TCCB. The second TIDAW indicates the remainder of the unmodified TCCB.
[0051] Exemplary variants may also be used in the hypervisor's initial adjustment of the channel program (virtual machine monitor). If the hypervisor needs to modify the channel program, he will need to create a TIDAL with one additional entry compared to the one sent by the client. If the TIDAL sent by the client is already the maximum size (256 TIDAWs), then the hypervisor can make its own modifications by creating a TCCB TIDAL having two TIDAW, one of which is the T-TIC for the first TIDAW from the TIDAL sent by the client.
[0052] TIDAL T-TIC can also reduce memory requirements for operating systems. If the channel program containing TCCB TIDAL needs to be modified, it takes less memory to create TIDAW and T-TIC than allocating memory for the TCCB TIDAL client and one additional TIDAW.
[0053] As described above, variants of the invention may be made in the form of computer-implemented processes and devices using these processes. In exemplary embodiments, the invention is implemented in computer program code run by one or more network elements. Variants include a computer program product 1100 as shown in FIG. 11, on a computer medium 1102 containing program code 1104 containing instructions embedded in a physical medium such as a product. Exemplary products for 1102 computer media may include floppy disks, CD-ROMs, hard drives, USB flash drives, or any other computer storage media, but when, after entering the 1104 computer program code into the computer and starting it, the computer becomes a device applying the invention. Variants include, for example, computer program code 1104 stored on a storage medium, inserted into and / or running on a computer, or transmitted by means of transmission such as electrical wires, optical fibers, electromagnetic radiation, if after entering the computer program code 1104 into the computer and running it on the computer, the computer becomes the device applying the invention. When implemented in a general-purpose microprocessor, computer program code segments 1104 configure the microprocessor to create specific logic circuits.
International Business Machines Corporation, USA FULL SUPPORT:
EP 2 176 771 B1
Z-7978/11
Contents2
8 priority claims, no other members on record
Priority claims8
| Document | Office | Kind | Date |
|---|---|---|---|
| 3103808 | United States of America | A | |
| 3103808 | United States of America | A | |
| 09709555 | European Patent Office (EPO) | A | |
| 2009051485 | European Patent Office (EPO) | W | |
| 2009051485 | European Patent Office (EPO) | W | |
| EP20090709555 | – | – | – |
| US20080031038 | – | – | – |
| WO2009EP51485 | – | – | – |
Numbers
- Publication, DOCDB
- 2176771
- Publication, EPODOC
- PL2176771T
- Application
- 709555
- Application, DOCDB
- 09709555
- Application, EPODOC
- PL20090709555T
Titles2
- English
- PROVIDING INDIRECT DATA ADDRESSING IN AN INPUT/OUTPUT PROCESSING SYSTEM WHERE THE INDIRECT DATA ADDRESS LIST IS NON-CONTIGUOUS
- Polish
- Dostarczanie adresowania pośredniego w wejściowo-wyjściowym systemie przetwarzania, w którym lista pośrednich adresów danych jest nieciągła
Classification
- CPC, 8
- G06F13/124
- G06F12/1036
- G06F3/00
- G06F3/0604
- G06F3/0655
- G06F3/0673
- G06F12/1009
- G06F2212/65
- IPC, 1
- G06F13 10