Branch Resolution Routine for Program Block Caching

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing information processing techniques face challenges in achieving fast and efficient access to programs due to limitations in memory capacity and data transfer rates, requiring manual division of programs into modules and manual loading into high-speed memory, which is burdensome for programmers, especially for large and complex programs.

Innovation Solution

An information processing apparatus and method that divides a program into blocks, storing them in both a main memory and a local memory, with a processor that loads and processes program blocks from the main memory to the local memory, using a branch resolution routine to manage access and caching, thereby reducing the need for frequent main memory access.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Speed

If a program is stored entirely in a high-speed memory, then access speed is improved, but the memory capacity requirement increases

Engineering Contradiction:
Improveprogram access speedVSAvoidmemory capacity
Core Design Contradiction:
SpeedVSVolume of stationary object

Solution Approach 1:

The program is divided into multiple program blocks that can be selectively loaded into the high-speed memory (local memory). Only the currently needed program blocks are stored in the local memory, while other blocks remain in the main memory. This segmentation allows fast access to active code segments without requiring the entire program to reside in high-speed memory.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The system performs preliminary loading of program blocks into the local memory before they are needed for execution. The branch resolution routine predicts potential branch targets and pre-loads those program blocks into the local memory, so that when a branch is actually taken, the target code is already available in high-speed memory, eliminating access delays.

Inventive Principle:
Principle #10Preliminary action

2Productivity

If a program is manually divided into modules and loading is manually described, then access efficiency is improved, but programming complexity increases

Engineering Contradiction:
Improveprogram access efficiencyVSAvoidprogramming complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The system implements automatic program block management through the branch resolution routine, which autonomously determines which program blocks to load into local memory based on branch instructions in the code. The compiler automatically inserts branch resolution routines that monitor program execution and dynamically load required blocks, eliminating the need for programmers to manually divide programs or write loading code.

Inventive Principle:
Principle #25Self-service

Solution Approach 2:

The branch resolution routine acts as an intermediary between the program code and the memory loading mechanism. It intercepts branch instructions, determines whether the target block is already in local memory, and automatically loads the required blocks. This intermediary layer shields the programmer from the complexity of memory management while optimizing program access efficiency.

Inventive Principle:
Principle #24Intermediary (Mediator)

Data Source

PatentUS8195925B2Apparatus and method for efficient caching via addition of branch into program block being processed
Publication Date: 2012.06.05 SONY INTERACTIVE ENTERTAINMENT LLC
  • US8195925B2 patent drawing
  • US8195925B2 patent drawing
  • US8195925B2 patent drawing

AI summary

A main memory stores cache blocks obtained by dividing a program. At a position in a cache block where a branch to another cache block is provided, there is embedded an instruction for activating a branch resolution routine for performing processing, such as loading of a cache block of the branch target. A program is loaded into a local memory in units of cache blocks, and the cache blocks are serially stored in first through nth banks, which are sections provided in the storage area. Management of addresses in the local memory or processing for discarding a copy of a cache block is performed with reference to an address translation table, an inter-bank reference table and a generation number table.