Extended Asynchronous Data Mover Indirect Addressing

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current computing environments face challenges in efficiently managing data transfer between main storage and storage class memory, particularly in handling non-contiguous blocks and changing data directions, which complicates operations such as data movement, clearing, and releasing blocks in storage class memory.

Innovation Solution

The Extended Asynchronous Data Mover (EADM) Facility provides a standard channel programming interface that allows programs to request data transfers and perform operations between main storage and storage class memory, using subchannels and move specification blocks to manage data movement, and includes an optional release facility for freeing up storage class memory blocks.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If indirect addressing is used to handle non-contiguous blocks in storage class memory, then data management flexibility is improved, but address word length and system complexity increase

Engineering Contradiction:
Improvedata management flexibilityVSAvoidaddress word length
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The address word is segmented into a base address portion and a displacement portion. The base address identifies a starting location in storage class memory, while the displacement indicates the offset to the actual data block. This segmentation allows indirect addressing of non-contiguous blocks without requiring excessively long address words, as the displacement can be relatively small compared to the full address space.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

An intermediary data structure (the indirect address word format with base and displacement) is introduced between the simple address and the actual data location. This intermediary enables flexible indirect addressing of non-contiguous blocks while keeping the individual components (base address and displacement) manageable in size, thus resolving the contradiction between flexibility and address word length.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Speed

If storage class memory is used instead of DASD, then data access speed is improved, but system complexity and I/O adapter requirements increase

Engineering Contradiction:
Improvedata access speedVSAvoidI/O adapter requirements
Core Design Contradiction:
SpeedVSDevice complexity

Solution Approach 1:

The I/O adapter is designed to handle multiple storage types (both DASD and storage class memory) through a unified interface and control logic. The adapter can dynamically determine the type of storage device being accessed and adjust its operation accordingly, eliminating the need for separate specialized adapters for each storage type while maintaining high-speed access to storage class memory.

Inventive Principle:
Principle #6Universality (Multi-functionality)

3Productivity

If data blocks are frequently moved between main storage and storage class memory, then storage utilization is improved, but operation complexity and time management increase

Engineering Contradiction:
Improvestorage utilizationVSAvoidoperation time management
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The system pre-allocates and pre-configures storage blocks in storage class memory before they are needed for actual data transfer. Indirect address words are pre-computed and stored, so when data movement is required, the system can immediately use the pre-prepared address information without calculation overhead. This preliminary preparation reduces the time required for frequent data block movements while maintaining high storage utilization.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentEP2601586B1Using extended asynchronous data mover indirect data address words
Publication Date: 2019.01.09 INTERNATIONAL BUSINESS MACHINE CORPORATION
  • EP2601586B1 patent drawingFigure 1A
  • EP2601586B1 patent drawingFigure 1B
  • EP2601586B1 patent drawingFigure 2A~2D

AI summary

Provided is a method of executing a Start Subchannel instruction in a computing environment comprising main storage and storage class memory, said method comprising: responsive to determining that a subchannel identified by the Start Subchannel instruction is an Asynchronous Data Mover (ADM) subchannel, performing: obtaining an operation request block from main storage, the operation request block comprising an address of an operation block;based on the address of the operation block, obtaining the operation block from main storage, the operation block consisting of a request block, a response block, and one or more move specification blocks (MSBs), wherein the request block comprises an MSB count field having a value indicating the number of one or more MSBs included in and referenced by the operation block, wherein the response block is configured to hold exception conditions, wherein each move specification block is configured to include an operation code field, a block count field, a main storage address field, a storage class memory address field, a block size field and a flags field; for each MSB block of the operation block, obtaining a move specification block of the one or more move specification blocks, and: determining based on the flags field that the obtained move specification block is configured to obtain a list of one or more indirect data address words, the list of one or more indirect data address words located at a first main storage address of the main storage address field of the obtained MSB;for each block of data specified by the obtained MSB, obtaining from the list of one or more indirect data address words a second main storage address, wherein a number of blocks and a block size are determined based on the block count field and the block size field of the obtained MSB;determining based on an operation code of the operation code field in the obtained move specification block that the obtained move specification block is configured to move blocks of data; and based on the obtained move specification block, moving each block of data between the main storage and the storage class memory, wherein an address of a main storage location used for the move of a block of data is obtained using a respective second main storage address and an address of the storage class memory used for the move is obtained using the storage class memory address field.