예제 #1
0
def calc_plot_stats(PREDICTOR, CLASS, TEST, OUTPUT_DIR, DATE, CYCLE_START,
                    CYCLE_END):
    HOME = os.environ['HOME']
    path = HOME + '/' + OUTPUT_DIR + '/gem5_out/' + CLASS + '_' + PREDICTOR + '/' + TEST + '.txt'
    stats = open(path, 'r')

    harvard = util.Harvard(TABLE_HEIGHT=128,
                           SIGNATURE_LENGTH=64,
                           HYSTERESIS=0.005,
                           EMERGENCY_V=1.358,
                           LEAD_TIME=20)
    cycle_dump = util.Cycle_Dump(stats)

    supply_curr = [0]
    supply_volt = [0]
    VE = [False]

    while True:
        cycle_dump.reset()
        EOF = cycle_dump.parseCycle()
        harvard.tick(cycle_dump)
        if EOF:
            break

        supply_curr.append(None)
        supply_curr.append(cycle_dump.supply_curr)
        supply_curr[-2] = (supply_curr[-1] + supply_curr[-3]) / 2

        supply_volt.append(None)
        supply_volt.append(cycle_dump.supply_volt)
        supply_volt[-2] = (supply_volt[-1] + supply_volt[-3]) / 2

        VE.append(False)
        VE.append(harvard.VEflag)

        # if cycle_dump.cycle % 1000 < 3:
        #     print (cycle_dump.cycle)

        if cycle_dump.cycle > CYCLE_END:
            break
        # if cycle_dump.cycle > CYCLE_START:
        #     cycle_dump.dump()
        #     harvard.print()
        #     input()

        # if (harvard.VEflag or harvard.Actionflag) and cycle_dump.cycle > CYCLE_START:
        #     cycle_dump.dump()
        #     harvard.print()
        #     input()

    #print how many events
    for k, v in cycle_dump.event_count.items():
        print(util.event_map[k], ": ", v)

    np.save('plot/data/ideal_curr' + DATE + '_supply_curr_' + TEST,
            np.array(supply_curr))
    np.save('plot/data/ideal_curr' + DATE + '_supply_volt_' + TEST,
            np.array(supply_volt))
    np.save('plot/data/ideal_curr' + DATE + '_VE_' + TEST, np.array(VE))
예제 #2
0
def calc_plot_stats(PREDICTOR, CLASS, TEST, OUTPUT_DIR, DATE, INSTRUCTIONS,
                    PDN):
    HOME = os.environ['HOME']
    test_name = TEST + '_' + INSTRUCTIONS + '_' + '1' + '_' + CLASS + '_' + PDN + '_' + PREDICTOR
    path = HOME + '/' + OUTPUT_DIR + '/gem5_out/' + test_name + '/stats.txt'
    print(path)
    stats = open(path, 'r')

    cycle_dump = util.Cycle_Dump(stats)
    while (cycle_dump.parseCycle()):
        cycle_dump.dump()
        input()
예제 #3
0
import numpy as np
import util
from enum import Enum

#PARAMETERS
HOME = os.environ['HOME']
PREDICTOR = 'HarvardPowerPredictor_1'
CLASS = 'DESKTOP'
TEST = 'same_cycle'
path = HOME + '/output_11_18/gem5_out/' + CLASS + '_' + PREDICTOR + '/' + TEST + '.txt'
stats = open(path, 'r')
#PARAMETERS

CYCLE_START = 25000
SIGNATURE_LENGTH = 512
cycle_dump = util.Cycle_Dump(stats)
action = [False]
VE = [False]

while True:
    cycle_dump.reset()
    EOF = cycle_dump.parseCycle()
    harvard.tick(cycle_dump)
    if EOF:
        break

    if cycle_dump.cycle % 1000 < 3:
        print(cycle_dump.cycle)

    VE.append(False)
    VE.append(harvard.VEflag)