IP Library Granted Patent US 12,299,307
Granted Patent B2
US 12,299,307 · App. 17/495,810 · Granted May 13, 2025

Systems and methods for data transfer for computational storage devices

Inventors: Oscar P. Pinto (San Jose, CA); Ramdas P. Kachare (Pleasanton, CA)
Assignee: SAMSUNG ELECTRONICS CO., LTD.
G06F3/0644G06F3/0622G06F3/067G06F9/544
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,299,307
App. No.
17/495,810
Granted
May 13, 2025
Kind
B2
Abstract

Provided are systems, methods, and apparatuses for managing memory. The method can include: establishing a connection via an interface, between a host device and a storage device; and transferring data, via the interface, between first memory associated with the host device and second memory associated with the storage device by performing a data operation on the second memory by an application executed by the host, where the storage device includes a processing element that accelerates the data operation by performing at least one offload function on the data operation.

Claims (42)

1. A method to manage memory, the method comprising:

establishing a connection, via an interface, between a host device and a storage device; and

transferring data, via the interface, from first memory associated with the host device to second memory associated with the storage device,

wherein the interface comprises an application programming interface (API), and the host device allocates the second memory using at least one command associated with the API;

wherein the storage device includes a flash storage and a processing element that accelerates a data operation by performing at least one offload function on the data operation of an application,

wherein the data operation is performed on the data by the storage device,

wherein the data is transferred between the first memory and the second memory based at least in part on the at least one offload function, and

wherein the at least one offload function is based at least in part on the data operation of the application.

2. The method of claim 1 , wherein the host device allocates the second memory using a fine-grained allocation scheme or a coarse-grained allocation scheme.

3. The method of claim 1 , wherein the method further comprises addressing the second memory and the transferring data is based at least in part on the addressing of the second memory.

4. The method of claim 1 , wherein the second memory comprises a secure address space, wherein the method further comprises host device performing one or more multitenant operations based on the secure address space, and wherein the secure address space protects the data of a first tenant from access by a second tenant.

5. The method of claim 1 , wherein the storage device comprises a non-volatile memory express (NVMe) enabled storage device and the data operation is performed using a scatter gather list (SGL).

6. The method of claim 1 , wherein the performing the data operation further comprises the storage device transferring data from persistent memory associated with the storage device to the second memory.

7. The method of claim 1 , wherein the transferring data further comprises the host device providing information regarding the first memory's layout to the storage device.

8. The method of claim 1 , wherein the transferring data further comprises the storage device providing information regarding the storage device's memory layout for read and write operations to the host device.

9. The method of claim 1 , wherein the establishing the connection comprises a discovery and setup process.

10. The method of claim 1 , wherein the offload function accesses a result of the data operation from the second memory associated with the storage device.

11. A non-transitory computer-readable medium storing computer-executable instructions for managing memory which, when executed by a processor, cause the processor to perform operations comprising:

establishing a connection, via an interface, between a host device and a storage device; and

transferring data, via the interface, from first memory associated with the host device to second memory associated with the storage device,

wherein the interface comprises an application programming interface (API), and the host device allocates the second memory using at least one command associated with the API;

wherein the storage device includes a flash storage and a processing element that accelerates a data operation by performing at least one offload function on the data operation of an application,

wherein the data operation is performed on the data by the storage device,

wherein the data is transferred between the first memory and the second memory based at least in part on the at least one offload function, and

wherein the at least one offload function is based at least in part on the data operation of the application.

12. The non-transitory computer-readable medium of claim 11 , wherein the computer-executable instructions further cause the processor to perform operations comprising addressing the second memory, and the transferring data is based at least in part on the addressing of the second memory.

13. The non-transitory computer-readable medium of claim 11 , wherein the second memory comprises a secure address space, wherein the host device performs one or more multitenant operations based on the secure address space and wherein the secure address space protects the data of a first tenant from access by a second tenant.

14. The non-transitory computer-readable medium of claim 11 , wherein the storage device comprises a non-volatile memory express (NVMe) enabled storage device and the data operation is performed using a scatter gather list (SGL).

15. The non-transitory computer-readable medium of claim 11 , wherein the data operation further comprises the storage device transferring data from persistent memory associated with the storage device to the second memory.

16. A system for managing memory, comprising:

a host device comprising a first memory and an application;

a storage device comprising a device manager, a flash storage, a processing element, and a second memory;

wherein the system stores computer-executable instructions which, when executed by a processor, cause the processor to perform operations comprising:

establishing a connection, via an interface, between the host device and the storage device; and

transferring data, via the interface, from first memory associated with the host device to second memory associated with the storage device,

wherein the interface comprises an application programming interface (API), and the host device allocates the second memory using at least one command associated with the API;

wherein the device manager configures the processing element to accelerate a data operation by performing at least one offload function on the data operation of an application,

wherein the data operation is performed on the data by the processing element,

wherein the data is transferred between the first memory and the second memory based at least in part on the at least one offload function, and

wherein the at least one offload function is based at least in part on the data operation of the application.

17. The system of claim 16 , wherein the storage device transfers second data, via the interface, between at least a third memory associated with the storage device and a fourth memory associated with the storage device.

18. The system of claim 16 , wherein the storage device transfers second data, via the interface, between at least a third memory associated with the storage device and a fourth memory associated with the host device.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 31, 2023
From: PINTO, OSCAR P.; KACHARE, RAMDAS P.
To: SAMSUNG ELECTRONICS CO., LTD.
Reel/Frame 064442/0203 →
Continuity (4)
Provisional Application 63241525 · Sep 7, 2021
Provisional Application 63144469 · Feb 1, 2021
Provisional Application 63142485 · Jan 27, 2021
Related Publication 20220236902A1 · Jul 28, 2022
References Cited (136)
US 5805777A · Kuchta · 1998 [cited by applicant]
US 6976255B1 · Clark et al. · 2005 [cited by applicant]
US 7315807B1 · Lavallee et al. · 2008 [cited by applicant]
US 7433931B2 · Richoux · 2008 [cited by applicant]
US 7801931B2 · Tunar et al. · 2010 [cited by applicant]
US 7937703B2 · Bethea et al. · 2011 [cited by applicant]
US 8381004B2 · Elnozahy et al. · 2013 [cited by applicant]
US 8615570B2 · Brewis et al. · 2013 [cited by applicant]
US 8726299B1 · Bromley et al. · 2014 [cited by applicant]
US 8904072B2 · Lee · 2014 [cited by applicant]
US 8943504B2 · Vijayarajan et al. · 2015 [cited by applicant]
US 9203627B2 · Edstrom et al. · 2015 [cited by applicant]
US 9398016B1 · Chakraborty et al. · 2016 [cited by applicant]
US 9406082B2 · Smedberg et al. · 2016 [cited by applicant]
US 9596135B1 · Thomas et al. · 2017 [cited by applicant]
US 9626120B1 · Jia et al. · 2017 [cited by applicant]
US 10162793B1 · Bshara et al. · 2018 [cited by applicant]
US 10303382B1 · Chu et al. · 2019 [cited by applicant]
US 10359953B2 · Cargnini · 2019 [cited by examiner]
US 10394746B2 · Kachare et al. · 2019 [cited by applicant]
US 10404811B2 · Ly et al. · 2019 [cited by applicant]
US 10412187B2 · Busayarat et al. · 2019 [cited by applicant]
US 10476936B1 · Retnakumari et al. · 2019 [cited by applicant]
US 10521114B2 · Thomas · 2019 [cited by applicant]
US 10621114B1 · Bshara et al. · 2020 [cited by applicant]
US 10637962B2 · Gay et al. · 2020 [cited by applicant]
US 10771340B2 · Ballapuram · 2020 [cited by applicant]
US 10795726B2 · Fujii et al. · 2020 [cited by applicant]
US 10802753B2 · Kabra et al. · 2020 [cited by applicant]
US 10838905B2 · Zou et al. · 2020 [cited by applicant]
US 10846096B1 · Chung et al. · 2020 [cited by applicant]
US 10860511B1 · Thompson · 2020 [cited by examiner]
US 10877750B1 · Connolly et al. · 2020 [cited by applicant]
US 11294576B2 · Khan · 2022 [cited by examiner]
US 11334382B2 · Bernat et al. · 2022 [cited by applicant]
US 11474974B2 · Lutz et al. · 2022 [cited by applicant]
US 11507298B2 · Yang · 2022 [cited by examiner]
US 11630921B2 · Sinha et al. · 2023 [cited by applicant]
US 11687498B2 · Trika et al. · 2023 [cited by applicant]
US 20030093572A1 · Laux et al. · 2003 [cited by applicant]
US 20040220918A1 · Scriffignano et al. · 2004 [cited by applicant]
US 20050132341A1 · Lanzatella et al. · 2005 [cited by applicant]
US 20070276924A1 · Newton et al. · 2007 [cited by applicant]
US 20080004887A1 · Brunswig et al. · 2008 [cited by applicant]
US 20080279161A1 · Stirbu et al. · 2008 [cited by applicant]
US 20110066676A1 · Kleyzit et al. · 2011 [cited by applicant]
US 20110185295A1 · Kashida · 2011 [cited by applicant]
US 20120079172A1 · Yoshida · 2012 [cited by applicant]
US 20120152576A1 · Bassinger et al. · 2012 [cited by applicant]
US 20120162234A1 · Blinzer · 2012 [cited by examiner]
US 20130173662A1 · Kaplinger et al. · 2013 [cited by applicant]
US 20140143778A1 · Gopal et al. · 2014 [cited by applicant]
US 20140310332A1 · Huang et al. · 2014 [cited by applicant]
US 20150319246A1 · Ishizaka · 2015 [cited by examiner]
US 20160012128A1 · Siebler et al. · 2016 [cited by applicant]
US 20160054931A1 · Romanovsky · 2016 [cited by examiner]
US 20160328344A1 · Jose et al. · 2016 [cited by applicant]
US 20170249088A1 · Thomas · 2017 [cited by applicant]
US 20180063145A1 · Cayton et al. · 2018 [cited by applicant]
US 20180352038A1 · Sathyanarayana et al. · 2018 [cited by applicant]
US 20190037280A1 · Yang et al. · 2019 [cited by applicant]
US 20190349281A1 · Oztaskent et al. · 2019 [cited by applicant]
US 20200012439A1 · Khan et al. · 2020 [cited by applicant]
US 20200050480A1 · Cao · 2020 [cited by examiner]
US 20200057578A1 · Benisty et al. · 2020 [cited by applicant]
US 20200081640A1 · Enz et al. · 2020 [cited by applicant]
US 20200117517A1 · Costa · 2020 [cited by examiner]
US 20200167098A1 · Shah et al. · 2020 [cited by applicant]
US 20200183582A1 · Kachare et al. · 2020 [cited by applicant]
US 20200192592A1 · Song et al. · 2020 [cited by applicant]
US 20200201575A1 · Mizrahi · 2020 [cited by applicant]
US 20200301898A1 · Samynathan · 2020 [cited by examiner]
US 20200310694A1 · Gao · 2020 [cited by examiner]
US 20200379781A1 · Rachapudi et al. · 2020 [cited by applicant]
US 20210026560A1 · Pillai · 2021 [cited by examiner]
US 20210247922A1 · Song et al. · 2021 [cited by applicant]
US 20210303159A1 · Ke · 2021 [cited by examiner]
US 20210377117A1 · Kanevsky · 2021 [cited by examiner]
US 20220058137A1 · Xu · 2022 [cited by examiner]
US 20220188028A1 · Mesnier · 2022 [cited by examiner]
US 20220236911A1 · Jones · 2022 [cited by examiner]
US 20220295255A1 · Karampatsis et al. · 2022 [cited by applicant]
US 20230244499A1 · Gupta et al. · 2023 [cited by applicant]
CN 102929813B · 2016 [cited by applicant]
CN 109254873A · 2019 [cited by applicant]
EP 3964956A1 · 2022 [cited by applicant]
KR 20120071060A · 2012 [cited by applicant]
KR 20140001970A1 · 2014 [cited by applicant]
KR 20170121661A · 2017 [cited by applicant]
KR 20180106822A · 2018 [cited by applicant]
KR 20200068564A · 2020 [cited by applicant]
TW 200622673A · 2006 [cited by applicant]
TW 201214288A · 2012 [cited by applicant]
TW 202102976A · 2021 [cited by applicant]
WO 2002097610A1 · 2002 [cited by applicant]
Office Action for U.S. Appl. No. 17/234,780, mailed Jan. 5, 2023. [cited by applicant]
Anandan, Sabby et al., “Industry Paper: Spring XD—A Modular Distributed Stream and Batch Processing System,” DEBS '15: Proceedings of the 9th ACM International Conference on Distributed Event-Based Systems, Jun. 2015, p… [cited by applicant]
Carbone, Paris et al., “Apache Flink™: Stream and Batch Processing in a Single Engine,” Bulletin of the IEEE Computer Society Technical Committee on Data Engineering, vol. 36, No. 4, 2015, pp. 28-38. [cited by applicant]
European Extended Search Report for Application No. 21190626.8, mailed Jan. 28, 2022. [cited by applicant]
European Extended Search Report for Application No. 21212137.0, mailed Apr. 28, 2022. [cited by applicant]
Fisher, Mark et al., “Spring XD Guide”, 1.3.3.BUILD-SNAPSHOT, 2013, 400 pages. [cited by applicant]
NVM Express, Inc., “NVM Express TM over Fabrics Revision 1.1,” Oct. 22, 2019, pp. 1-83, XP055877791, Retrieved from the Internet: URL:https://nvmexpress.org/wp-content/uploads/NVMe-over-Fabrics-1.1-2019.10.22-Ratified.p… [cited by applicant]
Torabzadehkashi, Mahdi, et al. “Computational Storage: An Efficient and Scalable Platform for Big Data and HPC Applications,” Journal of Big Data, vol. 6, No. 1, 2019, pp. 1-29. [cited by applicant]
Final Office Action for U.S. Appl. No. 17/234,780, mailed Aug. 17, 2023. [cited by applicant]
Office Action for U.S. Appl. No. 17/234,780, mailed Dec. 22, 2023. [cited by applicant]
Office Action for U.S. Appl. No. 17/359,495, mailed Dec. 7, 2023. [cited by applicant]
Office Action for U.S. Appl. No. 17/502,023, mailed Oct. 5, 2023. [cited by applicant]
Bates, Stephen, “Accelerating RocksDB with Eideticom's NoLoad NVMe-based Computational Storage Processor,” Storage Developer Conference 2019, Sep. 2019, retrieved from the Internet: URL:https://www.snia.org/sites/defaul… [cited by applicant]
Chambers, Bill et al., “Spark, The Definitive Guide: Big Data Processing Made Simple”, first 400 pages, Feb. 2018, retrieved from the Internet:URL:https://analyticsdata24.files.wordpress.com/2020/02/spark-the-definitive… [cited by applicant]
European Summons to Oral Proceedings for Application No. 21190626.8, mailed Feb. 15, 2024. [cited by applicant]
European Summons to Oral Proceedings for Application No. 21190952.8, mailed Jan. 25, 2024. [cited by applicant]
Gounaris, Anastasios et al., “Dynamic Configuration of Partitioning in Spark Applications,” IEEE Transactions on Parallel and Distributed Systems, vol. 28, No. 7, Jul. 2017, [retrieved on Jun. 10, 2017], pp. 1891-1904. [cited by applicant]
Molgaard, Jason, “A Simple Approach to Implementing Computational Storage,” Storage Developer Conference 2019, Sep. 2019, retrieved from the Internet:URL:https://www.snia.org/sites/defaultifiles/SDC/2019/presentations/C… [cited by applicant]
Prasaad, Guna et al., “Improving High Contention OLTP Performance via Transaction Scheduling”, arXiv.org, Oct. 2018, retrieved from the Internet: URL:https://arxiv.org/pdf/1810.01997.pdf [retrieved on Jan. 17, 2024], 15… [cited by applicant]
Sabiu, Habib Ado, “Performance Evaluation of Job Scheduling and Resource Allocation in Apache Spark,” Jul. 2018, retrieved from the Internet: URL:https://harvest.usask.ca/server/api/core/bitstreams/9654d97a-5217-486d-b8… [cited by applicant]
Shadley, Scott et al., “What Happens When Compute Meets Storage?,” Sep. 2019, retrieved from the Internet:URL:https://www.snia.org/sites/defaultifiles/SDC/2019/presentations/Computational/Shadley_Scott_Adams_Nick_What_H… [cited by applicant]
SNIAVIDEO: “What Happens when Compute Meets Storage (SDC 2019),” Oct. 2019, retrieved from the Internet: URL:https://www.youtube.com/watch?=45nhck3tN4U [retrieved on Feb. 8, 2024], 2 pages. [cited by applicant]
Tang, Shanjiang et al., “A Survey on Spark Ecosystem for Big Data Processing,” arxiv.org, Nov. 2018, 21 pages. [cited by applicant]
Wikipedia, “Message Broker,” Jul. 2020, retrieved from the Internet: URL:https://en.wikipedia.org/w/index.php?title=Message_broker&0ldid=966520924 [retrieved on Jan. 18, 2024], 3 pages. [cited by applicant]
Final Office Action for U.S. Appl. No. 17/234,780, mailed Jul. 5, 2024. [cited by applicant]
Final Office Action for U.S. Appl. No. 17/502,023, mailed Jun. 20, 2024. [cited by applicant]
Office Action for U.S. Appl. No. 17/359,495, mailed Aug. 12, 2024. [cited by applicant]
Castellani, Angelo P. et al., “WebIoT: A Web Application Framework for the Internet of Things,” WCNC 2012 Workshop on Internet of Things Enabling Technologies, Embracing Machine-to-Machine Communications and Beyond, 201… [cited by applicant]
European Office Action for Application No. 22174076.4, mailed Jul. 8, 2024. [cited by applicant]
Kerdoudi, Mohamed Lamine et al., “Recovering Software Architecture Product Lines,” 2019 24th International Conference on Engineering of Complex Computer Systems (ICECCS), 2019, pp. 226-235. [cited by applicant]
European Office Action for Application No. 21190952.8, mailed Oct. 18, 2024. [cited by applicant]
European Office Action for Application No. 21212137.0, mailed Oct. 25, 2024. [cited by applicant]
Li, Yonghui et al., “Architecture and Analysis of a Dynamically-Scheduled Real-Time Memory Controller,” Real-Time Systems, Jul. 2015, vol. 52, pp. 675-729. [cited by applicant]
Li, Yonghui, “Design and Formal Analysis of Real-Time Memory Controllers,” Phd Thesis 1 (Research TU/e /Graduation TU/e), Electrical Engineering, Sep. 2016, 207 pages. [cited by applicant]
Mutlu, Onur et al., “Parallelism-Aware Batch Scheduling: Enhancing both Performance and Fairness of Shared DRAM Systems,” International Symposium on Computer Architecture, ACM Sigarch Computer Architecture News, 2008, v… [cited by applicant]
Prieto, Pablo et al., “CMP Off-Chip Bandwidth Scheduling Guided by Instruction Criticality,” ICS '13: Proceedings of the 27th International ACM Conference on International Conference on Supercomputing, Jun. 2013, pp. 37… [cited by applicant]
Zhou, Ping et al., “Throughput Enhancement for Phase Change Memories,” IEEE Transactions on Computers, vol. 63, No. 8, Aug. 2014, pp. 2080-2093. [cited by applicant]
Notice of Allowance for U.S. Appl. No. 17/502,023, mailed Nov. 26, 2024. [cited by applicant]
Office Action for U.S. Appl. No. 17/234,780, mailed Dec. 19, 2024. [cited by applicant]
Warke, Amit, et al. “Storage Service Orchestration with container Elasticity,” 2018 IEEE 4th International Conference on Collaboration and Internet Computing (CIC), IEEE, 2018, pp. 283-292. [cited by applicant]
Notice of Allowability for U.S. Appl. No. 17/502,023, mailed Feb. 4, 2025. [cited by applicant]