The event that perf calls "stalled-cycles-backend" is a "generic" event that is implemented differently on different processor models. The definitions are a pain to find, but in the CentOS 7.6 kernel source, the definitions are in "arch/x86/events/intel/core.c". For Sandy Bridge (Xeon E5-26xx), the definition is Event 0xB1, Umask 0x01, INV=1, CMASK=1. Looking up this event in Chapter 19 of Volume 3 of the Intel Architectures SW Developer's Manual (document 325384-071, October 2019), Table 19-3 says that on Skylake Xeon (and Cascade Lake Xeon), this event means the same thing: "Counts cycles during which no uops were dispatched from the Reservation Station (RS) per thread."
I recommend against using these "generic" events if you want to understand what is being counted. It is a pain to go hunting in the kernel source for the definitions, or to build a test program to read the actual MSRs that perf programs. The first one that I tested today is actually wrong -- on a Xeon E5 v4 system, the event "uops_executed.core_cycles_none" is programmed as Event 0xb1, Umask 0x02, INV=1, but the CMASK is not set to 1. Section 18.2 of Volume 3 of the SWDM says that INV is ignored if CMASK is zero, so this actually counts total Uops executed, not cycles with no Uops executed. (The same event is programmed correctly on an SKX box running exactly the same kernel.)
An example that counts total cycles, cycles with no Uops dispatched, and cycles with at least one Uop dispatched while running the Intel Memory Latency Tester:
perf stat -e r0043003c -e r01c301b1 -e r014301b1 ./mlc --idle_latency
Intel(R) Memory Latency Checker - v3.7
Command line parameters: --idle_latency
Using buffer size of 2000.000MiB
*** Unable to modify prefetchers (try executing 'modprobe msr')
*** So, enabling random access for latency measurements
Each iteration took 182.4 core clocks ( 87.1 ns)
Performance counter stats for './mlc --idle_latency':
91,815,806,587 r0043003c
64,132,006,584 r01c301b1
27,683,941,060 r014301b1
14.587156882 seconds time elapsed