How processors should be architected