Intel Skylake has a single, "unified" scheduler (drawing on the left from WikiChip).
AMD Zen uses separate schedulers for each integer execution unit and one scheduler for the floating point execution units (drawing on the right from WikiChip, which took it from an AMD presentation).
What are the advantages and disadvantages of either design?
How does it affect micro-optimization of x86 code? (I know that this can get quite complex and subtle, see e.g. How are x86 uops scheduled, exactly? for a related question that, at the time of writing, was more specific to Intel CPUs with its unified scheduler).