Cache-Aware Lock-Free Queues for Multiple Producers/Consumers and Weak Memory Consistency

  • Anders Gidenstam
  • Håkan Sundell
  • Philippas Tsigas
Part of the Lecture Notes in Computer Science book series (LNCS, volume 6490)

Abstract

A lock-free FIFO queue data structure is presented in this paper. The algorithm supports multiple producers and multiple consumers and weak memory models. It has been designed to be cache-aware and work directly on weak memory models. It utilizes the cache behavior in concert with lazy updates of shared data, and a dynamic lock-free memory management scheme to decrease unnecessary synchronization and increase performance. Experiments on an 8-way multi-core platform show significantly better performance for the new algorithm compared to previous fast lock-free algorithms.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 1.
    Giacomoni, J., Moseley, T., Vachharajani, M.: Fastforward for efficient pipeline parallelism: a cache-optimized concurrent lock-free queue. In: Proceedings of the 13th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming (PPoPP 2008), pp. 43–52. ACM, New York (2008)Google Scholar
  2. 2.
    Gidenstam, A., Papatriantafilou, M., Sundell, H., Tsigas, P.: Efficient and reliable lock-free memory reclamation based on reference counting. IEEE Transactions on Parallel and Distributed Systems 20(8), 1173–1187 (2009)CrossRefGoogle Scholar
  3. 3.
    Herlihy, M.: Wait-free synchronization. ACM Transactions on Programming Languages and Systems 11(1), 124–149 (1991)CrossRefGoogle Scholar
  4. 4.
    Higham, L., Kawash, J.: Impact of instruction re-ordering on the correctness of shared-memory programs. In: Proceedings of the 8th International Symposium on Parallel Architectures, Algorithms and Networks, pp. 25–32. IEEE, Los Alamitos (December 2005)Google Scholar
  5. 5.
    Hoffman, M., Shalev, O., Shavit, N.: The baskets queue. In: Tovar, E., Tsigas, P., Fouchal, H. (eds.) OPODIS 2007. LNCS, vol. 4878, pp. 401–414. Springer, Heidelberg (2007)CrossRefGoogle Scholar
  6. 6.
    Lamport, L.: Specifying concurrent program modules. ACM Trans. Program. Lang. Syst. 5(2), 190–222 (1983)CrossRefMATHGoogle Scholar
  7. 7.
    Michael, M.M.: Hazard pointers: Safe memory reclamation for lock-free objects. IEEE Transactions on Parallel and Distributed Systems 15(8) (August 2004)Google Scholar
  8. 8.
    Michael, M.M., Scott, M.L.: Simple, fast, and practical non-blocking and blocking concurrent queue algorithms. In: Proceedings of the Fifteenth Annual ACM Symposium on Principles of Distributed Computing, pp. 267–275. ACM Press, New York (1996)CrossRefGoogle Scholar
  9. 9.
    Moir, M., Nussbaum, D., Shalev, O., Shavit, N.: Using elimination to implement scalable and lock-free fifo queues. In: Proceedings of the 17th Annual ACM Symposium on Parallelism in Algorithms and Architectures (SPAA 2005), pp. 253–262. ACM, New York (2005)Google Scholar
  10. 10.
    Sundell, H., Tsigas, P.: Noble: non-blocking programming support via lock-free shared abstract data types. SIGARCH Comput. Archit. News 36(5), 80–87 (2008)CrossRefGoogle Scholar
  11. 11.
    Tsigas, P., Zhang, Y.: A simple, fast and scalable non-blocking concurrent FIFO queue for shared memory multiprocessor systems. In: Proceedings of the 13th Annual ACM Symposium on Parallel Algorithms and Architectures (SPAA 2001), pp. 134–143. ACM Press, New York (2001)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2010

Authors and Affiliations

  • Anders Gidenstam
    • 1
  • Håkan Sundell
    • 1
  • Philippas Tsigas
    • 2
  1. 1.School of Business and InformaticsUniversity of BoråsBoråsSweden
  2. 2.Department of Computer Science and EngineeringChalmers University of TechnologyGöteborgSweden

Personalised recommendations