Previous | Next --- Slide 37 of 41
Back to Lecture Thumbnails
ferozenaina

Took me a bit to grok this. The data fields in a cache line may have a large variation or range - some values may be integers, some may be pointers. Or some values may be negative integers (1/2's complement) and some may be positive.

In this case, we can't effectively compress using a single base.

So, we select the first value as base 1. We iterate through the line and compute offsets. If we can't fit a data field, we take that as base 2. Thus, for a field, if it has a 1 byte size, it is offset with base 1. If it has a byte size of 2, it is offset with base 2.

Points to note: compressed line has (2 + original number of data fields) data fields

adilets

Does this mean that offsets corresponding to different bases will always have a different byte size?