Nothing Special   »   [go: up one dir, main page]

skip to main content
10.1145/3352460.3358260acmconferencesArticle/Chapter ViewAbstractPublication PagesmicroConference Proceedingsconference-collections
research-article
Public Access

ComputeDRAM: In-Memory Compute Using Off-the-Shelf DRAMs

Published: 12 October 2019 Publication History

Abstract

In-memory computing has long been promised as a solution to the "Memory Wall" problem. Recent work has proposed using chargesharing on the bit-lines of a memory in order to compute in-place and with massive parallelism, all without having to move data across the memory bus. Unfortunately, prior work has required modification to RAM designs (e.g. adding multiple row decoders) in order to open multiple rows simultaneously. So far, the competitive and low-margin nature of the DRAM industry has made commercial DRAM manufacturers resist adding any additional logic into DRAM. This paper addresses the need for in-memory computation with little to no change to DRAM designs. It is the first work to demonstrate in-memory computation with off-the-shelf, unmodified, commercial, DRAM. This is accomplished by violating the nominal timing specification and activating multiple rows in rapid succession, which happens to leave multiple rows open simultaneously, thereby enabling bit-line charge sharing. We use a constraint-violating command sequence to implement and demonstrate row copy, logical OR, and logical AND in unmodified, commodity, DRAM. Subsequently, we employ these primitives to develop an architecture for arbitrary, massively-parallel, computation. Utilizing a customized DRAM controller in an FPGA and commodity DRAM modules, we characterize this opportunity in hardware for all major DRAM vendors. This work stands as a proof of concept that in-memory computation is possible with unmodified DRAM modules and that there exists a financially feasible way for DRAM manufacturers to support in-memory compute.

References

[1]
Shaizeen Aga, Supreet Jeloka, Arun Subramaniyan, Satish Narayanasamy, David Blaauw, and Reetuparna Das. 2017. Compute Caches. In High Performance Computer Architecture (HPCA), 2017 IEEE International Symposium on. IEEE, 481--492.
[2]
Amogh Agrawal, Akhilesh Jaiswal, Chankyu Lee, and Kaushik Roy. 2018. X-SRAM: enabling in-memory boolean computations in CMOS static random access memories. IEEE Transactions on Circuits and Systems I: Regular Papers 99 (2018), 1--14.
[3]
Junwhan Ahn, Sungjoo Yoo, Onur Mutlu, and Kiyoung Choi. 2015. PIM-enabled instructions: a low-overhead, locality-aware processing-in-memory architecture. In Computer Architecture (ISCA), 2015 ACM/IEEE 42nd Annual International Symposium on. IEEE, 336--348.
[4]
Avidan Akerib, Oren Agam, Eli Ehrman, and Moshe Meyassed. 2012. Using storage cells to perform computation. US Patent 8238173B2.
[5]
K. Arndt, C. Narayan, A. Brintzinger, W. Guthrie, D. Lachtrupp, J. Mauger, D. Glimmer, S. Lawn, B. Dinkel, and A. Mitwalsky. 1999. Reliability of laser activated metal fuses in DRAMs. In Twenty Fourth IEEE/CPMT International Electronics Manufacturing Technology Symposium. 389--394.
[6]
Kenneth E. Batcher. 1980. Architecture of a Massively Parallel Processor. In Proceedings of the 7th Annual Symposium on Computer Architecture (ISCA '80). ACM, New York, NY, USA, 168--173.
[7]
Kenneth E. Batcher. 1980. Design of a Massively Parallel Processor. IEEE Trans. Comput. C-29, 9 (Sept 1980), 836--840.
[8]
Kenneth E. Batcher. 1982. Bit-serial parallel processing systems. IEEE Trans. Comput. C-31, 5 (May 1982), 377--384.
[9]
Kenneth E. Batcher. 1998. Retrospective: architecture of a massively parallel processor. In 25 Years of the International Symposia on Computer Architecture (Selected Papers) (ISCA '98). ACM, New York, NY, USA, 15--16.
[10]
K. E. Batcher, E. E. Eddey, R. O. Faiss, and P. A. Gilmore. 1981. SAR processing on the MPP. Technical Report NASA-CR-166726 (N82-11801/9). Goodyear Aerospace Corporation.
[11]
Adrian M Caulfield, Laura M Grupp, and Steven Swanson. 2009. Gordon: using flash memory to build fast, power-efficient clusters for data-intensive applications. ACM Sigplan Notices 44, 3 (2009), 217--228.
[12]
Karthik Chandrasekar, Sven Goossens, Christian Weis, Martijn Koedam, Benny Akesson, Norbert Wehn, and Kees Goossens. 2014. Exploiting expendable process-margins in DRAMs for run-time performance optimization. In Proceedings of the Conference on Design, Automation & Test in Europe (DATE '14). European Design and Automation Association, Article 173, 6 pages. http://dl.acm.org/citation.cfm?id=2616606.2616820
[13]
Kevin K. Chang, Abhijith Kashyap, Hasan Hassan, Saugata Ghose, Kevin Hsieh, Donghyuk Lee, Tianshi Li, Gennady Pekhimenko, Samira Khan, and Onur Mutlu. 2016. Understanding latency variation in modern DRAM chips: experimental characterization, analysis, and optimization. SIGMETRICS Perform. Eval. Rev. 44, 1 (June 2016), 323--336.
[14]
Meng-Fan Chang, Shin-Jang Shen, Chia-Chi Liu, Che-Wei Wu, Yu-Fan Lin, Ya-Chin King, Chorng-Jung Lin, Hung-Jen Liao, Yu-Der Chih, and Hiroyuki Yamauchi. 2013. An offset-tolerant fast-random-read current-sampling-based sense amplifier for small-cell-current nonvolatile memory. IEEE Journal of Solid-State Circuits 48, 3 (2013), 864--877.
[15]
Jan Craninckx and Geert Van der Plas. 2007. A 65fJ/conversion-step 0-to-50MS/s 0-to-0.7 mW 9b charge-sharing SAR ADC in 90nm digital CMOS. In 2007 IEEE International Solid-State Circuits Conference. Digest of Technical Papers. IEEE, 246--600.
[16]
G. De Sandre, L. Bettini, A. Pirola, L. Marmonier, M. Pasotti, M. Borghi, P. Mattavelli, P. Zuliani, L. Scotti, G. Mastracchio, F. Bedeschi, R. Gastaldi, and R. Bez. 2010. A 90nm 4Mb embedded phase-change memory with 1.2V 12ns read access time and 1MB/s write throughput. In 2010 IEEE International Solid-State Circuits Conference - (ISSCC). 268--269.
[17]
Denyer, Renshaw Peter B., and David. 1985. VLSI signal processing: a bit-serial approach. Addison-Wesley Publishing Company, San Francisco, CA, USA.
[18]
P. Dlugosch, D. Brown, P. Glendenning, M. Leventhal, and H. Noyes. 2014. An efficient and scalable semiconductor architecture for parallel automata processing. IEEE Transactions on Parallel and Distributed Systems 25, 12 (Dec 2014), 3088--3098.
[19]
Jeff Draper, Jacqueline Chame, Mary Hall, Craig Steele, Tim Barrett, Jeff LaCoss, John Granacki, Jaewook Shin, Chun Chen, Chang Woo Kang, Ihn Kim, and Gokhan Daglikoca. 2002. The architecture of the DIVA processing-in-memory chip. In Proceedings of the 16th International Conference on Supercomputing (ICS '02). ACM, New York, NY, USA, 14--25.
[20]
Michael Drumheller. 1986. Connection Machine Stereomatching. In Proceedings of the Fifth AAAI National Conference on Artificial Intelligence (AAAI'86). AAAI Press, 748--753.
[21]
C. Eckert, X. Wang, J. Wang, A. Subramaniyan, R. Iyer, D. Sylvester, D. Blaaauw, and R. Das. 2018. Neural Cache: bit-serial in-cache acceleration of deep neural networks. In 2018 ACM/IEEE 45th Annual International Symposium on Computer Architecture (ISCA). 383--396.
[22]
Duncan Elliott, Michael Stumm, W. Martin Snelgrove, Christian Cojocaru, and Robert McKenzie. 1999. Computational RAM: implementing processors in memory. IEEE Design & Test of Computers 1 (1999), 32--41.
[23]
Duncan G. Elliott, W. Martin Snelgrove, and Michael Stumm. 1992. Computational RAM: a memory-SIMD hybrid and its application to DSP. In 1992 Proceedings of the IEEE Custom Integrated Circuits Conference. 30.6.1--30.6.4.
[24]
T. Finkbeiner, G. Hush, T. Larsen, P. Lea, J. Leidel, and T. Manning. 2017. Inmemory intelligence. IEEE Micro 37, 4 (2017), 30--38.
[25]
M. Gao, G. Ayers, and C. Kozyrakis. 2015. Practical near-data processing for in-memory analytics frameworks. In 2015 International Conference on Parallel Architecture and Compilation (PACT). 113--124.
[26]
Saugata Ghose, Abdullah Giray Yaglikçi, Raghav Gupta, Donghyuk Lee, Kais Kudrolli, William X. Liu, Hasan Hassan, Kevin K. Chang, Niladrish Chatterjee, Aditya Agrawal, Mike O'Connor, and Onur Mutlu. 2018. What your DRAM power models are not telling you: lessons from a detailed experimental study. In Abstracts of the 2018 ACM International Conference on Measurement and Modeling of Computer Systems (SIGMETRICS '18). ACM, New York, NY, USA, 110--110.
[27]
M. Gokhale, B. Holmes, and K. Iobst. 1995. Processing in memory: the Terasys massively parallel PIM array. Computer 28, 4 (April 1995), 23--31.
[28]
Qing Guo, Xiaochen Guo, Ravi Patel, Engin Ipek, and Eby G. Friedman. 2013. AC-DIMM: associative computing with STT-MRAM. SIGARCH Comput. Archit. News 41, 3 (June 2013), 189--200.
[29]
Anthony Gutierrez, Michael Cieslak, Bharan Giridhar, Ronald G Dreslinski, Luis Ceze, and Trevor Mudge. 2014. Integrated 3D-stacked server designs for increasing physical density of key-value stores. In ACM SIGPLAN Notices, Vol. 49. ACM, 485--498.
[30]
H. Hassan, N. Vijaykumar, S. Khan, S. Ghose, K. Chang, G. Pekhimenko, D. Lee, O. Ergin, and O. Mutlu. 2017. SoftMC: a flexible and practical open-source infrastructure for enabling experimental DRAM studies. In 2017 IEEE International Symposium on High Performance Computer Architecture (HPCA). 241--252.
[31]
Hybrid Memory Cube Consortium. 2014. Hybrid Memory Cube specification 2.1.
[32]
Bruce Jacob, Spencer Ng, and David Wang. 2007. Memory systems: cache, DRAM, disk. Morgan Kaufmann Publishers Inc., San Francisco, CA, USA.
[33]
S. Jain, A. Ranjan, K. Roy, and A. Raghunathan. 2018. Computing in memory with spin-transfer torque magnetic RAM. IEEE Transactions on Very Large Scale Integration (VLSI) Systems 26, 3 (March 2018), 470--483.
[34]
Yi Kang, Wei Huang, Seung-Moon Yoo, D. Keen, Zhenzhou Ge, V. Lam, P. Pattnaik, and J. Torrellas. 1999. FlexRAM: toward an advanced intelligent memory system. In Proceedings 1999 IEEE International Conference on Computer Design: VLSI in Computers and Processors. 192--201.
[35]
Duckhwan Kim, Jaeha Kung, Sek Chai, Sudhakar Yalamanchili, and Saibal Mukhopadhyay. 2016. Neurocube: a programmable digital neuromorphic architecture with high-density 3D memory. In Computer Architecture (ISCA), 2016 ACM/IEEE 43rd Annual International Symposium on. IEEE, 380--392.
[36]
Jeremie S Kim, Minesh Patel, Hasan Hassan, and Onur Mutlu. 2018. The DRAM latency PUF: quickly evaluating physical unclonable functions by exploiting the latency-reliability tradeoff in modern commodity DRAM devices. In 2018 IEEE International Symposium on High Performance Computer Architecture (HPCA). IEEE, 194--207.
[37]
Yoongu Kim, Vivek Seshadri, Donghyuk Lee, Jamie Liu, and Onur Mutlu. 2012. A case for exploiting subarray-level parallelism (SALP) in DRAM. ACM SIGARCH Computer Architecture News 40, 3 (2012), 368--379.
[38]
DBM Klaassen. 1992. A unified mobility model for device simulation-II. Temperature dependence of carrier mobility and lifetime. Solid-State Electronics 35, 7 (1992), 961--967.
[39]
P. M. Kogge. 1994. EXECUBE - A new architecture for scaleable MPPs. In 1994 International Conference on Parallel Processing Vol. 1, Vol. 1. 77--84.
[40]
S. Kvatinsky, D. Belousov, S. Liman, G. Satat, N. Wald, E. G. Friedman, A. Kolodny, and U. C. Weiser. 2014. MAGIC - memristor-aided logic. IEEE Transactions on Circuits and Systems II: Express Briefs 61, 11 (Nov 2014), 895--899.
[41]
S. Kvatinsky, A. Kolodny, U. C. Weiser, and E. G. Friedman. 2011. Memristor-based IMPLY logic design procedure. In 2011 IEEE 29th International Conference on Computer Design (ICCD). 142--147.
[42]
Perry V. Lea and Richard C. Murphy. 2018. Apparatuses and methods for inmemory operations. US Patent 10049721B1.
[43]
Donghyuk Lee, Samira Khan, Lavanya Subramanian, Saugata Ghose, Rachata Ausavarungnirun, Gennady Pekhimenko, Vivek Seshadri, and Onur Mutlu. 2017. Design-induced latency variation in modern DRAM chips: characterization, analysis, and latency reduction mechanisms. Proceedings of the ACM on Measurement and Analysis of Computing Systems 1, 1 (2017), 26.
[44]
D. Lee, Y. Kim, G. Pekhimenko, S. Khan, V. Seshadri, K. Chang, and O. Mutlu. 2015. Adaptive-latency DRAM: optimizing DRAM timing for the common-case. In 2015 IEEE 21st International Symposium on High Performance Computer Architecture (HPCA). 489--501.
[45]
Shuangchen Li, Dimin Niu, Krishna T Malladi, Hongzhong Zheng, Bob Brennan, and Yuan Xie. 2017. DRISA: A DRAM-based reconfigurable in-situ accelerator. In Proceedings of the 50th Annual IEEE/ACM International Symposium on Microarchitecture. ACM, 288--301.
[46]
Shuangchen Li, Cong Xu, Qiaosha Zou, Jishen Zhao, Yu Lu, and Yuan Xie. 2016. Pinatubo: a processing-in-memory architecture for bulk bitwise operations in emerging non-volatile memories. In Proceedings of the 53rd Annual Design Automation Conference. ACM, 173.
[47]
Jamie Liu, Ben Jaiyen, Yoongu Kim, Chris Wilkerson, and Onur Mutlu. 2013. An experimental study of data retention behavior in modern DRAM devices: implications for retention time profiling mechanisms. In Proceedings of the 40th Annual International Symposium on Computer Architecture (ISCA '13). ACM, New York, NY, USA, 60--71.
[48]
Sally A. McKee. 2004. Reflections on the Memory Wall. In Proceedings of the 1st Conference on Computing Frontiers (CF '04). ACM, New York, NY, USA, 162--167.
[49]
Câncio Monteiro, Yasuhiro Takahashi, and Toshikazu Sekine. 2013. Chargesharing symmetric adiabatic logic in countermeasure against power analysis attacks at cell level. Microelectronics Journal 44, 6 (2013), 496--503.
[50]
R. Nair, S. F. Antao, C. Bertolli, P. Bose, J. R. Brunheroto, T. Chen, C. Cher, C. H. A. Costa, J. Doi, C. Evangelinos, B. M. Fleischer, T. W. Fox, D. S. Gallo, L. Grinberg, J. A. Gunnels, A. C. Jacob, P. Jacob, H. M. Jacobson, T. Karkhanis, C. Kim, J. H. Moreno, J. K. O'Brien, M. Ohmacht, Y. Park, D. A. Prener, B. S. Rosenburg, K. D. Ryu, O. Sallenave, M. J. Serrano, P. D. M. Siegl, K. Sugavanam, and Z. Sura. 2015. Active Memory Cube: a processing-in-memory architecture for exascale systems. IBM Journal of Research and Development 59, 2/3 (March 2015), 17:1--17:14.
[51]
M. Oskin, F. T. Chong, and T. Sherwood. 1998. Active Pages: a computation model for intelligent memory. In Proceedings. 25th Annual International Symposium on Computer Architecture. 192--203.
[52]
D. Patterson, T. Anderson, N. Cardwell, R. Fromm, K. Keeton, C. Kozyrakis, R. Thomas, and K. Yelick. 1997. A case for intelligent RAM. IEEE Micro 17, 2 (March 1997), 34--44.
[53]
JL Potter. 1983. Image processing on the massively parallel processor. Computer 16, 1 (Jan 1983), 62--67.
[54]
Jan M Rabaey, Anantha P Chandrakasan, and Borivoje Nikolic. 2002. Digital integrated circuits. Vol. 2. Prentice Hall Englewood Cliffs.
[55]
Parthasarathy Ranganathan. 2011. From microprocessors to nanostores: rethinking data-centric systems. Computer 44, 1 (2011), 39--48.
[56]
V. Seshadri, Y. Kim, C. Fallin, D. Lee, R. Ausavarungnirun, G. Pekhimenko, Y. Luo, O. Mutlu, P. B. Gibbons, M. A. Kozuch, and T. C. Mowry. 2013. RowClone: fast and energy-efficient in-DRAM bulk data copy and initialization. In 2013 46th Annual IEEE/ACM International Symposium on Microarchitecture (MICRO). 185--197.
[57]
Vivek Seshadri, Donghyuk Lee, Thomas Mullins, Hasan Hassan, Amirali Boroumand, Jeremie Kim, Michael A Kozuch, Onur Mutlu, Phillip B Gibbons, and Todd C Mowry. 2017. Ambit: in-memory accelerator for bulk bitwise operations using commodity DRAM technology. In Proceedings of the 50th Annual IEEE/ACM International Symposium on Microarchitecture. ACM, 273--287.
[58]
Tadashi Shibata and Tadahiro Ohmi. 1992. A functional MOS transistor featuring gate-level weighted sum and threshold operations. IEEE Transactions on Electron devices 39, 6 (1992), 1444--1455.
[59]
H. S. Stone. 1970. A logic-in-memory computer. IEEE Trans. Comput. C-19, 1 (Jan 1970), 73--78.
[60]
K. Tsuchida, T. Inaba, K. Fujita, Y. Ueda, T. Shimizu, Y. Asao, T. Kajiyama, M. Iwayama, K. Sugiura, S. Ikegawa, T. Kishi, T. Kai, M. Amano, N. Shimomura, H. Yoda, and Y. Watanabe. 2010. A 64Mb MRAM with clamped-reference and adequate-reference schemes. In 2010 IEEE International Solid-State Circuits Conference - (ISSCC). 258--259.
[61]
L. W. Tucker and G. G. Robertson. 1988. Architecture and applications of the Connection Machine. Computer 21, 8 (Aug 1988), 26--38.
[62]
Wm. A. Wulf and Sally A. McKee. 1995. Hitting the Memory Wall: implications of the obvious. SIGARCH Comput. Archit. News 23, 1 (March 1995), 20--24.
[63]
Xilinx. 2011. Virtex-6 FPGA Memory Interface Solutions. https://www.xilinx.com/support/documentation/ip_documentation/ug406.pdf. Accessed: 2019-08-30.
[64]
Xilinx. 2019. ML605 Hardware User Guide. https://www.xilinx.com/support/documentation/boards_and_kits/ug534.pdf. Accessed: 2019-08-30.
[65]
Kewei Yang and Andreas G Andreou. 1994. A multiple input differential amplifier based on charge sharing on a floating-gate MOSFET. Analog Integrated Circuits and Signal Processing 6, 3 (1994), 197--208.

Cited By

View all
  • (2024)LRMP: Layer Replication with Mixed Precision for spatial in-memory DNN acceleratorsFrontiers in Artificial Intelligence10.3389/frai.2024.12683177Online publication date: 4-Oct-2024
  • (2024)On Gate Flip Errors in Computing-In-Memory2024 Design, Automation & Test in Europe Conference & Exhibition (DATE)10.23919/DATE58400.2024.10546875(1-6)Online publication date: 25-Mar-2024
  • (2024)PIMSAB: A Processing-In-Memory System with Spatially-Aware Communication and Bit-Serial-Aware ComputationACM Transactions on Architecture and Code Optimization10.1145/369082421:4(1-27)Online publication date: 20-Nov-2024
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Conferences
MICRO '52: Proceedings of the 52nd Annual IEEE/ACM International Symposium on Microarchitecture
October 2019
1104 pages
ISBN:9781450369381
DOI:10.1145/3352460
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than the author(s) must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected].

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 12 October 2019

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. DRAM
  2. bit-serial
  3. in-memory computing
  4. main memory

Qualifiers

  • Research-article
  • Research
  • Refereed limited

Funding Sources

Conference

MICRO '52
Sponsor:

Acceptance Rates

Overall Acceptance Rate 484 of 2,242 submissions, 22%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)1,277
  • Downloads (Last 6 weeks)160
Reflects downloads up to 21 Nov 2024

Other Metrics

Citations

Cited By

View all
  • (2024)LRMP: Layer Replication with Mixed Precision for spatial in-memory DNN acceleratorsFrontiers in Artificial Intelligence10.3389/frai.2024.12683177Online publication date: 4-Oct-2024
  • (2024)On Gate Flip Errors in Computing-In-Memory2024 Design, Automation & Test in Europe Conference & Exhibition (DATE)10.23919/DATE58400.2024.10546875(1-6)Online publication date: 25-Mar-2024
  • (2024)PIMSAB: A Processing-In-Memory System with Spatially-Aware Communication and Bit-Serial-Aware ComputationACM Transactions on Architecture and Code Optimization10.1145/369082421:4(1-27)Online publication date: 20-Nov-2024
  • (2024)NeuPIMs: NPU-PIM Heterogeneous Acceleration for Batched LLM InferencingProceedings of the 29th ACM International Conference on Architectural Support for Programming Languages and Operating Systems, Volume 310.1145/3620666.3651380(722-737)Online publication date: 27-Apr-2024
  • (2024)AttAcc! Unleashing the Power of PIM for Batched Transformer-based Generative Model InferenceProceedings of the 29th ACM International Conference on Architectural Support for Programming Languages and Operating Systems, Volume 210.1145/3620665.3640422(103-119)Online publication date: 27-Apr-2024
  • (2024)STT-RAM-Based Hierarchical in-Memory ComputingIEEE Transactions on Parallel and Distributed Systems10.1109/TPDS.2024.343085335:9(1615-1629)Online publication date: Sep-2024
  • (2024)Manufacturability Evaluation of Magnetic Tunnel Junction-Based Computational Random Access MemoryIEEE Transactions on Magnetics10.1109/TMAG.2023.332393560:5(1-7)Online publication date: May-2024
  • (2024)3DL-PIM: A Look-Up Table Oriented Programmable Processing in Memory Architecture Based on the 3-D Stacked Memory for Data-Intensive ApplicationsIEEE Transactions on Emerging Topics in Computing10.1109/TETC.2023.329314012:1(60-72)Online publication date: Jan-2024
  • (2024)In-Memory Acceleration of Hyperdimensional Genome Matching on Unreliable Emerging TechnologiesIEEE Transactions on Circuits and Systems I: Regular Papers10.1109/TCSI.2024.335196671:4(1794-1807)Online publication date: Apr-2024
  • (2024)DRAM-Based Acceleration of Open Modification Search in Hyperdimensional SpaceIEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems10.1109/TCAD.2024.338284243:9(2592-2605)Online publication date: Sep-2024
  • Show More Cited By

View Options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Login options

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media