Function-Level Processor

FLP is a novel processing class offering an architecture template for efficient execution of many vision flows simultaneously. FLP raises architecture programming abstraction from instruction-level (as in an ILP) to function-level. By coarsening the programmability, FLP achieves a comparable power / performance efficiency to custom-HWs. At the same time, FLP offers much higher flexibility than individual custom-HWs by providing a Function-Set-Architecture (FSA).

3

The success of an FLP depends on the selection of FBs and their potential composition making it a crucial aspect defining flexibility and usability. New research is needed that shifts from optimizing individual applications to identifying common functions that are present in many applications of a market. The challenge becomes to define a small enough set of sufficiently composable functions that provide meaningful computation for a given market. Overall, a minimal but sufficiently contiguous set of FBs is desired.

4

A promising approach is to analyze existing programming frameworks (such as OpenCV for vision) for frequently used function primitives (as candidates to be an FB) and their composition. The basic idea is to identify the required functions for each application. The first step is to extract the Function Call Graph (CFG) from each application, and then converting into to Synchronous Data Flow (SDF) graphs. We consider the SDF presentation more suitable for Function-Set exploration, as it exposes all possible orders and connectivity among the function within individual applications. The most critical step is the FSA explorer, which overlays the SDF graphs of all applications to create a combined graph with all applications.