The Six Great Ideas in Computer Architecture