Unified Address Space Debugging via Intermediary Mapping

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Debugging in multiple address space environments is challenging due to the inability of debuggers to translate unified address space abstractions across target address spaces, making it difficult to examine and debug applications that use multiple address spaces.

Innovation Solution

The solution involves recording and accumulating debug information that maps between unified address spaces and target address spaces, using two-component pointers with a tag component for identifier values and an offset component for relative offsets, to facilitate translation and debugging across multiple address spaces.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Ease of operation

If a unified address space abstraction is used to provide transparent access to memory locations across multiple address spaces, then ease of operation is improved, but debugging capability deteriorates because the debugger cannot translate unified addresses to target address spaces

Engineering Contradiction:
Improvetransparent access to memory locationsVSAvoiddebugging capability
Core Design Contradiction:
Ease of operationVSDifficulty of detecting and measuring

Solution Approach 1:

The patent introduces debug information as an intermediary layer between the unified address space and multiple target address spaces. This debug information contains mapping relationships that enable the debugger to translate unified addresses to specific target address spaces, thereby resolving the contradiction between unified access and debugging capability

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The patent adds an additional dimension of address translation by introducing a second level of address mapping. The unified address space operates at one level while the debug information provides a translation layer to the actual target address spaces, enabling both unified access and precise debugging

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

2Difficulty of detecting and measuring

If debug information is recorded to map between unified address space and target address spaces, then debugging capability is improved, but device complexity increases due to the need for additional mapping structures

Engineering Contradiction:
Improvedebugging capabilityVSAvoidmapping structures
Core Design Contradiction:
Difficulty of detecting and measuringVSDevice complexity

Solution Approach 1:

The patent applies preliminary action by recording debug information during the compilation phase, before the actual debugging session. The compiler generates and stores the mapping relationships between unified addresses and target addresses in advance, so that the debugger can directly use this pre-computed information without performing complex real-time translations

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent creates a copy of the address mapping relationships in the form of debug information. This copy contains the essential translation data needed for debugging, allowing the debugger to work with simplified address mappings while the actual execution uses the unified address space abstraction

Inventive Principle:
Principle #26Copying

Data Source

PatentUS8677322B2Debugging in a multiple address space environment
Publication Date: 2014.03.18 MICROSOFT TECHNOLOGY LICENSING LLC
  • US8677322B2 patent drawing
  • US8677322B2 patent drawing
  • US8677322B2 patent drawing

AI summary

The present invention extends to methods, systems, and computer program products for debugging in a multiple address space environment. Embodiments of the invention include techniques for recording debug information used for translating between an abstract unified address space and multiple address spaces at a target system (e.g., a co-processor, such as, a GPU or other accelerator). A table is stored in the recorded debug information. The table includes one or more entries mapping compiler assigned IDs to address spaces. During debugging within a symbolic debugger, the recorded debug information can be used for viewing program data across multiple address spaces in a live debugging session.