Inline Decode Micro-Operations for Move String Processing

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Traditional string operations in computing environments, such as those using the z/Architecture, are inefficient due to their reliance on known string lengths, which do not align with variable length termination semantics, leading to suboptimal performance in processing strings and other sequences.

Innovation Solution

Implementing instructions like Move String (MVST), Compare Logical String (CLST), and Search String (SRST) using inline straight-line code with instruction cracking, which decodes instructions into sequences of internal operations to perform string operations concurrently without loops, optimizing performance by eliminating microcode entry and exit costs and reducing boundary checks.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Speed

If traditional string operations are implemented using hardware or microcode with known string length, then processing speed is improved, but adaptability to variable length termination semantics deteriorates

Engineering Contradiction:
Improveprocessing speedVSAvoidadaptability to variable length termination
Core Design Contradiction:
SpeedVSAdaptability or versatility

Solution Approach 1:

The patent segments the string processing operation into multiple micro-operations that can be executed in parallel. The Move String instruction is decomposed into loading a defined number of characters into a first vector register, loading a defined number of termination characters into a second vector register, and comparing the registers to identify the position of the termination character. This segmentation allows the system to handle variable length strings efficiently by processing multiple characters simultaneously while maintaining adaptability to different string lengths.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces a vector processing dimension to traditional scalar string operations. By using vector registers to hold multiple characters and termination characters simultaneously, the system transitions from processing one character at a time to processing multiple characters in parallel. This dimensional change enables both high-speed processing and adaptability to variable length strings, as the vector operations can handle any string length within the vector register capacity.

Inventive Principle:
Principle #17Another dimension (Dimensionality change)

2Adaptability or versatility

If string operations use variable length termination semantics, then adaptability is improved, but processing efficiency deteriorates due to lack of known string length

Engineering Contradiction:
Improveadaptability to variable length terminationVSAvoidprocessing efficiency
Core Design Contradiction:
Adaptability or versatilityVSProductivity

Solution Approach 1:

The patent performs preliminary actions by loading a defined number of characters and termination characters into vector registers before the comparison operation. This pre-loading allows the system to prepare the data in parallel, so that when the termination character position needs to be identified, the comparison can be executed immediately without sequential processing delays. This preliminary vector loading maintains high productivity while supporting variable length strings.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent uses copying by replicating termination characters into a vector register. Instead of comparing each character individually against the termination character value, the system copies the termination character into multiple positions within a vector register, enabling simultaneous comparison across multiple string characters. This copying approach significantly improves processing efficiency while maintaining full adaptability to variable length termination semantics.

Inventive Principle:
Principle #26Copying

3Reliability

If instructions are implemented using microcode, then reliability is improved, but processing time increases due to microcode entry and exit costs

Engineering Contradiction:
Improveinstruction implementation reliabilityVSAvoidmicrocode entry and exit time
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The patent segments the string processing functionality into discrete vector operations that can be executed directly by the processor without requiring microcode interpretation. By breaking down the Move String operation into elementary vector load and compare instructions, the system eliminates the need for microcode entry and exit, reducing processing time while maintaining the reliability of well-defined instruction execution.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces vector registers as intermediary data structures between the instruction stream and the execution logic. These vector registers serve as intermediaries that hold multiple characters and termination characters, enabling the processor to perform parallel comparisons without relying on microcode. This intermediary approach maintains implementation reliability through standardized register operations while eliminating the time penalty associated with microcode processing.

Inventive Principle:
Principle #24Intermediary (Mediator)

Data Source

PatentUS10564967B2Move string processing via inline decode-based micro-operations expansion
Publication Date: 2020.02.18 INTERNATIONAL BUSINESS MACHINE CORPORATION
  • US10564967B2 patent drawing
  • US10564967B2 patent drawing
  • US10564967B2 patent drawing

AI summary

Move string processing via inline decode-based micro-operations expansion. An instruction is obtained, and the instruction, which is to perform a move string operation, is decoded. The decoding provides a sequence of operations to perform the move string operation. The sequence of operations includes a load to boundary operation to load an amount of data up to a specified boundary of memory. The data to be loaded as part of the move string operation.