Skip to main content

Vertical Object Layout and Compression for Fixed Heaps

  • Chapter
Semantics and Algebraic Specification

Part of the book series: Lecture Notes in Computer Science ((LNTCS,volume 5700))

  • 412 Accesses

Abstract

Research into embedded sensor networks has placed increased focus on the problem of developing reliable and flexible software for microcontroller-class devices. Languages such as nesC [10] and Virgil [20] have brought higher-level programming idioms to this lowest layer of software, thereby adding expressiveness. Both languages are marked by the absence of dynamic memory allocation, which removes the need for a runtime system to manage memory. While nesC offers code modules with statically allocated fields, arrays and structs, Virgil allows the application to allocate and initialize arbitrary objects during compilation, producing a fixed object heap for runtime. This paper explores techniques for compressing fixed object heaps with the goal of reducing the RAM footprint of a program. We explore table-based compression and introduce a novel form of object layout called vertical object layout. We provide experimental results that measure the impact on RAM size, code size, and execution time for a set of Virgil programs. Our results show that compressed vertical layout has better execution time and code size than table-based compression while achieving more than 20% heap reduction on 6 of 12 benchmark programs and 2–17% heap reduction on the remaining 6. We also present a formalization of vertical object layout and prove tight relationships between three styles of object layout.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

eBook
USD 16.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 16.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Adl-Tabatabai, A.-R., Bharadwaj, J., Cierniak, M., Eng, M., Fang, J., Lewis, B.T., Murphy, B.R., Stichnoth, J.M.: Improving 64-bit Java IPF performance by compressing heap references. In: Proceedings of CGO 2004, pp. 100–110 (2004)

    Google Scholar 

  2. Ananian, C.S., Rinard, M.: Data size optimizations for Java programs. In: LCTES 2003, Languages, Compilers, and Tools for Embedded Systems (2003)

    Google Scholar 

  3. Bacon, D.F.: Kava: a Java dialect with a uniform object model for lightweight classes. Concurrency and Computation: Practice and Experience 15(3–5), 185–206 (2003)

    Article  MATH  Google Scholar 

  4. Bacon, D.F., Fink, S.J., Grove, D.: Space- and time-efficient implementation of the Java object model. In: Magnusson, B. (ed.) ECOOP 2002. LNCS, vol. 2374, pp. 111–132. Springer, Heidelberg (2002)

    Chapter  Google Scholar 

  5. Bagley, D.: Computer language shootout benchmarks, http://shootout.alioth.debian.org/gp4

  6. Chapman, R., Barnes, J., Dobbing, B.: On the principled design of object-oriented programming languages for high-integrity systems. In: Proceedings of the 2nd NASA/FAA Object-Oriented Technology Workshop (2003)

    Google Scholar 

  7. Chen, G., Kandemir, M.T., Vijaykrishnan, N., Irwin, M.J., Mathiske, B., Wolczko, M.: Heap compression for memory-constrained Java environments. In: Proceedings of OOPSLA 2003, ACM SIGPLAN Conference on Object-Oriented Programming Systems, Languages and Applications, pp. 282–301 (2003)

    Google Scholar 

  8. Cohen, N.H.: Type-extension type tests can be performed in constant time. ACM Transactions on Programming Languages and Systems 13(4), 626–629 (1991)

    Article  MathSciNet  Google Scholar 

  9. Cooprider, N., Regehr, J.: Offline compression for on-chip RAM. In: Proceedings of PLDI 2007, ACM SIGPLAN Conference on Programming Language Design and Implementation, San Diego, California, June 2007, pp. 363–372 (2007)

    Google Scholar 

  10. Gay, D., Levis, P., von Behren, J.R., Welsh, M., Brewer, E.A., Culler, D.E.: The nesC language: A holistic approach to networked embedded systems. In: Proceedings of PLDI 2003, ACM SIGPLAN Conference on Programming Language Design and Implementation, pp. 1–11 (2003)

    Google Scholar 

  11. Lattner, C., Adve, V.S.: Automatic pool allocation for disjoint data structures. In: Proceedings of The Workshop on Memory Systems Performance (MSP 2002) and The International Symposium on Memory Management (ISMM 2002), pp. 13–24 (2002)

    Google Scholar 

  12. Mogul, J.C., Bartlett, J.F., Mayo, R.N., Srivastava, A.: Performance implications of multiple pointer sizes. In: Proceedings of USENIX Winter, pp. 187–200 (1995)

    Google Scholar 

  13. Mosses, P.D.: A semantic algebra for binding constructs. In: Proceedings of ICFPC 1981, International Colloquium on Formalization of Programming Concepts, pp. 408–418 (1981)

    Google Scholar 

  14. Mosses, P.D.: Abstract semantic algebras! In: Proceedings of IFIP TC2 Working Conference on Formal Description of Programming Concepts II (Garmisch-Partenkirchen, 1982), pp. 45–70. North-Holland, Amsterdam (1983)

    Google Scholar 

  15. Mosses, P.D.: A basic abstract semantic algebra. In: Plotkin, G., MacQueen, D.B., Kahn, G. (eds.) Semantics of Data Types 1984. LNCS, vol. 173, pp. 87–107. Springer, Heidelberg (1984)

    Chapter  Google Scholar 

  16. Myers, A.: Bidirectional object layout for separate compilation. In: Proceedings of OOPSLA 1995, ACM SIGPLAN Tenth Annual Conference on Object-Oriented Programming Systems, Languages and Applications, pp. 124–139 (1995)

    Google Scholar 

  17. Pugh, W., Weddell, G.E.: Two-directional record layout for multiple inheritance. In: Proceedings of PLDI 1990, ACM SIGPLAN Conference on Programming Language Design and Implementation, pp. 85–91 (1990)

    Google Scholar 

  18. Schubert, L.K., Papalaskaris, M.A., Taugher, J.: Determining type, part, color and time relationships. IEEE Computer 16(10), 53–60 (1983)

    Article  Google Scholar 

  19. Taha, W., Ellner, S., Xi, H.: Generating heap-bounded programs in a functional setting. In: Alur, R., Lee, I. (eds.) EMSOFT 2003. LNCS, vol. 2855, pp. 340–355. Springer, Heidelberg (2003)

    Chapter  Google Scholar 

  20. Titzer, B.L.: Virgil: Objects on the head of a pin. In: Proceedings of OOPSLA 2006, ACM SIGPLAN Conference on Object-Oriented Programming Systems, Languages and Applications (2006)

    Google Scholar 

  21. Titzer, B.L., Lee, D.K., Palsberg, J.: Avrora: Scalable sensor network simulation with precise timing. In: Proceedings of IPSN 2005, Fourth International Conference on Information Processing in Sensor Networks, Los Angeles, April 2005, pp. 477–482 (2005)

    Google Scholar 

  22. Titzer, B.L., Palsberg, J.: Nonintrusive precision instrumentation of microcontroller software. In: Proceedings of LCTES 2005, Conference on Languages, Compilers and Tools for Embedded Systems, Chicago, Illinois, June 2005, pp. 59–68 (2005)

    Google Scholar 

  23. Titzer, B.L., Palsberg, J.: Vertical object layout and compression for fixed heaps. In: Proceedings of CASES 2007, International Conference on Compilers, Architecture, and Synthesis for Embedded Systems, Salzburg, Austria, September 2007, pp. 170–178 (2007)

    Google Scholar 

  24. Wilson, P.: Operating system support for small objects. In: Proceedings of Object Orientation in Operating Systems, pp. 80–86 (1991)

    Google Scholar 

  25. Wright, G., Seidl, M.L., Wolczko, M.: An object-aware memory architecture. Science of Computer Programming 62(2), 145–163 (2006)

    Article  MathSciNet  MATH  Google Scholar 

  26. Zhang, Y., Gupta, R.: Compressing heap data for improved memory performance. Software – Practice & Experience 36(10), 1081–1111 (2006)

    Article  Google Scholar 

  27. Zibin, Y., Gil, J.: Efficient subtyping tests with pq-encoding. In: Proceedings of OOPSLA 2001, ACM SIGPLAN Conference on Object-Oriented Programming Systems, Languages and Applications, Tampa Bay, Florida, October 2001, pp. 96–107 (2001)

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2009 Springer-Verlag Berlin Heidelberg

About this chapter

Cite this chapter

Titzer, B.L., Palsberg, J. (2009). Vertical Object Layout and Compression for Fixed Heaps. In: Palsberg, J. (eds) Semantics and Algebraic Specification. Lecture Notes in Computer Science, vol 5700. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-04164-8_18

Download citation

  • DOI: https://doi.org/10.1007/978-3-642-04164-8_18

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-642-04163-1

  • Online ISBN: 978-3-642-04164-8

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics