Controller Buffer Memory Bank Segmentation for Multi-Threaded Prefetch
Find Innovative SolutionsGenerate 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
Engineering 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
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.
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
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.
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
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.
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
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.
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.
Data Source
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).


