Computer Architecture: Software Aspects, Coding, and Hardware