Memória interna para Projeto de Sistema Computacionais com Capacidade de Detecção de Erro de Escrita e Configuração de Recursos de Redundância Francisco Carlos Silva Junior (bolsista do PIBITI/CNPq), Ivan Saraiva Silva (Orientador, Depto. de Computação – UFPI) Campus Ministro Petrônio Portella Resumo Este trabalho apresenta uma memória multi-banco com redundância para tratar erros de escrita na memória devido à NBTI (negative-bias temparature instability) ou PBTI (positive-bias temparature instability). Foi desenvolvido um microprocessador MIPS, em sua versão pipeline, para testar a memória multi-banco proposta e verificar seu desempenho. A aplicação desenvolvida para fazer a comparação de desempenho foi uma multiplicação de matriz feita em linguagem C. Para permitir o desenvolvimento de aplicações em linguagem de alto nível (C), foi desenvolvido um ambiente de desenvolvimento de aplicações usando o CROSS-COMPILER GNU. Conclui-se que o modelo é propotipável em FPGA e possui um desempenho aceitável, haja vista que há um ganho na confiabilidade. Palavras-chave: Arquitetura de memórias. Tolerância a falha. PBTI e NBTI. Introdução O projeto trata-se de uma arquitetura de memória interna usando memórias voláteis, preferencialmente, mas não necessariamente, estáticas para projeto de sistemas computacionais com capacidade de detecção de erro de escrita e configuração de recursos de redundância. Os erros de escrita a que se refere a presente invenção podem ser provocados, eventualmente, mas não exclusivamente, pelos problemas tecnológicos conhecidos como “instabilidade de temperatura de polarização negativa” (negative-bias temperature instability - NBTI) ou “instabilidade de temperatura de polarização positiva” (positive-bias temperature instability - PBTI). A arquitetura de memória, objeto deste trabalho, é constituída por recursos que possibilitem: a verificação da efetivação de escritas em qualquer endereço da memória; a detecção e sinalização do erro de escrita, quando este acontecer, e a configuração de recursos de redundância de modo a recuperar o funcionamento normal da memória. A “instabilidade de temperatura de polarização negativa” ocorre quanto uma tensão negativa é aplicada a Porta do transistor com relação à Fonte, e afeta a operação considerada normal dos transistores PMOS. A “instabilidade de temperatura de polarização positiva”, por sua vez, ocorre uma tensão positiva é aplicada, e afeta a operação considerada normal dos transistores NMOS. Infelizmente, este é frequentemente o caso em circuitos CMOS (Complementary Metal Oxide Semiconductur), especialmente em memórias SRAM. Em ambos os casos, a tensão de limiar (VT) do transistor é aumentada, resultando em degradação do tempo de operação do transistor. Em memórias internas o efeito de longo termo apresenta-se como incapacidade de armazenar novos valores. Metodologia O projeto foi desenvolvido no Laboratório CESLa (Circuits and Embedded System Laboratory) do Departamento de Computação da Universidade Federal do Piauí. A descrição de hardware da memória foi feita em linguagem de descrição de hardware VHDL. Para realizar as simulações foi utilizado a ferramenta ModelSim da ALTERA. A prototipagem foi feita em uma placa FPGA da ALTERA, DE2-115. O projeto proposto consiste de duas partes: um bloco de hardware que verifica o erro de escrita e uma memória interna multi-banco com redundância. O plano de trabalho deste projeto consiste do desenvolvimento da memória interna multi-banco com redundância, a outra parte foi desenvolvida por outro aluno de iniciação científica. A arquitetura proposta A arquitetura proposta nesse projeto consiste uma memória interna multibanco com redundância com detecção de erro de escrita. A arquitetura é composta de uma memória multi-banco com redundância e de um bloco de hardware que é responsável por detectar erros de escrita. O modelo da memória interna multi-banco com redundância consiste uma memória com vários bancos de memória e alguns bancos de redundância. O endereçamento de cada banco desse é feito de acordo com a configuração da memória interna. A memória multi-banco desenvolvida nesse projeto consiste de uma memória de 256 palavra, sendo composta de 8 bancos de 32 palavras, com um banco de redundância. Os bits de endereçamento dessa memória pode ser visto na figura 1. Como são 8 bancos de memória, são necessários 3 bits para mapear esses bancos, e como são 32 palavras dentro de cada banco de memória, são necessários 3 bits para mapear as palavras dentro daquele banco. Quando ocorre um erro de escrita (NBTI ou PBTI), na memória multi-banco, é necessário mapear a palavra para o bloco de redundância para permitir a recuperação do funcionamento da memória . A detecção de erro, como foi falado anteriormente, foi desenvolvido por outro aluno. O mapeamento da memória multibanco para a redundância é feito usando mapeamento direto por palavras, ou seja, dado uma palavra que gerou erro ao escrever na memória multi-banco devido a NBTI ou PBTI ela será mapeada para um único endereço no bloco de redundância. Foi escolhida esse tipo mapeamento para permitir um maior espalhamento de erros na memória de redundância. O mapeamento é feito usando um bloco de hardware adicional. Uma visão geral da arquitetura da memória multi-banco, incluindo o bloco de detecção de erro de escrita que foi desenvolvida por outro aluno de iniciação científica, pode ser visto na figura 2. O bloco de detecção de erro é mostrado na figura de forma simplifica, foi omitida a parte da detecção de erro em si e mostrado somente a comunicação desse bloco informando o erro à memória multi-banco. Essa arquitetura de memória possui uma latência de 2 ciclos para realizar uma operação de escrita/leitura devido à inserção da detecção de erro e do bloco de redundância. Houve um ganho em confiabilidade, contudo, também houve um aumento na latência da memória. Figura 1 - Endereçamento dos bancos de memória Figura 2 - visão geral da arquitetura Resultados e Discussão O primeiro resultado foi o desenvolvimento de um modelo de memória, descrito, validado e prototipado em FPGA, com capacidade de detecção de erro e transparente de recursos de redundância, visando restabelecer o funcionamento normal da memória interna. Em todo caso, a disponibilidade deste modelo, tenha ele ou não inovação suficiente para depósito de pedido de patente, configura-se como um produto que garantirá ao grupo domínio tecnológico e diferencial, tanto no âmbito da comunidade científica quanto no âmbito do mercado. Para medir o desempenho da arquitetura de memória proposta neste trabalho foi desenvolvido um microprocessador MIPS em sua versão pipeline. Foram implementada duas versões, uma com a memória de dados sendo uma memória convencional, e portanto sem tratamento de erro de escrita, e outra com a memória de dados usando a arquitetura proposta neste trabalho. Foi desenvolvido também um ambiente de desenvolvimento de aplicações para MIPS utilizando o CROSSCOMPILER GNU. A aplicação escolhida para fazer a comparação de desempenho foi uma multiplicação de matriz 2x2. Tabela 1 - Resultados de desempenho Número de ciclos Memória sem tratamento de erro 1038 ciclos Memória proposta neste trabalho 1297 ciclos Como pode ser visto na Tabela 1, houve um incremento de aproximadamente em 20 % em números de ciclo para executar a aplicação quando comparada com uma versão de memória sem tratamento de erro. Contudo, como já foi discutido, a memória proposta neste trabalho aumenta a confiabilidade e consegue se recuperar de um erro e voltar ao seu funcionamento. A memória em si pode e será, tão logo os requisitos de patenteamento permitam, usada nos modelos de arquitetura de microprocessadores multicore e many-core. Isto, espera-se, implicará em diferencial tecnológicos para estas arquitetura, no mínimo no que diz respeito a confiabilidade e tolerância a falhas. Conclusões e Trabalhos futuros Este projeto é importante para o meu aprimoramento como docente, uma meta que deve ser buscada por qualquer unidade de ensino superior, onde a pesquisa seja uma componente a ser considerada. Imagina-se que esta pesquisa permite a publicação de resultados obtidos o que vem a melhorar o nível de participação do Departamento de Computação na pesquisa científica além de impactos tecnológico que o projeto pode gerar, além de um possível depósito de patente. Como trabalho futuro, pretende-se desenvolver uma memória cache com teste de erro de escrita por NBIT (Negative-bias Temperature Instability) ou PBTI (Positive-bias Temperature Instability) e a implementação de uma hierarquia de memória para multicore com manutenção da coerência da memória. Agradecimentos Agradeço ao projeto PIBITI-UFPI por me dar oportunidade de poder participar do meio de pesquisa e de inovação tecnológica, algo que me engrandece muito como discente dessa instituição. Agradeço também ao meu orientador que me auxiliou no desenvolver do projeto. Referências Bibliográficas US7642864 -Circuits and design structures for monitoring NBTI (negative bias temperature instability) effect and/or PBTI (positive bias temperature instability) effect. US8456247 - Monitoring negative bias temperature instability (NBTI) and/or positive bias temperature instability (PBTI). US20120194222- Memory having a latching sense amplifier resistant to negative bias temperature instability and method therefor. US20090132849 - Method and Computer Program for Selecting Circuit Repairs Using Redundant Elements with Consideration of Aging Effects.