cregs: a new kind of memory for referencing arrays and pointers
Often, pointer and subscripted array references touch memory locations for which there are several possible aliases, hence these references cannot be made from registers. Although conventional caches can increase performance somewhat, they do not provide many of the benefits of registers, and do not permit the compiler to perform many optimizations associated with register references. The CReg (pronounced C-Reg) mechanism combines the hardware structures of cache and registers to create a new kind of memory structure, which can be used either as processor registers or as a replacement for conventional cache memory. By permitting aliased names to be grouped together, CRegs resolve ambiguous alias problems in hardware, resulting in more efficient execution than even the combination of conventional registers and cache can provide. This paper discusses both the conceptual CReg hardware structure and the compiler analysis and optimization techniques to manage that structure.
memorialized arrays pointers touch locatability aliasing cache cache performance compilation optimality association combinational hardware structure processor cache memory efficiency paper analysis management caches