What is the number of sets in the cache
$\text{Number of sets}=\dfrac{\text{Cache memory}}{\text{(set associativity $\times$ cache block size)}}$
$=\dfrac{256KB}{(4\times 16 B)}$
$=4096$
What is the size (in bits) of the tag field per cache block?
Memory address size $=32\text{-bit}$
Number of bits required to identify a particular set $=12\text{ (Number of sets}= 4096)$
Number of bits required to identify a paticular location in cache line $=4\text{ (cache block size = 16)}$
Size of tag field $=32-12-4=16\text{-bit}$
What is the number and size of comparators required for tag matching?
We use $4\text{-way}$ set associate cache. So, we need $4$ comparators each of size $16\text{-bits}$
http://ecee.colorado.edu/~ecen2120/Manual/caches/cache.html
How many address bits are required to find the byte offset within a cache block?
Cache block size is $16\text{-byte.}$ so $4\text{-bits}$ are required to find the byte offset within a cache block.
What is the total amount of extra memory (in bytes) required for the tag bits?
size of tag $=16\text{-bits}$
Number of sets $=4096$
Set associativity $=4$
Extra memory required to store the tag bits $=16\times 4096\times 4\text{-bits}= 2^{18}\text{ bits}=2^{15}\text{ bytes}.$