1. Field of the Invention
The present invention relates to the use of a hashed content addressable memory (CAM) array to accelerate content-aware searches. More specifically, the present invention relates to the use of a hashed CAM array to retrieve data from a cache memory in a web server by quickly recognizing a request.
2. Related Art
FIG. 1 is a block diagram of a conventional web server 100, which includes network interface card (NIC) 110, central processing unit (CPU) 101, web page storage disk 102 and cache memory 103. Web server 100 accepts HTTP requests on TCP port 80. Each of these HTTP requests contain the delimiter “GET”, which is followed by a space, which is followed by a Universal Resource Locator (URL), which is followed by another space. One example of an HTTP request might therefore be:
“GET_http://www.IDT.com/products/abc/bar/index/html_”
where “_” represents a space. This format is specified by the HTTP protocol documents. Upon receiving the HTTP request, from NIC 110, CPU 101 must parse the URL string in order to traverse the file system of web page storage disk 102. Using the parsed URL string, CPU 101 retrieves the web page data identified by the URL from web page storage disk 102. This retrieved web page data is then transmitted from CPU 101 to the requesting party, via NIC 110.
Web server 100 can also cache popular pages in cache random access memory (RAM) 103 in order to avoid access to web page storage disk 102. Web server 100 might also cache parts of the file system structure to speed traversal. Cache RAM 103 is accessed in a manner similar to web page storage disk 102. Thus, upon receiving an HTTP request, CPU 101 must parse the URL string. Using the parsed URL string, CPU 101 retrieves the web page data identified by the URL from cache RAM 103. This retrieved web page data is then transmitted from CPU 101 to the requesting party, via NIC 110. However, the resulting acceleration is limited by the speed of the searches. If a million pages are cached in cache RAM 103 and organized in a binary tree, recognizing a URL would take at least log2(106) steps (i.e., 20 steps).
It would therefore be desirable to have a more efficient way of retrieving web page data stored in a web server in response to a URL (e.g., without requiring parsing of the URL). More generally, it would be desirable to have a more efficient way of retrieving “information” or “content” from a web server in response to an “identifier” or a “name”.