Linux has had support for cores with different capabilities for ~a decade, when arm introduced big.LITTLE. systemd puts background services in "slices", which can have properties set in bulk.
systemctl set-property system.slice AllowedCPUs=16-19
Would set the "system" slice to certain pinned cores, but there's nothing automatic.