Esta é uma questão muito complicada, espere algumas respostas, pois as pessoas melhoram as respostas dos outros:)
The professor said that the best place to run programs is in cache.
Lembre-se de que o cache é MUITO vezes mais caro que a RAM normal. Quando um computador "grande" tinha 8MB (não gigabytes, megabytes), era possível encontrar máquinas todas "cache" (tecnicamente, um tipo especial de RAM chamado SRAM), mas elas eram mais caras. Agora, você tem máquinas domésticas com 4GB de memória, 4GB de SRAM com fio para o chip seria muito caro. Além disso, você tem muitas pessoas inteligentes brincando com programas e compiladores para fazer o melhor uso do cache. Com o algoritmo de cache correto, você obtém 95% do benefício do cache, com uma pequena porcentagem do custo. É claro que os palpites nem sempre estão certos. Previsão de filial do Google para mais informações.
I was wondering why programs can't be run in registers?
Os registros são o que realmente carregam e armazenam dados e endereços. Pense neles como táxis. Eles podem entregar as coisas de um lado para o outro, o que eles entregam são os dados e endereços do seu programa. Cada parte do seu programa que é "executado" passa por um registro.
Estou assumindo que você está perguntando por que você não pode simplesmente executar completamente a partir de registros. Um motivo - há tão poucos deles. Os registros clássicos da Intel x86 são contados em bytes, mas os programas estão em Megabytes, Gigabytes. Você seria uma pessoa muito rica para ter um chip que poderia executar o MS-Word fora dos registros.
Also, how can a program load itself into cache?
O programa não. O sistema operacional executa o programa e usa o chip da unidade de gerenciamento de memória para carregar as áreas do programa da RAM normal. Enquanto isso acontece, a MMU é inteligente e coloca parte da memória também em cache, com a ideia de que eu acabei de usá-la, talvez precise usá-la novamente em breve.
Isn't the cache something that's controlled by the CPU and works automatically without software control?
Sim, tecnicamente o chip de gerenciamento de memória não é a CPU. Isso costumava ser um chip separado, mas agora faz parte do bloco da CPU, para tornar a comunicação mais rápida.