# US 10,310,854 B2 · Non-faulting compute instructions

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 10,310,854 B2
- Document ID: US10310854B2
- Status: Granted
- Kind: B2
- Application number: 14/755,543
- Filed: 2015-06-30
- Published: 2017-01-05
- Granted: 2019-06-04
- Earliest claimed: 2015-06-30
- Assignees: International Business Machines Corporation
- Applicants: International Business Machines Corporation
- Inventors: Michael K. Gschwind; Brett Olsson
- Web page: https://patentgrep.com/patent/US10310854B2

## CPC

- G06F 9/30007: {to perform operations on data operands}
- G06F 9/3001: {Arithmetic instructions}
- G06F 9/3004: {to perform operations on memory}
- G06F 9/30145: {Instruction analysis, e.g. decoding, instruction word fields}
- G06F 12/0875: with dedicated cache, e.g. instruction or stack
- G06F 2212/452: Instruction code
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A compute instruction to be executed is to use a memory operand in a computation. An address associated with the memory operand is to be used to locate a portion of memory from which data is to be obtained and placed in the memory operand. A determination is made as to whether the portion of memory extends across a specified memory boundary. Based on the portion of memory extending across the specified memory boundary, the portion of memory includes a plurality of memory units and a check is made as to whether at least one specified memory unit is accessible and whether at least one specified memory unit is inaccessible. Based on the checking indicating the at least one specified memory unit is accessible and the at least one specified memory unit is inaccessible accessing the at least one specified memory unit that is accessible and placing data from the at least one specified memory unit that is accessible in one or more locations in the memory operand, and for the at least one unit of memory that is inaccessible, placing default data in one or more other locations of the memory operand.

## Claims

### Claim 1

A computer program product for facilitating processing of compute instructions in a computing environment, said computer program product comprising:
a computer readable storage medium readable by a processing circuit and storing instructions for execution by the processing circuit for performing a method comprising:
obtaining, by a processor, a compute instruction to be executed, the compute instruction to perform arithmetic or logic computations, and the compute instruction to use a memory operand in a computation indicated by the compute instruction;
determining whether the compute instruction is a non-faulting compute instruction;
obtaining an address associated with the memory operand, the address to be used to locate a portion of memory from which data is to be obtained and placed in the memory operand;
determining whether the portion of memory extends across a specified memory boundary, wherein based on the portion of memory extending across the specified memory boundary, the portion of memory comprises a plurality of memory units;
based on determining the portion of memory extends across the specified memory boundary, checking, based on determining the compute instruction is a non-faulting compute instruction, whether at least one specified memory unit of the plurality of memory units is accessible and whether at least one specified memory unit of the plurality of memory units is inaccessible; and
based on the checking indicating the at least one specified memory unit is accessible and the at least one specified memory unit is inaccessible, accessing the at least one specified memory unit that is accessible and placing data from the at least one specified memory unit that is accessible in one or more locations in the memory operand, and for the at least one unit of memory that is inaccessible, placing default data in one or more other locations of the memory operand, wherein based on placing the data and the default data in the memory operand, the memory operand is to be used in the computation.

### Claim 2 (depends on 1)

The computer program product of claim 1, wherein the at least one specified memory unit that is inaccessible is positioned in memory after the at least one memory unit that is accessible.

### Claim 3 (depends on 1)

The computer program product of claim 1, wherein the method further comprises emulating the computation, the emulating using the memory operand.

### Claim 4 (depends on 1)

The computer program product of claim 1, wherein the method further comprises:
providing control to a control component; and
emulating by the control component the computation, the emulating using the memory operand.

### Claim 5 (depends on 1)

The computer program product of claim 1, wherein the method further comprises storing the memory operand in a designated location, the designated location to be accessed to perform the computation.

### Claim 6 (depends on 5)

The computer program product of claim 5, wherein the method further comprises:
restarting the compute instruction;
obtaining the memory operand from the designated location; and
performing the computation using the memory operand from the designated location.

### Claim 7 (depends on 1)

The computer program product of claim 1, wherein the determining whether the compute instruction comprises a non-faulting compute instruction comprises checking one of: an encoding of the compute instruction, an encoding of the memory operand, an operating mode of the processor, or a prefix of the compute instruction.

### Claim 8 (depends on 1)

The computer program product of claim 1, wherein the default data to be placed in the one or more other locations is configurable.

### Claim 9 (depends on 1)

The computer program product of claim 1, wherein the checking checks whether a first memory unit is accessible, and the accessing is performed based on at least the first memory unit being accessible.

### Claim 10 (depends on 1)

The computer program product of claim 1, wherein based on placing the data and the default data in the memory operand, the compute instruction terminates, and wherein the method further comprises:
restarting the compute instruction, the restarting including performing a context switch from supervisor state to application state based on the placing the data and the default data in the memory operand being performed in supervisor state; and
performing the computation indicated by the compute instruction using the memory operand.

### Claim 11 (depends on 10)

The computer program product of claim 10, wherein the method further comprises:
determining whether a partially inaccessible operand facility indicator is set; and
performing, based on the partially inaccessible operand facility indicator being set, the computation indicated by the compute instruction using the memory operand.

### Claim 12 (depends on 10)

The computer program product of claim 10, wherein the restarting further comprises:
determining whether an instruction being restarted is the compute instruction; and
performing the computation, based on the instruction being the compute instruction.

### Claim 13

A computer system for facilitating processing of compute instructions in a computing environment, said computer system comprising:
a memory; and
a processor in communications with the memory, wherein the computer system is configured to perform a method, said method comprising:
obtaining, by the processor, a compute instruction to be executed, the compute instruction to perform arithmetic or logic computations, and the compute instruction to use a memory operand in a computation indicated by the compute instruction;
determining whether the compute instruction is a non-faulting compute instruction;
obtaining an address associated with the memory operand, the address to be used to locate a portion of memory from which data is to be obtained and placed in the memory operand;
determining whether the portion of memory extends across a specified memory boundary, wherein based on the portion of memory extending across the specified memory boundary, the portion of memory comprises a plurality of memory units;
based on determining the portion of memory extends across the specified memory boundary, checking, based on determining the compute instruction is a non-faulting compute instruction, whether at least one specified memory unit of the plurality of memory units is accessible and whether at least one specified memory unit of the plurality of memory units is inaccessible; and
based on the checking indicating the at least one specified memory unit is accessible and the at least one specified memory unit is inaccessible, accessing the at least one specified memory unit that is accessible and placing data from the at least one specified memory unit that is accessible in one or more locations in the memory operand, and for the at least one unit of memory that is inaccessible, placing default data in one or more other locations of the memory operand, wherein based on placing the data and the default data in the memory operand, the memory operand is to be used in the computation.

### Claim 14 (depends on 13)

The computer system of claim 13, wherein the method further comprises:
providing control to a control component; and
emulating by the control component the computation, the emulating using the memory operand.

### Claim 15 (depends on 13)

The computer system of claim 13, wherein the method further comprises:
storing the memory operand in a designated location;
restarting the compute instruction;
obtaining the memory operand from the designated location; and
performing the computation using the memory operand from the designated location.

### Claim 16 (depends on 13)

The computer system of claim 13, wherein the default data to be placed in the one or more other locations is configurable.

### Claim 17 (depends on 13)

The computer system of claim 13, wherein based on placing the data and the default data in the memory operand, the compute instruction terminates, and wherein the method further comprises:
restarting the compute instruction, the restarting including performing a context switch from supervisor state to application state based on the placing the data and the default data in the memory operand being performed in supervisor state; and
performing the computation indicated by the compute instruction using the memory operand.

### Claim 18 (depends on 17)

The computer system of claim 17, wherein the method further comprises:
determining whether a partially inaccessible operand facility indicator is set; and
performing, based on the partially inaccessible operand facility indicator being set, the computation indicated by the compute instruction using the memory operand.
