Abstract
The memory subsystems of contemporary computer architectures are increasingly complex – in fact, so much so that it becomes difficult to estimate the performance impact of many coding constructs, and some long known coding patterns are even discovered to be principally wrong. In contrast, many researchers still reason about algorithmic complexity in simple terms, where memory operations are sequential and of equal cost. The goal of this talk is to give an overview of some memory subsystem features that violate this assumption significantly, with the ambition to motivate development of algorithms tailored to contemporary computer architectures.
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
AMD: AMD64 Architecture Programmers Manual : System Programming, 3.18 edn. vol. 2 (2011)
AMD: Software Optimization Guide for AMD Family 15h Processors, 3.03 edn. (2011)
Babka, V.: Cache Sharing Sensitivity of SPEC CPU2006 Benchmarks. Tech. Rep. 2009/3 2.0, Department of Software Engineering, Faculty of Mathematics and Physics, Charles University (2009)
Babka, V., Bulej, L., Decky, M., Kraft, J., Libic, P., Marek, L., Seceleanu, C., Tuma, P.: Resource Usage Modeling: Q-ImPrESS Project Deliverable D3.3 (2009), http://www.q-impress.eu
Babka, V., Bulej, L., Libic, P., Marek, L., Martinec, T., Podzimek, A., Tuma, P.: Resource Impact Analysis: Q-ImPrESS Project Deliverable D3.4 (2011), http://www.q-impress.eu
Babka, V., Marek, L., Tuma, P.: When Misses Differ: Investigating Impact of Cache Misses on Observed Performance. In: Proceedings of ICPADS 2009. IEEE (2009)
Babka, V., Tuma, P.: Investigating Cache Parameters of x86 Family Processors. In: Kaeli, D., Sachs, K. (eds.) SPEC Benchmark Workshop 2009. LNCS, vol. 5419, pp. 77–96. Springer, Heidelberg (2009)
Babka, V., Tuma, P.: Can Linear Approximation Improve Performance Prediction?. In: Proceedings of EPEW 2011. Springer, Heidelberg (2011)
Bailey, D., Barszcz, E., Barton, J., Browning, D., Carter, R., Dagum, L., Fatoohi, R., Fineberg, S., Frederickson, P., Lasinski, T., Schreiber, R., Simon, H.: The NAS Parallel Benchmarks. Tech. Rep. RNR-94-007, RNR (1994)
Boehm, H.: Threads and Memory Model for C++, http://www.hpl.hp.com/personal/Hans_Boehm/c++mm
Drepper, U.: What Every Programmer Should Know About Memory. Tech. rep., Red Hat (2007)
Fields, B.A., Bodik, R., Hill, M.D., Newburn, C.J.: Interaction Cost and Shotgun Profiling. ACM Transactions on Architecture and Code Optimization 1, 272–304 (2004), http://doi.acm.org/10.1145/1022969.1022971
Goetz, B.: Double-Checked Locking: Clever, But Broken. JavaWorld (2001)
Intel: Intel 64 and IA-32 Architectures Optimization Reference Manual, 248966-025 edn. (2011)
Intel: Intel 64 and IA-32 Architectures Software Developers Manual Volume 3A: System Programming Guide, Part 1, 253668-039 edn. (2011)
Intel: Intel 64 and IA-32 Architectures Software Developers Manual Volume 3B: System Programming Guide, Part 2, 253669-039 edn. (2011)
Kalibera, T., Tuma, P.: Precise Regression Benchmarking with Random Effects: Improving Mono Benchmark Results. In: Horváth, A., Telek, M. (eds.) EPEW 2006. LNCS, vol. 4054, pp. 63–77. Springer, Heidelberg (2006)
McCurdy, C., Vetter, J.: Memphis: Finding and Fixing NUMA-Related Performance Problems on Multi-Core Platforms. In: Proceedings of ISPASS 2010. IEEE (2010)
Meyers, S., Alexandrescu, A.: C++ and the Perils of Double-Checked Locking. Dr. Dobb’s Journal (2004)
Mytkowicz, T., Diwan, A., Hauswirth, M., Sweeney, P.F.: Producing Wrong Data Without Doing Anything Obviously Wrong. In: Proceedings of ASPLOS 2009, pp. 265–276. ACM (2009)
Omni Compiler Project. High Performance Computing Systems Laboratory, Graduate School of Systems and Information Engineering, University of Tsukuba, http://www.hpcs.cs.tsukuba.ac.jp/omni-openmp/top-en.html
Prokop, H.: Cache-Oblivious Algorithms. Master Thesis, Department of Electrical Engineering and Computer Science, Massachusetts Institute of Technology (1999)
Pugh, B.: The Java Memory Model, http://www.cs.umd.edu/~pugh/java/memoryModel
Schmidt, D.C., Harrison, T.: Double-Checked Locking – An Object Behavioral Pattern for Initializing and Accessing Thread-Safe Objects Efficiently. Presented at PLoP 1996 (1996)
Stallman, R.M., et al.: Using the GNU Compiler Collection, 4.6.1 edn.
The Evaluate Collaboratory: Experimental Evaluation of Software and Systems in Computer Science, http://evaluate.inf.usi.ch
Williams, S.: The Roofline Model. In: Performance Tuning of Scientific Applications. CRC (2010)
Wolfe, M.: More Iteration Space Tiling. In: Proceedings of Supercomputing 1989, pp. 655–664. ACM, New York (1989), http://doi.acm.org/10.1145/76263.76337
Yotov, K., Pingali, K., Stodghill, P.: Automatic Measurement of Memory Hierarchy Parameters. In: Proceedings of SIGMETRICS 2005. ACM (2005)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2012 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Babka, V., Tůma, P. (2012). Computer Memory: Why We Should Care What Is under the Hood. In: Kotásek, Z., Bouda, J., Černá, I., Sekanina, L., Vojnar, T., Antoš, D. (eds) Mathematical and Engineering Methods in Computer Science. MEMICS 2011. Lecture Notes in Computer Science, vol 7119. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-25929-6_6
Download citation
DOI: https://doi.org/10.1007/978-3-642-25929-6_6
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-25928-9
Online ISBN: 978-3-642-25929-6
eBook Packages: Computer ScienceComputer Science (R0)