← Back to Patent Explorer
US5692185A Expired / Lapsed US ⏱️ 0.0 years remaining

Object space manager method and circuit

Assignee: AONIX SA
•
Filing: 1996-01-29
•
Granted: 1997-11-25
•
Expires: 2016-01-29
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract The garbage-collecting memory module (GCMM) functions much like traditional memory in a computer system, thereby permitting the invention to be utilized with a wide variety of computers. It differs from traditional memory in that it automatically cleanses itself of garbage while functioning as traditional memory without causing excessive delays in the execution of application programs by an associated computer. The GCMM can be designed to interface with a computer system via a traditional memory bus and to communicate with the central processing unit (CPU) of the computer using standard communication protocols. The GCMM is comprised of a memory, a means for communicating with the CPU, and a garbage-collecting control unit. The garbage-collecting control unit gives top priority to satisfying the computer's requests for memory services. The collection of garbage takes place during the intervals between memory service requests. Garbage collection is accomplished by copying live objects that are stored in one region of memory to a second region thereby leaving dead objects behind in the first region. When the copying process has been completed, the dead objects are disposed of, and the garbage-collecting process continues with the copying of live objects in the second region back to the first. An up-to-date list of live objects is maintained by the CPU and forwarded to the GCMM at the start of each garbage-collection cycle.

Inventors

  • 👤 Kelvin D. Nilsen
  • 👤 William Schmidt

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-10-30 03:29
CPC Classifications
G; G06; G06F; G06F12/00; G06F12/02; G06F12/0223; G06F12/023; G06F12/0253; G06F12/0269

Claims Analysis

Total Claims: 22
Claim 1
Independent Claim 170 words
An object space manager circuit for locating headers of objects in an associated memory containing L 1 memory cells, the individual memory cells being represented by the integers from 0 to L 1 -1, L 1 having a plurality of submultiples N 1 , N 2 , . . . N G , the largest submultiple N G being equal to L 1 , an object being allocated memory cells from S 1 to S 2 , S 1 containing the header of said object, said object space manager circuit comprising: a code memory; a coding circuit which generates an object locator code, for each associated memory cell S in the range S 1 to S 2 , S 1 and S 2 being inputs to said coding circuit, M(S) being the subscript of the smallest of said submultiples for which INT(S/N M (S)) equals INT(S 1 /N M (S)), INT( ) being the integer portion of the quantity in parentheses, said code being outputted to said memory for storage.
Claim 2
Dependent Claim 170 words
An object space manager circuit for locating headers of objects in an associated memory containing L 1 memory cells, the individual memory cells being represented by the integers from 0 to L 1 -1, L 1 having a plurality of submultiples N 1 , N 2 , . . . N G , the largest submultiple N G being equal to L 1 , an object being allocated memory cells from S 1 to S 2 , S 1 containing the header of said object, said object space manager circuit comprising: a code memory; a coding circuit which generates an object locator code, for each associated memory cell S in the range S 1 to S 2 , S 1 and S 2 being inputs to said coding circuit, M(S) being the subscript of the smallest of said submultiples for which INT(S/N M (S)) equals INT(S 1 /N M (S)), INT( ) being the integer portion of the quantity in parentheses, said code being outputted to said memory for storage.
Claim 3
Dependent Claim 86 words
The object space manager circuit of claim 1 wherein said code memory is divided into sections numbered from 1 to G, the second element of said object locator code together with a flag bit equal to 1 being stored in section M(S) at memory cell address INT(S/N M (S)-1), N 0 being equal to 1, the flag bit being set equal to 0 at memory cell addresses INT(S/N M-1 ) in section M, M taking on all values between 1 and G not equal to M(S).
Claim 4
Dependent Claim 73 words
The object space manager circuit of claim 2 further comprising: an object locator circuit which accepts an associated memory cell number S allocated to an object as input, retrieves the second element of the object locator code from the section of memory for which said flag bit equals 1 thereby identifying M(S), and produces said S 1 as output, S 1 being equal to N M (S) +(S 1 modulo N M (S)).
Claim 5
Dependent Claim 56 words
The object space manager circuit of claim 1 further comprising: an object locator circuit which accepts an associated memory cell number S allocated to an object as input, retrieves the code from said code memory, and produces said S 1 as output, S 1 being equal to N M (S) +(S 1 modulo N M (S)).
Claim 6
Dependent Claim 105 words
The object space manager circuit of claim 4 wherein said associated memory includes memory cells with numbers in the range from -L 2 to -1, said coding circuit generating an object locator code if S 1 is less than 0 and S is equal to or greater than 0, said coding circuit being inoperative if S is less than 0, the S 1 produced by said object locator circuit being the second element of said code if the first element is equal to 0 and S is equal to or greater than 0, said object locator circuit being inoperative if S is less than 0.
Claim 7
Dependent Claim 138 words
The object space manager circuit of claim 1 wherein the code memory comprises G random access memories (RAM's) identified by the integers from 1 to G, said code memory having log 2 F address lines and G sets of data lines, log 2 F being an integer, one set of data lines being associated with each of said RAM's, said code memory address lines being numbered from 1 to log 2 F in order of address bit significance, address line 1 corresponding to the most significant bit, the address lines for RAM H being address lines 1 to log 2 (F/N H-1 ), H being any integer from 1 to G, log 2 N H being an integer less than or equal to log 2 F, N G being equal to F, N 0 being equal to 1.
Claim 8
Dependent Claim 21 words
The object space manager circuit of claim 6 wherein RAM H has at least (log 2 N H ) data lines.
Claim 9
Dependent Claim 23 words
The object space manager circuit of claim 7 wherein RAM H has at least (log 2 (N H /N H-1 )) data lines.
Claim 10
Dependent Claim 306 words
An object space manager circuit for locating headers of objects in an associated memory containing L 1 memory cells, the individual memory cells being represented by the integers from 0 to L 1 -1, L1 having a plurality of submultiples N 1 , N 2 , . . . N G , the largest submultiple N G being equal to a submultiple F of L 1 , an object being allocated memory cells from S 1 to S 2 , at least one of said memory cells being in the range from QF to (Q+1)F-1, Q being an integer between 0 and L 1 /F-1, said object space manager circuit comprising: a code memory; a coding circuit which accepts as inputs the two integers S 1 and S 2 , generates an object locator code for each of said allocated memory cells S in the range QF to (Q+1)F-1 comprising a plurality of level-H codes, H taking on integer values between 1 and G, and stores said object locator code in said code memory, each of said level-H codes consisting of a "valid" integer and an "offset" integer, the "valid" integer of all of said codes being initially set equal to 0, the "valid" integer and the "offset" integer of the level-H code for S being set equal to 1 and S 1 modulo N H respectively for the smallest value of H for which INT(S 1 /N H )-INT(S/N H ) is equal to 0, INT( ) being the integer portion of the quantity in parentheses, the "valid" integer and the "offset" integer of the level-G code for S being set equal to INT(S 1 /F)-INT(S/F) and S 1 modulo F respectively if INT(S 1 /F) does not equal INT(S/F), the "valid" integer for all other level-H codes for S being set equal to 0.
Claim 11
Dependent Claim 306 words
An object space manager circuit for locating headers of objects in an associated memory containing L 1 memory cells, the individual memory cells being represented by the integers from 0 to L 1 -1, L1 having a plurality of submultiples N 1 , N 2 , . . . N G , the largest submultiple N G being equal to a submultiple F of L 1 , an object being allocated memory cells from S 1 to S 2 , at least one of said memory cells being in the range from QF to (Q+1)F-1, Q being an integer between 0 and L 1 /F-1, said object space manager circuit comprising: a code memory; a coding circuit which accepts as inputs the two integers S 1 and S 2 , generates an object locator code for each of said allocated memory cells S in the range QF to (Q+1)F-1 comprising a plurality of level-H codes, H taking on integer values between 1 and G, and stores said object locator code in said code memory, each of said level-H codes consisting of a "valid" integer and an "offset" integer, the "valid" integer of all of said codes being initially set equal to 0, the "valid" integer and the "offset" integer of the level-H code for S being set equal to 1 and S 1 modulo N H respectively for the smallest value of H for which INT(S 1 /N H )-INT(S/N H ) is equal to 0, INT( ) being the integer portion of the quantity in parentheses, the "valid" integer and the "offset" integer of the level-G code for S being set equal to INT(S 1 /F)-INT(S/F) and S 1 modulo F respectively if INT(S 1 /F) does not equal INT(S/F), the "valid" integer for all other level-H codes for S being set equal to 0.
Claim 12
Dependent Claim 153 words
The object space manager circuit of claim 9 wherein said code memory is a random access memory assembly (RAMA) comprising G random access memories (RAM's) identified by the integers from 1 to G, said level-H code being stored in RAM H, H taking on the integer values from 1 to G, said RAMA having log 2 F address lines and G sets of data lines, log 2 F being an integer, one set of data lines being associated with each of said RAM's, said RAMA address lines being numbered from 1 to log 2 F in order of address bit significance, address line 1 corresponding to the most significant bit, the address lines for RAM H being address lines 1 to log 2 (F/N H-1 ), log 2 N H being an integer less than or equal to log 2 F, N G being equal to F, N 0 being equal to 1.
Claim 13
Dependent Claim 98 words
The object space manager circuit of claim 9 further comprising: an object location retrieving circuit which accepts as input a value for said S, retrieves from said code memory the level-H "valid" integer and the "offset" integer for the value of H for which the "valid" integer is not equal to 0 and produces said S 1 as output, said S 1 being equal to QF plus N H plus the "offset" integer if the "valid" integer equals 1, said S 1 being equal to F plus the "offset" integer if the "valid" integer is less than 0.
Claim 14
Dependent Claim 145 words
A process for locating the first memory cell occupied by an object in a memory containing L 1 memory cells, the addresses of the individual memory cells being represented by the integers from 0 to L 1 -1, L 1 having a plurality of submultiples N 1 , N 2 , . . . N G , the largest submultiple N G being equal to L 1 , an object being allocated memory cells from S 1 to S 2 , S 1 being the first memory cell, said process comprising the steps: generating a code for each memory address S in the range S 1 to S 2 , M(S) being the subscript of the smallest of said submultiples for which INT(S/N M (S)) equals INT(S 1 /N M (S)), INT( ) being the integer portion of the quantity in parentheses; saving said codes.
Claim 15
Dependent Claim 145 words
A process for locating the first memory cell occupied by an object in a memory containing L 1 memory cells, the addresses of the individual memory cells being represented by the integers from 0 to L 1 -1, L 1 having a plurality of submultiples N 1 , N 2 , . . . N G , the largest submultiple N G being equal to L 1 , an object being allocated memory cells from S 1 to S 2 , S 1 being the first memory cell, said process comprising the steps: generating a code for each memory address S in the range S 1 to S 2 , M(S) being the subscript of the smallest of said submultiples for which INT(S/N M (S)) equals INT(S 1 /N M (S)), INT( ) being the integer portion of the quantity in parentheses; saving said codes.
Claim 16
Dependent Claim 51 words
The process of claim 12 comprising the additional steps: inputting to said process an address S associated with a memory cell in said memory allocated to said object; retrieving the code; producing said S 1 as output, S 1 being equal to N M (S) +(S 1 modulo N M (S)).
Claim 17
Dependent Claim 97 words
The process of claim 13 wherein said first memory includes memory cells with addresses in the range from -L 2 to -1 and said generating step results in a code if S 1 is less than 0 and S is equal to or greater than 0, said process being inoperative if S is less than 0, the S 1 resulting from said producing step being the second element of said code if S 1 is less than 0 and S is equal to or greater than 0, said process being inoperative if S is less than 0.
Claim 18
Dependent Claim 10 words
An electronic circuit to practice the process of claim 14.
Claim 19
Dependent Claim 322 words
A process for identifying the first memory cell in a first sequence of memory cells given the number of any first-sequence memory cell, said first sequence being a portion of a second sequence of memory cells represented by the integers from 0 to L 1 -1, the first memory cell of said first sequence being the memory cell with the lowest second-sequence number, L1 having a plurality of submultiples N 1 , N 2 , . . . N G , the largest submultiple N G being equal to a submultiple F of L 1 , an object being allocated memory cells from S 1 to S 2 , at least one of said memory cells being in the range from QF to (Q+1)F-1, Q being an integer between 0 and L 1 /F-1, said process comprising the steps: accepting as inputs the two integers S 1 and S 2 ; generating an object locator code for each member S of said first sequence in the range QF to (Q+1)F-1 comprising a plurality of level-H codes, H taking on integer values between 1 and G, each of said level-H codes consisting of a "valid" integer and an "offset" integer, the "valid" integer of all of said codes being initially set equal to 0, the "valid" integer and the "offset" integer of the level-H code for S being set equal to 1 and S 1 modulo N H respectively for the smallest value of H for which INT(S 1 /N H )-INT(S/N H ) is equal to 0, INT( ) being the integer portion of the quantity in parentheses, the "valid" integer and the "offset" integer of the level-G code for S being set equal to INT(S 1 /F)-INT(S/F) and S 1 modulo F respectively if INT(S 1 /F) does not equal INT(S/F), the "valid" integer for all other level-H codes for S being set equal to 0; saving said object locator codes.
Claim 20
Dependent Claim 322 words
A process for identifying the first memory cell in a first sequence of memory cells given the number of any first-sequence memory cell, said first sequence being a portion of a second sequence of memory cells represented by the integers from 0 to L 1 -1, the first memory cell of said first sequence being the memory cell with the lowest second-sequence number, L1 having a plurality of submultiples N 1 , N 2 , . . . N G , the largest submultiple N G being equal to a submultiple F of L 1 , an object being allocated memory cells from S 1 to S 2 , at least one of said memory cells being in the range from QF to (Q+1)F-1, Q being an integer between 0 and L 1 /F-1, said process comprising the steps: accepting as inputs the two integers S 1 and S 2 ; generating an object locator code for each member S of said first sequence in the range QF to (Q+1)F-1 comprising a plurality of level-H codes, H taking on integer values between 1 and G, each of said level-H codes consisting of a "valid" integer and an "offset" integer, the "valid" integer of all of said codes being initially set equal to 0, the "valid" integer and the "offset" integer of the level-H code for S being set equal to 1 and S 1 modulo N H respectively for the smallest value of H for which INT(S 1 /N H )-INT(S/N H ) is equal to 0, INT( ) being the integer portion of the quantity in parentheses, the "valid" integer and the "offset" integer of the level-G code for S being set equal to INT(S 1 /F)-INT(S/F) and S 1 modulo F respectively if INT(S 1 /F) does not equal INT(S/F), the "valid" integer for all other level-H codes for S being set equal to 0; saving said object locator codes.
Claim 21
Dependent Claim 88 words
The process of claim 16 comprising the additional step: accepting as input a value for S; retrieving the level-H "valid" integer and the "offset" integer for the value of H for which the "valid" integer is not equal to 0; producing said S 1 as output, said S 1 being equal to QF plus N H plus the "offset" integer if the "valid" integer equals 1, said S 1 being equal to ("valid" integer plus Q)F plus the "offset" integer if the "valid" integer is less than 0.
Claim 22
Dependent Claim 10 words
An electronic circuit to practice the process of claim 17.

References Cited (Backward Citations)

US4677544A Cited
US4916658A Cited
US5089958A Cited
US5488724A Cited
US5490260A Cited
US5490258A Cited
US5479624A Cited
US5560003A Cited
US5454076A Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 2000-11-24 2001-05-26 2001-11-25 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2004-11-24 2005-05-26 2005-11-25 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2008-11-24 2009-05-26 2009-11-25 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag