FICO: A Fast Instruction Cache Optimizer

  • Marco Garatti
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 2826)


This paper shows the results obtained by FICO, a tool aimed at reducing instruction cache conflict misses. FICO reorders functions without requiring any program execution to gather profiling information. The control flow graph annotated with estimated execution frequencies is the actual input of the algorithm.

The tool has been implemented as a post linking phase in a newly developed state-of-the-art commercial-quality compiler codesigned by STMicroelectronics and Hewlett-Packard for their embedded processor family LX. Experimental results show that FICO can provide a speed-up of about 8% on embedded applications.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Faraboschi, P., Brown, G., Fisher, J.A., Desoli, G., Homewood, F.: Lx: a technology platform for customizable VLIW embedded processing. In: The 27th Annual Int. Symp. on Computer architecture 2000. ACM Press, New York (2000)Google Scholar
  2. 2.
    Fisher, J., Freudenberger, S.: Predicting conditional branch directions from previous runs of a program. In: Proc. of the 5th Int. Conf. on Architectural Support for Programming Languages and Operating Systems (ASPLOS-V) (1992)Google Scholar
  3. 3.
    Foundation, F.S. Lib bfd, the binary file descriptor library,
  4. 4.
    Gloy, N., Smith, M.D.: Procedure placement using temporal-ordering information. ACM Transactions on Programming Languages and Systems 21(5) (1999)Google Scholar
  5. 5.
    Hashemi, A.H., Kalamatianos, J., Calder, B., Kaeli, D., Khalafi, A., Meleis, W.: Cache line coloring using real and estimated profilesGoogle Scholar
  6. 6.
    Hwu, W., Chang, P.: Achieving high instruction cache performance with an optimizing compiler. In: Proc. of the 16th Int. Symp. on Computer Architecture (1989)Google Scholar
  7. 7.
    McFarling, S.: Program optimization for instruction caches. In: Proc. of the 3rd Int. Conf. on Architectural Support for Programming Languages and Operating Systems (ASPLOS-III) (1989)Google Scholar
  8. 8.
    Muchnick, S.S.: Advanced compiler design and implementation. Morgan Kaufmann Publishers, San Francisco (1997)Google Scholar
  9. 9.
    Patterson, D.A., Hennessy, J.L.: Computer Architecture: A Quantitative Approach, vol. 2. Morgan Kaufmann, San Mateo (1996)zbMATHGoogle Scholar
  10. 10.
    Pettis, K., Hansen, R.: Profile guided code positioning. In: Proc. of the ACM SIGPLAN 1990 Conf. on Programming Language Design and Implementation (1990)Google Scholar
  11. 11.
    Cormen, T.H., Leiserson, L.E., Steim, C.: Introduction to Algorithms, 2nd edn. MIT Press, Cambridge (2001)zbMATHGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2003

Authors and Affiliations

  • Marco Garatti
    • 1
  1. 1.STMicroelectronics 

Personalised recommendations