IP Library Granted Patent US 10,922,020
Granted Patent B2
US 10,922,020 · App. 16/382,511 · Granted Feb 16, 2021

Writing and querying operations in content addressable memory systems with content addressable memory buffers

Inventors: Ameen D. Akel (Rancho Cordova, CA); Sean S. Eilert (Penryn, CA)
Assignee: Micron Technology, Inc.
G06F3/0659G06F3/0604G06F3/0673G11C13/0069G11C15/046G11C13/0004
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,922,020
App. No.
16/382,511
Granted
Feb 16, 2021
Kind
B2
Abstract

An apparatus (e.g., a content addressable memory system) can have a controller, a first content addressable memory coupled to the controller, and a second content addressable memory coupled to the controller. The controller can be configured to cause the first content addressable memory to write data in the first content addressable memory, cause the second content addressable memory to write the data in the second content addressable memory, and cause the second content addressable memory to query the data written in the second content addressable memory while the first content addressable memory continues to write the data in the first content addressable memory.

Claims (99)

1. An apparatus, comprising:

a controller;

a first content addressable memory coupled to the controller; and

a second content addressable memory coupled to the controller;

wherein the controller is configured to:

cause the first content addressable memory to write data in the first content addressable memory;

cause the second content addressable memory to write the data in the second content addressable memory wherein the first and second content addressable memories write the data in the first and second content addressable memories concurrently until the second content addressable memory is finished writing the data in the second content addressable memory; and

cause the second content addressable memory to query the data written in the second content addressable memory while the first content addressable memory continues to write the data in the first content addressable memory.

2. The apparatus of claim 1 , wherein the controller is configured to:

cause the first content addressable memory to write the data in a memory tile of the first content addressable memory;

cause the second content addressable memory to write the data in a region in the second content addressable memory; and

map a location of the memory tile in the first content addressable memory to a location of the region in the second content addressable memory.

3. The apparatus of claim 2 , wherein the controller is configured to invalidate the map of the location of the memory tile to the location of the region in response to determining that the memory tile is full of data.

4. The apparatus of claim 2 , wherein the controller is configured to cause the second content addressable memory to remove the data from the region in response to determining that the memory tile is full of data.

5. The apparatus of claim 1 , wherein the second content addressable memory is configured query the data written in the second content addressable memory by comparing input data to the data written in the second content addressable memory.

6. The apparatus of claim 1 , wherein the second content addressable memory is a volatile content addressable memory and the first content addressable memory is a non-volatile content addressable memory.

7. The apparatus of claim 1 , wherein

the first content addressable memory is configured to write the data in resistance-variable memory cells in the first content addressable memory; and

the second content addressable memory is configured to write the data in static random access memory cells in the second content addressable memory.

8. The apparatus of claim 1 , wherein the controller is configured to:

map a location of the data in the first content addressable memory to a location of the data in the second content addressable memory while the data is being written to the first content addressable memory; and

invalidate the map in response to the first content addressable memory completing the write of the data in the first content addressable memory.

9. The apparatus of claim 8 , wherein the controller is configured to map a logical address received from a host to a physical address of the location of the data in the first content addressable memory.

10. The apparatus of claim 1 , wherein the controller is configured to cause the second content addressable memory to remove the data from the second content addressable memory in response to the first content addressable memory completing the write of the data in the first content addressable memory.

11. An apparatus, comprising:

a controller;

a main content addressable memory coupled to the controller; and

a buffer content addressable memory coupled to the controller;

wherein the controller is configured to:

cause the buffer content addressable memory to query the buffer content addressable memory in place of the main content addressable memory querying a partially filled memory tile in the main content addressable memory; and

cause the main content addressable memory to query memory tiles in the main content addressable memory that are completely filled with data concurrently with causing the buffer content addressable memory to query the buffer content addressable memory in place of the main content addressable memory querying a partially filled memory tile.

12. The apparatus of claim 11 , wherein the controller is configured to cause all data vectors in the partially filled memory tile to be copied from the partially filled memory tile into the buffer content addressable memory in response to causing the main content addressable memory to write enable the partially filled memory tile.

13. The apparatus of claim 12 , wherein

the data vectors copied into the buffer content addressable memory from the partially filled memory tile are first data vectors; and

the controller is configured to:

cause the main content addressable memory to write a second data vector in a free location in the partially filled memory tile in response to causing the main content addressable memory to write enable the partially filled memory tile;

cause the buffer content addressable memory to write the second data vector in the buffer content addressable memory while the main content addressable memory is writing the second data vector in the partially filled memory tile; and

cause the buffer content addressable memory to query the first and second data vectors in the buffer content addressable memory while the main content addressable memory continues to write the second data vector in the partially filled memory tile.

14. The apparatus of claim 13 , wherein the free location in the partially filled memory tile is sequential to sequential locations of the first data vectors in the partially filled memory tile.

15. The apparatus of claim 13 , wherein the controller is configured to manage a data structure comprising an entry that maps an address of a location of the partially filled memory tile in the main content addressable memory to a range of addresses in the buffer content addressable memory corresponding to the first and second data vectors.

16. The apparatus of claim 11 , wherein the main content addressable memory is configured to replace a first data vector in the main content addressable memory with a second data vector by:

writing the second vector in a free location the main content addressable memory; and

mapping a location of the first data vector in the main content addressable memory to the free location.

17. The apparatus of claim 16 , wherein the free location is in a same memory tile as the location of the first data vector.

18. The apparatus of claim 16 , wherein the free location is in a different memory tile than the location of the first data vector.

19. A method, comprising:

writing a data vector in a memory tile of a first content addressable memory;

writing the data vector in a region of a second content addressable memory corresponding to the memory tile; and

querying the region in place of the memory tile in response to determining that the memory tile is not full of previously written data vectors.

20. The method of claim 19 , wherein:

writing the data vector in the memory tile and in the region comprises writing the data vector in the memory tile and in the region concurrently until writing the data vector in the region is completed; and

querying the region in place of the memory tile comprises querying the data vector in the region while writing the data vector in the memory tile after writing the data vector in the region is completed.

21. The method of claim 19 , further comprising:

querying an additional memory tile in the first content addressable memory, concurrently with querying the region in place of the memory tile in response to determining that the additional memory tile is full of previously written data vectors.

22. The method of claim 19 , further comprising copying a previously written data vector in the memory tile into the region before writing the data vector in the memory tile and in the region.

23. The method of claim 19 , wherein writing the data vector in the memory tile comprises writing the data vector sequentially after a last written data vector in the memory tile.

24. The method of claim 19 , wherein writing the data vector in the memory tile comprises writing the data vector in a first available memory tile following sequence of unavailable memory tiles.

25. The method of claim 19 , further comprising:

comparing an input data vector to an additional data vector stored in the first content addressable memory or the second content addressable memory; and

determining, by match validation circuitry, whether a match between the input data vector and the additional data vector is valid.

26. An apparatus, comprising:

a controller;

a first content addressable memory coupled to the controller; and

a second content addressable memory coupled to the controller;

wherein the controller is configured to:

cause the first content addressable memory to write data in a memory tile of the first content addressable memory;

cause the second content addressable memory to write the data in a region of the second content addressable memory;

map a location of the memory tile in the first content addressable memory to a location of the region in the second content addressable memory;

invalidate the map of the location of the memory tile to the location of the region in response to determining that the memory tile is full of data; and

cause the second content addressable memory to query the data written in the second content addressable memory while the first content addressable memory continues to write the data in the first content addressable memory.

27. An apparatus, comprising:

a controller;

a first content addressable memory coupled to the controller; and

a second content addressable memory coupled to the controller;

wherein the controller is configured to:

cause the first content addressable memory to write data in a memory tile of the first content addressable memory;

cause the second content addressable memory to write the data in a region of the second content addressable memory;

map a location of the memory tile in the first content addressable memory to a location of the region in the second content addressable memory;

cause the second content addressable memory to remove the data from the region in response to determining that the memory tile is full of data; and

cause the second content addressable memory to query the data written in the second content addressable memory while the first content addressable memory continues to write the data in the first content addressable memory.

28. An apparatus, comprising:

a controller;

a main content addressable memory coupled to the controller; and

a buffer content addressable memory coupled to the controller;

wherein the controller is configured to cause the buffer content addressable memory to query the buffer content addressable memory in place of the main content addressable memory querying a partially filled memory tile in the main content addressable memory, and

wherein the controller is configured to cause all data vectors in the partially filled memory tile to be copied from the partially filled memory tile into the buffer content addressable memory in response to causing the main content addressable memory to write enable the partially filled memory tile.

29. An apparatus, comprising:

a controller;

a main content addressable memory coupled to the controller; and

a buffer content addressable memory coupled to the controller;

wherein the controller is configured to cause the buffer content addressable memory to query the buffer content addressable memory in place of the main content addressable memory querying a partially filled memory tile in the main content addressable memory, and

wherein the main content addressable memory is configured to replace a first data vector in the main content addressable memory with a second data vector by:

writing the second vector in a free location the main content addressable memory; and

mapping a location of the first data vector in the main content addressable memory to the free location.

30. A method, comprising:

writing a data vector in a memory tile of a first content addressable memory;

writing the data vector in a region of a second content addressable memory corresponding to the memory tile;

copying a previously written data vector in the memory tile into the region before writing the data vector in the memory tile and in the region; and

querying the region in place of the memory tile.

Assignments (5)
RELEASE OF SECURITY INTEREST Recorded Nov 15, 2019
From: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
To: MICRON TECHNOLOGY, INC.
Reel/Frame 051041/0317 →
RELEASE OF SECURITY INTEREST Recorded Oct 14, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
To: MICRON TECHNOLOGY, INC.
Reel/Frame 050724/0392 →
SUPPLEMENT NO. 12 TO PATENT SECURITY AGREEMENT Recorded Apr 19, 2019
From: MICRON TECHNOLOGY, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 048948/0677 →
SUPPLEMENT NO. 3 TO PATENT SECURITY AGREEMENT Recorded Apr 19, 2019
From: MICRON TECHNOLOGY, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 048951/0902 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 12, 2019
From: AKEL, AMEEN D.; EILERT, SEAN S.
To: MICRON TECHNOLOGY, INC.
Reel/Frame 048869/0380 →
Continuity (1)
Related Publication 20200326880A1 · Oct 15, 2020