Claims
- 1. A RAM device comprising:
a memory; and a memory controller, wherein the memory controller is configured to:
buffer a plurality of incoming requests; prioritize the incoming requests into a final order, as needed, to maximize overlap of incoming requests' timing cycles; and submit the incoming requests to the memory in the final order.
- 2. A network of computing devices, wherein at least one of the computing devices includes the device of claim 1.
- 3. A networking system comprising:
a first computing device; a second computing device; a first network processing engine (NPE), configured to communicate with the first computing device, and configured to read from and write to a first RAM device of claim 1;a second NPE, configured to communicate with the second computing device, and configured to read from and write to a second RAM device of claim 1;a third NPE, configured to communicate with the first NPE, configured to communicate with the second NPE, and configured to read from and write to a third RAM device of claim 1; and at least one processor client, configured to support NPE network services.
- 4. The system of claim 3,
wherein the first computing device comprises a first network interface device, configured to communicate with a first networking connection; and wherein the second computing device comprises a second network interface device, configured to communicate with a second networking connection.
- 5. The system of claim 4, wherein the networking system is configured to encrypt and decrypt information passing from one networking connection to the other networking connection.
- 6. The system of claim 5,
wherein the first networking connection is a client connection; wherein the second networking connection is a server connection; wherein at least one processor client handles SSL handshake; wherein the first RAM device contains TCP connection information of the client connection; wherein the second RAM device contains TCP connection information of the server connection; and wherein the third RAM device contains the application data state and the data to be processed.
- 7. The system of claim 5,
wherein the first networking connection is a client connection; wherein the second networking connection is a server connection; wherein at least one processor client handles cryptography processing; wherein the first RAM device contains TCP connection information of the client connection; wherein the second RAM device contains TCP connection information of the server connection; and wherein the third RAM device contains the application data state and the data to be processed.
- 8. The system of claim 5,
wherein the first networking connection is a client connection; wherein the second networking connection is a server connection; wherein the first RAM device contains IPSec security association information of the client connection; wherein the second RAM device contains IPSec security association information of the server connection; and wherein the third RAM device contains the application data state and the data to be processed.
- 9. The system of claim 5,
wherein the first networking connection is a client connection; wherein the second networking connection is a server connection; wherein at least one processor client reorders incoming packets, whereby outgoing packets may be sent using a protocol that does not ensure packet ordering; wherein the first RAM device contains connection information of the client connection; wherein the second RAM device contains connection information of the server connection; and wherein the third RAM device contains the application data state and the data to be processed.
- 10. The device of claim 1,
wherein the memory includes a first bank and a second bank; wherein the memory controller is configured to fulfill a first request, directed to the first bank, by accessing the first bank via a first memory cycle; wherein the memory controller is configured to fulfill a second request, directed to the first bank, by accessing the firs bank via a second memory cycle; wherein the memory controller is configured to fulfill a third request, directed to the second bank, by accessing the second bank via a third memory cycle; wherein submitting the first request, the second request, and the third request in that first order results in a first delay; and wherein submitting the first request, the third request, and the second request in that second order results in a second delay totaling less than the first delay.
- 11. The device of claim 10,
wherein the memory controller received the first, second, and third requests in that order; and wherein the memory controller is configured to submit the requests in the second order.
- 12. The device of claim 10,
wherein the memory controller is configured to buffer the first request, the second request, and the third request; wherein the memory controller is configured to prioritize request submission so that adjacently submitted requests are directed to different banks as possible.
- 13. The device of claim 12, wherein the memory controller comprises:
a first buffer; a second buffer; a third buffer; wherein the contents of only one buffer at a time may be communicated to the memory.
- 14. A network of computing devices, wherein at least one of the computing devices includes the device of claim 13.
- 15. The device of claim 1,
wherein if the memory controller submits a first request before a second request, both requests will be fulfilled before the end of a first delay; wherein if the memory controller submits the second request before the first request, both requests will be fulfilled before the end of a second delay; wherein the second delay is shorter than the first delay; wherein the memory controller is configured to prioritize the second request before the first request responsively to ascertaining that the second request should be submitted before the first request; and wherein the memory controller submits the second request before the first request.
- 16. The device of claim 15, wherein the memory controller is configured to buffer the first request and the second request and only one of the two requests can be submitted to the memory at a time.
- 17. A network of computing devices, wherein at least one of the computing devices includes the device of claim 15.
- 18. The device of claim 1,
wherein the memory controller is configured to fulfill a first request via a first memory cycle; wherein the memory controller is configured to fulfill a second request via a second memory cycle; wherein the memory controller is configured to fulfill a third request via a third memory cycle; wherein if the first request is a read and if the second request is a write and if the third request is a read, then
submitting the first request, the second request, and the third request in that first order results in a first delay; and submitting the first request, the third request, and the second request in that second order results in a second delay totaling less than the first delay; and wherein if the first request is a write and if the second request is a read and if the third request is a write, then
submitting the first request, the second request, and the third request in that third order results in a third delay; and submitting the first request, the third request, and the second request in that fourth order results in a fourth delay totaling less than the third delay.
- 19. The device of claim 18,
wherein the memory controller received the first, second, and third requests in the first order; and wherein the memory controller is configured to submit the requests in the second order.
- 20. The device of claim 18,
wherein the memory controller received the first, second, and third requests in the third order; and wherein the memory controller is configured to submit the requests in the fourth order.
- 21. The device of claim 18,
wherein the memory controller is configured to buffer the first request, the second request, and the third request; wherein the memory controller is configured to prioritize request submission so that read requests are adjacent to read requests and so that write requests are adjacent to write requests as possible.
- 22. A network of computing devices, wherein at least one of the computing devices includes the device of claim 21.
- 23. A memory request handling method of:
receiving by a memory controller of a first memory request directed to a first bank; buffering the first memory request by the memory controller; receiving by the memory controller of a second memory request directed to the first bank; buffering the second memory request by the memory controller; receiving by the memory controller of a third memory request to a second bank; buffering the third memory request by the memory controller; and handling the requests in such an order that the total time for handling the first, second, and third requests is minimized.
- 24. The method of claim 23, wherein handling the requests comprises:
handling the first memory request; after handling the first memory request, handling the third memory request; after handling the third memory request, handling the second memory request; and whereby the total time for handling the first, second, and third requests is minimized.
- 25. The method of claim 23, wherein handling the requests comprises:
handling the second memory request; after handling the second memory request, handling the third memory request; after handling the third memory request, handling the first memory request; and whereby the total time for handling the first, second, and third requests is minimized.
- 26. A memory request handling method comprising:
buffering a plurality of requests; prioritizing the requests into a final order, as needed, to maximize overlap of the requests' timing cycles; and handling the requests in the final order.
- 27. The method of claim 26,
wherein each of the plurality of requests is directed to a memory device; and wherein the prioritizing comprises maximizing bank switching in the memory device during the handling.
- 28. A networking system comprising:
a first network interface device, configured to communicate with a first networking connection; a second network interface device, configured to communicate with a second networking connection; a first network processing engine (NPE), configured to communicate with the first network interface device, and configured to read from and write to a first RAM device; a second NPE, configured to communicate with the second network interface device, and configured to read from and write to a second RAM device; a third NPE, configured to communicate with the first NPE, configured to communicate with the second NPE, and configured to read from and write to a third RAM device; at least one processor client, configured to support NPE network services; wherein the networking system is configured to encrypt and decrypt information passing from one networking connection to the other networking connection. wherein at least one processor client handles SSL handshake; wherein the first RAM device contains TCP connection information of the first networking connection; wherein the second RAM device contains TCP connection information of the second networking connection; and wherein the third RAM device contains the application data state and the data to be processed.
- 29. A networking system comprising:
a first network interface device, configured to communicate with a first networking connection; a second network interface device, configured to communicate with a second networking connection; a first network processing engine (NPE), configured to communicate with the first network interface device, and configured to read from and write to a first RAM device; a second NPE, configured to communicate with the second network interface device, and configured to read from and write to a second RAM device; a third NPE, configured to communicate with the first NPE, configured to communicate with the second NPE, and configured to read from and write to a third RAM device; at least one processor client, configured to support NPE network services; wherein the networking system is configured to encrypt and decrypt information passing from one networking connection to the other networking connection. wherein the first RAM device contains IPSec security association information of the first networking connection; wherein the second RAM device contains IPSec security association information of the second networking connection; and wherein the third RAM device contains the application data state and the data to be processed.
- 30. A networking system comprising:
a first network interface device, configured to communicate with a first networking connection; a second network interface device, configured to communicate with a second networking connection; a first network processing engine (NPE), configured to communicate with the first network interface device, and configured to read from and write to a first RAM device; a second NPE, configured to communicate with the second network interface device, and configured to read from and write to a second RAM device; a third NPE, configured to communicate with the first NPE, configured to communicate with the second NPE, and configured to read from and write to a third RAM device; at least one processor client, configured to support NPE network services; wherein at least one processor client reorders incoming packets, whereby outgoing packets may be sent using a protocol that does not ensure packet ordering; wherein the first RAM device contains connection information of the first networking connection; wherein the second RAM device contains connection information of the second networking connection; and wherein the third RAM device contains the application data state and the data to be processed.
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] This application claims the benefit of the following U.S. Provisional Applications, all of which are hereby incorporated by reference, and the content of which are not necessarily identical to the content of this application:
1COMMONLY OWNED AND PREVIOUSLY FILEDU.S. PROVISIONAL PATENT APPLICATIONSAtty. Dkt. #Ser. No.TitleFiling Date501143.00000560/288,015Method and Apparatus for ShotgunMay 2, 2001Multiplication and Exponentiation501143.00001060/300,957Method and Residue Calculation UsingJune 26, 2001Casting Out501143.00001160/300,955Add-Drop Layer 3 Ethernet Ring SwitchJune 26, 2001501431.00001460/326,266Application Specific Information ProcessingOct. 1, 2001System501143.00001560/326,252Efficient Use of DRAM-Based Devices ForOct. 1, 2001Small Discontiguous Memory Accesses501143.00001660/326,251Exponentiation EngineOct. 1, 2001501143.00001760/326,250Method for SquaringOct. 1, 2001
Provisional Applications (7)
|
Number |
Date |
Country |
|
60288015 |
May 2001 |
US |
|
60300957 |
Jun 2001 |
US |
|
60300955 |
Jun 2001 |
US |
|
60326266 |
Oct 2001 |
US |
|
60326252 |
Oct 2001 |
US |
|
60326251 |
Oct 2001 |
US |
|
60326250 |
Oct 2001 |
US |