IP Library Granted Patent US 9,773,113
Granted Patent B2
US 9,773,113 · App. 14/810,870 · Granted Sep 26, 2017

Operation of a dual instruction pipe virus co-processor

Inventors: Xu Zhou (San Jose, CA); Lin Huang (Fremont, CA); Michael Xie (Palo Alto, CA)
Assignee: Fortinet, Inc.
G06F21/561G06F9/3867G06F9/3885G06F21/55G06F21/558G06F21/56G06F21/564G06F21/568H04L63/1408H04L63/1416H04L63/1425H04L63/1433G06F2221/031
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 9,773,113
App. No.
14/810,870
Granted
Sep 26, 2017
Kind
B2
Abstract

Circuits and methods are provided for detecting, identifying and/or removing undesired content. According to one embodiment, a content object that is to be virus processed is stored by a general purpose processor to a system memory. Virus scan parameters for the content object are set up by the general purpose processor. Instructions from a virus signature memory of a virus co-processor are read by the virus co-processor based on the virus scan parameters. The instructions contain op-codes of a first instruction type and op-codes of a second instruction type. Those of the instructions containing op-codes of the first instruction type are assigned to a first instruction pipe of multiple instruction pipes of the virus co-processor for execution. An instruction of the assigned instructions containing op-codes of the first instruction type is executed by the first instruction pipe including accessing a portion of the content object from the system memory.

Claims (34)

1. A method comprising:

storing, by a general purpose processor, a content object that is to be virus processed to a system memory of the general purpose processor;

setting up, by the general purpose processor, virus scan parameters associated with the content object;

reading, by a virus co-processor that is coupled to the general purpose processor via an interconnect bus, instructions from a virus signature memory of the virus co-processor based on the virus scan parameters, wherein the instructions contain op-codes of a first instruction type and op-codes of a second instruction type, wherein the op-codes of the first instruction type are associated with primitive instructions and wherein the op-codes of the second instruction type are associated with Content Pattern Recognition (CPR) instructions and wherein said reading comprises:

fetching, by a unified fetch and parse module of the virus co-processor, an instruction from an instruction cache when the instruction is available in the instruction cache; and

otherwise, when the instruction is not available in the instruction cache, then fetching by the unified fetch and parse module, the instruction from the virus signature memory;

assigning, by the virus co-processor, those of the instructions containing op-codes of the first instruction type to a first instruction pipe of a plurality of instruction pipes of the virus co-processor for execution;

assigning, by the virus co-processor, those of the instructions containing op-codes of the second instruction type to a second instruction pipe of the plurality of instruction pipes for execution; and

executing, by the first instruction pipe, an instruction of the assigned instructions containing op-codes of the first instruction type including accessing a portion of the content object from the system memory.

2. The method of claim 1 , further comprising:

determining, by the virus co-processor, a type of the content object; and

wherein said virus scan parameters include information regarding the type of the content object.

3. The method of claim 1 , wherein the instructions contain intermixed op-codes of the first instruction type and the second instruction type and wherein the method further comprises determining if execution, by the second instruction pipe, of a particular instruction of the assigned instructions containing op-codes of the second instruction type is to be delayed to assure ordered execution of the intermixed op-codes.

4. The method of claim 3 , further comprising writing, by the first instruction pipe, a result of said executing to the system memory.

5. The method of claim 4 , further comprising performing a first write back to the system memory associated with a preceding instruction before performing a second write back to the system memory associated with a succeeding instruction.

6. The method of claim 5 , wherein the preceding instruction comprises one of the assigned instructions containing op-codes of the first instruction type and wherein the succeeding instruction comprises one of the assigned instructions containing op-codes of the second instruction type.

7. The method of claim 1 , wherein the content object is stored using a virtual address, wherein the system memory has stored therein paging data structures containing information for translating virtual addresses to physical addresses within a physical address space of the system memory and wherein the virus co-processor further caches a plurality of most recently used entries of the paging data structures within one or more translation lookaside buffers.

8. A virus processing system comprising:

a general purpose processor configured to:

store a content object that is to be virus processed to a system memory of the general purpose processor; and

set up virus scan parameters associated with the content object; and

a virus co-processor, coupled to the general purpose processor via an interconnect bus, wherein the virus co-processor is configured to:

read instructions from a virus signature memory of the virus co-processor based on the virus scan parameters, the instructions containing op-codes of a first instruction type and op-codes of a second instruction type, wherein the op-codes of the first instruction type are associated with primitive instructions and wherein the op-codes of the second instruction type are associated with Content Pattern Recognition (CPR) instructions by:

fetching, by a unified fetch and parse module of the virus co-processor, an instruction from an instruction cache when the instruction is available in the instruction cache; and

otherwise, when the instruction is not available in the instruction cache, then fetching by the unified fetch and parse module, the instruction from the virus signature memory;

assign those of the instructions containing op-codes of the first instruction type to a first instruction pipe of a plurality of instruction pipes of the virus co-processor for execution;

assign those of the instructions containing op-codes of the second instruction type to a second instruction pipe of the plurality of instruction pipes for execution; and

execute an instruction of the assigned instructions containing op-codes of the first instruction type including accessing a portion of the content object from the system memory.

9. The virus processing system of claim 8 , wherein the virus co-processor is further configured to determine a type of the content object and wherein said virus scan parameters include information regarding the type of the content object.

10. The virus processing system of claim 8 , wherein the instructions contain intermixed op-codes of the first instruction type and the second instruction type and wherein the virus co-processor is further configured to determine if execution, by the second instruction pipe, of a particular instruction of the assigned instructions containing op-codes of the second instruction type is to be delayed to assure ordered execution of the intermixed op-codes.

11. The virus processing system of claim 10 , wherein the virus co-processor is further configured to write, by the first instruction pipe, a result of executing the instruction of the assigned instructions containing op-codes of the first instruction type to the system memory.

12. The virus processing system of claim 11 , wherein the virus co-processor is further configured to perform a first write back to the system memory associated with a preceding instruction before performing a second write back to the system memory associated with a succeeding instruction.

13. The virus processing system of claim 12 , wherein the preceding instruction comprises one of the assigned instructions containing op-codes of the first instruction type and wherein the succeeding instruction comprises one of the assigned instructions containing op-codes of the second instruction type.

14. The virus processing system of claim 8 , wherein the content object is stored using a virtual address, wherein the system memory has stored therein paging data structures containing information for translating virtual addresses to physical addresses within a physical address space of the system memory and wherein the virus co-processor is further configured to cache a plurality of most recently used entries of the paging data structures within one or more translation lookaside buffers.

Continuity (5)
Continuation 14484398 · Sep 12, 2014
Continuation 14266672 · Apr 30, 2014
Continuation 13761723 · Feb 7, 2013
Continuation 11836779 · Aug 10, 2007
Related Publication 20150332046A1 · Nov 19, 2015