Update traceweight query
This commit is contained in:
@@ -16,8 +16,17 @@ sub query {
|
||||
my $extra =
|
||||
Filters::build_filter_clause( $experiment_dir, @filter_config_names );
|
||||
|
||||
# This query basically asks: How much faultspace area
|
||||
# ended up in each possible outcome?
|
||||
# The "SUM(t.time2 - t.time1 + 1)" part combined with the
|
||||
# "JOIN result_GenericExperimentMessage" part repeats each
|
||||
# equivalence class for each injection, so the faultspace area
|
||||
# is "equivalence interval" in ticks (t.time2 - t.time1 + 1) times
|
||||
# the number of injected bits.
|
||||
# For a single byte pilot (e.g., uint8 variable), the faultspace area
|
||||
# would be inflated by x8 (8 possible bits to inject).
|
||||
my $querystring = "SELECT
|
||||
benchmark, resulttype, sum(t.time2 - t.time1 + 1) AS faults
|
||||
benchmark, resulttype, SUM(t.time2 - t.time1 + 1) AS faults
|
||||
FROM variant v
|
||||
JOIN trace t ON v.id = t.variant_id
|
||||
JOIN fspgroup g ON g.variant_id = t.variant_id AND g.instr2 = t.instr2 AND g.data_physical_address = t.data_physical_address
|
||||
|
||||
@@ -22,12 +22,26 @@ sub query {
|
||||
# faultspace area is not repeated.
|
||||
# The "COUNT(*)" part counts the number of equivalence classes
|
||||
# (or the number of pilots in other words).
|
||||
# The number of actual injections is (probably/hopefully) 8 * pilots,
|
||||
# because we run with --inject-single-bit.
|
||||
# We expect the "weight" to be equal to the number of pilots for the
|
||||
# IP benchmark, as the IP injections are only a single tick long.
|
||||
#
|
||||
# We run with --inject-single-bit, so FAIL* produces one result
|
||||
# per bit (8 * p.data_width).
|
||||
# This means "area" matches the ResultsData.pm query and
|
||||
# can be used as a denominator (to calculate marker percentages
|
||||
# that work better between different execution modes, as we don't
|
||||
# want to compare a variable that is "live" for 100 ticks to one
|
||||
# that is "live" for 5):
|
||||
# - area == SUM(resultsdata.faults) over all resulttypes
|
||||
#
|
||||
# In the IP benchmark every equivalence class is one tick long and
|
||||
# one byte wide, so we expect the following relations:
|
||||
# - weight == pilots == instruction count
|
||||
# - area == injections == 8 * pilots
|
||||
my $querystring = "SELECT
|
||||
benchmark, SUM(t.time2 - t.time1 + 1) AS weight, COUNT(*) AS pilots
|
||||
benchmark,
|
||||
SUM(t.time2 - t.time1 + 1) AS weight,
|
||||
SUM((t.time2 - t.time1 + 1) * p.data_width) * 8 AS area,
|
||||
SUM(p.data_width) * 8 AS injections,
|
||||
COUNT(*) AS pilots
|
||||
FROM variant v
|
||||
JOIN trace t ON v.id = t.variant_id
|
||||
JOIN fspgroup g ON g.variant_id = t.variant_id AND g.instr2 = t.instr2 AND g.data_physical_address = t.data_physical_address
|
||||
|
||||
Reference in New Issue
Block a user