In this paper, we present FLAME (FLexible Abstract Machine Expression), a graph-based machine representation methodology to support a wide range of architectural organizations in analytical models while allowing developers to define specific components as abstractions or refine the level of detail for a desired hardware part as necessary.
Significance and Impact
We present the design and implementation of FLAME: a graph-based machine representation technique to increase the expressiveness, precision, and flexibility of structured analytical modeling schemes. We also provide a description for the multi-layer graph representation and design an accompanying class hierarchy to represent the hardware components as nodes and edges of the graph. We demonstrate the capabilities of FLAME by predicting the performance of scientific kernels on a multi-core CPU modeled by FLAME.
- FLAME follows an object-oriented approach to express a topological and semantical relationship between different hardware components.
- FLAME comes with a predefined set of abstract and leaf-level (i.e., non-abstract) class implementations for common hardware. The model developers can extend the abstract classes to build their own components and reuse the leaf-level implementations as the sub-components of their custom hardware.
- The predict() function is key to implementing flexible and precise performance models with FLAME, and any component extending the RESOURCE class needs to implement it. The predict() function, as shown in Listing 3, takes three parameters, a METRIC, a pointer to the Aspen Application Model (AAM), and the METHOD and returns the value calculated by the function.
The slowdown of Moore’s law has caused an escalation in architectural diversity over the last decade, and agile development of domain-specific heterogeneous chips is becoming a high priority. However, this agile development must also consider portable programming environments and other architectural constraints in the system design. More importantly, understanding the role of each component in an end-to-end system design is important to both architects and application developers and must include metrics like power, performance, space, cost, and reliability. Being able to quickly and precisely characterize the needs of an application in the early stages of hardware design is an essential step toward converging on the primary components of these increasingly heterogeneous platforms. In this paper, we introduce FLAME, a graph-based machine representation to flexibly model a given hardware design at any desired resolution while providing the ability to refine specific components along the hierarchy. FLAME allows each processing unit in the system to declare its specific capabilities and enables higher level elements to reuse and leverage these declarations to form more complex system topologies. Applications are characterized with the Aspen application model; each component has the ability to report its characteristic behavior for a given application model against a supported metric. We demonstrate the feasibility of FLAME for several workloads via multi-core machine representations on different levels abstraction.