Falha de cache e velocidade do processador
hoje na minha aula meu professor mencionou que
Cache misses becomes more expensive as the speed of the processor increases
Mas ele não explicou o motivo. Pesquisei essa declaração na internet e não encontrei resposta alguma.
Segundo mim, essa afirmação é verdadeira porque, quando a velocidade do processador aumenta, ele pode executar mais instruções em um determinado ciclo de clock, portanto, um erro leva à paralisação da execução de mais instruções. Portanto, as perdas de cache tornam-se caras conforme a velocidade do processador aumenta. Meu pensamento está correto ou estou fazendo tudo errado?
Respostas
Sim esta correto. Supondo que a velocidade do cache não mude, uma falha no cache leva um tempo fixo e, se o número de instruções por unidade de tempo aumentar, mais instruções serão atrasadas por causa da falha no cache.
Os processadores modernos tentam métodos diferentes para neutralizar isso. Obviamente, você pode usar caches maiores, o que pode levar a menos perdas de cache. A desvantagem é que, com a mesma tecnologia, um cache maior ficará mais lento. Outro método é organizar o cache de forma que o código "normal" não produza perdas de cache desnecessárias.
Outro método é o "streaming", em que o cache descobre que você está lendo endereços de memória consecutivos e usa isso para começar a carregar os dados antes que sejam necessários, reduzindo o custo médio de uma perda de cache. Isso geralmente é automático. Pode haver instruções que carregam dados da memória sem armazená-los em cache - se você processar um gigabyte de dados em memória consecutiva, armazenar qualquer um deles em cache será inútil.
Em seguida, vem a execução fora de ordem: você pode ter uma instrução esperando por causa de uma falha no cache, mas outras instruções não afetadas por isso podem continuar em execução. E com o hyperthreading, o processador executa duas ou mais instruções de intercalação de threads; se a linha A tiver que esperar, a linha B continua em velocidade máxima.