Why we need to read memory on a write-miss? I noticed that in write-back caches, when the cpu wants to write to a block, it fetches the block from memory and then updates it. If the block is going to be overwritten and changed by processor, why does the cpu need to read that block from memory?
Because write-miss happens only with just a word  missing in a block. So all of the block which contains that word must be fetched and then that special word must be updated.