Chip-level multithreading