IP Library Granted Patent US 7,908,464
Granted Patent B2
US 7,908,464 · App. 11/888,411 · Granted Mar 15, 2011

Functional-level instruction-set computer architecture for processing application-layer content-service requests such as file-access requests

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 7,908,464
App. No.
11/888,411
Granted
Mar 15, 2011
Kind
B2
Abstract

A functional-level instruction-set computing (FLIC) architecture executes higher-level functional instructions such as lookups and bit-compares of variable-length operands. Each FLIC processing-engine slice has specialized processing units including a lookup unit that searches for a matching entry in a lookup cache. Variable-length operands are stored in execution buffers. The operand length and location in the execution buffer are stored in fixed-length general-purpose registers (GPRs) that also store fixed-length operands. A copy/move unit moves data between input and output buffers and one or more FLIC processing-engine slices. Multiple contexts can each have a set of GPRs and execution buffers. An expansion buffer in a FLIC slice can be allocated to a context to expand that context's execution buffer for storing longer operands. The FLIC engine is optimized to parse, lookup, and process long strings common in content-service requests and can offload file-server requests by looking up meta-data and pointers.

Claims (62)

1. A file server comprising:

an offload device coupled to receive file-access requests from a network, the offload device including:

a memory, the memory allocated by the offload device, the memory storing lookup tables having entries, one or more of the entries comprising a tag storing a first variable-length string;

a plurality of processing units for executing functional-level instructions, the functional-level instructions including instructions operating on operands of variable-length, the processing units including a lookup unit;

wherein one of the processing units includes a plurality of processing slices operating in parallel, each processing slice processing a request, the request seeking to access a file, the request including a second variable-length string, the request having a context allocated by the offload device, the context comprising:

an execution buffer that stores a variable-length operand, the variable-length operand representing the second variable-length string;

a first fixed-length register storing a pointer that indicates a location for the variable-length operand;

a second fixed-length register storing an operand-length that indicates a length for the variable-length operand or storing a pointer that indicates the end of the variable-length operand;

wherein a functional-level instruction identifies the variable-length operand stored in the execution buffer by specifying a first register number for the first fixed-length register and a second register number for the second fixed-length register, the lookup unit searches the lookup tables for an entry, and the first variable-length string stored in the tag for the entry matches the variable-length operand.

2. The file server of claim 1 , further comprising:

an output buffer that stores a response to the request, the response including one or more attributes for the file, the processing units generating the response by executing a routine of functional-level instructions;

wherein the response is output to the network and the offload device completes the processing of the request and outputting of the response without accessing a processor that runs a general purpose instruction set.

3. The file server of claim 1 , wherein the second variable-length string includes a file handle or a file name.

4. The file server of claim 1 , wherein the lookup tables further store pointers to meta-data, the lookup unit obtaining from the lookup tables a pointer to meta-data pertaining to the file.

5. The file server of claim 4 , further comprising;

an output buffer storing a response to the request, the response including the pointer to meta-data.

6. The file server of claim 1 , wherein the lookup tables further store meta-data, the lookup unit obtaining from the lookup tables meta-data pertaining to the file.

7. The file server of claim 6 , further comprising;

an output buffer storing a response to the request, the response including the meta-data.

8. The file server of claim 1 , further comprising:

an input buffer that stores the request; and

an output buffer that stores a response to the request, the response including a third variable-length string, the processing units generating the response by executing a routine of functional-level instructions.

9. The file server of claim 8 , wherein the input buffer includes plural storage areas, and a storage area is assigned to the context.

10. A file server comprising:

a central processing unit (CPU) running an instruction set including a plurality of instructions to operate a file system that organizes a plurality of files and meta-data pertaining to the files; and

an offload device coupled to receive file-access requests from a network, the offload device comprising an output buffer coupled to the CPU; a memory, the memory allocated by the offload device, the memory storing lookup tables having entries, one or more of the entries comprising a tag storing a first variable-length string; processing units for executing functional-level instructions belonging to a functional-level instruction set, the functional-level instructions including instructions operating on operands of variable-length, the processing units comprising a lookup unit; wherein each of the processing units includes a plurality of processing slices operating in parallel, each processing slice processing a request, the request seeking to access a file, the file being one of the plurality of files, the request including a second variable-length string, the request having a context allocated by the offload device, the context including:

an execution buffer that stores a variable-length operand, the variable-length operand representing the second variable-length string;

a first fixed-length register storing a pointer that indicates a location for the variable-length operand;

a second fixed-length register storing an operand-length that indicates a length for the variable-length operand or storing a pointer that indicates the end of the variable-length operand;

wherein a functional-level instruction identifies the variable-length operand stored in the execution buffer by specifying a first register number for the first fixed-length register and a second register number for the second fixed-length register, the lookup unit searches the lookup tables for an entry, and the first variable-length string stored in the tag for the entry matches the variable-length operand.

11. The file server of claim 10 , wherein the lookup tables further store pointers to meta-data, the lookup unit obtaining from the lookup tables a pointer to meta-data pertaining to the file;

wherein the output buffer stores a partial response to the request, the partial response including the pointer to meta-data pertaining to the file;

wherein the CPU receives the partial response from the output buffer and executes routines of instructions for further processing of the partial response.

12. The file server of claim 11 , further comprising:

non-volatile file storage means for storing the plurality of files, the non-volatile file storage means coupled to the CPU;

wherein the further processing of the partial response includes accessing meta-data pertaining to the file at a location in the non-volatile file storage means, the location indicated by the pointer to meta-data pertaining to the file.

13. The file server of claim 10 , wherein the lookup tables further store pointers to data, the lookup unit obtaining from the lookup tables a pointer to data for the file;

wherein the output buffer stores a partial response to the request, the partial response including the pointer to data for the file;

wherein the CPU receives the partial response from the output buffer and executes routines of instructions for further processing of the partial response.

14. The file server of claim 13 , further comprising:

non-volatile file storage means for storing the plurality of files, the non-volatile file storage means coupled to the CPU;

wherein the further processing of the partial response includes accessing data for the file at a location in the non-volatile file storage means, the location indicated by the pointer to data for the file.

15. The file server of claim 10 , wherein the second variable-length string includes a file handle or a file name.

16. A file server comprising:

an offload device processing a request received from a network, the request seeking to access a file, the offload device including:

a memory, the memory allocated by the offload device, the memory storing lookup tables having entries, one or more of the entries comprising a tag storing a first variable-length string;

a plurality of processing units for executing functional-level instructions, the functional-level instructions including instructions operating on operands of variable-length, the processing units including a lookup unit;

an execution buffer allocated by the offload device, the execution buffer storing a variable-length operand, the variable-length operand representing a second variable-length string, the second variable-length string extracted from the request;

a first fixed-length register storing a pointer that indicates a location for the variable-length operand;

a second fixed-length register storing an operand-length that indicates a length for the variable-length operand or storing a pointer that indicates the end of the variable-length operand; and

an output buffer that stores a response to the request, the response including one or more attributes for the file, the processing units generating the response by executing a routine of functional-level instructions;

wherein a functional-level instruction identifies the variable-length operand stored in the execution buffer by specifying a first register number for the first fixed-length register and a second register number for the second fixed-length register, the lookup unit searches the lookup tables for an entry, the first variable-length string stored in the tag for the entry matches the variable-length operand, and the response is output to the network and the offload device completes the processing of the request and outputting of the response without accessing a processor that runs a general purpose instruction set.

17. The file server of claim 16 , wherein the second variable-length string includes a file handle or a file name.

18. The file server of claim 16 , wherein the lookup tables further store pointers to meta-data, the lookup unit obtaining from the lookup tables a pointer to meta-data pertaining to the file.

19. The file server of claim 18 , further comprising;

an output buffer storing a response to the request, the response including the pointer to meta-data.

20. The file server of claim 16 , wherein the lookup tables further store meta-data, the lookup unit obtaining from the lookup tables meta-data pertaining to the file.

21. The file server of claim 20 , further comprising;

an output buffer storing a response to the request, the response including the meta-data.

22. The file server of claim 16 , further comprising:

an input buffer that stores the request; and

an output buffer that stores a response to the request, the response including a third variable-length string, the processing units generating the response by executing a routine of functional-level instructions.

Assignments (8)
RELEASE OF SECURITY INTEREST Recorded Oct 26, 2020
From: JEFFERIES FINANCE LLC
To: RPX CORPORATION
Reel/Frame 054486/0422 →
SECURITY INTEREST Recorded Jun 29, 2018
From: RPX CORPORATION
To: JEFFERIES FINANCE LLC
Reel/Frame 046486/0433 →
RELEASE (REEL 038041 / FRAME 0001) Recorded Jan 2, 2018
From: JPMORGAN CHASE BANK, N.A.
To: RPX CORPORATION; RPX CLEARINGHOUSE LLC
Reel/Frame 044970/0030 →
SECURITY AGREEMENT Recorded Mar 9, 2016
From: RPX CORPORATION; RPX CLEARINGHOUSE LLC
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 038041/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 10, 2014
From: MITTAL, MILLIND; KHARIDIA, MEHUL; TRIPATHY, TARUN KUMAR; MERTOGUNO, SUKARNO J.
To: NEXSIL COMMUNICATIONS, INC.
Reel/Frame 033928/0629 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 16, 2014
From: NEXSIL COMMUNICATIONS, INC.
To: RPX CORPORATION
Reel/Frame 033752/0180 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 10, 2014
From: ALACRITECH, INC.
To: NEXSIL COMMUNICATIONS, INC.
Reel/Frame 033708/0191 →
PARTIAL TERMINATION AND RELEASE Recorded Sep 3, 2014
From: LO, AS COLLATERAL AGENT, FENG CHIAO K
To: ALACRITECH, INC.
Reel/Frame 033684/0577 →