Garbage Collection Implemented in Hardware
Abstract
A method of garbage collection in a computing device is provided. The method includes providing a memory module having a memory implemented as at least one hardware circuit. The memory module uses a dual-ported memory configuration. The method includes triggering a garbage collection signal by a sweep engine of the computing device. The sweep engine is in communication with a memory module to reclaim memory. The method includes receiving the garbage collection signal by a root snapshot engine of the computing device. The method includes taking a snapshot of roots from at least one mutator by the root snapshot engine if the garbage collection signal is received. The method includes receiving roots from the root snapshot engine by a trace engine of the computing device. The trace engine is in communication with the memory module to receive data.
Claims
exact text as granted — not AI-modifiedWhat is claimed is:
1 . A method of garbage collection in a computing device, comprising:
providing a memory module having a memory implemented as at least one hardware circuit, the memory module using a dual-ported memory configuration; triggering a garbage collection signal by a sweep engine of the computing device, the sweep engine in communication with a memory module to reclaim memory; receiving the garbage collection signal by a root snapshot engine of the computing device; taking a snapshot of roots from at least one mutator by the root snapshot engine if the garbage collection signal is received; and receiving roots from the root snapshot engine by a trace engine of the computing device, the trace engine in communication with the memory module to receive data.
2 . The method of claim 1 , comprising triggering the garbage collection signal if a stack pointer of the sweep engine falls below a specified level.
3 . The method of claim 2 , comprising receiving an allocation request by a stack top register of the sweep engine, wherein the stack top register is used to remove a pointer to a free object from a free stack that decrements the stack pointer.
4 . The method of claim 2 , wherein the specified level is based on at least one of an allocation rate, a mutation rate, a live data amount, and a memory resource.
5 . The method of claim 1 , comprising providing an address to free port to the sweep engine, wherein the memory module is in communication with the sweep engine by the address to free port.
6 . The method of claim 1 , comprising providing a shadow register and a mutator register of the root snapshot engine.
7 . The method of claim 6 , comprising having the garbage collection signal going high for one clock cycle.
8 . The method of claim 7 , comprising copying a value of the mutator register into the shadow register after the garbage collection signal goes high.
9 . The method of claim 8 , comprising sending the shadow register and a mutator through a multiplexer of the root snapshot engine, wherein a pointer that is read from the mutator stack emerges from the multiplexer as the snapshot of roots from the at least one mutator.
10 . The method of claim 1 , comprising sending a pointer value from the memory module to the trace engine.
11 . The method of claim 1 , comprising allowing a read and a write operation to proceed in parallel by the dual-ported memory configuration of the memory module.
12 . The method of claim 1 , comprising communicating with the computing device with a client application that is written in a hardware description language.
13 . The method of claim 12 , wherein the hardware description language is one of a very-high-speed integrated circuits hardware description language (VHDL) and Verilog.
14 . The method of claim 1 , comprising communicating with the computing device by a client application that is written in a software based programming language.
15 . The method of claim 14 , wherein the software based programming language is one of C, C++, SystemC, Perl, Python, C#, CUDA, OpenCL, Java, and a language that is derived therefrom, and wherein a compiler converts the software based programming language into a hardware description language.Cited by (0)
No later patents cite this yet.
References (0)
No backward citations on record.