Answer:
Your solution is correct.
To calculate the number of tag bits, we use the formula: number of tag bits = total number of bits - number of offset bits - number of index bits.
In this case, the total number of bits is 64 (since we have 64-bit addressable word sizes). We have 8GB of memory, which requires 30 bits (since 2^30 = 1GB). We have 16 words per block, so we need 4 bits for the offset. We have 128 blocks in the cache, which requires 7 bits for the index (since log2(128) = 7).
Therefore, the number of tag bits is: 64 - 4 - 7 = 53.
So, the tag bits are 53 bits, the line number bits are 4 bits, and the offset bits are 4 bits.
Regarding your unrelated note, the formula log2(main memory size / cache size) is used to calculate the number of index bits for a set-associative cache. It is not used to calculate the number of tag bits.