The ENCORE project objective is to achieve a breakthrough on the usability, reliability, code portability, and performance scalability of multicore architectures. Design complexity and power density implications stopped the trend towards faster single-core processors. The current trend is to double the core count every 18 months, leading to chips with 100+ cores in 10-15 years. Developing parallel applications to harness such multicores is the key challenge for scalable computing systems. The ENCORE project aims at achieving a breakthrough on the usability, code portability, and performance scalability of such multicores. ENCORE will focus on runtime management of parallelism and data locality for future heterogeneous many-core processors. The project achieves this through: First, defining an easy to use parallel programming model that offers code portability across several architectures. Second, developing a runtime management system that will dynamically detect, manage, and exploit parallelism, data locality, and shared resources. And third, providing adequate hardware support for the parallel programming and runtime environment that ensures scalability, performance, and cost-efficiency. The technology will be developed and evaluated using multiple partner applications, and industry-standard benchmarks, ranging from massively parallel high-performance computing codes, where performance and efficiency are paramount, to embedded parallel workloads with strong real-time and energy constraints. The project integrates all partners under a common runtime system running on real multicore platforms, a shared FPGA architecture prototype, and a large-scale software simulated architecture. Architecture features will be validated through implementation on ARM’s detailed development infrastructure. ENCORE takes a holistic approach to parallelization and programmability by analyzing the requirements of several relevant applications, by parallelizing these applications using the proposed programming model, by optimizing the runtime system for a range of parallel architectures, and by developing hardware support for the runtime system.