ID do artigo: 000081052 Tipo de conteúdo: Solução de problemas Última revisão: 18/08/2014

O que eu preciso fazer/estar ciente ao atualizar meu software de processadores Nios II Classic (Gen1) para Nios II Geração2?

Ambiente

    Intel® Quartus® II Subscription Edition
BUILT IN - ARTICLE INTRO SECOND COMPONENT
Descrição

os processadores Nios® II Classic e Nios II Gen2 são compatíveis com binários, mas houve algumas pequenas alterações na funcionalidade de HAL e cache, por isso é recomendável que os BSPs e o software sejam re-construídos com ferramentas/bibliotecas a partir da versão mais recente (v14.0), e se a configuração do processador contiver um cache de dados, que o uso de transações de memória não acessada em todos os softwares do usuário seja revisado.

Resolução

Regiões de memória não atingidas
Quando um processador com cache de dados emite uma leitura e os dados não estão no cache, o cache geralmente carregará um pequeno bloco ou uma "linha" de dados da memória para o cache. Quando o processador emite uma gravação, o novo valor geralmente é armazenado no cache de dados; com um cache de dados de gravação de volta (por exemplo, como no processador Nios II), os novos valores de dados são gravados apenas no local físico real quando o cache é liberado ou os dados são despejados do cache. Este tipo de operação não é aceitável para regiões de memória em que os dados devem ser escritos imediatamente para o hardware para efetuar a função/operação desejada (por exemplo, memória compartilhada ou gravações em registros de controle periférico/hardware). Isso significa que os desenvolvedores são obrigados a limpar o cache imediatamente ou usar uma operação de memória que ignora o cache e vai diretamente/imediatamente para o hardware (preferido). Às vezes, pode haver outras razões pelas quais o desenvolvedor não deseja que os dados sejam armazenados em cache (por exemplo, se os dados nunca devem ser lidos de volta e/ou se não for desejável excluir outros dados do cache por desempenho ou outras razões).

Com o bypass de cache do processador Nios II Classic pode ser alcançado usando instruções especiais de leitura/gravação de E/S (por exemplo, ldwio/stwio), configurando bit-31 no endereço de memória do endereço de leitura/gravação ou implementando uma MMU/MPU e configurando-a adequadamente. (Nota: as opções MMU e bit-31 são mutuamente exclusivas)

Nios II núcleos Gen2 oferecem os mesmos mecanismos para bypass de cache, mas a implementação é um pouco diferente e pode ser um problema potencial com a migração de software Nios II Classic para Nios II Gen2.

Se o processador Nios II Classic realizar uma gravação sem alcance e o local da memória (e, portanto, a linha de cache associada) estiver presente no cache de dados, o novo valor de dados também será gravado no cache (apesar de ser uma gravação não alcançada). Isso significa que os dados no cache estão sempre atualizados e, se o projeto do software fizer com que regiões de memória não atingidas seja carregada no cache, não há perda de coerência de dados. Portanto, o processador Nios II Classic também pode suportar regiões de memória sem alcance de qualquer tamanho e qualquer alinhamento de endereço (pois permite a mistura de regiões de memória em cache e inalcançadas na mesma linha de cache). Isso não é verdade para núcleos Nios II Geração2.

No núcleo Nios II do processador Gen2, transações sem acesso realmente ignoram o cache de dados e o conteúdo do cache não são atualizados (prática padrão para a maioria dos processadores). Se uma região de memória não acessada compartilhar uma linha de cache com uma região em cache, a região não acessada será mapeada no cache e poderá ser atualizada com dados antigos/de lixo quando o cache for liberado. Os desenvolvedores devem garantir que as regiões de memória não atingidas e em cache estejam claramente separadas e não compartilhem a mesma linha de cache quando mapeadas no cache. Isso é alcançado garantindo que as regiões de memória não atingida estejam alinhadas ao tamanho da linha de cache de dados (32 bytes) e sejam do tamanho de uma ou mais linhas de cache de dados (múltiplos de 32 bytes). Isso impede a mistura de dados cacheáveis e não cacheáveis na mesma linha de cache e, portanto, a gravação de dados inválidos/estagnados. A boa prática de projeto recomenda que os endereços básicos dos conjuntos de registro periférico estejam alinhados com os limites da linha de cache de dados e que os drivers usem as instruções de gravação de leitura de E/S de bypass de cache , portanto, é improvável que sejam necessárias modificações em drivers. Outros softwares que usam regiões de bypass de cache/memória não acessada devem ser verificados cuidadosamente para garantir que as linhas de cache não mapeem para regiões que contêm dados armazenados em cache ou não.

Nota: o software que usa o recurso de bypass de cache bit-31 não funcionará mais se a opção de intervalo de endereços de 32 bits da Nios II Gen2 for selecionada, as instruções de E/S de bypass de cache ou a região de memória periférica deve ser usada em seu lugar.

Novos recursos
Os desenvolvedores devem considerar os efeitos potenciais do uso da nova gama de endereços de 32 bits e das opções de região de memória periférica, caso a configuração de hardware seja alterada para usá-las. O software deve ser modificado para suportar esses recursos ou detectá-los e emitir mensagens de erro.
O software que usa o recurso de bypass de cache bit-31 não funcionará mais se a opção de intervalo de endereços de 32 bits da Gen2 for selecionada, as instruções de E/S de e/S de cache ou a região de memória periférica devem ser usadas em vez disso.

Se a opção Nios II Classic ECC foi suportada no software original, ela precisará ser estendida para incluir as memórias adicionais suportadas pelo processador Nios II Gen2.

Produtos relacionados

Este artigo aplica-se a 1 produtos

Dispositivos programáveis Intel®

1

O conteúdo desta página é uma combinação de tradução humana e por computador do conteúdo original em inglês. Este conteúdo é fornecido para sua conveniência e apenas para informação geral, e não deve ser considerado completo ou exato. Se houver alguma contradição entre a versão em inglês desta página e a tradução, a versão em inglês governará e será a controle. Exibir a versão em inglês desta página.