processor design challenges