Claims Analysis
Total Claims: 12
Claim 1
Independent Claim
59 words
A merging device for merging a plurality of sorted lists, comprising means for dividing the plurality of sorted lists into a number of tasks, means for merging records in each task on a separate processor in a shared memory multi-processing system so that the records are sorted, and means for concatenating each task to form a single, sorted list.
Claim 2
Dependent Claim
321 words
A merging device for merging a plurality of sorted lists, wherein each sorted list has at least one record, comprising a random access memory (104), a plurality of independently operating processors (106) on a multi-processing machine, the processors sharing the random access memory, partition means (310) for selecting a portion of the sorted lists to be loaded into the random access memory and merged, thereby forming a selected portion of the sorted lists, wherein the number of records in the selected portion is related to the capacity of the random access memory, pre-order detection means (306) for determining whether any sorted list in the selected portion is a pre-ordered sorted list, such that each record in any of the sorted lists are either all greater or equal in value to each record in the pre-ordered sorted list or all less than or equal in value to each record in the pre-ordered sorted list, allocation means (310) for dividing the sorted lists in the selected portion into a plurality of tasks equal to the number of the independently operating processors, wherein an appropriate task size is determined based upon the number of records in the selected portion and the number of the independently operating processors, wherein the records of a specific task of the plurality of tasks are such that each record in any other of the plurality of tasks are either all greater or equal in value to each record in the specific task or all less than or equal in value to each record in the specific task, merge means (204) for merging the tasks in parallel, creating sorted tasks, and concatenation means (207) for concatenating the sorted tasks with each other, and with any pre-ordered lists to create a single sorted list, and for concatenating the single sorted list with other single sorted lists generated from previously selected portions of the sorted lists to form a final sorted list.
Claim 3
Dependent Claim
66 words
A device according to claim 2, wherein the sorted lists within the partition have an upper and a lower bound, and wherein the lower bound is set by analyzing each of the lowest records in each of the sorted lists within the partition and determining which record of the lowest records has a highest value, wherein the lower bound is set based upon the highest value.
Claim 4
Dependent Claim
26 words
A device according to claim 2 or 3, wherein the allocation means uses a binary search to divide the sorted lists into a number of tasks.
Claim 5
Dependent Claim
20 words
A device according to claim 4, wherein the allocation means divides the sorted lists to form a task in parallel.
Claim 6
Dependent Claim
56 words
A device according to claim 2, 3, 4 or 5, wherein the allocation means comprises breakpoint means for determining a breakpoint value in each of the sorted lists and for creating each of the number of tasks based upon the records in the sorted lists having a value equal to or greater than the breakpoint value.
Claim 7
Dependent Claim
21 words
A device according to claim 6, wherein the breakpoint values are determined in parallel by the plurality of independently operating processors.
Claim 8
Dependent Claim
49 words
A device according to claim 2, 3, 4, 5, 6 or 7, wherein the partition means includes means for forming the selected portion such that each record in the selected portion has a value greater or equal to any record remaining to be loaded into the random access memory.
Claim 9
Independent Claim
288 words
A method of merging a plurality of sorted lists each having at least one record, comprising the steps of: (1) selecting a portion of the sorted lists to be merged, thereby forming a selected portion; (2) loading the selected portion into a random access memory, wherein the number of records in the selected portion is related to the capacity of the random access memory; (3) determining whether any sorted list in the selected portion is a pre-ordered sorted list, such that each record in any of the sorted lists are either all greater or equal in value to each record in the pre-ordered sorted list or all less than or equal in value to each record in the pre-ordered sorted list; (4) dividing the sorted lists in the selected portion into a plurality of tasks equal to a number of independently operating processors; (5) determining an appropriate task size based upon the number of records in the selected portion and the number of the independently operating processors, wherein the records of a specific task are such that the records in any other task are either all greater or equal in value to each record in the specific task or all less than or equal in value to each record in the specific task; (6) merging the tasks in parallel, creating sorted tasks; (7) concatenating the sorted tasks with each other, and with any pre-ordered sorted lists to create a single sorted list; (8) re-executing the steps beginning at the step (1) if portions of the sorted lists have not been loaded into the random access memory, creating a plurality of single sorted lists; and (9) concatenating the plurality of single sorted list to form a final sorted list.
Claim 10
Dependent Claim
28 words
A method according to claim 9, wherein the step (4) comprises the step of using a binary search to divide the sorted lists into a number of tasks.
Claim 11
Dependent Claim
27 words
A method according to claim 10, including the step of using the independently operating processors to divide the sorted lists into a number of tasks in parallel.
Claim 12
Dependent Claim
56 words
A method according to claim 9, 10 or 11, wherein the step (1) of forming the selected portion comprises the step of analyzing each record in the selected portion and ensuring that each record has a value greater or equal to any record remaining to be loaded into said random access memory by the step (2).