O Haswell da Intel (ou pelo menos os produtos que incorporam a GPU Iris Pro 5200) e o POWER7 e POWER8 da IBM incluem DRAM incorporada, "eDRAM".
Uma questão importante que levou o eDRAM a não ser comum até recentemente é que o processo de fabricação de DRAM não é inerentemente compatível com processos lógicos, de modo que etapas adicionais devem ser incluídas (que aumentam o custo e diminuem o rendimento) quando o eDRAM é desejado. Portanto, deve haver uma razão convincente para querer incorporá-lo para compensar essa desvantagem econômica. Como alternativa, a DRAM pode ser colocada em uma matriz separada que é fabricada independentemente da, mas depois integrada ao mesmo pacote da CPU. Isso fornece a maioria dos benefícios da localidade sem as dificuldades de fabricar os dois de uma maneira verdadeiramente integrada.
Outro problema é que a DRAM não é como a SRAM, pois não armazena seu conteúdo indefinidamente enquanto a energia é aplicada, e a leitura também destrói os dados armazenados, que devem ser gravados posteriormente. Portanto, ele deve ser atualizado periodicamente e após cada leitura. E, como uma célula DRAM é baseada em um capacitor, a carga ou descarga é suficiente para que o vazamento não corrompa seu valor antes que a próxima atualização leve algum tempo finito. Esse tempo de carregamento não é necessário com a SRAM, que é apenas uma trava; consequentemente, pode ser sincronizado com a mesma taxa que a CPU, enquanto a DRAM é limitada a cerca de 1 GHz, mantendo um consumo de energia razoável. Isso faz com que a DRAM tenha uma latência inerente mais alta que a SRAM, o que faz com que não valha a pena usar para todos, exceto os caches muito maiores, onde a taxa reduzida de erros será compensada.
Além disso, no que diz respeito à latência, grande parte da dificuldade é que os sinais físicos de distância devem percorrer. A luz pode viajar apenas 10 cm no período de clock de uma CPU de 3 GHz. Obviamente, os sinais não trafegam em linhas retas através da matriz e nem se propagam a algo próximo da velocidade da luz devido à necessidade de buffer e fan-out, que acarretam atrasos na propagação. Portanto, a distância máxima que uma memória pode estar da CPU para manter um ciclo de latência de 1 relógio é de alguns centímetros, no máximo, limitando a quantidade de memória que pode ser acomodada na área disponível. O processador Nehalem da Intel reduziu a capacidade do cache L2 em comparação com o Penryn, em parte para melhorar sua latência, o que levou a um desempenho mais alto. * Se não nos importamos tanto com a latência, não há razão para colocar a memória na embalagem,
Também deve ser observado que a taxa de acertos do cache é muito alta para a maioria das cargas de trabalho: bem acima de 90% em quase todos os casos práticos, e não incomumente acima de 99%. Portanto, o benefício de incluir memórias maiores no dado é inerentemente limitado a reduzir o impacto dessa pequena porcentagem de erros. Os processadores destinados ao mercado de servidores corporativos (como o POWER) geralmente têm caches enormes e podem incluir eDRAM de maneira lucrativa, pois é útil acomodar os grandes conjuntos de trabalho de muitas cargas de trabalho corporativas. Haswell tem para oferecer suporte à GPU, porque as texturas são grandes e não podem ser acomodadas no cache. Esses são os casos de uso da eDRAM atualmente, não as cargas de trabalho típicas de desktop ou HPC, que são muito bem atendidas pelas hierarquias de cache típicas.
Para resolver alguns problemas levantados nos comentários:
Esses caches de eDRAM não podem ser usados no lugar da memória principal porque foram projetados como caches de vítima L4. Isso significa que eles são voláteis e efetivamente endereçáveis ao conteúdo, para que os dados armazenados neles não sejam tratados como residindo em nenhum local específico e possam ser descartados a qualquer momento. É difícil conciliar essas propriedades com o requisito de que a RAM seja mapeada diretamente e persistente, mas alterá-las tornaria os caches inúteis para a finalidade a que se destinam. É claro que é possível incorporar memórias de um design mais convencional, como é feito em microcontroladores, mas isso não é justificável para sistemas com memórias grandes, pois a baixa latência não é tão benéfica na memória principal quanto em um cache, aumentando assim ou adicionar um cache é uma proposta mais interessante.
Quanto à possibilidade de caches muito grandes com capacidade da ordem de gigabytes, é necessário que um cache tenha no máximo o tamanho do conjunto de trabalho para o aplicativo. Os aplicativos HPC podem lidar com conjuntos de dados de terabytes, mas eles têm uma boa localidade temporal e espacial e, portanto, seus conjuntos de trabalho normalmente não são muito grandes. Aplicativos com grandes conjuntos de trabalho são, por exemplo, bancos de dados e software ERP, mas há apenas um mercado limitado para processadores otimizados para esse tipo de carga de trabalho. A menos que o software realmente precise, adicionar mais cache fornece retornos muito rapidamente decrescentes. Recentemente, vimos que os processadores obtêm instruções de pré-busca, para que os caches possam ser usados com mais eficiência: é possível usar essas instruções para evitar erros causados pela imprevisibilidade dos padrões de acesso à memória, em vez do tamanho absoluto do conjunto de trabalho,
* A melhoria na latência não se deveu apenas ao menor tamanho físico do cache, mas também porque a associatividade foi reduzida. Houve alterações significativas em toda a hierarquia de cache no Nehalem por vários motivos diferentes, nem todos focados em melhorar o desempenho. Portanto, embora isso seja suficiente como exemplo, não é uma conta completa.