Common Concurrency Runtime for Scalable Multi-Core Programming

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing programming paradigms for concurrency, such as threads and mutexes, are difficult to use effectively without introducing timing bugs or serializing access, and new languages like C-Omega require a new infrastructure, whereas developers need a mechanism to address concurrency and coordination in concurrent and distributed systems without a new language.

Innovation Solution

The Common Concurrency Runtime (CCR) provides a set of concurrency primitives in C# that allows for scalable applications by implementing channels with input and asynchronous output capabilities, along with atomic test-and-input primitives, enabling efficient coordination of concurrent processes and I/O requests, and can be used with existing languages like C-Omega.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Ease of manufacture

If traditional threading and mutex primitives are used for concurrency, then developers can leverage existing programming paradigms, but the code becomes difficult to use properly without introducing timing bugs and serializing access

Engineering Contradiction:
ImproveEase of programmingVSAvoidTiming correctness
Core Design Contradiction:
Ease of manufactureVSReliability

Solution Approach 1:

The patent introduces an intermediary layer (the CCR with its message-passing primitives and task model) between the programmer and the underlying threading/mutex mechanisms. This intermediary provides higher-level abstractions that automatically handle synchronization and coordination, eliminating timing bugs while maintaining ease of programming through familiar C# constructs.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The patent replaces the mechanical system of threads and mutexes with a message-passing based task model. Instead of manually managing thread synchronization through locks and critical sections, the system uses asynchronous message passing between tasks, which inherently avoids timing bugs while preserving programming simplicity.

Inventive Principle:
Principle #28Mechanics substitution (Replace mechanical system)

2Speed

If CPU clock rates continue to increase, then sequential code runs faster, but thermal barriers prevent further clock rate increases and multi-core designs require concurrent programming

Engineering Contradiction:
ImproveExecution speedVSAvoidProgramming complexity
Core Design Contradiction:
SpeedVSEase of operation

Solution Approach 1:

The patent segments computation into discrete tasks that can be executed concurrently on multiple cores. By breaking down sequential code into independent task units that communicate via message passing, the system achieves parallel execution across multiple cores while maintaining simple sequential-like programming semantics through the CCR's high-level primitives.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The CCR provides a universal programming model that works seamlessly on both single-core and multi-core systems. The same message-passing task primitives can be used regardless of the underlying hardware architecture, automatically adapting to utilize available cores without increasing programming complexity.

Inventive Principle:
Principle #6Universality (Multi-functionality)

3Ease of operation

If a new language like C-Omega is used for concurrent programming, then concurrency can be expressed more naturally, but an entirely new language, infrastructure and toolchain are required

Engineering Contradiction:
ImproveConcurrency expressivenessVSAvoidInfrastructure complexity
Core Design Contradiction:
Ease of operationVSDevice complexity

Solution Approach 1:

The patent merges the benefits of specialized concurrent programming languages with the familiarity of C# by implementing a comprehensive concurrency runtime within the existing C# ecosystem. This combines the natural concurrency expressiveness of languages like C-Omega with the existing C# infrastructure, toolchain, and developer familiarity, avoiding the need for a completely new language while achieving elegant concurrent programming.

Inventive Principle:
Principle #5Merging (Combining)

4Manufacturing precision

If declarative approaches with fixed compile-time primitives are used, then concurrency can be statically determined, but primitives cannot be modified or adjusted based on runtime information

Engineering Contradiction:
ImproveStatic determinationVSAvoidRuntime flexibility
Core Design Contradiction:
Manufacturing precisionVSAdaptability or versatility

Solution Approach 1:

The patent implements dynamic concurrency primitives that can be configured and modified at runtime based on actual execution conditions. The message-passing task model allows tasks to be created, modified, and scheduled dynamically during runtime, enabling adaptation to changing conditions while maintaining static type safety through C#'s type system.

Inventive Principle:
Principle #15Dynamics

Data Source

PatentUS7774750B2Common concurrency runtime
Publication Date: 2010.08.10 MICROSOFT TECHNOLOGY LICENSING LLC
  • US7774750B2 patent drawing
  • US7774750B2 patent drawing
  • US7774750B2 patent drawing

AI summary

The common concurrency runtime (CCR) provides a simple and self-consistent set of concurrency primitives that developers can use to more readily split their computation into more discrete chunks that can scale better with additional processors. This set of primitives provides for very scalable applications that are well suited for the coming world of ubiquitous communication and very large scale out for the number of local processors. The CCR may be implemented as a single library in C# that implements channels with input and asynchronous output capabilities, along with an atomic test-and-input primitive. On top of this, richer derived operators (e.g., choice, join, replication, reader-writers, scatter-gather, etc.) may be encoded. Thus, existing C# may be built upon to provide the capability to concurrently issue I/O requests to remote systems while simultaneously performing other functions locally to increase the efficiency of the distributed system. Because it is based on C#, the CCR allows users to take advantage of a well-known programming model to address unique issues in a new programming environment.