The correct answer should be option C i.e. 4.16
Probably the assumption : "Cache is faster than main memory" is not sufficient to answer this question precisely.It should be given that "Cache is how many times faster than the main memory".
However with the given information we can guarantee that speed up has to be strictly less than 5.
In general cache memory access is around ~100 times faster than the main memory access so,
ASSUMING : Cache access time is 1 ns & main memory access time is 100 ns.
So If there are total P memory accesses, then
1) Time Required Without Cache - P main memory accesses & 0 cache accesses = ( P * 100 ) + (0 * 1) = 100P nanoseconds.
2) Time Required With Cache - (2/10) * P main memory accesses & (8/10) * P cache accesses
= ((2P/10) * 100) + ((8P/10) * 1) = (208/10)P nanoseconds.
Speed gain = Time Without Cache / Time With Cache = 100P/{(208/100)P} = 1000 / 208 = 4.8
Thus speed up will be around 4.8(less than 5 but near 5), assuming the cache is 100 times faster than main memory.
_______________________________________________________________________________
Proof for guarantee:
Suppose we are going to make 100 memory accesses.
Then suppose each main memory access takes 1 unit of time.
& all of the cache accesses(= 80 out of 100) takes total x units of time.
Then speed up will be 100 / (x + 20).
Now clearly x is strictly greater than 0 i.e. x > 0
It means (x + 20) is strictly greater than 20 i.e. (x + 20) > 20.
Hence 100/(x + 20) is strictly less than 5.
Now since generally cache is very fast than main memory (around 100 times), value of x would not be too much, so answer should be 4 point “something”.