Skip to main content

Self-Replicating Objects for Multicore Platforms

  • Conference paper

Part of the book series: Lecture Notes in Computer Science ((LNPSE,volume 6183))

Abstract

The paper introduces Self-Replicating Objects (SROs), a new concurrent programming abstraction. An SRO is implemented and used much like an ordinary .NET object and can expose arbitrary user-defined APIs, but it is aggressive about automatically exploiting multicore CPUs. It does so by spontaneously and transparently partitioning its state into a set of replicas that handle method calls in parallel and automatically merging replicas before processing calls that cannot execute in the replicated state. Developers need not be concerned about protecting access to shared data; each replica is a monitor and has its own state. The runtime ensures proper synchronization, scheduling, decides when to split/merge, and can transparently migrate replicas to other processes to decrease contention. Compared to threads/locks or toolkits such as .NET Parallel Extensions, SROs offer a simpler, more versatile programming model while delivering comparable, and in some cases even higher performance.

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

Buying options

Chapter
USD   29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD   84.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD   109.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

Learn about institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. http://www.intel.com/pressroom/archive/releases/20090526comp.htm

  2. Sutter, H.: The concurrency revolution, http://www.ddj.com/cpp/184401916

  3. Case, L.: Does quad core matter? (2007), extremetech.com

  4. Hagedoorn, H.: Cpu scaling in games with dual and quad core processors (2008), guru3d.com

  5. Intel: Digital Office Performance: Business Productivity with SYSmark 2007 preview (2009), intel.com

  6. van Renesse, R.: Goal-oriented programming, or composition using events, or threads considered harmful. In: EW-8 (1998)

    Google Scholar 

  7. Ousterhout, J.: Why threads are a bad idea (for most purposes). Invited talk at USENIX (1996)

    Google Scholar 

  8. Sutter, H., Larus, J.: Software and the concurrency revolution. Queue 3(7) (2005)

    Google Scholar 

  9. Harris, T.: Exceptions and side-effects in atomic blocks. Science of Computer Programming 58(3) (2005)

    Google Scholar 

  10. Larus, J.: Spending moore’s dividend. CACM 52(5) (2009)

    Google Scholar 

  11. Amdahl, G.: Validity of the single processor approach to achieving large scale computing capabilities (2000)

    Google Scholar 

  12. Chamberlain, B., Callahan, D., Zima, H.: Parallel programmability and the chapel language. In: IJHPCA (2007)

    Google Scholar 

  13. Ghulou, A., Sprangle, E., Fang, J., Wu, G., Zhou, X.: Ct: A flexible parallel programming model for tera-scale architectures (2007), techresearch.intel.com

  14. Reinders, J.: Intel Threading Building Blocks: Outfitting C++ for Multi-core Processor Parallelism. O’Reilly Media, Sebastopol (2007)

    Google Scholar 

  15. Duffy, J., Essey, E.: Parallel LINQ: Running queries on multi-core processors (2009), msdn.microsoft.com

  16. Leijen, D., Hall, J.: Parallel performance: Optimize managed code for multicore machines (2009), msdn.microsoft.com

  17. Blelloch, G.: NESL: A nested data-parallel language. CMU Tech. Report (1993)

    Google Scholar 

  18. Burton, F.: Functional programming for concurrent and distributed computing. Computer Journal 30(5) (1987)

    Google Scholar 

  19. Hewitt, C., Bishop, P., Steiger, R.: A universal modular actor formalism for artificial intelligence. In: IJCAI (1973)

    Google Scholar 

  20. Yokote, Y., Tokoro, M.: Experience and evolution of concurrent smalltalk. SIGPLAN Notices 22(12) (1987)

    Google Scholar 

  21. Baker, h., Hewitt, C.: The incremental garbage collection of processes. In: AIPL 1977 (1977)

    Google Scholar 

  22. Armstrong, J., Virding, R., Wikström, C., Williams, M.: Concurrent Programming in Erlang. Prentice-Hall, Englewood Cliffs (1996)

    Google Scholar 

  23. Haller, P., Odersky, M.: Event-based programming without inversion of control. In: JMLC (2006)

    Google Scholar 

  24. Haller, P., Odersky, M.: Actors that unify threads and events (2007), scala-lang.org

  25. Pickering, R.: Concurrency in f# - part iii - erlang style message passing (2007), strangelights.com

  26. Fähndrich, M., et al.: Language support for fast and reliable message-based communication in singularity os. In: EuroSys (2006)

    Google Scholar 

  27. Benton, N., Cardelli, L., Fournet, C.: Modern concurrency abstractions for c#. TOPLAS (2004)

    Google Scholar 

  28. Chrysanthakopoulos, G., Singh, S.: An asynchronous messaging library for c#. In: SCOOL (2005)

    Google Scholar 

  29. Podwysocki, M.: Introducing maestro – a dsl for actor based concurrency (2009), weblogs.asp.net/podwysocki

  30. Gustafsson, N.: Axum: Language overview (2009), msdn.microsoft.com

  31. Dean, J., Ghemawat, S.: Mapreduce: simplified data processing on large clusters. In: SOSP (2004)

    Google Scholar 

  32. Eugster, P.: Uniform proxies for java. In: OOPSLA (2006)

    Google Scholar 

  33. Ostrowski, K., Birman, K., Dolev, D., Ahnn, J.: Programming with Live Distributed Objects. In: Vitek, J. (ed.) ECOOP 2008. LNCS, vol. 5142, pp. 463–489. Springer, Heidelberg (2008)

    Chapter  Google Scholar 

  34. Ostrowski, K., et al.: Live Distributed Objects (2007), liveobjects.cs.cornell.edu

  35. Zhang, X., Hiltunen, M., Marzullo, K., Schlichting, R.: Customizable service state durability for service oriented architectures. In: EDCC (2006)

    Google Scholar 

  36. Marian, T., Balakrishnan, M., Birman, K., van Renesse, R.: Tempest: Soft state replication in the service tier. In: DSN (2008)

    Google Scholar 

  37. Ranger, C., Raghuraman, R., Penmetsa, A., Bradski, G., Kozyrakis, C.: Evaluating mapreduce for multi-core and multiprocessor systems. In: HPCA (2007)

    Google Scholar 

  38. Lämmel, R.: Google’s mapreduce programming model - revisited. Sci. Comput. Program. 68(3), 208–237 (2007)

    Google Scholar 

  39. Thies, B., Karczmarek, M., Amarasinghe, S.: Streamit: A language for streaming applications. In: ICCC (2001)

    Google Scholar 

  40. Black, A., Carlsson, M., Jones, M., Kieburtz, R., Nordlander, J.: Timber: A programming language for real-time embedded systems (2002), timber-lang.org

  41. Varela, C., Agha, G.: Programming dynamically reconfigurable open systems with salsa. In: OOPSLA (2001)

    Google Scholar 

  42. Lauer, H., Needham, R.: On the duality of operating system structures. In: ACM SIGOPS OSR (1979)

    Google Scholar 

  43. Fournet, C., Gonthier, G.: The join calculus: A language for distributed mobile programming. In: APPSEM (2000)

    Google Scholar 

  44. Sulzmann, M., Lam, E., van Weert, P.: Actors with multihea- ded message receive patterns. In: COORDINATION (2008)

    Google Scholar 

  45. Srinivasan, S., Mycroft, A.: Kilim: Isolation-typed actors for java. In: Vitek, J. (ed.) ECOOP 2008. LNCS, vol. 5142, pp. 104–128. Springer, Heidelberg (2008)

    Chapter  Google Scholar 

  46. Thomas, D., et al.: Actra: A multitasking / multiprocessing smalltalk. SIGPLAN Notices 24(4) (1989)

    Google Scholar 

  47. von Behren, R., Condit, J., Zhou, F., Necula, G., Brewer, E.: Capriccio: scalable threads for internet services. In: SOSP (2003)

    Google Scholar 

  48. Cunningham, R., Kohler, E.: Making events less slippery with eel. In: HotOS (2005)

    Google Scholar 

  49. von Behren, R., Condit, J., Brewer, E.: Why events are a bad idea (for high-concurrency servers). In: HotOS (2003)

    Google Scholar 

  50. http://msdn.microsoft.com/en-us/devlabs/ee794896.aspx

  51. Li, P., Zdancewic, S.: A language-based approach to unifying events and threads. Tech Report, U. of Penn (2006)

    Google Scholar 

  52. Blumofe, R., Joerg, C., Kuszmaul, B., Leiserson, C., Randall, K., Zhou, Y.: Cilk: An efficient multithreaded runtime system. In: PPoPP (1995)

    Google Scholar 

  53. Leijen, D., Schulte, W., Burckhardt, S.: The design of a task parallel library. In: OOPSLA (2009)

    Google Scholar 

  54. Allen, E., et al.: Project fortress: A multi-core language for multi-core processors (2008), linux-mag.com

  55. Balakrishnan, S., Sohi, G.: Program demultiplexing: Data-flow based speculative parallelization of methods in sequential programs. In: SIGARCH (2006)

    Google Scholar 

  56. Rinard, M., Diniz, P.: Eliminating synchronization bottlenecks using adaptive replication. TOPLAS (2003)

    Google Scholar 

  57. Ostrowski, K., Birman, K., Dolev, D.: Quicksilver scalable multicast. In: NCA (2008)

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2010 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Ostrowski, K., Sakoda, C., Birman, K. (2010). Self-Replicating Objects for Multicore Platforms. In: D’Hondt, T. (eds) ECOOP 2010 – Object-Oriented Programming. ECOOP 2010. Lecture Notes in Computer Science, vol 6183. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-14107-2_22

Download citation

  • DOI: https://doi.org/10.1007/978-3-642-14107-2_22

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-642-14106-5

  • Online ISBN: 978-3-642-14107-2

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics