{'fraction_non_alphanumeric': 0.022291021671826627, 'fraction_numerical': 0.007430340557275541, 'mean_word_length': 5.287937743190661, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
Approximate trivial instructions

Approximate computing has the potential to improve performance and energy efficiency in high-performance processors. This work focuses on the impact of approximating conventionally non-trivial instructions to trivial instructions. Instructions which do not need to be processed due to the nature of their operands, such as division by 1 or addition with 0 are trivial instructions. By approximating instructions which results in an acceptable level of accuracy in programs' outputs, we can increase the number of trivial instructions and enhance power and performance of trivial bypassing. To approximate integer values, we mask the least significant bits (LSBs) of instructions' operands. The number of masked bits is under the control of programmers. To approximate floating-point values, we propose two different schemes. The first scheme sets a threshold and approximates the values that lie within the threshold region. A 32- or 64-bit comparator, depending on the operand size, is used for comparison between the operand and the threshold. Thus, instructions which would have used the expensive floating-point units are bypassed and only a comparator and a few gates are used instead. The second scheme reduces cost of approximation by replacing full-blown comparators with smaller ones and performing inexact comparisons between the operand and the threshold. Our evaluations using a diverse set of benchmarks reveal that precise comparison and trivial bypassing improve energy-delay by 21% and 13%, respectively while the inexact approximation improves energy-delay by 22%.