Consiste na adoção de uma terceira memória, a nanomemória, para armazenar as instruções do nanoprograma, sendo assim, a microarquitetura ficará composta pela memória principal (volátil e que armazena o programa em execução), a micromemória (não volátil e que armazena o microprograma) e a nanomemória (não volátil e que armazena o nanoprograma). Esta é utilizada a fim de se reduzir o tamanho do microprograma em casos onde ocorram muitas repetições de uma ou mais instruções. Sendo assim, o nanoprograma, conterá o conjunto das microinstruções utilizadas no microprograma sem repetí-las e o microprograma matém a sua lógica inicial, utilizanddo não mais as microinstruções, mas seus endereços na nanomemória.
A figura abaixo é capaz de nos mostrar a economia que podemos alcançar com o uso de nanoprogramas, pois na microprogramação convencional o tamanho gasto para armazenar o microprograma é de (n x w), ou seja, o número de instruções multiplicado pela largura em bits de cada instrução). Já na nanoprogramação é de (n x log2m + m x w), ou seja, número de microinstruções multiplicado pelo logaritmo na base dois do tamanho da memória de nanoprogramação somado ao tamanho da memória de nanoprogramação
Devemos nos atentar para o fato de que se o número de microinstruções repetidas no micriprograma for pequeno, não teremos mais essa vantagem, já que ocorrerá quase um mapeamento direto do microprograma para a nanomeméria.