Shared Memory Synchronization Using Paired Wait and Signal Commands

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

In computer graphics systems, sharing cache memory between multiple processing units in a pipelined system poses challenges, particularly in avoiding read-after-write hazards when switching access from one unit to another, as existing methods lack effective synchronization mechanisms.

Innovation Solution

Implementing a synchronization system using paired wait/signal commands with identifiers to manage access to shared memory, ensuring that only one module accesses the cache at a time by delaying access until identifiers match, thus preventing data loss and hazards.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If multiple processing units share a cache memory in a pipelined system, then memory utilization and processing efficiency are improved, but read-after-write hazards and data loss risks increase

Engineering Contradiction:
Improvememory utilizationVSAvoiddata integrity
Core Design Contradiction:
ProductivityVSReliability

Solution Approach 1:

An identifier register acts as an intermediary between downstream and upstream processing units. The downstream unit writes its identifier to this register before accessing shared cache, and the upstream unit reads this identifier to verify it should proceed with memory access. This intermediary mechanism coordinates access without requiring complex external synchronization, resolving the contradiction between shared memory utilization and data integrity.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Reliability

If synchronization mechanisms are added to prevent read-after-write hazards, then data integrity is improved, but system complexity and overhead increase

Engineering Contradiction:
Improvedata integrityVSAvoidsynchronization mechanism complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The synchronization mechanism is self-service in that each processing unit autonomously manages its own access coordination. The downstream unit automatically writes its identifier to the register before cache access, and the upstream unit automatically reads and compares identifiers before accessing memory. This eliminates the need for external synchronization controllers or complex inter-unit communication protocols, achieving data integrity with minimal added complexity.

Inventive Principle:
Principle #25Self-service

3Reliability

If access to shared cache is delayed until synchronization is confirmed, then data integrity is improved, but access speed and throughput decrease

Engineering Contradiction:
Improvedata integrityVSAvoidmemory access speed
Core Design Contradiction:
ReliabilityVSSpeed

Solution Approach 1:

The downstream processing unit performs preliminary action by writing its identifier to the register before actually accessing the shared cache. This advance preparation allows the upstream unit to quickly verify identifier matching without causing delays in the actual data access operation. The synchronization check is performed in advance, enabling subsequent fast access when identifiers match.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS7430139B2Shared memory synchronization systems and methods
Publication Date: 2008.09.30 VIA TECH INC
  • US7430139B2 patent drawing
  • US7430139B2 patent drawing
  • US7430139B2 patent drawing

AI summary

The present disclosure provides system and method embodiments for synchronizing access to memory between a plurality of modules in a pipelined system. One system embodiment, among others, includes an upstream module and a downstream module that each share one or more locations in memory. The upstream module is configured to receive a command pair having matched identifiers, one half (wait command) of which enables the upstream module to delay access to the memory to avoid read-after-write (RAW) hazard, the other half (signal command) which is passed to the downstream module. The downstream module passes the identifier from the signal command to the upstream module at a time corresponding to the downstream module reaching an idle state, thus ceasing access to the memory. The upstream module, upon determining that the identifier received over a direct connection from the downstream module is from the command pair, accesses the one or more locations in the memory.