Proposta de Microarquitetura e Conjunto de Luís Fabrício W. Góes

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.