The FlexTiles project proposes a 3D stacked chip architecture consisting of a manycore layer, FPGA layer, and 3D network-on-chip (NoC). This architecture aims to provide both good parallelization capabilities and customizable hardware through runtime reconfiguration of the FPGA layer. A holistic approach is taken including models of execution, computation, and programming to efficiently map applications to the flexible hardware and enable self-adaptive capabilities such as dynamic task allocation and hardware migration in response to changes.
Manycore is a main issue for industrials.
For industrials, programmability means: time to market by reducing software development costs thanks to reuse of legacy software.
But what about manycores? What about homogeneous manycores? What about heterogeneous manycores
Industrials think it is not necessary to bring complex architecture that are not programmable.
They want to keep development as simple as possible.
Performance is not coming from frequency anymore, but who cares? It must be kept as easy as possible.
Some examples : The Tilera processor: 100 cores. Already a manycore!
40nm, 1.5GHz, 55W, C/C++
Can be programmed through C and C++ thanks to an IDE (Integrated Development Environment)MDE (multicore development environment) based on a SMP (symetric multiprocessor)
Bare Metal Environment
Standard Debugging Tools (gdb 7)
---
Fermi from Nvidia 512 cores organised in 16 Streaming Multiprocessor
Programmability:
CUDA parallel programming model: multi-threading
Programming languages: C/C++, openCL, …
---
MPPA from Kalray: 256 cores organised in 16 clusters
Programmability:
specific data flow language: sigmaC
Tools to automatically map the application
---
These homogeneous chips are “easy” to program and offers tools to help programmers to fine tune.
But the tools are only giving performance for static applications.
An application is a set of cluster groups. The behaviour of the cluster groups is defined at the runtime. The behaviour of the cluster is defined at compiled time.
A complete platform to ensure programming efficiency and self adaptive behaviour