ASCII PACK Instruction Emulation Across Mixed-Endian Architectures

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing systems fail to efficiently emulate PACK instructions for ASCII and Unicode character strings across different computer architectures, such as zSeries, Intel x86, and PowerPC, due to differences in byte ordering and data representation.

Innovation Solution

A block-by-block algorithm is developed to convert ASCII and Unicode strings into packed formats, utilizing byte reversal functions to support both big-endian and small-endian architectures, allowing for efficient emulation of PKU and PKA instructions on various processor architectures.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If byte-by-byte processing is used to emulate PACK instructions, then compatibility with different architectures is maintained, but processing speed deteriorates

Engineering Contradiction:
Improvearchitecture compatibilityVSAvoidprocessing speed
Core Design Contradiction:
Adaptability or versatilityVSProductivity

Solution Approach 1:

The patent divides the PACK instruction emulation into block-by-block processing segments. Instead of processing one byte at a time, the algorithm processes multiple bytes in blocks, maintaining architecture compatibility through systematic byte reversal while improving processing throughput through bulk operations.

Inventive Principle:
Principle #1Segmentation

2Productivity

If block-by-block processing is used to improve speed, then processing efficiency improves, but implementation complexity increases

Engineering Contradiction:
Improveprocessing efficiencyVSAvoidalgorithm complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The algorithm segments the data into manageable blocks and processes each block systematically. This segmentation approach organizes the complexity into reusable components that can be applied consistently across different architectures, making the implementation more maintainable despite the increased processing power requirements.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent applies byte reversal functions as preliminary actions before packing operations. By pre-processing the byte order in blocks before the actual PACK operation, the algorithm reduces the complexity of handling endianness differences during the main processing loop, streamlining the overall implementation.

Inventive Principle:
Principle #10Preliminary action

3Adaptability or versatility

If Unicode two-byte representation is used to expand character range, then character representation capability improves, but data storage requirements increase

Engineering Contradiction:
Improvecharacter representation capabilityVSAvoiddata storage requirements
Core Design Contradiction:
Adaptability or versatilityVSQuantity of substance

Solution Approach 1:

The patent changes the parameter representation from two-byte Unicode to packed decimal format. By converting Unicode characters to their numeric equivalents and then packing them into compact decimal representations, the algorithm reduces storage requirements while maintaining the ability to represent a wide range of characters through the packing process.

Inventive Principle:
Principle #35Parameter changes

Data Source

PatentUS8077062B2Pack ASCII zSeries instructions
Publication Date: 2011.12.13 INTERNATIONAL BUSINESS MACHINE CORPORATION
  • US8077062B2 patent drawing
  • US8077062B2 patent drawing
  • US8077062B2 patent drawing

AI summary

ASCII input data to be packed into memory is obtained. The ASCII input data includes a plurality of blocks of ASCII data. wherein each block of ASCII data includes a plurality of ASCII characters. A block of ASCII data to he packed is selected. The selected block is chosen from the plurality of blocks of ASCII data and includes a plurality of bytes of data. One or more operations are performed on the selected block of ASCII data to obtain a plurality of bytes of packed data. The selecting and the performing are repeated one or more times for a next selected block to obtain a packed array for the input data.