Traineeship: Estimating memory requirements of applications at the source level
Description
Current developments in settop-box products for media systems show that chips are becoming memory dominated (estimated 90\% in 2010) for two reasons. Firstly, logic scales faster with chip technology than memory. Secondly, current media applications require increasingly more memory. For cost reasons, we can no longer afford different sub-systems to have separate, large memories. This suggests the need for a high level of re-use of these memories. It is therefore expected in the electronic design community that future electronic systems re-use platforms that integrate many IP-blocks and memories. Untill now, designers lived comfortably with dedicated memory close to the computational logic, thereby allowing small access times. In future platforms memories will be distant and shared among potentially many computational resources. The data structures used by an application must be mapped to these memories. To do this, the designer must know which data structures are used by an application and what the memory requirements (size) of these data structures is.
In this project, a tool is developed to analyze the memory requirements of an application written in SYAPI. SYAPI is a C++- library for specifying SDF graphs. These SDF graphs are often used to specify compute intensive kernels in multimedia applications. The initial idea to analyze the memory requirements is as follows. The LLVM parser is used to parse the C++ code of the application. Next, the function call graph of the application is analyzed to determine the maximum stack size. This maximum stack size plus the size of the global variables gives the memory requirements of the application.
The above described analysis technique provides an upper-bound on the memory requirements of an application. Most compilers use techniques to reduce the memory requirements of an application. For example, they perform life-time analysis of variables to see whether memory locations can be used by different variables at different moments in time. Taking this kind of optimization options into account in the analysis may greatly improve the estimated memory requirements.
After an analysis is made of the memory requirement of an application, a separation between the data structures that go to the local (private) memory and to the remote (shared) memory must be made. Next, a decision must be made on how the data structures are placed in the various memories that are available in the system. A good mapping technique to solve this problem must be developed.
Data structures that are placed in a remote memory have a large access time. To hide this access time, prefetching can be used. To use prefetching, the application code must be analyzed to find the earliest point at which it is known which data is needed in the future. This data can then be requested as early as possible. In this project, an analysis technique and code transformation tool are developed to support prefetching of data from remote memories.
Duration
April 2005 - June 2005
Student:
Supervisor:
Presentations
- Intermediate Presentation (ppt)
Publications
|