US2023418573A1PendingUtilityA1

Channel sizing for inter-kernel communication

Assignee: ALTERA CORPPriority: Jun 24, 2015Filed: Sep 13, 2023Published: Dec 28, 2023
Est. expiryJun 24, 2035(~8.9 yrs left)· nominal 20-yr term from priority
G06F 8/41G06F 8/40G06F 9/54G06F 30/34G06F 30/327G06F 2115/08G06F 9/544G06F 30/343
69
PatentIndex Score
0
Cited by
0
References
0
Claims

Abstract

Systems and methods for dynamically sizing inter-kernel communication channels implemented on an integrated circuit (IC) are provided. Implementation characteristics of the channels, predication, and kernel scheduling imbalances may factor into properly sizing the channels for self-synchronization, resulting in optimized steady-state throughput.

Claims

exact text as granted — not AI-modified
What is claimed is: 
     
         1 . A tangible, non-transitory, machine-readable-medium, comprising machine readable instructions to:
 access a high level program comprising instructions to implement a design on an integrated circuit;   convert the high level program into a low level program to be implemented on the integrated circuit;   identify a first kernel, a second kernel, and an inter-kernel channel based on the low level program or based on the high level program, wherein the first kernel writes data to the inter-kernel channel and the second kernel reads the data from the inter-kernel channel;   identify a potential stall due to expected writes to the inter-kernel channel by the first kernel, an indication of expected reads from the inter-kernel channel by the second kernel, or both,
 wherein the expected writes of the inter-kernel channel comprises, during a first cycle, the first kernel writing to the inter-kernel channel, and, during a second cycle, the first kernel not writing to the inter-kernel channel, and 
 wherein the expected reads of the inter-kernel channel comprises, during a third cycle, the second kernel reading from the inter-kernel channel, and, during a fourth cycle, the second kernel not reading from the inter-kernel channel; 
   modify a size of the inter-kernel channel, based on a determination of a number of elements to be held in the inter-kernel channel to prevent the potential stall when the first kernel writes more elements to the inter-kernel channel than the second kernel reads or the second kernel reads more elements from the inter-kernel channel than the first kernel writes,
 wherein the size is based on the expected writes of the inter-kernel channel, the expected reads of the inter-kernel channel, or both; and 
   provide one or more kernels and the inter-kernel channel corresponding to the low level program for implementation on the integrated circuit, wherein the one or more kernels include the first and second kernels.   
     
     
         2 . The tangible, non-transitory, machine-readable medium of  claim 1 , wherein the inter-kernel channel comprises a first-in, first-out buffer. 
     
     
         3 . The tangible, non-transitory, machine-readable medium of  claim 1 , wherein the instructions are further to: identify, via the compiler, a second inter-kernel channel, wherein the first kernel writes to the second inter-kernel channel, and the second kernel reads from the second inter-kernel channel. 
     
     
         4 . The tangible, non-transitory, machine-readable medium of  claim 1 , wherein the size of the inter-kernel channel comprises a depth of the inter-kernel channel. 
     
     
         5 . The tangible, non-transitory, machine-readable medium of  claim 1 , wherein inter-kernel channel comprises at least one control signal, and wherein the at least one control signal is provided to the first kernel, the second kernel, or both. 
     
     
         6 . The tangible, non-transitory, machine-readable medium of  claim 5 , wherein the at least one control signal comprises a not full signal that indicates whether a buffer of the inter-kernel channel is full. 
     
     
         7 . The tangible, non-transitory, machine-readable medium of  claim 1 , wherein the instructions are further to identify the potential stall, wherein the potential stall would occur because a buffer of the inter-kernel channel is full. 
     
     
         8 . The tangible, non-transitory, machine-readable medium of  claim 1 , wherein the instructions are further to identify the potential stall, wherein the potential stall would occur because a buffer of the inter-kernel channel is empty. 
     
     
         9 . The tangible, non-transitory, machine-readable medium of  claim 1 , wherein the first cycle and the fourth cycle occur simultaneously, and the second cycle and the third cycle occur simultaneously. 
     
     
         10 . The tangible, non-transitory, machine-readable medium of  claim 1 , wherein the low level program provided for storage on the integrated circuit has the modified size of the inter-kernel channel. 
     
     
         11 . The tangible, non-transitory, machine-readable medium of  claim 1 , wherein the expected writes comprises an indication of a predication of the expected writes. 
     
     
         12 . The tangible, non-transitory, machine-readable medium of  claim 1 , wherein the expected writes comprises an indication of performance of conditional branches containing the expected writes. 
     
     
         13 . The tangible, non-transitory, machine-readable medium of  claim 1 , wherein the expected reads comprises an indication of a predication of the expected writes. 
     
     
         14 . The tangible, non-transitory, machine-readable medium of  claim 1 , wherein the expected writes comprises an indication of performance of conditional branches containing the expected reads. 
     
     
         15 . The tangible, non-transitory, machine-readable medium of  claim 1 , wherein the potential stall would be caused due to predication of the expected writes or the expected reads. 
     
     
         16 . The tangible, non-transitory, machine-readable medium of  claim 1 , wherein the modification of the size of the inter-kernel channel is based at least in part on predication of the expected writes, the expected reads, or both. 
     
     
         17 . A system, comprising:
 an integrated circuit;   memory storing instructions; and   a processor to execute the instructions to:
 implement a compiler; 
 access, via the compiler, a high level program comprising instructions to implement a design on the integrated circuit; 
 convert, via the compiler, the high level program into a low level program to be implemented on the integrated circuit; 
 identify, via the compiler, a first kernel, a second kernel, and an inter-kernel channel based on the low level program or based on the high level program, wherein the first kernel writes data to the inter-kernel channel and the second kernel reads the data from the inter-kernel channel; 
 identify, via the compiler, a potential stall due to expected writes to the inter-kernel channel by the first kernel, expected reads from the inter-kernel channel by the second kernel, or both,
 wherein the expected writes of the inter-kernel channel comprises, during a first cycle, the first kernel writing to the inter-kernel channel, and, during a second cycle, the first kernel not writing to the inter-kernel channel, and 
 wherein the expected reads of the inter-kernel channel comprises, during a third cycle, the second kernel reading from the inter-kernel channel, and, during a fourth cycle, the second kernel not reading from the inter-kernel channel; 
 
 modify, via the compiler, a size of the inter-kernel channel, based on a determination of a number of elements to be held in the inter-kernel channel to prevent the expected stall when the first kernel writes more elements to the inter-kernel channel than the second kernel reads or the second kernel reads more elements from the inter-kernel channel than the first kernel writes,
 wherein the size is based on the expected writes of the inter-kernel channel, the expected reads of the inter-kernel channel, or both; and 
 
 provide, via the compiler, one or more kernels and the inter-kernel channel corresponding to the low level program for implementation on the integrated circuit, wherein the one or more kernels comprise the first kernel and the second kernel. 
   
     
     
         18 . The system of  claim 17 , wherein the integrated circuit comprises a field-programmable, gate array. 
     
     
         19 . The system of  claim 17 , wherein the compiler is part of a design software package executed by the processor. 
     
     
         20 . The system of  claim 17 , wherein the instructions are further to identify the potential stall, wherein the potential stall would occur because a buffer of the inter-kernel channel is empty or full.

Join the waitlist — get patent alerts

Track US2023418573A1 — get alerts on status changes and closely related new filings.

We store only your email — no account needed. See our privacy policy.