This paper compares different multi-core processor architectures in the embedded and compute space and analyzes their challenges specifically from a software development, analysis, and optimization perspective. It compares different fundamental approaches to concurrency in software and hardware, outline trends to hardware and software architectures in specific application domains, and analyzes the specific resulting challenges to software programming and hardware design. The paper concludes with an analysis of tool requirements resulting from multi-core challenges and outline associated trends.