Hyperthreading does not advance work simultaneously. Hyperthreading is a way to improve performance by reducing context switching. It allows the OS to schedule work on more cores than actually exist. If hyperthreading is in play and the OS is scheduling work on four cores, in the past this has meant the processor has two genuine cores and two virtual cores. For any given clock cycle, only two genuine cores complete work simultaneously.
As always there's no free lunch in that if the OS is not hyperthreading aware, it can actually make incorrect scheduling decisions and reduce peformance. For instance, if the OS schedules work on two cores (one physical and one virtual) and leaves the others idle, it will have asked one physical core to complete all the work instead of dividing it equally between the two physical cores. As far as the OS is concerned, it did the right thing by scheduling the work simultaneously. A hyperthreading aware OS won't make that mistake.