Linux 5.6 To Make Use Of Intel Ice Lake's Fast Short REP MOV For Faster memmove()
While Intel has offered good Ice Lake support since before the CPUs were shipping (sans taking a bit longer for the Thunderbolt support as a key lone exception, since resolved), a feature that's been publicly known since 2017 is the Fast Short REP MOV behavior and finally with Linux 5.6 that is being made use of for faster memory movements.
The Fast Short REP MOV with Icelake allows for faster moves of data from one location to another. With the upcoming Linux 5.6 cycle the Fast Short REP MOV (FSRM) is finally being added to the CPU features (X86_FEATURE_FSRM) for easily detecting its presence on supported CPUs. Intel's Tony Luck who added the patch explained, "Beginning with processors based on Ice Lake Client microarchitecture, REP MOVSB performance of short operations is enhanced. The enhancement applies to string lengths between 1 and 128 bytes long."
While no numbers were provided, at least back in 2017 when Intel began talking up the new/improved Ice Lake instructions, Fast Short REP MOVs were noted as being quite meaningful. But the more interesting work besides just adding the FSRM to the x86 feature code is wiring it up for memmove(). The kernel's memmove() functionality will now use the REP MOVSB instruction for short copies on systems supporting FSRM.
This patch is currently queued in the x86 Assembly area before the Linux 5.6 merge window in the next few weeks.
It will be interesting to see if this ends up providing a meaningful impact in performance on Intel Ice Lake for workloads with a lot of memmove calls for moving around data in memory.
The Fast Short REP MOV with Icelake allows for faster moves of data from one location to another. With the upcoming Linux 5.6 cycle the Fast Short REP MOV (FSRM) is finally being added to the CPU features (X86_FEATURE_FSRM) for easily detecting its presence on supported CPUs. Intel's Tony Luck who added the patch explained, "Beginning with processors based on Ice Lake Client microarchitecture, REP MOVSB performance of short operations is enhanced. The enhancement applies to string lengths between 1 and 128 bytes long."
While no numbers were provided, at least back in 2017 when Intel began talking up the new/improved Ice Lake instructions, Fast Short REP MOVs were noted as being quite meaningful. But the more interesting work besides just adding the FSRM to the x86 feature code is wiring it up for memmove(). The kernel's memmove() functionality will now use the REP MOVSB instruction for short copies on systems supporting FSRM.
This patch is currently queued in the x86 Assembly area before the Linux 5.6 merge window in the next few weeks.
It will be interesting to see if this ends up providing a meaningful impact in performance on Intel Ice Lake for workloads with a lot of memmove calls for moving around data in memory.
6 Comments