ruby: recorder: Fix (de-)serializing with different cache block-sizes
Review Request #2220 - Created April 3, 2014 and submitted
| Information | |
|---|---|
| Marco Elver | |
| gem5 | |
| default | |
| Reviewers | |
| Default | |
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.
Created a Ruby checkpoint with the default config. Restore from checkpoint with default config (64 byte block-size) and varying block-sizes (32, 16, 8).
Posted (April 3, 2014, 1:46 p.m.)
You should update the gem5 checkpoint version and add functionality to the util/cpt_upgrader.py script for updating checkpoints affected by your changes.
Review request changed
Updated (April 3, 2014, 4:44 p.m.)
Change Summary:
Applied suggested changes. This change no longer breaks old checkpoints, but having the correct block-size serialized in the checkpoint will not cause surprises when changing the block-size; I assume the user will be aware of potential issues when they see the unmissable outdated-checkpoint warning. Tested again: migrating old checkpoint, take checkpoint, restore checkpoint.
Description: |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Diff: |
Revision 2 (+73 -36) |
Posted (April 10, 2014, 11:15 a.m.)
Ok, it now seems that we do not require this version and updates to the utility script. Since it is optional that the block size be unserialized, the earlier checkpoints will not break. For those checkpoints, the current block size would be assumed to be the block size with which the checkpoint was created. If you agree, then I suggest that you eliminate the not required code.
