From: moss@cs.cmu.edu (Eliot Moss)
Subject: Re: optimizing for caches
Reply-To: moss@cs.cmu.edu (Eliot Moss)
Organization: Dept of Comp and Info Sci, Univ of Mass (Amherst)
Date: Thu, 19 Nov 1992 15:07:22 GMT
Keywords: optimize, architecture, bibliography

Look back through the last few SIGPLAN and ASPLOS conference proceedings and
related material. You'll find work addressing cache issues for addressing
arrays within loops, and for moving code around to get better instruction
cache performance. There has also been a little bit of work done on using
"prefetch" instructions to request cache loading in advance to avoid miss
penalties.

Here are some of the relevant references (from a seminar I gave last spring
titled "Compiling for Modern Architectures"):

@string{acm = "ACM"}
@string{ibmjrd = "IBM Journal of Research and Development"}
@string{ieeetoc = "IEEE Transactions on Computers"}
@string{toplas = "ACM Transactions on Programming Languages and Systems"}

@InProceedings{CKP91,
  author = 	 "David Callahan and Ken Kennedy and Allan Porterfield",
  title = 	 "Software Prefetching",
  crossref =  "asplos4",
  pages = 	 "40--52"
}

@InProceedings{McFarling89,
  author = 	 "Scott McFarling",
  title = 	 "Program Optimization for Instruction Caches",
  crossref =  "asplos3",
  pages = 	 "183--191"
}

@InProceedings{McFarling91,
  author = 	 "Scott McFarling",
  title = 	 "Procedure Merging with Instruction Caches",
  crossref =  "sigplan91",
  pages = 	 "71--79"
}

@InProceedings{OA89,
  author = 	 "Susan Owicki and Anant Agarwal",
  title = 	 "Evaluating the Performance of Software Cache Coherence",
  crossref =  "asplos3",
  pages = 	 "230--242"
}

@InProceedings{WL91,
  author = 	 "Michael E. Wolf and Monica S. Lam",
  title = 	 "A Data Locality Optimizing Algorithm",
  crossref =  "sigplan91",
  pages = 	 "30--44"
}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

@Proceedings{asplos3,
  title = 	 "Third International Conference on Architectural Support for
                  Programming Languages and Operating Systems",
  booktitle = 	 "Third International Conference on Architectural Support for
                  Programming Languages and Operating Systems",
  year = 	 1989,
  key = 	 "ASPLOS",
  publisher =    acm,
  address = 	 "Boston, MA",
  month = 	 apr
}

@Proceedings{asplos4,
  title = 	 "Fourth International Conference on Architectural Support for
                  Programming Languages and Operating Systems",
  booktitle = 	 "Fourth International Conference on Architectural Support for
                  Programming Languages and Operating Systems",
  year = 	 1991,
  key = 	 "ASPLOS",
  publisher =    acm,
  address = 	 "Santa Clara, CA",
  month = 	 apr
}

@Proceedings{sigplan91,
  title = 	 "Proceedings of the {SIGPLAN} '91 Conference on Programming
                  Language Design and Implementation",
  booktitle = 	 "Proceedings of the {SIGPLAN} '91 Conference on Programming
                  Language Design and Implementation",
  year = 	 1991,
  key = 	 "SIGPLAN",
  publisher = acm,
  address = 	 "Toronto",
  month = 	 jun
}

Hope this helps --					Eliot Moss
--

J. Eliot B. Moss, Associate Professor	Visiting Associate Professor
Department of Computer Science		School of Computer Science
Lederle Graduate Research Center	Carnegie Mellon University
University of Massachusetts		5000 Forbes Avenue
Amherst, MA  01003			Pittsburgh, PA  15213-3891
(413) 545-4206, 545-1249 (fax)		(412) 268-6767, 681-5739 (fax)
Moss@cs.umass.edu			Moss@cs.cmu.edu
-- 
Send compilers articles to compilers@iecc.cambridge.ma.us or
{ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.