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.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
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)
Ananian, C.S., Rinard, M.: Data size optimizations for Java programs. In: LCTES 2003, Languages, Compilers, and Tools for Embedded Systems (2003)
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)
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)
Bagley, D.: Computer language shootout benchmarks, http://shootout.alioth.debian.org/gp4
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
Schubert, L.K., Papalaskaris, M.A., Taugher, J.: Determining type, part, color and time relationships. IEEE Computer 16(10), 53–60 (1983)
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)
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)
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)
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)
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)
Wilson, P.: Operating system support for small objects. In: Proceedings of Object Orientation in Operating Systems, pp. 80–86 (1991)
Wright, G., Seidl, M.L., Wolczko, M.: An object-aware memory architecture. Science of Computer Programming 62(2), 145–163 (2006)
Zhang, Y., Gupta, R.: Compressing heap data for improved memory performance. Software – Practice & Experience 36(10), 1081–1111 (2006)
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)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights 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)