So I am going through a homework exercise, and I am not understanding the solution to the problem. We are given a sequence of memory references and we are to use a three-way set associative cache with two-word blocks and a total size of 24 words. (For reference question is here). According to their solution, the offset is 1 bit, index is two bits, and the tag is the remaining bits.
First, to make sure I understand, there are four sets because each set contains 3 blocks (three way set associative), and there are a total of 12 memory references, so 12/3 = 4 sets, so the indices in binary would be 00, 01, 10, and 11 each with three "slots" for data.
Second, the memory references are from another problem where it is stated that the references are given as "word addresses". Does this mean that they are word addressable, not byte addressable? If so, I thought that since the cache has two word blocks (8 bytes) then the offset would be 3 bits (2^3)? What is the significance of having two-word or one-word blocks?
My main difficulty is understanding how offset bits are calculated in different cache mappings. I understand the replacement method in that the last recently used element is the one to be replaced by an incoming element.