/* volatile to try to avoid the compiler seeing reserved as unused. */ staticvolatile buf workload_datasym_buf1 = { /* to have this in the data section */
.reserved[0] = 1,
};
staticvolatile sig_atomic_t done;
staticvoid sighandler(int sig __maybe_unused)
{
done = 1;
}
staticint datasym(int argc, constchar **argv)
{ int sec = 1;
while (!done) {
workload_datasym_buf1.data1++; if (workload_datasym_buf1.data1 == 123) { /* * Add some 'noise' in the loop to work around errata * 1694299 on Arm N1. * * Bias exists in SPE sampling which can cause the load * and store instructions to be skipped entirely. This * comes and goes randomly depending on the offset the * linker places the datasym loop at in the Perf binary. * With an extra branch in the middle of the loop that * isn't always taken, the instruction stream is no * longer a continuous repeating pattern that interacts * badly with the bias.
*/
workload_datasym_buf1.data1++;
}
workload_datasym_buf1.data2 += workload_datasym_buf1.data1;
} return 0;
}
DEFINE_WORKLOAD(datasym);
Messung V0.5
¤ Dauer der Verarbeitung: 0.11 Sekunden
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.