This is my knowledge:
A Compulsory Miss happens when the block is accessed for the first time.
A Conflict Miss happens when there are other empty blocks in cache, but a collision happens due to mapping strategies, hence a block has to be replaced (Direct Mapped and Set Associative Mapped Cache).
Say there are two blocks (0 and 1). We have a direct mapped cache and incoming requests are 0, 128.
The request for 0 is a Compulsory Miss (mapped to block 0 as 0 % 2 = 0).
The request for 128 is a Compulsory Miss (as it is accessed for the first time). But it collides with 0 (since 128 % 2 = 0). My confusion is, shouldn't it be a conflict miss as well?