Lazy reference counting for the microgrid

This papers revisits non-deferred reference counting, a common technique to ensure that potentially shared large heap objects can be reused safely when they are both input and output to computations. Traditionally, thread-safe reference counting exploit implicit memory-based communication of counter data and require means to achieve a globally consistent memory state, either using barriers or locks. Acknowledgeing the distributed nature of upcoming many-core chips, we have developed a novel approach that keeps reference counters at single physical locations and ships the counting operations asynchronously to these locations using hardware primitives, rather than implicitely moving the counter data between threads. Compared to previous methods, our approach does not require full cache coherency.

[1]  Edsger W. Dijkstra,et al.  Hierarchical ordering of sequential processes , 1971, Acta Informatica.

[2]  Paul Hudak,et al.  The aggregate update problem in functional programming systems , 1985, POPL.

[3]  Chris R. Jesshope,et al.  Implementation and evaluation of a microthread architecture , 2009, J. Syst. Archit..

[4]  Chris R. Jesshope Operating Systems in silicon and the Dynamic Management of Resources in Many-Core Chips , 2008, Parallel Process. Lett..

[5]  Chris R. Jesshope,et al.  An Architecture and Protocol for the Management of Resources in Ubiquitous and Heterogeneous Systems Based on the SVP Model of Concurrency , 2008, SAMOS.

[6]  Michael A. Hicks,et al.  Making multi-cores mainstream - from security to scalability , 2009, PARCO.

[7]  Clemens Grelck,et al.  SAC—A Functional Array Language for Efficient Multi-threaded Execution , 2006, International Journal of Parallel Programming.

[8]  Paul R. Wilson,et al.  Dynamic Storage Allocation: A Survey and Critical Review , 1995, IWMM.

[9]  Clemens Grelck,et al.  Compiling the functional data-parallel language SaC for Microgrids of Self-Adaptive Virtual Processors , 2009 .

[10]  Ralf Hinze,et al.  Implementation and Application of Functional Languages , 2012, Lecture Notes in Computer Science.

[11]  GhemawatSanjay,et al.  The Google file system , 2003 .

[12]  Hairong Kuang,et al.  The Hadoop Distributed File System , 2010, 2010 IEEE 26th Symposium on Mass Storage Systems and Technologies (MSST).

[13]  Pramod G. Joisha,et al.  A principled approach to nondeferred reference-counting garbage collection , 2008, VEE '08.

[14]  Clemens Grelck,et al.  Concurrent Non-deferred Reference Counting on the Microgrid: First Experiences , 2010, IFL.

[15]  Clemens Grelck,et al.  Implicit Memory Management for SAC. , 2004 .

[16]  Adrian Schüpbach,et al.  The multikernel: a new OS architecture for scalable multicore systems , 2009, SOSP '09.