ruby: recorder: Fix (de-)serializing with different cache block-sizes

Upon aggregating records, serialize system's cache-block size, as the
cache-block size can be different when restoring from a checkpoint. This way,
we can correctly read all records when restoring from a checkpoints, even if
the cache-block size is different.

Note, that it is only possible to restore from a checkpoint if the
desired cache-block size is smaller or equal to the cache-block size
when the checkpoint was taken; we can split one larger request into
multiple small ones, but it is not reliable to do the opposite.

Committed by: Nilay Vaish <nilay@cs.wisc.edu>
This commit is contained in:
Marco Elver
2014-04-19 09:00:30 -05:00
parent 097aadc2cd
commit d9fa950396
5 changed files with 73 additions and 36 deletions

View File

@@ -545,6 +545,13 @@ def from_8(cpt):
cpt.set(new_sec, 'bootUncacheability', 'false')
cpt.set(new_sec, 'num_entries', '0')
# Version 10 adds block_size_bytes to system.ruby
def from_9(cpt):
for sec in cpt.sections():
if sec == 'system.ruby':
# Use Gem5's default of 64; this should be changed if the to be
# upgraded checkpoints were not taken with block-size 64!
cpt.set(sec, 'block_size_bytes', '64')
migrations = []
migrations.append(from_0)
@@ -556,6 +563,7 @@ migrations.append(from_5)
migrations.append(from_6)
migrations.append(from_7)
migrations.append(from_8)
migrations.append(from_9)
verbose_print = False