Abstract:
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; performing for each MSB of one or more of the MSBs comprising a flags field having a first value, a method comprising: based on the operation code field in an obtained move specification block, determining whether the move specification block is configured to move blocks of data to main storage from storage class memory or to storage class memory from main storage, wherein a size of a block of data is determined by the block size field of the obtained MSB; and moving the blocks of data between the main storage and the storage class memory, wherein an address of a main storage location used for the move is obtained using the main storage address field and an address of the storage class memory used for the move is obtained using the storage class memory address field.
Abstract:
An abstraction for storage class memory is provided that hides the details of the implementation of storage class memory from a program, and provides a standard channel programming interface for performing certain actions, such as controlling movement of data between main storage and storage class memory or managing storage class memory.