A pergunta como afirmada não é totalmente responsável. Uma palavra foi definida como sendo de 32-bits. Precisamos saber se o sistema é "endereçável por byte" (você pode acessar um pedaço de dados de 8 bits) ou "endereçável por palavra" (o menor pedaço acessível é de 32 bits) ou mesmo "endereçável por meia palavra" (o o menor pedaço de dados que você pode acessar é de 16 bits.) Você precisa saber isso para saber o que o bit de menor ordem de um endereço está dizendo.
Então você trabalha de baixo para cima. Vamos supor que o sistema seja endereçável em bytes .
Então, cada bloco de cache contém 8 palavras * (4 bytes / palavra) = 32 = 2 5 bytes, portanto, o deslocamento é de 5 bits.
O índice para um cache mapeado direto é o número de blocos no cache (12 bits, neste caso, porque 2 12 = 4096).
Então a tag é todos os bits restantes, como você indicou.
À medida que o cache se torna mais associativo, mas permanece o mesmo tamanho, há menos bits de índice e mais bits de tag.