Functional-level instruction-set computer architecture for processing application-layer content-service requests such as file-access requests
First Claim
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; and
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.
8 Assignments
0 Petitions
Accused Products
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.
-
Citations
23 Claims
-
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; and
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. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
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; and
one or more 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. - View Dependent Claims (11, 12, 13, 14, 15)
-
-
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; and
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. - View Dependent Claims (17, 18, 19, 20, 21, 22, 23)
-
Specification