Handling Page Faults in SIMD String Processing Across Memory Boundaries

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing systems face challenges in accessing null-terminated strings that span memory page boundaries, leading to page fault violations and increased software overhead due to the need for additional protection mechanisms, which hinders the performance benefits of SIMD operations.

Innovation Solution

A method and system that initiate access to a data frame spanning memory blocks, determine translation faults, and use default characters as replacements for inaccessible portions, allowing safe parallel operations and avoiding spurious exceptions by emulating an auto-termination load instruction.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If SIMD operations are used to process strings in parallel, then processing speed is improved, but page access violations occur when strings span memory page boundaries

Engineering Contradiction:
Improvestring processing speedVSAvoidpage access safety
Core Design Contradiction:
ProductivityVSReliability

Solution Approach 1:

The patent segments the string access operation into two parts: the accessible portion within the current page and the inaccessible portion spanning to the next page. The SIMD instruction processes only the safe segment (characters within the current page boundary), while the inaccessible segment is handled separately or truncated, preventing page access violations while maintaining parallel processing benefits for the valid data portion.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent applies preliminary anti-action by预先 checking the string length against the remaining bytes in the current page before executing SIMD operations. This prevents the parallel load instruction from attempting to access memory addresses in the next page that the process lacks permissions for, thereby avoiding page access violations before they occur.

Inventive Principle:
Principle #9Preliminary anti-action

2Reliability

If sequential access methods are used to avoid page faults, then system stability is maintained, but processing time increases

Engineering Contradiction:
Improvesystem stabilityVSAvoidstring processing time
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The patent applies partial action by using SIMD instructions to process multiple string characters in parallel within the safe boundary of the current page, rather than sequentially processing one character at a time. This partial parallel processing maintains system stability by avoiding page faults while significantly reducing processing time for the accessible portion of the string.

Inventive Principle:
Principle #16Partial or excessive action

3Reliability

If additional protection mechanisms are implemented to prevent page faults, then system security is improved, but software complexity increases

Engineering Contradiction:
Improvepage access protectionVSAvoidsoftware overhead
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The patent applies self-service by utilizing the operating system's existing page permission structure and memory management capabilities. The system naturally provides page boundary protection through its virtual memory architecture, and the patent leverages this existing mechanism rather than implementing additional complex protection layers, thereby maintaining reliability while minimizing software overhead.

Inventive Principle:
Principle #25Self-service

Data Source

PatentUS9703721B2Processing page fault exceptions in supervisory software when accessing strings and similar data structures using normal load instructions
Publication Date: 2017.07.11 INTERNATIONAL BUSINESS MACHINE CORPORATION
  • US9703721B2 patent drawing
  • US9703721B2 patent drawing
  • US9703721B2 patent drawing

AI summary

Embodiments are directed to a method of accessing a data frame, wherein a first portion of the data frame is in a first memory block, and wherein a second portion of the data frame is in a second memory block. The method includes determining that an access of the data frame crosses a boundary between the first second memory blocks, determining that an attempted translation of an address of the first portion of the data frame in the first memory block did not result in a translation fault, and accessing the first portion of the data frame. The method further includes, based at least in part on a determination that an attempted translation of an address of the second portion of the data frame in the second memory block resulted in a translation fault, accessing at least one default character as a replacement for accessing the second portion of the data frame.