Controller Buffer Memory Bank Segmentation for Multi-Threaded Prefetch

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

In multi-threading, multi-tasking data processing environments, existing systems face challenges in efficiently communicating with external devices due to prefetch constraints and potential data corruption when threads switch, leading to reduced bandwidth and compatibility issues.

Innovation Solution

A data processing system with a controller that maps buffer memory into multiple banks with dedicated prefetch registers, allowing efficient switching between threads and avoiding additional prefetch periods, using a thread register to manage thread identification and access the buffer memory efficiently.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Device complexity

If a single prefetch register is used in a multi-threaded environment, then the device complexity is reduced, but data corruption occurs when threads switch and the reliability deteriorates

Engineering Contradiction:
Improvecontroller structureVSAvoiddata integrity
Core Design Contradiction:
Device complexityVSReliability

Solution Approach 1:

The single prefetch register is segmented into multiple thread-specific prefetch registers (one per thread). Each thread has its own dedicated prefetch register that stores the prefetch address specific to that thread's buffer memory access pattern. This segmentation prevents data corruption when threads switch because each thread's prefetch address is independently maintained, eliminating the reliability issue while accepting increased device complexity.

Inventive Principle:
Principle #1Segmentation

2Reliability

If a ready signal mechanism is introduced to meet prefetch constraints, then the reliability of data access is improved, but the device complexity increases and bandwidth is reduced

Engineering Contradiction:
Improveprefetch constraint complianceVSAvoidcontrol mechanism
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The system performs preliminary action by pre-loading data into buffer memory using thread-specific prefetch registers before the actual data processing occurs. The prefetch address in each register enables the controller to fetch data in advance during idle periods or when threads are switching, ensuring prefetch constraints are met without requiring complex ready signal mechanisms. This maintains reliability while avoiding the complexity and bandwidth reduction associated with ready signals.

Inventive Principle:
Principle #10Preliminary action

3Reliability

If the microprocessor waits for the prefetch period before accessing external devices, then the prefetch constraints are met, but the productivity decreases due to reduced bandwidth

Engineering Contradiction:
Improveprefetch constraint complianceVSAvoiddata access speed
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The system maintains continuity of useful action by enabling the microprocessor to initiate data processing immediately after writing the prefetch address to the thread-specific prefetch register, without waiting for the prefetch period to complete. The controller continuously fetches data from external devices using the stored prefetch addresses in the background, allowing the microprocessor to proceed with productive work while data is being pre-loaded. This eliminates idle waiting time and maintains full bandwidth utilization while still meeting prefetch constraints.

Inventive Principle:
Principle #20Continuity of useful action

4Adaptability or versatility

If thread switching is implemented in a multi-threaded environment, then the adaptability improves, but data corruption occurs when the prefetch address register is shared, reducing the reliability

Engineering Contradiction:
Improvemulti-threading capabilityVSAvoiddata integrity
Core Design Contradiction:
Adaptability or versatilityVSReliability

Solution Approach 1:

The prefetch address register is segmented into multiple thread-specific registers, with each thread having its own dedicated register. This segmentation allows the system to maintain multiple prefetch addresses simultaneously, one for each active thread, preventing data corruption during thread switching. When a thread switches, the controller simply uses the prefetch address from the new thread's register without interference from other threads, maintaining both multi-threading adaptability and data integrity reliability.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

A thread identification mechanism acts as an intermediary between the thread switching logic and the prefetch registers. This intermediary identifies which thread is currently active and directs the controller to use the corresponding thread-specific prefetch register, ensuring that each thread's prefetch operations are isolated and cannot corrupt another thread's data. This intermediary mechanism enables reliable thread switching while maintaining data integrity.

Inventive Principle:
Principle #24Intermediary (Mediator)

Data Source

PatentUS8099533B2Controller and a method for controlling the communication between a processor and external peripheral device
Publication Date: 2012.01.17 SAMSUNG ELECTRONICS CO LTD
  • US8099533B2 patent drawing
  • US8099533B2 patent drawing
  • US8099533B2 patent drawing

AI summary

The present invention relates to a data processing system based on a multithreaded operating system. The data processing system comprises at least one processor (PROC) for processing data based on multiple threads, at least one controller unit (CU) for controlling the communication between said at least one processor (PROC) and an external peripheral device (PD) connected to said at least one controller unit (CU). Said at least one controller unit (CU) comprises at least one buffer memory (BM) for buffering data from said peripheral device (PD) connected to said at least one controller unit (CU), and at least one memory managing unit (MMU) for managing the access to said at least one buffer memory (BM) by mapping said at least one buffer memory (BM) into N banks (C0-C3) each with a dedicated prefetch register (Addr.0-Addr.3). At least one of said multiple threads (T0-T3) is mapped to one of said N banks (C0-C3) and its dedicated prefetch register (Addr.0-Addr.3).