Last Updated : 19 Nov, 2018

A CPU has a cache with block size 64 bytes. The main memory has k banks, each bank being c bytes wide. Consecutive c − byte chunks are mapped on consecutive banks with wrap-around. All the k banks can be accessed in parallel, but two accesses to the same bank must be serialized. A cache block access may
involve multiple iterations of parallel bank accesses depending on the amount of data obtained by accessing all the k banks in parallel. Each iteration requires decoding the bank numbers to be accessed in parallel and this takes. k/2 ns The latency of one bank access is 80 ns. If c = 2 and k = 24, the latency of retrieving a cache block starting at address zero from main memory is:
(A) 92 ns
(B) 104 ns
(C) 172 ns
(D) 184 ns


Answer: (D)

Explanation: Explanation:

Size of cache block=64 B
No. of main memory banks K=24
Size of each bank C=2 bytes
i.e each bank in memory is 2 bytes and there are 24 such banks. So, in one iteration we can get 2*24 = 48 bytes and getting 64 bytes requires 2 iterations.
So time taken for  parallel access T=decoding time +latency time.
T = (K/2)+latency
= 12+80 = 92 ns
But C=2 for accesses
=2*92=184ns
(since in each iteration we need to select the banks and the bank decoding time (k/2) is independent of the number of banks we are going to access)

This solution is contributed by Nitika Bansal.

Quiz of this Question


Share your thoughts in the comments