An introduction to on-chip interconnection networks and many-core single-chip computer architectures