Bedrock Computer Technologies, LLC v. Softlayer Technologies, Inc. et al
Filing
846
Additional Attachments to Main Document: #845 MOTION for Judgment as a Matter of Law Regarding Invalidity (Renewed) MOTION for Judgment as a Matter of Law Regarding Invalidity (Renewed) MOTION for Judgment as a Matter of Law Regarding Invalidity (Renewed) MOTION for Judgment as a Matter of Law Regarding Invalidity (Renewed) MOTION for Judgment as a Matter of Law Regarding Invalidity (Renewed).. (Attachments: #1 Exhibit 13 - U.S. Patent 5,893,120 - PX-1, #2 Exhibit 14 - 1996 NRL IPv6 code key.c - DX-36, #3 Exhibit 15 - NRL Source Code - key.h - DX-35, #4 Exhibit 16 - Information Disclosure Statement - 6/2010 - DX-147C, #5 Exhibit 17 - Information Disclosure Statement -12-2010 - DX-147E, #6 Exhibit 18 - Transaction History for Patent Application - DX-147G, #7 Exhibit 19 - USPTO Notice of Intent to Issue - DX-147F, #8 Exhibit 20 - Ex Parte Reexamination Certificate for the '120 Patent - DX-147H, #9 Exhibit 21 - US. Patent 5,287,499 - DX-66, #10 Exhibit 22 - Telcordia documents re: patent application - DX-56, #11 Exhibit 23 - Yahoo!'s 2004 10K Annual Statement - PX-248)(Doan, Jennifer)
Exhibit 13
PX-1
6 :09-cv-269-LE D
BTEX0000159
II11I1
United States Patent
fI9J
Nemes
MKfHODS AN)) APPARATUS FOR
INFORMATION STORAGE AND RETRIEVAl.
USING A HASHING TECHNIQUE WITH
EXTERNAL CHAINING AN)) ON-THE-FLY
REMOVAL OF EXPIRED DATA
f76]
Inventor:
[21]
App!. No.: 775;864
[22]
Filed:
RJchard Michael Nemes, 1432 E. 35th
S1., Brooklyn, N.Y. 11234-2604
Jan. 2, 1997
6
Int. CI. ...................................................... G06F 17/30
U.S. CI. .............................. 707/206; 7(J7/1; 707/100;
707/10l; 707/202
Field of Search ................................ 70711,200--206,
707/2, 100--103
f58]
[56J
Referencl."S Cited
U.S. PATENT DOCUMENTS
5,121,495
5,202,981
5,287,499
USOO5893120A
[11)
[45]
[54]
[51]
[52J
1111111111111111111111111111111111111111111111111111111111111
6/1992 Nemes ........................................ 707/3
4/1993 Shackelford ................................ 707/1
2/1994 Nemes .................................... 7071206
OUIER PUBLICATIONS
DE Knuth, The Art of Computer Programmin& vol. 3,
Sorting and Searching, Addison-Wesley, Reading, MassachusetL.. , 1973, pp. 506--549.
Patent Number:
Date of Patent:
5,893,120
Apr. 6, 1999
R.L. Kruse, Data Structures and Program Design, Second
Edition, Prentice-llall, Englewood Cliffs, New Jersey, 1987,
Section 6.5, "Hashing," and Section 6.6, Analysis of Hashing, pp. 198-215.
D. F. Stubbs and N.W. Webre, Data Structure with Abstract
Data Types and Pascal, Brooks/Cole Publishing Company,
Monterey, California, 1985, Section 7.4, "Hased Implementations," pp. 310--336.
Primary Examiner-:lllOmas G. Black
Assi'i[ant Examiner-Hosain T. Alam
[57)
ABSTRACT
A method and apparatus for performing storage and retrieval
in an information storage system is discloscd that uses the
hashing technique with the external chaining method for
collision resolution. In order to prevent performance deterioration due to the presence of automatically expiring data
items, a garbage collection technique is used that removes
all expired records stored in the system in the external chain
targeted by a probe into the data storage system. More
particularly, each in-.ertion, retrieval, or deletion of a record
is an occasion to search an entire linked-list chain of records
for expired items and then remove them. Because an expired
data item will not remain in the system long term if the
system is frequently probed, it is u.-.eful for large information
storage systems that arc heavily used, require the fast access
provided by ha.·.,hing, and cannot be taken off-line for
removal of expired data.
8 Claims, 6 Dr.twing Shccts
BTEX0000160
u.s. Patent
Apr. 6, 1999
5,893,120
Sheet 1 of 6
15
RANDOM
ACCESS
MEMORY
1
INPUTCENTRAL
DISK
OUTPUT t+-+-Jl-'t1ul.Il:::;SINGI-+--+-I CONTROL ........+-1
UNIT
UNIT
14
10
PRINTER
FIG. 1
6
USER
ACCESS
SOFTWARE
20
OPERATING
SYSTEM
SOFTWARE
GENERAL
UTILITY
SOFTWARE
22
21
APPLICATION
SOFTWARE
1
APPLICATION
SOFTWARE
...... ... __ .
...... -
2
"'
25
APPLICATION
SOFTWARE
N
24
23
FIG. 2
BTEX0000161
u.s. Patent
Apr. 6, 1999
5,893,120
Sheet 2 of 6
J---30
HASH
SEARCH
31
GET HEAD
OF TARGET
32
KEY
LIST
YES
34
NO
36
RETURN "---35
SUCCESS
SAVE
POINTER TO
LIST ELEMENT
NO
REMOVE
REMOVE
RECORD
RETURN
FAILURE
---37
(FIG. 4)
ADVANCE TO
NEXT
ELEMENT
41
FIG.3
BTEX0000162
u.s. Patent
Apr. 6, 1999
START
Sheet 3 of 6
5,893,120
~50
51
ADVANCE PTR
TO ELEMENT
FOLLOWING
ONE TO REMOVE
NO
YES
53
ADJUST
PREDECESSOR'S
PTRTO
BYPASS ELEMENT
ADJUST
HEAD PTRTO
BYPASS
ELEMENT
DE-ALLOCATE
LIST ELEMENT
TO BE REMOVED
STOP
56
FIG. 4
BTEX0000163
u.s. Patent
Apr. 6, 1999
5,893,120
Sheet 4 of 6
YES
PUT RECORD
IN LIST ELEMENT
RETURNED BY
SEARCH·TABLE
YES
73
78
RETURN
FULL
RETURN
REPLACED
ALLOCATE
NEW LIST
ELEMENT
79
COpy RECORD
INTO NEW
LIST ELEMENT
o
INSERT NEW
LIST ELEMENT
INTO TARGET
LIST
1
RETURN
INSERTED
STOP
-75
FIG. 5
BTEX0000164
u.s. Patent
Apr. 6, 1999
5,893,120
Sheet 5 of 6
START ~90
SEARCH-TABLE
SEARCH FOR
RECORD AND
CLEAN TARGET
LIST
YES
COpy
RECORD
RETURN
SUCCESS
RETURN
FAILURE
STOP
FIG. 6
BTEX0000165
u.s. Patent
Apr. 6, 1999
5,893,120
Sheet 6 of 6
~100
SEARCH-TABLE
SEARCH FOR
RECORD AND
CLEAN TARGET
LIST
102
YES
NO
103
REMOVE
DELETE
ELEMENT
(FIG. 4)
RETURN
FAILURE
RETURN
SUCCESS
STOP
106
FIG. 7
BTEX0000166
5,893,120
1
2
METHODS AND APPARATUS FOR
INFORMATION STORAGE AND RETRIEVAl.
USING A HASHING TECHNIQUE WITH
EXTERNAL CHAINING AND ON·THE-FLY
REMOVAL OF EXPIRED DATA
Hall, Incorporated, Englewood ClifTs, N.J., 1987, Section
6.5, "IIashing," and Section 6.6, "Analysis of Hashing," pp.
198~215, and in Data "·;tructures with Abstract Data Types
and Pascal, by D. F. Stubbs and N. W. Webre, Brooks/Cole
Publishing Company, Monterey, Calif., 1985, Section 7.4,
"Hashed Implementations," pp. 310-336.
Some forms of information are such that individual data
items, after a limited period of time, become obsolete, and
their presence in the storage system is no longer needed or
de.<;ired. Scheduling activities, for example, involve data that
become obsolete once the seheduled event has occurred. An
automatically-expiring data item, oncc it expires, needlessly
occupies computer memory storage that could otherwise be
put to use storing an unexpired item. Thus, expired items
must eventually be removed to reclaim the storage for
subsequent data insertions. In addition, the presence of many
expired items results in needlessly long search times since
the linked lists associated with external chaining will be
longer than they otherwise would be. 'lbe goal i<; to remove
these expired items to reclaim the storage and maintain fast
access to the data.
The problem, then, is to provide the speed of access of
hashing techniques for large, heavily used infonnation storage systems having expiring data and, at the same time,
prevent the performance degradation resulting from the
aecumulation of many expired records. Although a hashing
technique for dealing with expiring data is known and
di<;closed in U.S. Pat. No. 5,121,495, issued Jun. 9, 1992,
that technique is confined to linear probing and is entirely
inapplicable to external chaining. The procedure shown
there traverses, in reverse order, a consecutive sequence of
records residing in the hash table array, continually relocating unexpired records to fill gaps left by the removal of
expired ones.
Unlike arrays, linked lists leave no gaps when items from
it are removed, and furthennore it is not possible to efficiently traverse a singly linked list in reverse order. 'Ibere are
significant advantages to external chaining over linear probing that sometimes make it the method of choice, as discussed in considerable detail in the aforementioned texl<;,
and so hashing techniques for dealing with expiring data that
do not use external chaining prove wholly inadequate for
certain applications. For example, if the data records are
large, considerable memory can be saved using external
chaining instead of linear probing. Accordingly, there is a
need to develop hashing techniques for external chaining
with expiring data. 'lbe methods of the above-mentioned
patent are limited to arrays and cannot be used with linked
lists due to the significant difference in the organization of
the computer's memory.
5
CROSS-REFERENCE TO RELATED
APPLICATIONS
Not Applicable
10
STATEMENT REGARDING FEDERALLY
SPONSORED RESEARCH OR DEVELOPMENT
Not Applicable
REFERENCE TO A MICROFICHE APPENDIX
Not Applicable
BACKGROUND OF THE INVENTION
15
This invention relate.<; to information storage and retrieval 20
systems, and, more particularly, to the use of hashing
techniques in such systems.
Information or data stored in a computer-controlled storage mechanism can be retrieved by searching for a particular
key value in the !;tored records. The stored record with a key 25
matching the search key value is then retrieved. Such
searching techniques require repeated access to records into
the storage mechani<;m to pcrfonn key comparisons. In large
storage and retrieval systems, such searching, even if augmented by efficient search procedures such as the binary 3()
search, often requires an excessive amount of time due to the
large number of key compari<;ons required.
Another well-known and much faster way of storing and
retrieving information from computer storage, albeit at the ]5
expense of additional storage, is the so-called "hashing"
technique, also called seatter-storage or key-transfonnation
method. In such a system, the key is operated on by a
hashing function to produce a storage address in the storage
space, called the hash table, which is a large one- 40
dimensional array of record locations. 'Ibis storage address
is then acccssed directly for the desired record. Hashing
techniques are described in the classic text by D. E. Knuth
entitled The Art of Computer Programmin& Volume 3,
Sorting and Searching, Addison-Wesley, Reading, Mass., 45
1973, pp. 506-549.
Hashing functions are designed to translate the universe
of keys into addresses unifonnly distributed throughout the
hash table. 'lypical hashing functions include truncation,
folding, transposition, and modulo arithmetic. A di<;advan- 50
tage of hashing is that more than one key will inevitably
translate in the same storage address, causing "colli<;ions" in
BRIEF SUMMARY OF 111E INVEN'llON
storage. Some form of collision resolution must therefore be
provided. For example, the simple strategy called "linear
In accordance with the illustrative embodiment of the
probing," which eonsisl<; of searching forward from the 55 invention, these and other problems are overcome by using
a garbage collection procedure "on-the-lly" while other
initial storage address to the first empty storage location, is
types of access to the storage space arc taking place. In
often used.
particular, during normal data insertion or retrieval probes
Another method for resolving collisions is called "exterinto the data store, the expired, obsolete records are identinal chaining," In this technique, each hash table location is
a pointer to the head of a linked li<;t of records, all of whose 60 lied and removed from the external chain linked list.
Specifically, expired or obsolete records in the linked list
keys translate under the hashing function to that very hash
including the record to be accessed are removed as part of
table address. The linked list is itself searched sequentially
the nonnal search procedure.
when retrieving, inserting, or deleting a record. Insertion and
'Ibis incremental garbage collection technique has the
deletion are done by adjusting pointers in the linked list.
External chaining is discussed in considerable detail in tbe 65 decided advantage of automatically eliminating unneeded
records without requiring that the information storage sys-"
aforementioned text by D. E. Knuth, in Data Structures and
tem be taken off-line for such garbage collection. Tbi<; is
Program Design, Second Edition, by R. L Kruse, Prenticc-
BTEX0000167
5,893;120
3
4
particularly important for information storage systems
requiring rapid access and continuous availability to the user
population.
More specifically, a method for storing and retrieving
information reeords using a linked list to store and provide
access to the records, at lehing is often used. In classic
operated on by the program instructions accessed by CPU 10
hashing, each record in the information storage system
from RAM 11, all in accordance with well-known data 60 includes a distinguished field unique in value to each record,
processing techniques.
called the key, which is used as the basis for storing and
Central Processing Unit (CPU) 10 also controls and
retrieving the associated record. Taken as a whole, a hash
accesses a disk controller unit 12 that, in tum, accesses a
table is a large, one-dimensional array of logically
digital data stored on one or more disk storage units such as
contiguous, consecutively numbered, fixed-size storage
disk storage unit 13 until required by CPU 10. At thi<; time, 65 units. Such a table of records is typically stored in RAM 11
such programs and data are retrieved from disk storage unit
of FIG. 1, where each record is an identifiable and addres13 in block" and stored in RAM 11 for rapid access.
sable location in physical memory. A hashing function
BTEX0000168
5,893,120
5
6
translates the key into a hash table array subscript, which is
successful and returns success in box 35, followed by the
used as an index into the array where searches for the data
procedure's termination in terminal box 37. If not, box 36 is
record hegin. The ha<;hing function can be any operation on
entered where failure is returned and the procedure again
the key that rcsulL-; in subscripts mostly unifmmly distrihterminates in box 37.
uted across the table. Known hashing functions include 5
If the end of the list has not been reached as determined
truncation, folding, transposition, modulo arithmetic, and
by decision box 33, decision box 38 is entered to determine
combinations of these operations. Unfortunately, hashing
if the record pointed to has expired. Ihis i" determined by
Cunctions generally do nol produce unique locations in the
comparing some portion of the contents of the record to
hash tahle, in that many distinct keys map to the same
some external condition. A timestamp in the record, for
location, producing what are called collisions. Some form of 10
example, could be compared with the current time-of-day
collision resolution is required in all hashing systems. In
value maintained by all computers. Alternatively, the occurevery occurrence of collision, finding an alternate location
rence of an event can be compared with a field identifying
for a collided record i" necessary. Moreover, the alternate
that event in the record. In any case, if the record has not
location mllst be readily reachable during future searches for
expired, decision box 39 is entered to determine if the key
the displaced record.
15 in this record matches the scarch key. If ii docs, the address
A common collision resolution strategy, with which the
of the record is saved in box 40 and box 4l is entered. If the
present invention i" concerned, i" called external chaining.
record docs not match the search key, the procedure
Under external chaining, each hash table entry stores all of
bypasses box 40 and proceeds directly to box 41. In box 41,
the records that collided at that location by storing not the
the procedure advances forward to the next record in the
records themselves, but instead a pointer to the head of a 20 linked list and the procedure returns to box 33.
linked list of those same records. Such linked lists arc
If decision box 38 determines that the record under
formed by storing the records individually in dynamically
question has expired, box 42 is entered to perform the
allocated storage and maintaining with each record a pointer
on-the-fly removal of the expired record from the linked list
to the location of tbe next record in the chain of collided
records. When a search key is hashed to a hash table entry, 25 and the return of the storage it oC('"Ilpies to the system storage
pool, as will be described in connection with FIG. 4. In
the pointer fonnd there is used to locale the first record. If the
general, the remove procedure of box 42 (FIG. 4) operates
search key does not match the key found there, the pointer
to remove an element from the linked list by adjusting its
there is used to locate the second record. In this way, the
predecessor's pointer to bypass that clement. (However, if
"chain" of records is traversed scquentially until the desired
record is found or until the end of the chain is reached. 30 the element to be removed is the first clement of the li"t, then
there is no predecessor and the hash table array entry is
Deletion of records involves merely adjusting the pointers to
adjusted instead.) On completion of procedure remove
bypass the deleted record and returning the storage it occuinvoked from box 42, the search table procedure returns to
pied to the available storage pool maintained by the system.
box 33.
Hashing techniques have been used classically for very
Ii can be seen that the search table procedure of HG. 3
fast access to static, short term data such as a compiler 35
operates to examine the entire linked list of records of which
symhol table. Typically, in such storage systems, deletions
the searched-for record is a part, and to remove expired
are infrequent and the need for the storage system disappears
records, returning storage to the storage pool with each
quickly. In some common types of data storage systems,
removaL If the storage pool is depleted and many expired
however, the storage system is long lived and records can
become obsolete merely by the passage of time or by the 40 records remain despite such automatic garbage collection,
then the insertion of new records is inhibited (boxes 76 and
occurrence of some event. If such expired, lapsed, or obso77 of FIG. 5) until a deletion is made by the delete procedure
lete records arc not removed from the system, they will, in
(FIG. 7) or until the search table procedure has had a chance
time, seriously degrade the performance of the retrieval
to replenish the storage pool through its on-the-fiy garbage
system. Degradation shows up in two ways. First, the
presence of expired records lengthens search times since 45 collection.
Though the search table procedure as shown in FIG. 3,
they cause the external chains to be longer than they
implemented in the APPENDIX as PASCAL-like
otherwise would be. Second, expired records occupy
pseudocode, and described above appears in connection
dynamically allocated memory storage that could be
with an information storage and retrieval system using the
returned to the system memory pool for useful allocation.
Thus, when the system memory pool i., depleted, a new data 50 hashing technique with external chaining, its on-the-fly
removal technique while traversing a linked list can be used
item can be inserted into the storage system only if the
anywhere a linked list of records with expiring data appears,
memory occupied by an expired one is reclaimed.
even in contexts unrelated to hashing. A person skilled in the
Referring then to PIG. 3, there is shown a flowchart of a
art will appreciate that this technique can be readily applied
search table procedure for searching the hash table preparatory to inserting, retrieving, or deleting a record, in accor- 55 to manipulate linked lists not necessarily used with hashing.
The search table procedure shown in FIG. 3, implemented
dance with the present invention, and involving the dynamic
removal of expired records in a targeted linked list. Starting
as pseudocode in the APPENDIX, and described above
traverses the entire linked list removing all expired records
in box 30 of the search table procedure of FIG. 3, the search
as it searches for a key matcb. The procedure can be readily
key of the record being searched for is ha<;hed in box 31 to
provide the subscript of an array element. In box 32, the hash 60 adapted to remove some but not all of the expired records,
table array location indicated by the subscript generated in
thereby shortening the linked list traversal time and speeding
box 31 is accessed to provide the pointer to the target linked
up the search at the expense of perhaps leaving some expired
list. Decision box 33 examines the pointer value to deterrecords in the list. For example, the procedure can be
mine whether the end of the linked list has been reached. If
modified to terminate when a key match occurs. (PA.O clear to those skilled in the art
that the invention can be used in diverse computer
applications, and that it is not limited to the use of hash
tables, but is applicable to other techniques requiring linked
lists with expiring records.
Appendix
Functions Provided
The following functions are made availahle to the applimtion progrnm:
1. insert (record: record_type)
Returns replaced if a record a.soci.ted with r"",rd.key was found and
subsequently replaced.
Returns inserted if a record associated with record.key was not round and the
passed record wa.< subsequelltly inserted.
Returns full if" record associated with record.key was not found and the passed
record could not be inserted because DO memory is available.
2. retrieve (record: record .. type)
Returns SUCCess if record •••oc;.ted with record.key W3.< rOllnd .nd assigned to
record.
Returns failure if search was unsuccessful.
3. delete (record. key: rccordJey._typc)
Returns success if record ass
Disclaimer: Justia Dockets & Filings provides public litigation records from the federal appellate and district courts. These filings and docket sheets should not be considered findings of fact or liability, nor do they necessarily reflect the view of Justia.
Why Is My Information Online?