Over the past decade, digital signal processors (DSPs) have emerged as
the processors of choice for implementing embedded applications in hi
gh-volume consumer products. Through their use of specialized hardware
features and small chip areas, DSPs provide the high performance nece
ssary for embedded applications at the low costs demanded by the high-
volume consumer market. One feature commonly found in DSPs is the use
of dual data-memory banks to double the memory system's bandwidth. Whe
n coupled with high-order data interleaving, dual memory banks provide
the same bandwidth as more costly memory organizations such as a dual
-ported memory. However; making effective use of dual memory banks rem
ains difficult especially for high-level language (HLL) DSP compilers.
In this paper we describe two algorithms - compaction-based (CB) data
partitioning and partial data duplication - that we developed as part
of our research into the effective exploitation of dual data-memory b
ank in HLL DSP compilers. We show that CB partitioning is an effective
technique for exploiting dual data-memory bank, and that partial data
duplication can augment CB partitioning in improving execution perfor
mance. Our results show that CB partitioning improves the performance
of our kernel benchmark by 13%-40% and the performance of our applicat
ion benchmarks by 3%-15%. For one of the application benchmarks, parti
al data duplication boosts performance from 3% to 34%.