{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,8,21]],"date-time":"2026-08-21T12:05:48Z","timestamp":1787313948678,"version":"build-2736575974"},"reference-count":58,"publisher":"Association for Computing Machinery (ACM)","issue":"2","license":[{"start":{"date-parts":[[2025,2,8]],"date-time":"2025-02-08T00:00:00Z","timestamp":1738972800000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0\/"}],"funder":[{"name":"School of Engineering and Management Vaud"}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["ACM Trans. Storage"],"published-print":{"date-parts":[[2025,5,31]]},"abstract":"<jats:p>Over the years, interest in computational storage devices has been growing steadily. This is largely due to the rise of data-intensive applications, such as machine learning, online video distribution, astrophysics, and genomics. Moving compute operations closer to the data provides benefits in terms of scaling possibilities and energy efficiency. The development of computational storage devices has been limited by the need for specialized and complex hardware. In this work, we propose a portable Linux-based firmware framework for the development of NVMe computational storage devices. Our firmware runs on a variety of hardware platforms ranging from expensive FPGA solutions to inexpensive off-the-shelf single board computers. The firmware leverages the vast Linux software ecosystem to facilitate the development and prototyping of novel computational storage devices. We benchmark our firmware on multiple hardware platforms and demonstrate its versatility through several computational examples including a content-aware disk image search engine based on natural language processing and AI-driven image recognition.<\/jats:p>","DOI":"10.1145\/3697352","type":"journal-article","created":{"date-parts":[[2024,9,25]],"date-time":"2024-09-25T16:11:40Z","timestamp":1727280700000},"page":"1-36","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":2,"title":["A Portable Linux-based Firmware for NVMe Computational Storage Devices"],"prefix":"10.1145","volume":"21","author":[{"ORCID":"https:\/\/orcid.org\/0000-0003-4114-6615","authenticated-orcid":false,"given":"Rick","family":"Wertenbroek","sequence":"first","affiliation":[{"name":"REDS, School of Engineering and Management Vaud (HEIG-VD), HES-SO University of Applied Sciences and Arts Western Switzerland, Yverdon-les-Bains, Switzerland and DBC, University of Lausanne, Lausanne, Switzerland"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0000-0003-4374-6104","authenticated-orcid":false,"given":"Yann","family":"Thoma","sequence":"additional","affiliation":[{"name":"REDS, School of Engineering and Management Vaud (HEIG-VD), HES-SO University of Applied Sciences and Arts Western Switzerland, Yverdon-les-Bains, Switzerland"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-5342-3723","authenticated-orcid":false,"given":"Alberto","family":"Dassatti","sequence":"additional","affiliation":[{"name":"REDS, School of Engineering and Management Vaud (HEIG-VD), HES-SO University of Applied Sciences and Arts Western Switzerland, Yverdon-les-Bains, Switzerland"}],"role":[{"vocabulary":"crossref","role":"author"}]}],"member":"320","published-online":{"date-parts":[[2025,2,8]]},"reference":[{"key":"e_1_3_3_2_2","doi-asserted-by":"publisher","DOI":"10.1145\/384265.291026"},{"key":"e_1_3_3_3_2","volume-title":"Proceedings of the CIDR","author":"Barbalace Antonio","year":"2021","unstructured":"Antonio Barbalace and Jaeyoung Do. 2021. Computational storage: Where are we today?. In Proceedings of the CIDR."},{"key":"e_1_3_3_4_2","doi-asserted-by":"publisher","DOI":"10.1126\/science.1170411"},{"key":"e_1_3_3_5_2","first-page":"1","volume-title":"Proceedings of the CIDR 2013-6th Biennial Conference on Innovative Data Systems Research","author":"Bjorling Matias","year":"2013","unstructured":"Matias Bjorling, Philippe Bonnet, Luc Bouganim, and Niv Dayan. 2013. The necessary death of the block device interface. In Proceedings of the CIDR 2013-6th Biennial Conference on Innovative Data Systems Research. 1\u20134."},{"key":"e_1_3_3_6_2","first-page":"359","volume-title":"Proceedings of the 15th USENIX Conference on File and Storage Technologies (FAST 17)","author":"Bj\u00f8rling Matias","year":"2017","unstructured":"Matias Bj\u00f8rling, Javier Gonzalez, and Philippe Bonnet. 2017. LightNVM: The linux Open-ChannelSSD subsystem. In Proceedings of the 15th USENIX Conference on File and Storage Technologies (FAST 17). 359\u2013374."},{"key":"e_1_3_3_7_2","unstructured":"Gabriele Borello. 2021. Towards Computational Storage. Available at http:\/\/webthesis.biblio.polito.it\/id\/eprint\/20460"},{"key":"e_1_3_3_8_2","volume-title":"Proceedings of the 10th International Workshop on Accelerating Analytics and Data Management Systems (ADMS\u201919)","author":"Chapman Keith","year":"2019","unstructured":"Keith Chapman, Mehdi Nik, Behnam Robatmili, Shahrzad Mirkhani, and Maysam Lavasani. 2019. Computational storage for big data analytics. In Proceedings of the 10th International Workshop on Accelerating Analytics and Data Management Systems (ADMS\u201919)."},{"key":"e_1_3_3_9_2","doi-asserted-by":"publisher","DOI":"10.1145\/2464996.2465003"},{"key":"e_1_3_3_10_2","doi-asserted-by":"publisher","DOI":"10.1109\/MC.2022.3171354"},{"key":"e_1_3_3_11_2","doi-asserted-by":"publisher","unstructured":"Jaeyoung Do Victor C. Ferreira Hossein Bobarshad Mahdi Torabzadehkashi Siavash Rezaei Ali Heydarigorji Diego Souza Brunno F. Goldstein Leandro Santiago Min Soo Kim Priscila M. V. Lima Felipe M. G. Fran\u00e7a and Vladimir Alves. 2020. Cost-effective energy-efficient and scalable storage computing for large-scale AI applications. ACM Trans. Storage 16 4 Article 21 (November 2020) 37 pages. 10.1145\/3415580","DOI":"10.1145\/3415580"},{"key":"e_1_3_3_12_2","unstructured":"Krijn Doekemeijer and Animesh Trivedi. 2022. Key-value stores on flash storage devices: A survey. arXiv:2205.07975. Retrieved from https:\/\/arxiv.org\/abs\/2205.07975"},{"key":"e_1_3_3_13_2","doi-asserted-by":"publisher","DOI":"10.14778\/3583140.3583167"},{"key":"e_1_3_3_14_2","doi-asserted-by":"crossref","first-page":"100051","DOI":"10.1016\/j.memori.2023.100051","article-title":"A review on computational storage devices and near memory computing for high performance applications","author":"Fakhry Dina","year":"2023","unstructured":"Dina Fakhry, Mohamed Abdelsalam, M. Watheq El-Kharashi, and Mona Safar. 2023. A review on computational storage devices and near memory computing for high performance applications. Memories-Materials, Devices, Circuits, and Systems 4, July 2023 (2023), 100051. https:\/\/www.sciencedirect.com\/science\/article\/pii\/S2773064623000282","journal-title":"Memories-Materials, Devices, Circuits, and Systems"},{"key":"e_1_3_3_15_2","doi-asserted-by":"publisher","DOI":"10.1145\/3592980.3595319"},{"key":"e_1_3_3_16_2","volume-title":"PCI Changes for v6.5","author":"Helgaas Bjorn","year":"2023","unstructured":"Bjorn Helgaas. 2023. PCI Changes for v6.5. Retrieved July 1st 2024 from https:\/\/lore.kernel.org\/linux-pci\/20230629165838.GA438762@bhelgaas\/"},{"key":"e_1_3_3_17_2","doi-asserted-by":"publisher","DOI":"10.1145\/3528577"},{"key":"e_1_3_3_18_2","first-page":"1","volume-title":"Proceedings of the 2020 57th ACM\/IEEE Design Automation Conference (DAC)","author":"HeydariGorji Ali","year":"2020","unstructured":"Ali HeydariGorji, Mahdi Torabzadehkashi, Siavash Rezaei, Hossein Bobarshad, Vladimir Alves, and Pai H. Chou. 2020. Stannis: Low-power acceleration of DNN training using computational storage devices. In Proceedings of the 2020 57th ACM\/IEEE Design Automation Conference (DAC). IEEE, 1\u20136."},{"key":"e_1_3_3_19_2","unstructured":"Wenjun Huang and Marcus Paradies. 2021. An evaluation of webassembly and ebpf as offloading mechanisms in the context of computational storage. arXiv:2111.01947. Retrieved from https:\/\/arxiv.org\/abs\/2111.01947"},{"key":"e_1_3_3_20_2","volume-title":"Volume of Data\/Information Created, Captured, Copied, and Consumed Worldwide from 2010 to 2020, with Forecasts from 2021 to 2025 (in Zettabytes)","year":"2021","unstructured":"IDC and Statistica. 2021. Volume of Data\/Information Created, Captured, Copied, and Consumed Worldwide from 2010 to 2020, with Forecasts from 2021 to 2025 (in Zettabytes). Retrieved October 1st 2023 from https:\/\/www.statista.com\/statistics\/871513\/worldwide-data-created\/"},{"key":"e_1_3_3_21_2","first-page":"373","volume-title":"Proceedings of the 2017 IEEE International Symposium on High Performance Computer Architecture (HPCA)","author":"Jin Yanqin","year":"2017","unstructured":"Yanqin Jin, Hung-Wei Tseng, Yannis Papakonstantinou, and Steven Swanson. 2017. KAML: A flexible, high-performance key-value SSD. In Proceedings of the 2017 IEEE International Symposium on High Performance Computer Architecture (HPCA). IEEE, 373\u2013384."},{"key":"e_1_3_3_22_2","first-page":"1","volume-title":"Proceedings of the 2013 IEEE 29th Symposium on Mass Storage Systems and Technologies (MSST)","author":"Kang Yangwook","year":"2013","unstructured":"Yangwook Kang, Yang-suk Kee, Ethan L. Miller, and Chanik Park. 2013. Enabling cost-effective data processing with smart SSD. In Proceedings of the 2013 IEEE 29th Symposium on Mass Storage Systems and Technologies (MSST). IEEE, 1\u201312."},{"key":"e_1_3_3_23_2","doi-asserted-by":"publisher","DOI":"10.1145\/290593.290602"},{"key":"e_1_3_3_24_2","volume-title":"PCI Endpoint Framework","author":"community The kernel development","year":"2024","unstructured":"The kernel development community. 2024. PCI Endpoint Framework. Retrieved October 1st 2023 from https:\/\/docs.kernel.org\/PCI\/endpoint"},{"key":"e_1_3_3_25_2","first-page":"183","volume-title":"Proceedings of the 2022 32nd International Conference on Field-Programmable Logic and Applications (FPL)","author":"Khan Babar","year":"2022","unstructured":"Babar Khan, Carsten Heinz, and Andreas Koch. 2022. DeLiBA: An open-source hardware\/software framework for the development of Linux block I\/O accelerators. In Proceedings of the 2022 32nd International Conference on Field-Programmable Logic and Applications (FPL). IEEE, 183\u2013191."},{"key":"e_1_3_3_26_2","doi-asserted-by":"publisher","DOI":"10.1016\/j.ins.2015.07.056"},{"key":"e_1_3_3_27_2","first-page":"379","volume-title":"Proceedings of the 21st USENIX Conference on File and Storage Technologies (FAST 23)","author":"Kim Sang-Hoon","year":"2023","unstructured":"Sang-Hoon Kim, Jaehoon Shim, Euidong Lee, Seongyeop Jeong, Ilkueon Kang, and Jin-Soo Kim. 2023. \\(\\lbrace\\) NVMeVirt \\(\\rbrace\\) : A versatile software-defined virtual \\(\\lbrace\\) NVMe \\(\\rbrace\\) device. In Proceedings of the 21st USENIX Conference on File and Storage Technologies (FAST 23). 379\u2013394."},{"key":"e_1_3_3_28_2","volume-title":"High Performance Parallel I\/O","year":"2014","unstructured":"Prabhat and Quincey Koziol. 2014. High Performance Parallel I\/O. CRC Press, Boca Raton, FL. https:\/\/www.amazon.com\/Performance-Parallel-Chapman-Computational-Science\/dp\/1466582340"},{"key":"e_1_3_3_29_2","doi-asserted-by":"publisher","DOI":"10.1145\/3385073"},{"key":"e_1_3_3_30_2","volume-title":"PCI: endpoint: Add NVMe Endpoint Function Driver","author":"Moal Damien le","year":"2023","unstructured":"Damien le Moal and Rick Wertenbroek. 2023. PCI: endpoint: Add NVMe Endpoint Function Driver. GitHub website. Retrieved from https:\/\/github.com\/damien-lemoal\/linux\/commit\/332c84119c50e0e0ce2cfbad907fb6ed833ca2c5"},{"key":"e_1_3_3_31_2","doi-asserted-by":"publisher","DOI":"10.1109\/LCA.2020.3009347"},{"key":"e_1_3_3_32_2","volume-title":"Proceedings of the 6th USENIX Workshop on Hot Topics in Storage and File Systems (HotStorage 14)","author":"Lee Young-Sik","year":"2014","unstructured":"Young-Sik Lee, Luis Cavazos Quero, Youngjae Lee, Jin-Soo Kim, and Seungryoul Maeng. 2014. Accelerating external sorting via on-the-fly data merge in active SSDs. In Proceedings of the 6th USENIX Workshop on Hot Topics in Storage and File Systems (HotStorage 14)."},{"key":"e_1_3_3_33_2","doi-asserted-by":"publisher","DOI":"10.1007\/s42514-022-00103-1"},{"key":"e_1_3_3_34_2","first-page":"740","volume-title":"Proceedings of the 13th European Conference on Computer Vision\u2013ECCV 2014, Part V 13","author":"Lin Tsung-Yi","year":"2014","unstructured":"Tsung-Yi Lin, Michael Maire, Serge Belongie, James Hays, Pietro Perona, Deva Ramanan, Piotr Doll\u00e1r, and C. Lawrence Zitnick. 2014. Microsoft coco: Common objects in context. In Proceedings of the 13th European Conference on Computer Vision\u2013ECCV 2014, Part V 13. Springer, 740\u2013755."},{"key":"e_1_3_3_35_2","volume-title":"Linux v6.8.7 PCI Endpoint Functions","author":"Linux Bootlin Elixir Cross Referencer","year":"2024","unstructured":"Bootlin Elixir Cross Referencer Linux. 2024. Linux v6.8.7 PCI Endpoint Functions. Retrieved October 1st 2023 from https:\/\/elixir.bootlin.com\/linux\/latest\/source\/drivers\/pci\/endpoint\/functions"},{"key":"e_1_3_3_36_2","unstructured":"Corne Lukken Giulia Frascaria and Animesh Trivedi. 2021. ZCSD: A computational storage device over zoned namespaces (ZNS) ssds. arXiv:2112.00142. Retrieved from https:\/\/arxiv.org\/abs\/2112.00142"},{"key":"e_1_3_3_37_2","unstructured":"Corne Lukken and Animesh Trivedi. 2021. Past present and future of computational storage: A survey. arXiv:2112.09691. Retrieved from https:\/\/arxiv.org\/abs\/2112.09691"},{"key":"e_1_3_3_38_2","doi-asserted-by":"publisher","DOI":"10.1038\/498255a"},{"key":"e_1_3_3_39_2","volume-title":"PCI: endpoint: Add NVMe Endpoint Function Driver","author":"Mikhak Alan","year":"2019","unstructured":"Alan Mikhak. 2019. PCI: endpoint: Add NVMe Endpoint Function Driver. LWN. Retrieved from https:\/\/lwn.net\/Articles\/804369\/"},{"key":"e_1_3_3_40_2","first-page":"7","volume-title":"Proceedings of the CONTENT2023 : The 15th International Conference on Creative Content Technologies","author":"Mikhalevich Yurij","year":"2023","unstructured":"Yurij Mikhalevich. 2023. Using text queries to look up unlabeled images: A command-line search tool based on CLIP. In Proceedings of the CONTENT2023 : The 15th International Conference on Creative Content Technologies. IARIA, 7\u201311."},{"key":"e_1_3_3_41_2","first-page":"175","volume-title":"Proceedings of the 2009 10th IEEE\/ACM International Conference on Grid Computing","author":"Mordvinova Olga","year":"2009","unstructured":"Olga Mordvinova, Julian Martin Kunkel, Christian Baun, Thomas Ludwig, and Marcel Kunze. 2009. USB flash drives as an energy efficient storage alternative. In Proceedings of the 2009 10th IEEE\/ACM International Conference on Grid Computing. IEEE, 175\u2013182."},{"key":"e_1_3_3_42_2","volume-title":"PCIe Endpoint Mode","year":"2023","unstructured":"Nvidia. 2023. PCIe Endpoint Mode. Retrieved October 1st 2023 from https:\/\/docs.nvidia.com\/jetson\/archives\/r35.4.1\/DeveloperGuide\/text\/SD\/Communications\/PcieEndpointMode.html#"},{"key":"e_1_3_3_43_2","volume-title":"NVM Express Base Specification Revision 2.0c","year":"2022","unstructured":"nvmexpress.org. 2022. NVM Express Base Specification Revision 2.0c. Retrieved October 1st 2023 from https:\/\/nvmexpress.org\/wp-content\/uploads\/NVM-Express-Base-Specification-2.0c-2022.10.04-Ratified.pdf"},{"key":"e_1_3_3_44_2","volume-title":"NVM Express Command Set Specification 1.0c","year":"2022","unstructured":"nvmexpress.org. 2022. NVM Express Command Set Specification 1.0c. Retrieved October 1st 2023 from https:\/\/nvmexpress.org\/wp-content\/uploads\/NVM-Express-NVM-Command-Set-Specification-1.0c-2022.10.03-Ratified.pdf"},{"key":"e_1_3_3_45_2","volume-title":"NVM Express Key Value Command Set Specification 1.0c","year":"2022","unstructured":"nvmexpress.org. 2022. NVM Express Key Value Command Set Specification 1.0c. Retrieved October 1st 2023 from https:\/\/nvmexpress.org\/wp-content\/uploads\/NVM-Express-Key-Value-Command-Set-Specification-1.0c-2022.10.03-Ratified-1.pdf"},{"key":"e_1_3_3_46_2","volume-title":"NVM Express Zoned Namespace Command Set Specification 1.1c","year":"2022","unstructured":"nvmexpress.org. 2022. NVM Express Zoned Namespace Command Set Specification 1.1c. Retrieved October 1st 2023 from https:\/\/nvmexpress.org\/wp-content\/uploads\/NVM-Express-Zoned-Namespace-Command-Set-Specification-1.1c-2022.10.03-Ratified.pdf"},{"key":"e_1_3_3_47_2","first-page":"8748","volume-title":"Proceedings of the International Conference on Machine Learning","year":"2021","unstructured":"Alec Radford, Jong Wook Kim, Chris Hallacy, Aditya Ramesh, Gabriel Goh, Sandhini Agarwal, Girish Sastry, Amanda Askell, Pamela Mishkin, Jack Clark, Gretchen Krueger, and Ilya Sutskever. 2021. Learning transferable visual models from natural language supervision. In Proceedings of the International Conference on Machine Learning. PMLR, 8748\u20138763. http:\/\/proceedings.mlr.press\/v139\/radford21a"},{"key":"e_1_3_3_48_2","doi-asserted-by":"publisher","DOI":"10.1109\/2.928624"},{"key":"e_1_3_3_49_2","doi-asserted-by":"publisher","DOI":"10.1145\/3431920.3439298"},{"key":"e_1_3_3_50_2","doi-asserted-by":"publisher","DOI":"10.1145\/3472769"},{"key":"e_1_3_3_51_2","volume-title":"Computational Storage Architecture and Programming Model Version 1.0","year":"2022","unstructured":"SNIA. 2022. Computational Storage Architecture and Programming Model Version 1.0. Retrieved October 1st 2023 from https:\/\/www.snia.org\/sites\/default\/files\/technical-work\/computational\/release\/SNIA-Computational-Storage-Architecture-and-Programming-Model-1.0.pdf"},{"key":"e_1_3_3_52_2","volume-title":"Computational Storage API Version 0.9 rev1","year":"2023","unstructured":"SNIA. 2023. Computational Storage API Version 0.9 rev1. Retrieved October 1st 2023 from https:\/\/www.snia.org\/sites\/default\/files\/technical-work\/computational\/draft\/Computational%20Storage%20API%20v0.9r1%202023-07-27.pdf"},{"key":"e_1_3_3_53_2","doi-asserted-by":"publisher","DOI":"10.1145\/3489525.3511672"},{"key":"e_1_3_3_54_2","doi-asserted-by":"publisher","DOI":"10.1371\/journal.pbio.1002195"},{"key":"e_1_3_3_55_2","first-page":"119","volume-title":"Proceedings of the 11th USENIX Conference on File and Storage Technologies (FAST 13)","author":"Tiwari Devesh","year":"2013","unstructured":"Devesh Tiwari, Simona Boboila, Sudharshan Vazhkudai, Youngjae Kim, Xiaosong Ma, Peter Desnoyers, and Yan Solihin. 2013. Active flash: Towards energy-efficient, in-situ data analytics on extreme-scale machines. In Proceedings of the 11th USENIX Conference on File and Storage Technologies (FAST 13). 119\u2013132."},{"key":"e_1_3_3_56_2","volume-title":"SoC-Based In-Storage Processing: Bringing Flexibility and Efficiency to Near-Data Processing","author":"Torabzadehkashi Mahdi","year":"2019","unstructured":"Mahdi Torabzadehkashi. 2019. SoC-Based In-Storage Processing: Bringing Flexibility and Efficiency to Near-Data Processing. University of California, Irvine."},{"key":"e_1_3_3_57_2","doi-asserted-by":"publisher","DOI":"10.1186\/s40537-019-0265-5"},{"key":"e_1_3_3_58_2","volume-title":"PCI: Rockchip: Fix RK3399 PCIe Endpoint Controller Driver","author":"Wertenbroek Rick","year":"2023","unstructured":"Rick Wertenbroek. 2023. PCI: Rockchip: Fix RK3399 PCIe Endpoint Controller Driver. Linux Kernel Mailing List (LKML). Retrieved from https:\/\/lore.kernel.org\/linux-pci\/20230418074700.1083505-1-rick.wertenbroek@gmail.com\/"},{"key":"e_1_3_3_59_2","doi-asserted-by":"publisher","DOI":"10.1109\/CloudCom.2017.14"}],"container-title":["ACM Transactions on Storage"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3697352","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3697352","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T21:17:33Z","timestamp":1750281453000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3697352"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2025,2,8]]},"references-count":58,"journal-issue":{"issue":"2","published-print":{"date-parts":[[2025,5,31]]}},"alternative-id":["10.1145\/3697352"],"URL":"https:\/\/doi.org\/10.1145\/3697352","relation":{},"ISSN":["1553-3077","1553-3093"],"issn-type":[{"value":"1553-3077","type":"print"},{"value":"1553-3093","type":"electronic"}],"subject":[],"published":{"date-parts":[[2025,2,8]]},"assertion":[{"value":"2023-12-14","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2024-09-06","order":2,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2025-02-08","order":3,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}