Notice of Pre-AIA or AIA Status
The present application, filed on or after March 16, 2013, is being examined under the first inventor to file provisions of the AIA .
Claim Rejections - 35 USC § 102
In the event the determination of the status of the application as subject to AIA 35 U.S.C. 102 and 103 (or as subject to pre-AIA 35 U.S.C. 102 and 103) is incorrect, any correction of the statutory basis for the rejection will not be considered a new ground of rejection if the prior art relied upon, and the rationale supporting the rejection, would be the same under either status.
The following is a quotation of the appropriate paragraphs of 35 U.S.C. 102 that form the basis for the rejections under this section made in this Office action:
A person shall be entitled to a patent unless -
(a)(2) the claimed invention was described in a patent issued under section 151, or in an application for patent published or deemed published under section 122(b), in which the patent or application, as the case may be, names another inventor and was effectively filed before the effective filing date of the claimed invention.
Claims 1-7, 10-16, 18, and 19 are rejected under 35 U.S.C. 102(a)(2) as being anticipated by Mazumdar et al. (US 2023/0251989, hereinafter Mazumdar; Provisional Application No. 63/308,904 filed on 2/10/2022).
Regarding claim 1, Mazumdar discloses
A device, comprising:
a first interface (paragraph [0174]: Examples of the network 936 include a Storage Area Network (SAN), a Local Area Network (LAN), and a Wide Area Network (WAN) … Data communication protocols for use with the SAN can include Advanced Technology Attachment (‘ATA’), Fibre Channel Protocol, Small Computer System Interface (‘SCSI’), Internet Small Computer System Interface (‘iSCSI’), HyperSCSI, Non-Volatile Memory Express (‘NVMe’) over Fabrics, or the like; paragraph [0192]: the NIC 932 may include a direct memory access controller that generates memory addresses for the direct data access operation on the external storage 960 and initiates memory read and/or write operations; paragraph [0204]: network interface controller (NIC) 1132 that includes an application programming interface (API) 113);
a memory (paragraph [0015]: The attached reconfigurable processor memories 1062 may include main memory such as dynamic random-access memory (DRAM)) configured to be accessible via the first interface (paragraph [0174]: Examples of the network 936 include a Storage Area Network (SAN), a Local Area Network (LAN), and a Wide Area Network (WAN) … Data communication protocols for use with the SAN can include Advanced Technology Attachment (‘ATA’), Fibre Channel Protocol, Small Computer System Interface (‘SCSI’), Internet Small Computer System Interface (‘iSCSI’), HyperSCSI, Non-Volatile Memory Express (‘NVMe’) over Fabrics, or the like; paragraph [0194]: The data processing system 1000 includes an API (e.g., in the NIC 1032) that is configured to enable sending of data from the one or more reconfigurable processors 1042 via the NIC 1032 to the external storage 1060 and/or retrieving of data from the external storage 1060 via the NIC 1032 for the one or more reconfigurable processors 1042);
a second interface connectable to a processor that is external to the device (paragraph [0187]: bus switch 1024 couples multiple local busses 1025, 1026, 1027, thereby operatively coupling the one or more reconfigurable processors 1042, the host processor 1002, and the NIC 1032);
a logic circuit configured to separate incoming messages received in the first interface (paragraph [0174]: Examples of the network 936 include a Storage Area Network (SAN), a Local Area Network (LAN), and a Wide Area Network (WAN) … Data communication protocols for use with the SAN can include Advanced Technology Attachment (‘ATA’), Fibre Channel Protocol, Small Computer System Interface (‘SCSI’), Internet Small Computer System Interface (‘iSCSI’), HyperSCSI, Non-Volatile Memory Express (‘NVMe’) over Fabrics, or the like; paragraph [0194]: The data processing system 1000 includes an API (e.g., in the NIC 1032) that is configured to enable sending of data from the one or more reconfigurable processors 1042 via the NIC 1032 to the external storage 1060 and/or retrieving of data from the external storage 1060 via the NIC 1032 for the one or more reconfigurable processors 1042; paragraph [0196]: the API is configured to enable the retrieving of the data in integer multiples of a block size (i.e., page size) of the external storage 1060) into first messages (paragraph [0223]: In this scenario, a portion of the data to be transferred that includes a multiple of the block size of the external storage 1260 is transferred in directly between the external storage 1260 and the reconfigurable processor memory 1262 and/or the one or more reconfigurable processors 1242) and second messages, communicate the second messages via the second interface for processing by the processor (paragraph [0187]: bus switch 1024 couples multiple local busses 1025, 1026, 1027, thereby operatively coupling the one or more reconfigurable processors 1042, the host processor 1002, and the NIC 1032; paragraph [0203]: performing a remote read/write operation can represent a security risk; paragraph [0224]: The remainder of the data to be transferred is doing a buffered I/O transfer. As an example, when doing a buffered I/O transfer for retrieving data from the external storage 1260, the remainder of the data to be transferred is first copied from the external storage 1260 to the host memory 1234 and from the host memory 1234 to the target memory (i.e., to the reconfigurable processor memory 1262)) to generate third messages (paragraph [0203]: The IOMMU tables on the host processor 1002 will translate IOVA to PA before issuing a read or a write request to the reconfigurable processor memory 1062 locally or remotely), and process the first messages (paragraph [0223]: In this scenario, a portion of the data to be transferred that includes a multiple of the block size of the external storage 1260 is transferred in directly between the external storage 1260 and the reconfigurable processor memory 1262 and/or the one or more reconfigurable processors 1242) and the third messages (paragraph [0203]: The IOMMU tables on the host processor 1002 will translate IOVA to PA before issuing a read or a write request to the reconfigurable processor memory 1062 locally or remotely).
Regarding claim 2, Mazumdar discloses
wherein the first interface is a network interface (paragraph [0174]: Examples of the network 936 include a Storage Area Network (SAN), a Local Area Network (LAN), and a Wide Area Network (WAN) … Data communication protocols for use with the SAN can include Advanced Technology Attachment (‘ATA’), Fibre Channel Protocol, Small Computer System Interface (‘SCSI’), Internet Small Computer System Interface (‘iSCSI’), HyperSCSI, Non-Volatile Memory Express (‘NVMe’) over Fabrics, or the like; paragraph [0194]: The data processing system 1000 includes an API (e.g., in the NIC 1032) that is configured to enable sending of data from the one or more reconfigurable processors 1042 via the NIC 1032 to the external storage 1060 and/or retrieving of data from the external storage 1060 via the NIC 1032 for the one or more reconfigurable processors 1042).
Regarding claim 3, Mazumdar discloses
wherein the second interface is a host interface operatable on a bus connected to the processor (paragraph [0187]: bus switch 1024 couples multiple local busses 1025, 1026, 1027, thereby operatively coupling the one or more reconfigurable processors 1042, the host processor 1002, and the NIC 1032).
Regarding claim 4, Mazumdar discloses
wherein the device is configured to receive via the host interface (paragraph [0187]: bus switch 1024 couples multiple local busses 1025, 1026, 1027, thereby operatively coupling the one or more reconfigurable processors 1042, the host processor 1002, and the NIC 1032) a message selection configuration identifying first criteria, and identify the second messages based on the first criteria (paragraph [0203]: in a non-trusted environment, exposing the reconfigurable processor memory 1062 via its PCIe BAR2 memory-mapped region directly to any third-party RDMA devices for performing a remote read/write operation can represent a security risk… The IOMMU tables on the host processor 1002 will translate IOVA to PA before issuing a read or a write request to the reconfigurable processor memory 1062 locally or remotely).
Regarding claim 5, Mazumdar discloses
wherein the device is configured to receive the third messages (paragraph [0203]: in a non-trusted environment, exposing the reconfigurable processor memory 1062 via its PCIe BAR2 memory-mapped region directly to any third-party RDMA devices for performing a remote read/write operation can represent a security risk… The IOMMU tables on the host processor 1002 will translate IOVA to PA before issuing a read or a write request to the reconfigurable processor memory 1062 locally or remotely) via the host interface from the processor (paragraph [0187]: bus switch 1024 couples multiple local busses 1025, 1026, 1027, thereby operatively coupling the one or more reconfigurable processors 1042, the host processor 1002, and the NIC 1032).
Regarding claim 6, Mazumdar discloses
wherein the device is configured to process the first messages and the third messages without assistance from the processor in provision of network storage services responsive to the incoming messages received in the first interface (paragraph [0177]: remote direct memory access (RDMA); paragraph [0222]: Data is transferred from external storage 1260 to PCIe device memory such as reconfigurable processor memory 1262 while bypassing the file buffer cache and thereby the host memory 1234).
Regarding claim 7, Mazumdar discloses
wherein the message selection configuration further is configured to identify second criteria; and the device is configured to identify the first messages based on the second criteria (paragraph [0223]: In this scenario, a portion of the data to be transferred that includes a multiple of the block size of the external storage 1260 is transferred in directly between the external storage 1260 and the reconfigurable processor memory 1262 and/or the one or more reconfigurable processors 1242).
Regarding claim 10, Mazumdar discloses
A method, comprising:
receiving, via a first interface of a device, incoming messages to access a memory of the device (paragraph [0174]: Examples of the network 936 include a Storage Area Network (SAN), a Local Area Network (LAN), and a Wide Area Network (WAN) … Data communication protocols for use with the SAN can include Advanced Technology Attachment (‘ATA’), Fibre Channel Protocol, Small Computer System Interface (‘SCSI’), Internet Small Computer System Interface (‘iSCSI’), HyperSCSI, Non-Volatile Memory Express (‘NVMe’) over Fabrics, or the like; paragraph [0192]: the NIC 932 may include a direct memory access controller that generates memory addresses for the direct data access operation on the external storage 960 and initiates memory read and/or write operations; paragraph [0204]: network interface controller (NIC) 1132 that includes an application programming interface (API) 113);
separating, by the device, the incoming messages received via the first interface (paragraph [0174]: Examples of the network 936 include a Storage Area Network (SAN), a Local Area Network (LAN), and a Wide Area Network (WAN) … Data communication protocols for use with the SAN can include Advanced Technology Attachment (‘ATA’), Fibre Channel Protocol, Small Computer System Interface (‘SCSI’), Internet Small Computer System Interface (‘iSCSI’), HyperSCSI, Non-Volatile Memory Express (‘NVMe’) over Fabrics, or the like; paragraph [0194]: The data processing system 1000 includes an API (e.g., in the NIC 1032) that is configured to enable sending of data from the one or more reconfigurable processors 1042 via the NIC 1032 to the external storage 1060 and/or retrieving of data from the external storage 1060 via the NIC 1032 for the one or more reconfigurable processors 1042; paragraph [0196]: the API is configured to enable the retrieving of the data in integer multiples of a block size (i.e., page size) of the external storage 1060) and second messages (paragraph [0203]: performing a remote read/write operation can represent a security risk; paragraph [0224]: The remainder of the data to be transferred is doing a buffered I/O transfer. As an example, when doing a buffered I/O transfer for retrieving data from the external storage 1260, the remainder of the data to be transferred is first copied from the external storage 1260 to the host memory 1234 and from the host memory 1234 to the target memory (i.e., to the reconfigurable processor memory 1262));
communicating, via a second interface of the device, the second messages (paragraph [0203]: performing a remote read/write operation can represent a security risk; paragraph [0224]: The remainder of the data to be transferred is doing a buffered I/O transfer. As an example, when doing a buffered I/O transfer for retrieving data from the external storage 1260, the remainder of the data to be transferred is first copied from the external storage 1260 to the host memory 1234 and from the host memory 1234 to the target memory (i.e., to the reconfigurable processor memory 1262)) to a processor that is external to the device (paragraph [0187]: bus switch 1024 couples multiple local busses 1025, 1026, 1027, thereby operatively coupling the one or more reconfigurable processors 1042, the host processor 1002, and the NIC 1032) to generate third messages (paragraph [0203]: The IOMMU tables on the host processor 1002 will translate IOVA to PA before issuing a read or a write request to the reconfigurable processor memory 1062 locally or remotely); and
processing, by the device, the first messages (paragraph [0223]: In this scenario, a portion of the data to be transferred that includes a multiple of the block size of the external storage 1260 is transferred in directly between the external storage 1260 and the reconfigurable processor memory 1262 and/or the one or more reconfigurable processors 1242) and the third messages (paragraph [0203]: The IOMMU tables on the host processor 1002 will translate IOVA to PA before issuing a read or a write request to the reconfigurable processor memory 1062 locally or remotely) responsive to the incoming messages to access the memory of the device (paragraph [0196]: the API is configured to enable the retrieving of the data in integer multiples of a block size (i.e., page size) of the external storage 1060; paragraph [0223]: In this scenario, a portion of the data to be transferred that includes a multiple of the block size of the external storage 1260 is transferred in directly between the external storage 1260 and the reconfigurable processor memory 1262 and/or the one or more reconfigurable processors 1242).
Regarding claim 18 referring to claim 10, Mazumdar discloses A non-transitory computer storage medium storing instructions which, when executed in a device, cause the device to perform a method, comprising: … (paragraph [0076]: CPU, memory).
Regarding claim 11, Mazumdar discloses
wherein the incoming messages are configured to access the memory of the device (paragraph [0196]: the API is configured to enable the retrieving of the data in integer multiples of a block size (i.e., page size) of the external storage 1060; paragraph [0223]: In this scenario, a portion of the data to be transferred that includes a multiple of the block size of the external storage 1260 is transferred in directly between the external storage 1260 and the reconfigurable processor memory 1262 and/or the one or more reconfigurable processors 1242) using a storage protocol (paragraph [0174]: Data communication protocols for use with the SAN can include Advanced Technology Attachment (‘ATA’), Fibre Channel Protocol, Small Computer System Interface (‘SCSI’), Internet Small Computer System Interface (‘iSCSI’), HyperSCSI, Non-Volatile Memory Express (‘NVMe’) over Fabrics, or the like).
Regarding claim 12, Mazumdar discloses
wherein the storage protocol is according to: internet small computer systems interface; fibre channel; fibre channel over ethernet; network file system; or server message block (paragraph [0174]: Examples of the network 936 include a Storage Area Network (SAN), a Local Area Network (LAN), and a Wide Area Network (WAN). The SAN can be implemented with a variety of data communications fabrics, devices, and protocols. For example, the fabrics for the SAN can include Fibre Channel, Ethernet, InfiniBand™, Serial Attached Small Computer System Interface (‘SAS’), or the like. Data communication protocols for use with the SAN can include Advanced Technology Attachment (‘ATA’), Fibre Channel Protocol, Small Computer System Interface (‘SCSI’), Internet Small Computer System Interface (‘iSCSI’), HyperSCSI, Non-Volatile Memory Express (‘NVMe’) over Fabrics, or the like).
Regarding claim 13, Mazumdar discloses
wherein the first interface is a network interface (paragraph [0174]: Examples of the network 936 include a Storage Area Network (SAN), a Local Area Network (LAN), and a Wide Area Network (WAN) … Data communication protocols for use with the SAN can include Advanced Technology Attachment (‘ATA’), Fibre Channel Protocol, Small Computer System Interface (‘SCSI’), Internet Small Computer System Interface (‘iSCSI’), HyperSCSI, Non-Volatile Memory Express (‘NVMe’) over Fabrics, or the like; paragraph [0194]: The data processing system 1000 includes an API (e.g., in the NIC 1032) that is configured to enable sending of data from the one or more reconfigurable processors 1042 via the NIC 1032 to the external storage 1060 and/or retrieving of data from the external storage 1060 via the NIC 1032 for the one or more reconfigurable processors 1042); and
the second interface is a host interface operatable on a bus connected to the processor (paragraph [0187]: bus switch 1024 couples multiple local busses 1025, 1026, 1027, thereby operatively coupling the one or more reconfigurable processors 1042, the host processor 1002, and the NIC 1032).
Regarding claims 14 and 19, Mazumdar discloses
further comprising: receiving, via the host interface (paragraph [0187]: bus switch 1024 couples multiple local busses 1025, 1026, 1027, thereby operatively coupling the one or more reconfigurable processors 1042, the host processor 1002, and the NIC 1032), a message selection configuration identifying first criteria; and identifying the second messages based on the first criteria (paragraph [0203]: in a non-trusted environment, exposing the reconfigurable processor memory 1062 via its PCIe BAR2 memory-mapped region directly to any third-party RDMA devices for performing a remote read/write operation can represent a security risk… The IOMMU tables on the host processor 1002 will translate IOVA to PA before issuing a read or a write request to the reconfigurable processor memory 1062 locally or remotely).
Regarding claim 15, Mazumdar discloses
wherein the device is configured to receive the third messages (paragraph [0203]: in a non-trusted environment, exposing the reconfigurable processor memory 1062 via its PCIe BAR2 memory-mapped region directly to any third-party RDMA devices for performing a remote read/write operation can represent a security risk… The IOMMU tables on the host processor 1002 will translate IOVA to PA before issuing a read or a write request to the reconfigurable processor memory 1062 locally or remotely) via the host interface from the processor (paragraph [0187]: bus switch 1024 couples multiple local busses 1025, 1026, 1027, thereby operatively coupling the one or more reconfigurable processors 1042, the host processor 1002, and the NIC 1032).
Regarding claim 16, Mazumdar discloses
wherein the message selection configuration further is configured to identify second criteria; and the device is configured to identify the first messages based on the second criteria (paragraph [0223]: In this scenario, a portion of the data to be transferred that includes a multiple of the block size of the external storage 1260 is transferred in directly between the external storage 1260 and the reconfigurable processor memory 1262 and/or the one or more reconfigurable processors 1242).
Claim Rejections - 35 USC § 103
In the event the determination of the status of the application as subject to AIA 35 U.S.C. 102 and 103 (or as subject to pre-AIA 35 U.S.C. 102 and 103) is incorrect, any correction of the statutory basis for the rejection will not be considered a new ground of rejection if the prior art relied upon, and the rationale supporting the rejection, would be the same under either status.
The following is a quotation of 35 U.S.C. 103 which forms the basis for all obviousness rejections set forth in this Office action:
A patent for a claimed invention may not be obtained, notwithstanding that the claimed invention is not identically disclosed as set forth in section 102 of this title, if the differences between the claimed invention and the prior art are such that the claimed invention as a whole would have been obvious before the effective filing date of the claimed invention to a person having ordinary skill in the art to which the claimed invention pertains. Patentability shall not be negated by the manner in which the invention was made
Claims 8, 9, 17, and 20are rejected under 35 U.S.C. 103 as being unpatentable over Mazumdar et al. (US 2023/0251989, hereinafter Mazumdar) in view of Zou et al. (US 2021/0326270, hereinafter Zou).
Regarding claims 8 and 17, Mazumdar does not disclose wherein the device is further configured to identify, among the incoming messages received in the first interface, fourth messages that do not meet the first criteria and do not meet the second criteria, and reject or block the fourth messages. Zou discloses wherein the device is further configured to identify, among the incoming messages received in the first interface, fourth messages that do not meet the first criteria and do not meet the second criteria, and reject or block the fourth messages (paragraph [0029]: redirector device can receive, from an initiator device, a request that identifies a data set to be accessed … The request may be a request to read from a data set, as indicated in block 326, or to write to a data set, as indicated in block 328; paragraph [0032]: As indicated in block 342, redirector device may identify resilvering write requests (e.g., requests to write data to a replica that in the process of being created). In doing so, and as indicated in block 344, redirector device discards any redundant resilvering write requests (e.g., requests to write to the same logical block address)). It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to modify the teaching of Mazumdar by incorporating Zou’s identifying resilvering write requests and discarding any redundant resilvering write requests. The motivation would have been to enable requests to be sent more directly to the precise locations (e.g., the storage server 130, 132, 134 that actually stores a particular data set) (Zou paragraph [0016]).
Regarding claim 9, Mazumdar discloses
wherein the network storage services are based on a storage protocol according to: internet small computer systems interface; fibre channel; fibre channel over ethernet; network file system; or server message block (paragraph [0174]: Examples of the network 936 include a Storage Area Network (SAN), a Local Area Network (LAN), and a Wide Area Network (WAN). The SAN can be implemented with a variety of data communications fabrics, devices, and protocols. For example, the fabrics for the SAN can include Fibre Channel, Ethernet, InfiniBand™, Serial Attached Small Computer System Interface (‘SAS’), or the like. Data communication protocols for use with the SAN can include Advanced Technology Attachment (‘ATA’), Fibre Channel Protocol, Small Computer System Interface (‘SCSI’), Internet Small Computer System Interface (‘iSCSI’), HyperSCSI, Non-Volatile Memory Express (‘NVMe’) over Fabrics, or the like).
Regarding claim 20, Mazumdar discloses
wherein the message selection configuration further is configured to identify second criteria; and the method further comprises: identifying, based on the second criteria, the first messages among the incoming messages (paragraph [0223]: In this scenario, a portion of the data to be transferred that includes a multiple of the block size of the external storage 1260 is transferred in directly between the external storage 1260 and the reconfigurable processor memory 1262 and/or the one or more reconfigurable processors 1242).
Mazumdar does not disclose identifying, among the incoming messages received via the first interface, fourth messages that do not meet the first criteria and do not meet the second criteria; and rejecting or blocking the fourth messages. Zou discloses identifying, among the incoming messages received via the first interface, fourth messages that do not meet the first criteria and do not meet the second criteria; and rejecting or blocking the fourth messages (paragraph [0029]: redirector device can receive, from an initiator device, a request that identifies a data set to be accessed … The request may be a request to read from a data set, as indicated in block 326, or to write to a data set, as indicated in block 328; paragraph [0032]: As indicated in block 342, redirector device may identify resilvering write requests (e.g., requests to write data to a replica that in the process of being created). In doing so, and as indicated in block 344, redirector device discards any redundant resilvering write requests (e.g., requests to write to the same logical block address)). It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to modify the teaching of Mazumdar by incorporating Zou’s identifying resilvering write requests and discarding any redundant resilvering write requests. The motivation would have been to enable requests to be sent more directly to the precise locations (e.g., the storage server 130, 132, 134 that actually stores a particular data set) (Zou paragraph [0016]).
Conclusion
Any inquiry concerning this communication or earlier communications from the examiner should be directed to SISLEY N. KIM whose telephone number is (571)270-7832. The examiner can normally be reached M-F 11:30AM -7:30PM.
Examiner interviews are available via telephone, in-person, and video conferencing using a USPTO supplied web-based collaboration tool. To schedule an interview, applicant is encouraged to use the USPTO Automated Interview Request (AIR) at http://www.uspto.gov/interviewpractice.
If attempts to reach the examiner by telephone are unsuccessful, the examiner’s supervisor, April Y. Blair can be reached on (571)270-1014. The fax phone number for the organization where this application or proceeding is assigned is 571-273-8300.
Information regarding the status of published or unpublished applications may be obtained from Patent Center. Unpublished application information in Patent Center is available to registered users. To file and manage patent submissions in Patent Center, visit: https://patentcenter.uspto.gov. Visit https://www.uspto.gov/patents/apply/patent-center for more information about Patent Center and https://www.uspto.gov/patents/docx for information about filing in DOCX format. For additional questions, contact the Electronic Business Center (EBC) at 866-217-9197 (toll-free). If you would like assistance from a USPTO Customer Service Representative, call 800-786-9199 (IN USA OR CANADA) or 571-272-1000.
/SISLEY N KIM/Primary Examiner, Art Unit 2196 01/04/2026