# US 2014/0152680 A1 · System and method for efficient resource management of a signal flow programmed digital signal processor code

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2014/0152680 A1
- Document ID: US20140152680A1
- Status: Published application
- Kind: A1
- Application number: 13/691,670
- Filed: 2012-11-30
- Published: 2014-06-05
- Earliest claimed: 2012-11-30
- Assignees: Analog Devices, Inc.
- Applicants: Analog Devices, Inc.
- Inventors: Mohammed Chalil; John Joseph
- Web page: https://patentgrep.com/patent/US20140152680A1

## CPC

- G06T 1/60: Memory management
- G06F 9/5016: {the resource being the memory}
- G06F 12/02: Addressing or allocation; Relocation (program address sequencing G06F9/00; arrangements for selecting an address in a digital store G11C8/00)
- G06T: IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A method according to an embodiment of a system for efficient resource management of a signal flow programmed digital signal processor code is provided and includes determining a connection sequence of a plurality of algorithm elements in a schematic of a signal flow for an electronic circuit, the connection sequence indicating connections between the algorithm elements and a sequence of processing the algorithm elements according to the connections, determining a buffer sequence indicating an order of using the plurality of memory buffers to process the plurality of algorithm elements according to the connection sequence, and reusing at least some of the plurality of memory buffers according to the buffer sequence.

## Claims

### Claim 1

A method, comprising:
determining a connection sequence of a plurality of algorithm elements in a schematic of a signal flow for an electronic circuit, wherein the connection sequence indicates connections between the algorithm elements and a sequence of processing the algorithm elements according to the connections;
determining a buffer sequence indicating an order of using a plurality of memory buffers to process the plurality of algorithm elements according to the connection sequence; and
reusing at least some of the plurality of memory buffers according to the buffer sequence.

### Claim 2 (depends on 1)

The method of claim 1, wherein for each algorithm element, at least one input is received at the algorithm element and at least one output is generated by the algorithm element, wherein the at least one output can be another input to at least one other algorithm element, wherein one connection provides the input to the algorithm element, and another connection accepts the output from the algorithm element and provides the output as the another input to the at least one other algorithm element, and wherein each connection is associated with one of the memory buffers, wherein the output on the another connection is written to the memory buffer, and read as the another input by the at least one other algorithm element.

### Claim 3 (depends on 2)

The method of claim 2, wherein the buffer sequence comprises a numbered list of the memory buffers, arranged according to a sequence in which each of the outputs from the algorithm elements is written to each memory buffer, wherein repeated memory buffer numbers in the buffer sequence indicate buffer reuse of the corresponding memory buffers.

### Claim 4 (depends on 1)

The method of claim 1, wherein determining the buffer sequence comprises:
numbering the connections, the algorithm elements and the memory buffers in an order;
for each connection, identifying a first algorithm element that generates an output on the connection before any other algorithm element, and identifying a second algorithm element that receives the output as an input on the connection after all other algorithm elements;
arranging the first algorithm elements of all the connections in an allocation order, wherein the allocation order comprises an ascending order of first algorithm element numbers;
generating, according to the allocation order, a buffer index for each connection, wherein the buffer index for the connection is the same as another buffer index for a re-use connection, wherein the second algorithm element of the re-use connection is the same as the first algorithm element of the connection, and wherein the buffer sequence comprises the buffer index for all connections arranged according to the allocation order.

### Claim 5 (depends on 1)

The method of claim 1, wherein the determining the buffer sequence comprises:
constructing a first memory life matrix (MLM) comprising N rows and M columns, wherein N is the number of the algorithm elements using the memory buffers, and M is the number of the connections, wherein each row is named according to the number of the corresponding algorithm element, and each column is named according to the number of the corresponding connection;
arranging the N algorithm elements in an ascending order in the N rows and the M connections in an ascending order in the M columns;
for each cell in the first MLM, marking a first symbol if the algorithm element corresponding to the row of the cell generates an output on the connection corresponding to the column of the cell, and marking a second symbol if the algorithm element corresponding to the row of the cell receives an input on the connection corresponding to the column of the cell; and
generating a second MLM by rearranging the rows in the first MLM such that in any given column, the first symbol appears before the second symbol.

### Claim 6 (depends on 5)

The method of claim 5, further comprising:
generating a first allocation list comprising one row and M columns corresponding to the M columns of the MLM, wherein each cell in the allocation list comprises the row number corresponding to the column of the second MLM having the first symbol;
generating a second allocation list by rearranging the M columns of the first allocation list according to an allocation order comprising an ascending order of the row numbers in the first allocation list;
generating a first free list comprising one row and M columns corresponding to the M columns of the MLM, wherein each cell in the free list comprises the highest row number corresponding to the column of the second MLM having the second symbol; and
generating a second free list by rearranging the M columns of the first free list according to the allocation order.

### Claim 7 (depends on 6)

The method of claim 6, further comprising:
for each entry in the second allocation list, determining if the entry is found in the second free list;
identifying connection numbers corresponding to the entry in the second free list;
freeing the memory buffers corresponding to the identified connections; and
allocating at least one of the freed memory buffers to another connection corresponding to the entry in the second allocation list.

### Claim 8 (depends on 1)

The method of claim 1, wherein determining the connection sequence comprises:
identifying connections that provide inputs to some algorithm elements;
identifying connections that accept outputs from some other algorithm elements; and
determining an order in which the inputs are received and outputs are generated at the algorithm elements.

### Claim 9 (depends on 1)

The method of claim 1, wherein the schematic is generated using a graphical simulator on a computing device.

### Claim 10 (depends on 1)

The method of claim 1, wherein each algorithm element represents an emulation of a functional component of the electronic circuit, configured to process one or more inputs according to a predefined algorithm to generate one or more outputs.

### Claim 11

Logic encoded in non-transitory media that includes instructions for execution and when executed by a processor, is operable to perform operations comprising:
determining a connection sequence of a plurality of algorithm elements in a schematic of a signal flow for an electronic circuit, wherein the connection sequence indicates connections between the algorithm elements and a sequence of processing the algorithm elements according to the connections;
determining a buffer sequence indicating an order of using a plurality of memory buffers to process the plurality of algorithm elements according to the connection sequence; and
reusing at least some of the plurality of memory buffers according to the buffer sequence.

### Claim 12 (depends on 11)

The logic of claim 11, wherein determining the buffer sequence comprises:
numbering the connections, the algorithm elements and the memory buffers in an order;
for each connection, identifying a first algorithm element that generates an output on the connection before any other algorithm element, and identifying a second algorithm element that receives the output as an input on the connection after all other algorithm elements;
arranging the first algorithm elements of all the connections in an allocation order, wherein the allocation order comprises an ascending order of first algorithm element numbers;
generating, according to the allocation order, a buffer index for each connection, wherein the buffer index for the connection is the same as another buffer index for a re-use connection, wherein the second algorithm element of the re-use connection is the same as the first algorithm element of the connection, and wherein the buffer sequence comprises the buffer index for all connections arranged according to the allocation order.

### Claim 13 (depends on 11)

The logic of claim 11, wherein the determining the buffer sequence comprises:
constructing a first MLM comprising N rows and M columns, wherein N is the number of the algorithm elements using the memory buffers, and M is the number of the connections, wherein each row is named according to the number of the corresponding algorithm element, and each column is named according to the number of the corresponding connection;
arranging the N algorithm elements in an ascending order in the N rows and the M connections in an ascending order in the M columns;
for each cell in the first MLM, marking a first symbol if the algorithm element corresponding to the row of the cell generates an output on the connection corresponding to the column of the cell, and marking a second symbol if the algorithm element corresponding to the row of the cell receives an input on the connection corresponding to the column of the cell; and
generating a second MLM by rearranging the rows in the first MLM such that in any given column, the first symbol appears before the second symbol.

### Claim 14 (depends on 13)

The logic of claim 13, wherein the determining the buffer sequence further comprises:
generating a first allocation list comprising one row and M columns corresponding to the M columns of the MLM, wherein each cell in the allocation list comprises the row number corresponding to the column of the second MLM having the first symbol;
generating a second allocation list by rearranging the M columns of the first allocation list according to an allocation order comprising an ascending order of the row numbers in the first allocation list;
generating a first free list comprising one row and M columns corresponding to the M columns of the MLM, wherein each cell in the free list comprises the highest row number corresponding to the column of the second MLM having the second symbol; and
generating a second free list by rearranging the M columns of the first free list according to the allocation order.

### Claim 15 (depends on 14)

The logic of claim 14, wherein the determining the buffer sequence further comprises:
for each entry in the second allocation list, determining if the entry is found in the second free list;
identifying connection numbers corresponding to the entry in the second free list;
freeing the memory buffers corresponding to the identified connections; and
allocating at least one of the freed memory buffers to another connection corresponding to the entry in the second allocation list.

### Claim 16

An apparatus, comprising:
a memory element for storing data, wherein the memory element comprises a plurality of memory buffers; and
a processor operable to execute instructions associated with the data, wherein the processor and the memory element cooperate, such that the apparatus is configured for:
determining a connection sequence of a plurality of algorithm elements in a schematic of a signal flow for an electronic circuit, wherein the connection sequence indicates connections between the algorithm elements and a sequence of processing the algorithm elements according to the connections;
determining a buffer sequence indicating an order of using the plurality of memory buffers to process the plurality of algorithm elements according to the connection sequence; and
reusing at least some of the plurality of memory buffers according to the buffer sequence.

### Claim 17 (depends on 16)

The apparatus of claim 16, wherein determining the buffer sequence comprises:
numbering the connections, the algorithm elements and the memory buffers in an order;
for each connection, identifying a first algorithm element that generates an output on the connection before any other algorithm element, and identifying a second algorithm element that receives the output as an input on the connection after all other algorithm elements;
arranging the first algorithm elements of all the connections in an allocation order, wherein the allocation order comprises an ascending order of first algorithm element numbers;
generating, according to the allocation order, a buffer index for each connection, wherein the buffer index for the connection is the same as another buffer index for a re-use connection, wherein the second algorithm element of the re-use connection is the same as the first algorithm element of the connection, and wherein the buffer sequence comprises the buffer index for all connections arranged according to the allocation order.

### Claim 18 (depends on 16)

The apparatus of claim 16, wherein the determining the buffer sequence comprises:
constructing a first MLM comprising N rows and M columns, wherein N is the number of the algorithm elements using the memory buffers, and M is the number of the connections, wherein each row is named according to the number of the corresponding algorithm element, and each column is named according to the number of the corresponding connection;
arranging the N algorithm elements in an ascending order in the N rows and the M connections in an ascending order in the M columns;
for each cell in the first MLM, marking a first symbol if the algorithm element corresponding to the row of the cell generates an output on the connection corresponding to the column of the cell, and marking a second symbol if the algorithm element corresponding to the row of the cell receives an input on the connection corresponding to the column of the cell; and
generating a second MLM by rearranging the rows in the first MLM such that in any given column, the first symbol appears before the second symbol.

### Claim 19 (depends on 18)

The apparatus of claim 18, wherein the determining the buffer sequence further comprises:
generating a first allocation list comprising one row and M columns corresponding to the M columns of the MLM, wherein each cell in the allocation list comprises the row number corresponding to the column of the second MLM having the first symbol;
generating a second allocation list by rearranging the M columns of the first allocation list according to an allocation order comprising an ascending order of the row numbers in the first allocation list;
generating a first free list comprising one row and M columns corresponding to the M columns of the MLM, wherein each cell in the free list comprises the highest row number corresponding to the column of the second MLM having the second symbol; and
generating a second free list by rearranging the M columns of the first free list according to the allocation order.

### Claim 20 (depends on 19)

The logic of claim 19, wherein the determining the buffer sequence further comprises:
for each entry in the second allocation list, determining if the entry is found in the second free list;
identifying connection numbers corresponding to the entry in the second free list;
freeing the memory buffers corresponding to the identified connections; and
allocating at least one of the freed memory buffers to another connection corresponding to the entry in the second allocation list.
