IP Library Granted Patent US 9,448,965
Granted Patent B2
US 9,448,965 · App. 14/065,168 · Granted Sep 20, 2016

Receiving data streams in parallel and providing a first portion of data to a first state machine engine and a second portion to a second state machine

Inventors: David R. Brown (Lucas, TX); Harold B Noyes (Boise, ID); Inderjit S. Bains (Boise, ID)
Assignee: Micron Technology, Inc.
G06F15/7867G06F9/444
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 9,448,965
App. No.
14/065,168
Granted
Sep 20, 2016
Kind
B2
Abstract

An apparatus can include a first state machine engine configured to receive a first portion of a data stream from a processor and a second state machine engine configured to receive a second portion of the data stream from the processor. The apparatus includes a buffer interface configured to enable data transfer between the first and second state machine engines. The buffer interface includes an interface data bus coupled to the first and second state machine engines. The buffer interface is configured to provide data between the first and second state machine engines.

Claims (37)

1. An apparatus, comprising:

a data bus comprising a first plurality of data lines and a second plurality of data lines, wherein the first plurality of data lines is configured to provide data in parallel with the second plurality of data lines, and wherein the first plurality of data lines is different than the second plurality of data lines;

a first state machine engine coupled to the first plurality of data lines; and

a second state machine engine coupled to the second plurality of data lines, wherein the first state machine engine is different than the second state machine engine, wherein the first state machine engine is configured to receive a first portion of a data stream from the first plurality of data lines in parallel with the second state machine engine receiving a second portion of the data stream from the second plurality of data lines, and wherein the first portion of the data stream is different than the second portion of the data stream;

wherein the second state machine engine is configured to provide the second portion of the data stream to the first state machine engine, and the first state machine engine is configured to analyze the first portion of the data stream and the second portion of the data stream.

2. The apparatus of claim 1 , wherein each of the first and second state machine engines comprise a respective state machine lattice having a plurality of configurable elements, and each configurable element of the plurality of configurable elements comprises a plurality of cells configured to analyze at least a portion of the data stream and to output a result of the analysis.

3. The apparatus of claim 1 , comprising an address bus coupled to the first state machine engine and to the second state machine engine.

4. The apparatus of claim 3 , wherein the first and second state machine engines are configured to receive signals from the address bus in parallel.

5. The apparatus of claim 1 , comprising a first control line coupled to the first state machine engine and a second control line coupled to the second state machine engine, wherein the first state machine engine is configured to receive a first set of signals from the first control line in parallel with the second state machine engine receiving a second set of signals from the second control line.

6. The apparatus of claim 1 , wherein the data bus comprises a third plurality of data lines, a fourth plurality of data lines, a fifth plurality of data lines, a sixth plurality of data lines, a seventh plurality of data lines, and an eighth plurality of data lines, wherein the first plurality of data lines is configured to provide data in parallel with the second plurality of data lines, the third plurality of data lines, the fourth plurality of data lines, the fifth plurality of data lines, the sixth plurality of data lines, the seventh plurality of data lines, and the eighth plurality of data lines.

7. The apparatus of claim 6 , comprising:

a third state machine engine coupled to the third plurality of data lines;

a fourth state machine engine coupled to the fourth plurality of data lines;

a fifth state machine engine coupled to the fifth plurality of data lines;

a sixth state machine engine coupled to the sixth plurality of data lines;

a seventh state machine engine coupled to the seventh plurality of data lines; and

an eighth state machine engine coupled to the eighth plurality of data lines.

8. The apparatus of claim 7 , wherein the first state machine engine is configured to receive the first portion of the data stream from the first plurality of data lines in parallel with the second state machine engine receiving the second portion of the data stream from the second plurality of data lines, the third state machine engine receiving a third portion of the data stream from the third plurality of data lines, the fourth state machine engine receiving a fourth portion of the data stream from the fourth plurality of data lines, the fifth state machine engine receiving a fifth portion of the data stream from the fifth plurality of data lines, the sixth state machine engine receiving a sixth portion of the data stream from the sixth plurality of data lines, the seventh state machine engine receiving a seventh portion of the data stream from the seventh plurality of data lines, and the eighth state machine engine receiving an eighth portion of the data stream from the eight plurality of data lines.

9. The apparatus of claim 8 , wherein the third state machine engine is configured to provide the third portion of the data stream to the first state machine engine, the fourth state machine engine is configured to provide the fourth portion of the data stream to the first state machine engine, the fifth state machine engine is configured to provide the fifth portion of the data stream to the first state machine engine, the sixth state machine engine is configured to provide the sixth portion of the data stream to the first state machine engine, the seventh state machine engine is configured to provide the seventh portion of the data stream to the first state machine engine, the eighth state machine engine is configured to provide the eighth portion of the data stream to the first state machine engine, and the first state machine engine is configured to analyze the third portion of the data stream, the fourth portion of the data stream, the fifth portion of the data stream, the sixth portion of the data stream, the seventh portion of the data stream, and the eighth portion of the data stream.

10. The apparatus of claim 1 , wherein the first state machine engine comprises a first buffer configured to store the first portion of the data stream, and the second state machine engine comprises a second buffer configured to store the second portion of the data stream.

11. The apparatus of claim 10 , wherein the first state machine engine comprises a third buffer configured to store the first portion of the data stream and the second portion of the data stream.

12. The apparatus of claim 1 , comprising a buffer interface configured to receive the second portion of the data stream from the second state machine engine and to provide the second portion of the data stream to the first state machine engine.

13. The apparatus of claim 12 , wherein the buffer interface is configured to provide instruction to at least one of the first state machine engine, and the second state machine engine.

14. The apparatus of claim 12 , wherein the first state machine engine comprises a first buffer configured to latch a first set of data provided to the buffer interface and the second state machine engine comprise a second buffer configured to latch a second set of data provided to the buffer interface.

15. The apparatus of claim 14 , wherein the first buffer is configured to latch the first set of data at a first predetermined interval, and the second buffer is configured to latch the second set of data at a second predetermined interval.

16. The apparatus of claim 1 , comprising a module.

17. The apparatus of claim 1 , comprising a data analysis system.

18. The apparatus of claim 1 , wherein each of the first and second state machine engines comprises a separate chip.

19. A method for analyzing data, comprising:

receiving, at a first state machine engine, a first portion of a data stream from a first plurality of data lines of a data bus;

receiving, at a second state machine engine, a second portion of the data stream from a second plurality of data lines of the data bus, wherein the first state machine engine is different than the second state machine engine, wherein the first portion of the data stream is different than the second portion of the data stream, wherein the first plurality of data lines is different than the second plurality of data lines, and wherein the second portion of the data stream is received at the second state machine engine in parallel with the first state machine engine receiving the first portion of the data stream; and

providing the second portion of the data stream from the second state machine engine to the first state machine engine.

20. The method of claim 19 , comprising analyzing the first portion of the data stream and the second portion of the data stream using the first state machine engine.

21. The method of claim 19 , comprising receiving an address signal at the first and second state machine engines to select a first memory address of the first state machine engine and a second memory address of the second state machine engine in parallel.

22. The method of claim 21 , wherein the first memory address is equal to the second memory address.

23. The apparatus of claim 1 , wherein, when the first portion of the data stream and the second portion of the data stream include unequal amounts of data, the first portion of the data stream, the second portion of the data stream, or both, are adjusted using data padding until the first portion of the data stream and the second portion of the data stream include equal amounts of data.

24. The apparatus of claim 23 , wherein the data padding is added in between certain data segments of the first portion of the data stream, the second portion of the data stream, or both, such that data starts and/or stops within the data blocks at predetermined intervals.

Assignments (8)
RELEASE OF SECURITY INTEREST Recorded Nov 12, 2019
From: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
To: MICRON TECHNOLOGY, INC.; MICRON SEMICONDUCTOR PRODUCTS, INC.
Reel/Frame 051028/0001 →
RELEASE OF SECURITY INTEREST Recorded Oct 9, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
To: MICRON TECHNOLOGY, INC.
Reel/Frame 050937/0001 →
RELEASE OF SECURITY INTEREST Recorded Aug 23, 2018
From: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT
To: MICRON TECHNOLOGY, INC.
Reel/Frame 047243/0001 →
SECURITY INTEREST Recorded Jul 13, 2018
From: MICRON TECHNOLOGY, INC.; MICRON SEMICONDUCTOR PRODUCTS, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 047540/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REPLACE ERRONEOUSLY FILED PATENT #7358718 WITH THE CORRECT PATENT #7358178 PREVIOUSLY RECORDED ON REEL 038669 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY INTEREST. Recorded Jun 8, 2017
From: MICRON TECHNOLOGY, INC.
To: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 043079/0001 →
PATENT SECURITY AGREEMENT Recorded Jun 2, 2016
From: MICRON TECHNOLOGY, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 038954/0001 →
SECURITY INTEREST Recorded May 12, 2016
From: MICRON TECHNOLOGY, INC.
To: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 038669/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 29, 2013
From: BROWN, DAVID R.; NOYES, HAROLD B; BAINS, INDERJIT SINGH
To: MICRON TECHNOLOGY, INC.
Reel/Frame 031501/0743 →
Continuity (2)
Provisional Application 61788364 · Mar 15, 2013
Related Publication 20140279776A1 · Sep 18, 2014