Proposta de Microarquitetura e Conjunto de Instruções para um Processador Digital de Sinais Luís Fabrício W. Góes1, Luiz Eduardo S. Ramos2, Carlos Augusto P. S. Martins3 Laboratório de Sistemas Digitais e Computacionais (LSDC) - Instituto de Informática Pontifícia Universidade Católica de Minas Gerais - PUC-MG Av. Dom José Gaspar 500, Belo Horizonte, MG, Brasil 1 {[email protected]} 2{[email protected]} 3{[email protected]} Abstract Digital Signal Processors have shown an increasing importance in the current Electronic Engineering and Computer Science scenario. This work describes the results of microarchitecture and instruction set project for a simple low cost implementation DSP, made as a graduation discipline research activity. keywords Digital signal processor DSP, dedicated microarchitecture, ASIP. I. INTRODUÇÃO Neste trabalho apresentamos os resultados obtidos durante o projeto de um processador digital de sinais, realizado como atividade em uma disciplina de graduação. Foi desenvolvido, também, um simulador funcional para visualização de resultados e validação do processador. Essas atividades serviram como ferramentas de estímulo ao estudo da teoria de Arquitetura de Computadores. Um DSP (digital signal processor) é um processador de aplicação específica (Application Specific Processor), com uma microarquitetura dedicada e um conjunto de instruções especiais, que visam aumentar o desempenho computacional no processamento de sinais contínuos, presentes no mundo real. Durante a última década, os DSPs foram empregados em uma grande quantidade de aplicações comerciais (aparelhos de comunicação móvel, cable modems, equipamento DLS, DVD players, câmeras digitais, Internet audio etc) e específicas (microcontroladores de controle da produção, instrumentação médica, aparelhos auditivos, controle motor, navegação, processamento de imagens, etc) [FRA2000] [MIN1998] [SHE1999]. Atualmente, observamos o surgimento de uma nova geração de DSPs programáveis de alta performance. Eles, normalmente, apresentam uma arquitetura paralela altamente integrada, incorporando características de hardware de propósito geral, memória on-chip e múltiplos processadores em um único chip [NIL2000]. As motivações para este trabalho foram a possibilidade de projetar um processador simples, com baixo custo de implementação. Além disso, a possibilidade de que ele viesse a fornecer uma interface flexível de fácil uso para programação, apresentando um bom desempenho na execução de diferentes algoritmos. Consideramos importante o estudo e o desenvolvimento de DSPs melhores, pois eles vêm adquirindo uma empregabilidade cada vez mais abrangente, exigindo sofisticação e robustez. Também é importante que seja produzida uma maior quantidade de material sobre DSPs no meio acadêmico, pois, com a evolução desses processadores, torna-se necessário renovar constantemente os conhecimentos acerca deles. O nosso principal objetivo, com este trabalho, foi desenvolver um processador dedicado para processamento de sinais, com microarquitetura dedicada e um conjunto de instruções dedicado reduzido. A nossa intenção não foi projetar um DSP comercial competitivo, mas sim, um processador acadêmico, simples e com fins didáticos. II. DESCRIÇÃO DO DSP Nossa preocupação inicial era projetar a microarquitetura e o nível ISA (Instruction Set Architecture) de um DSP cujas características fossem condizentes com a arquitetura RISC dos computadores modernos [TAN1999]. Após concluído, o processador projetado apresenta um conjunto reduzido de instruções (29 ao todo), executa todas as instruções diretamente em hardware, maximiza a emissão de instruções (apresentando instruction level parallelism), possui instruções de fácil decodificação, sendo que apenas load e store fazem referência à memória e apresenta um grande número de registradores. A. Arquitetura do Conjunto de Instruções (ISA) Suas operações básicas foram definidas de acordo com as necessidades mais genéricas das aplicações DSP analisadas: aritméticas especializadas de alta velocidade, recepção e transferência de dados para o mundo real, arquitetura de memória de múltiplos acessos. Suporta operações específicas como a utilização de filtros, através de adições, multiplicações, delays, aritmética saturada e manuseio de vetores. Para a manipulação dos tipos suportados, inteiros e fracionários de ponto fixo, o DSP utiliza multiplicação e adição paralelas, realiza múltiplos acessos simultâneos à memória, possui muitos registradores para armazenamentos temporários e apresenta uma eficiente geração de endereços. O processador apresenta instruções dedicadas, que manipulam os principais componentes da microarquitetura, como: MPY (utiliza o multiplicador-acumulador), SHL (usa o barrel-shifter), LDBA e STBB (utilizam os bancos de registradores e os buffers de memória). Que são dedicadas para determinados tipos de aplicações. As instruções do nível ISA do processador podem ser agrupadas tendo em vista diferentes aspectos, como: o modo de endereçamento (por valor imediato, endereçamento direto ou indireto ao registrador), o tamanho (opcode, parâmetros: endereço de memória ou de registrador), por funcionalidade (saltos, leitura e escrita em memória, instruções lógicas, instruções aritméticas ou instruções de controle de fluxo de programa). Os códigos de operação (opcodes) das instruções e os endereços de registradores possuem 4 bits de tamanho, os endereços de memória e valores imediatos possuem 8 bits. Para que as instruções do processador pudessem ser codificadas em 16, e não em 32 bits, foi utilizada a técnica de expansão de código. De forma a possibilitar que o programador não se preocupasse em escrever programas em código de máquina, foi definida um linguagem assembly para o processador. Ela é composta por 29 mnemônicos (TABELA 1), sendo que cada um corresponde a uma instrução do nível ISA. TABELA 1 Mnemônicos do conjunto de instruções do processador OPCOD + MEM JMP JZ JNZ JP JNP LOAD STORE CALL OPCOD + REG + REG ADD SUB AND OR MPY CMP MOV OPCOD + REG + MEM ANI ORI CPI MVI MPI OPCOD + REG INR DCR OPCOD LDBA STBA STBB SHL SHR RET HALT B. Microarquitetura O DSP possui componentes de microarquitetura em comum com os processadores de propósito geral (General Purpose Processors). Este é o caso, por exemplo, da unidade lógico-aritmética. No entanto, para atender seus propósitos específicos, apresenta componentes comumente não encontrados em GPPs, como: MAC (multiplicadoracumulador), barrel shifter, gerador de dados e endereços, sequencializador de instrução. Também possui, associado a ele, conversores Analógico/Digital e Digital/Analógico [HIG1990]. Fig. 1 diagrama do datapath O DSP possui: 4 registradores de propósito geral (16 bits), 1 acumulador (32 bits), dois bancos de 16 registradores (um com 16 e outro com 32 bits por registrador) acessíveis ao programador através de dois registradores de acesso (4 bits cada um). Há, também um contador de programa (8 bits) e um registrador (8 bits) para manter endereços de retorno de chamadas a procedimentos. Os registradores utilizam um barramento de 32 bits com ramificações de 16 bits. O processador possui uma RAM interna de 512 bytes, dividida em palavras de 16 bits, num total de 256 palavras. Esta memória está mapeada em: buffer de entrada (32 bytes) do conversor A/D, buffer de saída (64 bytes), destinado ao conversor D/A e o restante da memória para ser utilizado pelo programador com dados e instruções. O DSP possui um conjunto de 29 instruções, codificadas em 16 bits, utilizando expansão de código. Dentre elas, existem algumas semelhantes às de processadores de propósito geral. Outras denotam uma certa especificidade do DSP, como as instruções de load e store para manipulação de dados entre os bancos de registradores e a memória. Há também uma instrução que multiplica registradores, somando automaticamente seu conteúdo ao do acumulador, o que acelera a execução de laços, e a aplicação de filtros. As instruções utilizam endereçamentos por valor imediato, direto ou indireto ao registrador. O processador apresenta outros componentes a serem destacados a seguir. Alguns deles foram abstraídos na esquematização do datapath (Fig. 1). O MAC (Multiplicador-ACumulador) realiza multiplicações acumuladas com baixa latência, reduzindo o overhead em laços através de caminhos de realimentação interna. O barrel-shifter implementa shifts aritméticos e lógicos, fusão e rotação de palavras e testes de bits em um ciclo. A ULA (Unidade Lógico-Aritmética) permite a execução de uma instrução por ciclo, utilizando pipelining para operações repetitivas e transparência para operações flow-through. Apresenta uma boa precisão nos resultados de operações, com baixa perda de tempo. Operações de multiplicação e shift auxiliadas pelo MAC e pelo Shifter, respectivamente. Sua saída alimenta a entrada do acumulador. O DAG (Gerador de Dados-Endereços) envia endereços pré-computados (implementa operações lógicas e shifts) de leitura ou escrita da memória de dados, permitindo um mascaramento parcial de campos de endereço. O endereçamento fica rápido e flexível, o que é essencial em algoritmos que demandam várias transferências de dados. O sequenciador controla o fluxo do programa utilizando, além do contador de programa, um registrador que contém o endereço de retorno de subrotinas. Não há sinalização especial quando uma chamada a sub-rotina sobrescreve indevidamente o valor daquela chamada anteriormente. O sequenciador, ao contrário da ULA, não faz uso de pipelining. III. VALIDAÇÃO Durante a atividade de projeto do DSP, foi desenvolvido um aplicativo de simulação funcional do processador. O aplicativo (Fig. 2) simula a execução de programas (arquivos binários) contendo instruções do nível ISA do DSP proposto. Simula, também, o estado e o funcionamento de alguns componentes de sua microarquitetura. A avaliação do simulador foi feita em uma etapa inicial, na qual comparamos resultados de execuções simuladas e execuções manuais de programas. O simulador apresentou sempre os resultados previstos. Em um segundo momento, o aplicativo foi utilizado para validar o funcionamento da microarquitetura e do conjunto de instruções do DSP projetado. Fig. 2 snapshot do programa montador A. Vantagens e Desvantagens do Processador Proposto Através da validação do processador foi possível observar que os DSPs apresentam vantagens sobre os processadores de propósito geral. Dentre elas, podemos destacar: a versatilidade, a adaptabilidade, a repetibilidade e a especificidade [BOR2000]. Construído com essas características, o DSP possibilita reprogramações para suporte a uma diversidade de algoritmos, pode se adaptar a diferentes hardwares [NIL2000], com diferentes empregos em cada situação, pode ser facilmente duplicado (independente de tolerâncias rigorosas dos componentes). Apresenta flexibilidade com relação a soluções analógicas conservando, em si, a premissa do bom desempenho. TABELA 2 Comparação entre códigos: DSP x GPP RISC fictício Fig. 2 snapshot do simulador implementado O simulador é complementado por um programa montador (Fig. 3), baseado na linguagem assembly do DSP. O montador, da forma como foi projetado, impede que um programador, mesmo que inexperiente, cometa erros de sintaxe ou solicite instruções inválidas ao desenvolver seus programas. Código do DSP proposto 048 LDBA 049 MVI A, 01 050 MVI BK1, 08 051 MPI A, 02 052 MOV B, BK1 053 SHL 054 MPY A, B 055 MVI BK2, BK1 056 MOV BK2, ACC 057 DCR BK1 058 CPI BK1, 0 059 JNZ 51 060 STBB 061 HALT Código de um 048 LOAD R1, 00 049 LOAD R2, 01 . . . 064 LOAD R16, 0f 065 066 067 068 068 069 070 MPI ADD MOV SHL MPY ADD MOV GPP A, 02 ACC, A B, R8 ACC, 1 A, B ACC, A R25, ACC ; repetir para 7 outros ; registradores 119 120 121 122 123 STORE 10, R17 STORE 12, R18 . . . STORE 2f, R32 HALT A TABELA 2 mostra uma comparação entre o código do DSP proposto e o correspondente de um GPP RISC fictício. A principal vantagem do DSP é a presença de instruções dedicadas que diminuem a quantidade de acessos à memória para a busca de dados e instruções (LDBA carrega 16 registradores com valores do buffer de entrada, o que não é possível no GPP). O endereçamento indireto registrador flexibiliza o uso de registradores em laços de repetição, situação onde o código do GPP é bastante repetitivo, pois devem ser utilizadas 16 instruções load. Os dados e as instruções do processador são colocados em uma memória interna ao chip, ao contrário do que ocorre no GPP. Isto diminui o tempo para acessá-la, provendo uma maior velocidade de processamento. O conjunto de instruções do DSP é dedicado para o processamento de sinais, apresentando facilidades de programação e reduzindo a necessidade de sofisticação do software final. As instruções são baseadas em componentes da microarquitetura, o que torna algumas delas pouco intuitivas (MPY realiza uma multiplicação e uma soma) porém, otimiza a produção de resultados. O processador proposto apresenta eficiência em determinadas aplicações específicas, no entanto, ele pode não oferecer a flexibilidade exigida em outras situações. Nesses casos, seria aconselhável o uso de um GPP. Analogamente, se o desempenho do DSP for insuficiente, talvez fosse melhor utilizar um circuito integrado de aplicação específica (ASIC), menos flexível e mais caro de ser projetado que o DSP [SHE1999]. Como trabalhos futuros podemos destacar: o protótipo do DSP, usando VHDL e FPGA e a inclusão de novas instruções e características de funcionamento, como: pilhas de uso geral, detecções de overflow e underflow, pontoflutuante, técnicas de otimização na alimentação de dados nos componentes da microarquitetura. V. AGRADECIMENTOS Gostaríamos de agradecer ao Instituto de Informática, à Pró-Reitoria de Pesquisa e Pós Graduação pelo apoio, PROBIC, CNPQ pelo incentivo e financiamento das bolsas de pesquisa, aos colegas e professor, que sempre compartilharam conosco a atenção, conhecimentos e paciência. VI. REFERÊNCIAS [ARA1997] ARAKAWA, F. "SH4 RISC Microprocessor for Multimedia", Hitachi Central Research Labs, (hotchips) 1997. [BOR2000] http://www.bores.com/courses/intro/chips/index.htm “Home Page of BORES Signal Processing”: o site fornece conhecimentos e tutoriais sobre DSP, 2000. [FRA2000] FRANTZ, G. “Digital Signal Processors”, IEEE Micro, vol 20, no. 6, (ieee) 2000. [FIP2000] MARTINS, C et al, "Proposta e implementação de um ambiente de desenvolvimento e prototipação rápida de sistemas computacionais: paralelos, dedicados e reconfiguráveis." Projeto FIP 2000/04P, 2000. IV. CONCLUSÃO Obtivemos, até o momento uma microarquitetura e um conjunto de instruções (RISC básico) dedicados para o processamento de sinais e um simulador funcional do processador, além de uma linguagem assembly e um programa montador. A validação do processador foi realizada com segurança e baixo custo através de testes de códigos executados pelo simulador. Durante o processo de criação do processador, foi possível adquirir um maior conhecimento sobre metodologia de pesquisa. Esta atividade nos motivou a fazer uma iniciação científica [FIP2000]. Esperamos que ela venha a nos preparar para uma futura pós-graduação. Os produtos obtidos com este projeto possuem valor enquanto instrumentos de ensino e experiência de aprendizado da teoria de Arquitetura de Computadores. Eles podem ser usados para fins didáticos, como base ou motivação para diversos outros trabalhos. Concluímos que a arquitetura proposta é bastante simples com relação à dos DSPs presentes no mercado [ARA1997] [SAV1998] [TRU1997] ou desenvolvidos no meio acadêmico. No entanto, é possível levar adiante o projeto com pequenas adaptações e otimizações, que o tornariam mais flexível e atrativo. [HIG1990] HIGGINS, R. “Digital Signal Processing in VLSI”, Prentice Hall, 1990. [MIN1998] MINAMI, T. "A Single-chip MPEG2 MP@ML Video Encoder with Multi-chip Configuration for a",Nippon Telegraph and Telephone Corporation, (hotchips) 1998. [NIL2000] NILLESEN, M.E.; DEL PIZZO, A; PASQUARIELLO, M.; RIZZO, R. “A Very Flexible DSP-Based Controller for On-Line Test and Control of Industry Processes” Anais do 6th IEEE International On-Line Testing Workshop, (ieee) 2000. [SAV1998] SAVELL, T. "The EMU10K1 Digital Audio Processor", E-mu Systems, Inc., (hotchips) 1997. [SHE1999] SHENG, S. "Signal Processing in Communications I: xDSL", DataPath Systems, (hotchips) 1999. [TAN1999] TANENBAUM, A Organization", 4. ed, 1999. "Structured Computer [TRU1997] TRUONG, L. "The VelociTI Architecture of the TMS320C6x", Texas Instruments, (hotchips) 1997.
© Copyright 2025