support reading multiple opcodes at once
refactor again: return cachelines