Designing Processing in Memory Architectures via Static Analysis of Real Programs

Open Access
Smith, Henry Francis
Area of Honors:
Computer Engineering
Bachelor of Science
Document Type:
Thesis Supervisors:
  • John Morgan Sampson, Thesis Supervisor
  • Dr. Vijaykrishnan Narayanan, Honors Advisor
  • computer architecture
  • processing in memory
  • static analysis
Processing in Memory (PIM) architectures have displayed a number of benefits over traditional processor architectures. By inserting compute elements nearer to---or inside---memory, data movement can be drastically reduced. This in turn reduces the time spent and the energy expended moving data, in addition to reducing memory contention and freeing processor cycles for more computation. However, Processing in Memory architectures will not see popular adoption if there are not applications which can utilize them. Many PIM architectures present a high barrier to entry for software: to effectively utilize processing in memory, entire programs may need to be rewritten. Without promise of increased performance and decreased energy consumption for their application, software designers may not be willing to put in the effort to redesign their software. In this thesis, we conduct a Processing in Memory design exploration entirely from the software perspective. With the above issues in mind, we focus on developing a PIM architecture which accelerates computation patterns found in real programs. We first form a hypothesis about simple computation patterns which could be offloaded to memory, and define a basic PIM architecture to accelerate those patterns. Using static analysis tools, we then dig deep into applications and benchmarks to evaluate just how common these patterns are. Based on our results, we improve on our original architecture, finally proposing a new PIM architecture whose design is backed by computation patterns found in real programs. The primary contribution of this thesis is to present and advocate for a new approach to Processing in Memory exploration. By building our PIM architecture around patterns extracted from real software, we can be more confident not only in our architecture's capability to improve performance and decrease energy, but also in our architecture's potential for adoption by software designers.