O risco estrutural pode ser detectado quando a instrução é decodificada e o pipeline
trava na busca da instrução no ponto apropriado. Isso permite que um carregamento ou armazenamento seja executado ao custo de uma bolha de pipeline. Para armazenamentos, o processador pode especular que um armazenamento não endereça a memória que contém instruções que estarão no pipeline (ou pelo menos que o armazenamento não altera a semântica de nenhuma dessas instruções). Se for permitido um front-end e buffer mais amplos, o impacto do risco estrutural pode ser reduzido. Esse buffer, mesmo que seja após a decodificação da instrução, pode ser considerado um cache. O risco estrutural relacionado a cargas e armazenamentos pode ser evitado pela multiportação (ou acesso ao cache duas vezes em um único ciclo) ou pela pseudo multiportação (banco) da memória. O processador ainda teria o risco de quase-controle para as lojas. Os principais benefícios de tal implementação em relação a ter caches separados seriam um manuseio um pouco mais simples de armazenamentos e uma operação mais rápida ao executar código auto modificável. O processador ainda poderia lidar com o problema de armazenamento com caches coerentes separados, mas implementar a coerência e lidar com o atraso na realização de armazenamentos no cache de instruções aumentaria a complexidade. Eu diria que uma arquitetura Harvard modificada que implementa uma interface Von Neumann (ou seja, é indistinguível do software, exceto no que diz respeito ao desempenho) é Von Neumann. (As ISAs recentes geralmente evitam tais garantias. O benefício de uma interface mais simples geralmente não é considerado compensador da complexidade/desempenho.)