IP Library Granted Patent US 11,367,498
Granted Patent B2
US 11,367,498 · App. 16/287,727 · Granted Jun 21, 2022

Multi-level memory hierarchy

Inventors: Xiangdong Jin (Mountain View, CA); Fen Zhou (Fremont, CA); Chengyu Xiong (San Jose, CA)
Assignee: Black Sesame Technologies Inc.
G11C29/38G06F3/0604G06F3/0644G06F3/0685G06N3/084G06F3/0688G06F9/5061G06F17/153G06F2207/4824G06N3/049G06N3/0454G11C11/54
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 11,367,498
App. No.
16/287,727
Granted
Jun 21, 2022
Kind
B2
Abstract

A method of hierarchical structuring a multi-level memory in a convolutional neural network, includes partitioning a memory into a plurality of sections, partitioning the plurality of sections into a plurality of stripes, utilizing input data from the plurality of stripes in a MAC array, outputting an intermediate result from the MAC array to at least one of the plurality of stripes of a result buffer, looping back the intermediate result from the at least one of the plurality of stripes of the result buffer to at least one of the plurality of stripes of an input data buffer and outputting a final result from the at least one of the plurality of stripes of the result buffer to at least one of the plurality of stripes of an output buffer.

Claims (82)

1. A method of hierarchical structuring a multi-level memory in a convolutional neural network, comprising:

partitioning a memory into a plurality of sections;

partitioning the plurality of sections into a plurality of stripes;

utilizing input data from the plurality of stripes in each of at least two multiply accumulate (MAC) arrays;

outputting an intermediate result from the multiply accumulate (MAC) arrays to at least one of the plurality of stripes of a result buffer;

looping back the intermediate result from the at least one of the plurality of stripes of the result buffer of a shared data buffer to at least one of the plurality of stripes of an input data buffer forming a chain process, wherein the shared buffer is shared by the at least two multiply accumulate (MAC) arrays;

outputting a final result from the at least one of the plurality of stripes of the result buffer to at least one of the plurality of stripes of an output buffer;

partitioning a multiply accumulate (MAC) weight buffer section;

partitioning an input data buffer section;

partitioning a result buffer section;

partitioning an output buffer section;

partitioning a shared data buffer section;

partitioning a bit test weight memory section;

partitioning a bit test data memory section;

partitioning an external random access memory section;

partitioning the input data buffer section into a plurality of input buffer data stripes;

partitioning the result buffer section into a plurality of result buffer stripes;

partitioning the output buffer section into a plurality of output buffer stripes;

partitioning the shared data buffer section into a plurality of shared data stripes;

partitioning the bit test data memory section into a plurality of bit test data memory stripes;

receiving the bit test weights and the input data from the external random access memory section;

decompressing the received bit test weights from the bit test weight memory section; and

storing the decompressed bit test weights from the bit test weight memory section in the multiply accumulate (MAC) weight buffer section;

importing input data from the bit test data memory section to at least one of the plurality of stripes of the shared data buffer section;

importing the input data from the at least one of the plurality of stripes of the shared data buffer section to the at least one of the plurality of stripes of the input data buffer section; and

receiving weights from the multiply accumulate (MAC) weight buffer section and the input data buffer section at the multiply accumulate (MAC) arrays.

2. The method of hierarchical structuring the multi-level memory of claim 1 , further comprising:

outputting the final result from the at least one of the plurality of stripes of the output buffer section to the at least one of the plurality of stripes of the shared data buffer section;

outputting the final result from the at least one of the plurality of stripes of the shared data buffer section to the at least one of the plurality of stripes of the bit test data memory section; and

outputting the final result from the at least one of the plurality of stripes of the bit test data memory section to the external random access memory section.

3. The method of hierarchical structuring the multi-level memory of claim 2 , further comprising:

outputting the final result from the at least one of the plurality of stripes of the output buffer section to the at least one of the plurality of stripes of the shared data buffer section;

outputting the final result from the at least one of the plurality of stripes of the shared data buffer section to the at least one of the plurality of stripes of the bit test data memory section; and

outputting the final result from the at least one of the plurality of stripes of the bit test data memory section to the external random access memory section.

4. The method of hierarchical structuring the multi-level memory of claim 3 , further comprising:

storing a width component of a data set so that a width component increases linearly in a first address direction in a memory array;

storing a height component of the data set so that a height component increases linearly in a second address direction orthogonal to the first address direction in the memory array; and

storing a depth component of the data set so that a depth component increases linearly in a third address direction symmetric to the first address direction and the second address direction in the memory array.

5. The method of hierarchical structuring the multi-level memory of claim 3 , further comprising:

storing a width component of a data set so that a width component increases linearly in a first address direction in a memory array;

storing a height component of the data set so that a height component increases linearly in a second address direction orthogonal to the first address direction in the memory array; and

storing a depth component of the data set so that a depth component increases linearly in a third address direction symmetric to the first address direction and the second address direction in the memory array.

6. A method of hierarchical structuring a multi-level memory in a convolutional neural network, comprising:

partitioning a memory into a plurality of sections;

partitioning the plurality of sections into a plurality of stripes;

utilizing input data from the plurality of stripes in each of at least two multiply accumulate (MAC) arrays;

outputting an intermediate result from the multiply accumulate (MAC) arrays to at least one of the plurality of stripes of a result buffer;

looping back the intermediate result from the at least one of the plurality of stripes of the result buffer of a shared data buffer to at least one of the plurality of stripes of an input data buffer forming a chain process, wherein the shared buffer is shared by the at least two multiply accumulate (MAC) arrays;

outputting a final result from the at least one of the plurality of stripes of the result buffer to at least one of the plurality of stripes of an output buffer;

partitioning a multiply accumulate (MAC) weight buffer section;

partitioning an input data buffer section;

partitioning a result buffer section;

partitioning an output buffer section;

partitioning a shared data buffer section;

partitioning a bit test weight memory section;

partitioning a bit test data memory section;

partitioning an external random access memory section;

partitioning the input data buffer section into a plurality of input buffer data stripes;

partitioning the result buffer section into a plurality of result buffer stripes;

partitioning the output buffer section into a plurality of output buffer stripes;

partitioning the shared data buffer section into a plurality of shared data stripes;

partitioning the bit test data memory section into a plurality of bit test data memory stripes;

partitioning the plurality of input buffer data stripes into a plurality of input buffer data tiles;

partitioning the plurality of result buffer stripes into a plurality of result buffer tiles;

partitioning the plurality of output buffer stripes into a plurality of output buffer tiles;

partitioning the plurality of shared data stripes into a plurality of shared data tiles;

partitioning the plurality of bit test data stripes into a plurality of bit test data memory tiles;

importing input data from the bit test data memory section to at least one of the plurality of tiles of the shared data buffer section;

importing the input data from the at least one of the plurality of tiles of the shared data buffer section to the at least one of the plurality of tiles of the input data buffer section; and

receiving weights from the multiply accumulate (MAC) weight buffer section and the input data buffer section at the multiply accumulate (MAC) arrays.

7. The method of hierarchical structuring the multi-level memory of claim 6 , further comprising:

outputting the final result from the at least one of the plurality of tiles of the output buffer section to the at least one of the plurality of tiles of the shared data buffer section;

outputting the final result from the at least one of the plurality of tiles of the shared data buffer section to the at least one of the plurality of tiles of the bit test data memory section; and

outputting, the final result from the at least one of the plurality of tiles of the bit test data memory section to the external random access memory section.

8. The method of hierarchical structuring the multi-level memory of claim 7 , further comprising;

storing a width component a data set so that a width component increases linearly in a first address direction in a memory array;

storing a height component of the data set so that a height component increases linearly in a second address direction orthogonal to the first address direction in the memory array; and

storing a depth component of the data set so that a depth component increases linearly in a third address direction symmetric to the first address direction and the second address direction in the memory array.

9. The method of hierarchical structuring the multi-level memory of claim 7 , further comprising:

storing a width component of a data set so that a width component increases linearly in a first address direction in a memory array;

storing a height component of the data set so that a height component increases linearly in a second address direction orthogonal to the first address direction in the memory array; and

storing a depth component of the data set so that a depth component increases linearly in a third address direction symmetric to the first address direction and the second address direction in the memory array.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 3, 2021
From: BLACK SESAME INTERNATIONAL HOLDING LIMITED
To: BLACK SESAME TECHNOLOGIES INC.
Reel/Frame 058301/0364 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 23, 2019
From: JIN, XIANGDONG; ZHOU, FEN; XIONG, CHENGYU
To: BLACK SESAME INTERNATIONAL HOLDING LIMITED
Reel/Frame 050159/0815 →
Continuity (2)
Provisional Application 62728294 · Sep 7, 2018
Related Publication 20200082898A1 · Mar 12, 2020