IP Library Granted Patent US 9,093,135
Granted Patent B2
US 9,093,135 · App. 13/678,477 · Granted Jul 28, 2015

System, method, and computer program product for implementing a storage array

Inventors: Brucek Kurdo Khailany (San Francisco, CA); James David Balfour (Mountain View, CA); Ronny Meir Krashinsky (San Francisco, CA)
Assignee: NVIDIA Corporation
G11C7/12G11C7/18G11C8/16G11C11/412
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,093,135
App. No.
13/678,477
Granted
Jul 28, 2015
Kind
B2
Abstract

A system, method, and computer program product are provided for implementing a storage array. In use, a storage array is implemented utilizing static random-access memory (SRAM). Additionally, the storage array is utilized in a multithreaded architecture.

Claims (33)

1. A storage array, comprising:

a plurality of sub-arrays configured to provide a register for each thread of a plurality of threads, each sub-array configured to store one bit of the register for each thread, and each sub-array comprising:

storage cells configured in an array of rows and columns, wherein each storage cell is associated with a different thread of the plurality of threads and stores one bit of data;

a read multiplexer coupled to the storage cells and configured to output a global read bit line selected from local read bit lines output by the storage cells;

read drivers, each read driver coupled between a read bit line precharge and one of the columns; and

write drivers, each write driver coupled between a global write bit line and one of the columns, and configured to write the global write bit line to the storage cells for each thread of the plurality of threads.

2. The storage array of claim 1 , wherein, within the storage array, the plurality of sub-arrays are configured into at least one row of the sub-arrays and columns of the sub-arrays.

3. The storage array of claim 2 , further comprising a plurality of global write bit lines, wherein each one of the global write bit lines is coupled to the global write bit line of each sub-array in one of the columns of the sub-arrays.

4. The storage array of claim 2 , further comprising a plurality of global read multiplexers, each global read multiplexer coupled to the global read bit line of each sub-array within one column of the sub-arrays and configured to select one of the global read bit lines for output.

5. The storage array of claim 2 , wherein a read word line coupled to the storage cells in a first row of the sub-arrays is held high for subsequent cycles when the storage cells in the first row are read during the subsequent cycles.

6. The storage array of claim 5 , wherein the read bit line precharge for each of the storage cells in the first row of the sub-arrays does not precharge the local read bit lines of the storage cells in the first row of the sub-arrays during the subsequent cycles.

7. The storage array of claim 1 , wherein the plurality of sub-arrays further comprises additional sub-arrays to provide a second register for each thread of the plurality of threads, and each additional sub-array is configured to store one bit of the second register for each thread.

8. The storage array of claim 7 , wherein, within the storage array, the plurality of sub-arrays are configured into rows of the sub-arrays and columns of the sub-arrays, and the register and the second register for a first thread of the plurality of threads is configured within a single row of the rows of the sub-arrays.

9. The storage array of claim 7 , wherein, within the storage array, the plurality of sub-arrays are configured into rows of the sub-arrays and columns of the sub-arrays, and the register is associated with a first row of the rows of the sub-arrays and the second register is associated with a second row of the rows of the sub-arrays.

10. The storage array of claim 1 , each sub-array further comprising, a write multiplexer cell that is coupled between the global write bit line and each write driver, and configured to select one of the global write bit line and an additional global write bit line to write to the storage cells for each thread of the plurality of threads.

11. The storage array of claim 1 , each sub-array further comprising, an additional global write bit line to store to the storage cells for each thread of the plurality of threads.

12. The storage array of claim 1 , wherein each sub-array further comprises a second read multiplexer that is coupled to the storage cells and configured to output a second global read bit line selected from the local read bit lines output by the storage cells.

13. The storage array of claim 1 , each sub-array further comprising a control bundle including write enables, the read bit line precharge, write word lines, read word lines, and read select signals.

14. The storage array of claim 1 , wherein each storage cell comprises a static random access memory cell.

15. The storage array of claim 1 , wherein, during one cycle, a first storage cell in the sub-array is written and a second storage cell in the sub-array is read.

16. A system, comprising:

a streaming multiprocessor comprising:

a function unit; and

a storage array coupled to the function unit, the storage array comprising:

a plurality of sub-arrays configured to provide a register for each thread of a plurality of threads, each sub-array configured to store one bit of the register for each thread, and each sub-array comprising:

storage cells configured in an array of rows and columns, wherein each storage cell is associated with a different thread of the plurality of threads and stores one bit of data;

a read multiplexer coupled to the storage cells and configured to output a global read bit line selected from local read bit lines output by the storage cells;

read drivers, each read driver coupled between a read bit line precharge and one of the columns; and

write drivers, each write driver coupled between a global write bit line and one of the columns, and configured to write the global write bit line to the storage cells for each thread of the plurality of threads.

17. The system of claim 16 , wherein, within the storage array, the plurality of sub-arrays are configured into at least one row of the sub-arrays and columns of the sub-arrays.

18. The system of claim 17 , further comprising a plurality of global write bit lines, wherein each one of the global write bit lines is coupled to the global write bit line of each sub-array in one of the columns of the sub-arrays.

19. The system of claim 16 , wherein the plurality of sub-arrays further comprises additional sub-arrays to provide a second register for each thread of the plurality of threads, and each additional sub-array is configured to store one bit of the second register for each thread.

20. The system of claim 16 , each sub-array further comprising, a write multiplexer cell that is coupled between the global write bit line and each write driver, and configured to select one of the global write bit line and an additional global write bit line to write to the storage cells for each thread of the plurality of threads.

Assignments (2)
CONFIRMATORY LICENSE Recorded Apr 10, 2015
From: NVIDIA CORP
To: DARPA
Reel/Frame 035414/0779 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 16, 2013
From: KHAILANY, BRUCEK KURDO; BALFOUR, JAMES DAVID; KRASHINSKY, RONNY MEIR
To: NVIDIA CORPORATION
Reel/Frame 029638/0926 →
Continuity (1)
Related Publication 20140136778A1 · May 15, 2014