Programmable Constant Buffer Versioning for Multi-Threaded Throughput
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Conventional multi-threaded processors are inefficient as they require draining an execution unit when a programmable constant is changed, leading to reduced processing throughput due to delayed updates and frequent interruptions in multi-threaded execution.
Innovation Solution
Implementing multiple versions of programmable constants within a multi-threaded processor, allowing for simultaneous execution of programs using different constant values by storing them in a constant buffer and using address translation to manage version updates, thereby avoiding the need to drain execution units during constant changes.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If a programmable constant is changed in conventional multi-threaded processors, then the constant value is updated, but the execution unit must be drained before the change takes effect, reducing processing throughput
Solution Approach 1:
The patent segments the constant buffer into multiple versions (first constant buffer with first constant values, second constant buffer with second constant values) that can be independently accessed. This allows different execution units to access different versions of constants simultaneously without draining, resolving the contradiction between maintaining constant consistency and preserving processing throughput.
Solution Approach 2:
The patent introduces a version dimension to constant storage by creating multiple constant buffers representing different versions. This dimensional expansion allows concurrent access to different constant versions without interference, eliminating the need to drain execution units when constants change while maintaining data consistency through version tracking.
2Reliability
If execution units are drained when constants change, then data consistency is ensured, but multi-threaded processing is interrupted and throughput is reduced
Solution Approach 1:
The patent prepares multiple versions of constant buffers in advance, allowing constant changes to be made without interrupting ongoing execution. The system can switch between pre-prepared constant versions, eliminating execution interruptions and reducing time loss while maintaining data consistency through proper version management.
Solution Approach 2:
The patent creates copies of constant data in multiple buffer versions. When a constant needs to be updated, the system copies the new constant values to a new version buffer while execution units continue reading from the previous version buffer. This copying approach ensures data consistency without execution interruptions, reducing time loss.
3Productivity
If multiple versions of constants are stored simultaneously, then processing throughput is improved by avoiding drains, but memory usage and device complexity increase
Solution Approach 1:
The patent extracts the version management functionality into a dedicated constant buffer table that tracks which constant buffer version corresponds to which shader program. This separation reduces the complexity burden on individual execution units while enabling high throughput through multiple constant versions, as each execution unit only needs to access its designated version via the table.
Solution Approach 2:
The constant buffer table serves multiple functions: it stores mapping information between shader programs and constant buffer versions, tracks which versions are in use, and enables efficient version switching. This multi-functionality reduces overall device complexity by consolidating management tasks into a single universal structure rather than requiring separate mechanisms for each execution unit.
Data Source
AI summary
Systems and methods for using multiple versions of programmable constants within a multi-threaded processor allow a programmable constant to be changed before a program using the constants has completed execution. Processing performance may be improved since programs using different values for a programmable constant may execute simultaneously. The programmable constants are stored in a constant buffer and an entry of a constant buffer table is bound to the constant buffer. When a programmable constant is changed it is copied to an entry in a page pool and address translation for the page pool is updated to correspond to the old version (copy) of the programmable constant. An advantage is that the constant buffer stores the newest version of the programmable constant.


