An evaluation of memory controllers for non-volatile memories - Torres, Giovane de Oliveira (2018)
Existem atualmente diversas demandas nas questões de desempenho e consumo energético em sistemas computacionais. Dentro deste contexto, as tecnologias de memórias usadas atualmente são consideradas componentes críticos que afetam diretamente tanto desempenho quanto consumo energético dentro em um sistema. Com isto, existe a necessidade de que memórias apresentem melhorias, já que estas talvez estejam chegando no seu limite de escalabilidade. Uma das alternativas para melhorar o subsistema de memória é o uso de memórias não voláteis (NVMs). Estas memórias têm em geral baixo consumo energético e melhor escalabilidade ao comparar com tecnologias voláteis. Porém, NVMs apresentam problemas que precisam ser superados para que estas possam ser utilizadas em larga escala. Estes problemas remetem ao alto custo de operações de escrita em memória tanto em latência quanto em consumo energético, além de durabilidade do material usado nas NVMs sendo inferior se comparado à tecnologias de memória atuais. Paralelo a isto, uma das dificuldades para adotar uma NVM como memória principal em sistemas computacionais também inclui dificuldades em propor um escalonamento de operações de memórias, já que torna-se necessário lidar com as características de NVMs. Com estes problemas em mente, esse trabalho apresenta uma implementação de controladora de memória, juntamente com uma análise em tempo de execução em sistemas baseados em NVMs. Para implementação de uma controladora de memória, são utilizados os simuladores Gem5 e NVMain, visto que a combinação destas atende ao desejo do trabalho de efetuar avaliações em tempo de execução. Com isto, a controladora implementada passou por testes com aplicações do conjunto de benchmarks Media-Bench e MiBench. Assim, a controladora foi analisada sobre diferentes configurações. Testes foram feitos usando as três tecnologias de NVMs mais conhecidas e estuadas (PCRAM – Phase Change Random Access Memory, RRAM – Resistive Random Access Memory e STT-RAM – Spin Transfer Torque Random Access Memory). As principais observações feitas por este trabalho foram: (i) executando os benchmarks isoladamente, o tempo gasto em atender requsições de memória foi baixo, não superando 2% do tempo total de execução de qualquer aplicação, (ii) ao executar a controladora de memória com diferentes NVMs, as latências de operações de memória foram impactadas fortemente pelo tipo de tecnologia utilizada, (iii) ao utilizar diferentes tamanhos de filas para atender requisições de memórias, o impacto causado por esta variação foi considerado desprezível, já que as aplicações executadas geraram e atenderam poucas operações de memórias em detrimento de outras operações. Por fim, uma análise de desempenho da controladora implementada com as controladoras de memória fornecidas pelo NVMain, sendo observado que na maioria dos casos a controladora proposta e avaliada talvez necessite de inclusão de outras técnicas para a extração de melhor desempenho.