What is the difference between dispatch unit and warp scheduler?

Dispatch unit assigns warps to the cores, so that everything can run parallel. What does Warp Scheduler do?

Greg gives a good explanation here and there are some useful block diagrams at the beginning of here.