1
Suporte em software para
o conjunto de instruções
SPARC16
Bruno Cardoso Lopes
[email protected]
Laboratório de Sistemas de Computação
Instituto de Computação
UNICAMP
Suporte em software para o conjunto de instruções
SPARC16
1
Agenda
2
• Introdução
• Trabalhos Relacionados
–Métodos de compressão de código
–Conjuntos de instruções de 16-bits
• Descrição da proposta
– Objetivos
– Etapas
– Desafios
• Cronograma
Suporte em software para o conjunto de instruções
SPARC16
2
Introdução
3
• SOCs estão se tornando complexos
• Techos de código maiores
• RISC = baixa densidade de código
• Alta necessidade de memória
• Memória recurso raro
Suporte em software para o conjunto de instruções
SPARC16
3
Trabalhos relacionados
4
• Duas soluções para memória:
–Compressão de código.
–Criação de conjuntos de instruções de 16 bits a
partir dos modelos RISC de 32 bits (MIPS16 e
Thumb)
• Razão de compressão:
Suporte em software para o conjunto de instruções
SPARC16
4
Conjunto de instruções de 16-bits
5
• DLX
–Criada por Hennessy e Patterson
–Primeira a ter uma extensão 16-bits
–Razão de compressão: 62%
–5% de perda de desempenho
Suporte em software para o conjunto de instruções
SPARC16
5
Conjunto de instruções de 16-bits
6
• Thumb
–Extensão 16-bits do ARM
–Troca de modo (BX)
–8 registradores, 1 stack
pointer e 1 link register
–Thumb 2, presença de
instruções privilegiadas.
–Razão de compressão: 70%
–Ganho de 30% em
desempenho (barramento
de 16 bits), 10% de perda
caso contrário.
Suporte em software para o conjunto de instruções
SPARC16
6
Conjunto de instruções de 16-bits
7
• Thumb:
Suporte em software para o conjunto de instruções
SPARC16
7
Conjunto de instruções de 16-bits
8
• Mips16
–Versão 16 bits do MIPS
–Troca de modo (JALX)
–Redução do tamanho de imediatos (16 para 5)
–8 Registradores visíveis e instruções especiais
para outros registradores (MOVR32)
–Deslocamento de offsets em Loads/Stores
–Endereçamento relativo a SP e PC
–Instrução EXTEND.
–Razão de compressão: 60%
Suporte em software para o conjunto de instruções
SPARC16
8
Conjunto de instruções de 16-bits
9
• Mips16
Suporte em software para o conjunto de instruções
SPARC16
9
Compressão de Código
10
• Diversos métodos:
–Técnicas em software
–Técnicas em hardware
• Software
–Fraser e Proebsting: Representação compacta
do código original e interpretador gerado.
–Liao: Baseado em dicionário, bloco de instruções
mais executados transformados em
procedimentos, substituidos por chamadas ao
dicionário.
–Desvantagem: Desempenho inferior ao original.
Suporte em software para o conjunto de instruções
SPARC16
10
Compressão de Código
11
• Hardware
–Compressão em software e descompressão no
hardware.
–PDC (Processor-Descompressor-Cache)
–CDM (Cache-Descompressor-Memory)
Suporte em software para o conjunto de instruções
SPARC16
11
Compressão de Código
12
• Hardware
–PDC possui melhores resultados em desempenho
e consumo de memória
–Wolfe e Chanin: Huffman e CDM
–Lekatsas: Dois métodos
• Instruções classificadas em 4 classes, cada
uma recebe um método de compressão. PDC
com um pipeline para cada classe.
Suporte em software para o conjunto de instruções
SPARC16
12
Compressão de Código
13
• Hardware
–Lekatsas:
• PDC com método de dicionário: contagem
estática do número de instruções. 25% de
aumento de desempenho, 35% na redução do
código.
–Benini: Método de dicionário, perfil dinâmico de
execução das instruções. Razão de compressão
de 72% e 28% no ganho de desempenho.
Suporte em software para o conjunto de instruções
SPARC16
13
Compressão de Código
14
• Hardware
–IC-UNICAMP: Método baseado em dicionário
• Mistura entre elementros estáticos e dinâmicos
• PDC
• I-Cache com presença de bursting
• Descompressão simultânea aos bursts
• Razão de descompressão: 72% a 88%
• Ganho de desempenho: até 45%
• Redução do consumo de potência: até 35%
Suporte em software para o conjunto de instruções
SPARC16
14
Compressor
15
• Hardware
–IC-UNICAMP:
Suporte em software para o conjunto de instruções
SPARC16
15
Descrição da Proposta
16
• Objetivos:
–Criar uma representação de 16 bits para as
instruções do processador SPARCv8.
–Implementação do suporte em software para
emissão de código.
• Alterações na etapa de geração de código de um compilador com
suporte a arquitetura SPARC.
Suporte em software para o conjunto de instruções
SPARC16
16
Escolha do SPARCv8
17
• Processador com especificação aberta.
• Casos de sucesso com outros dois
processadores RISC (Mips e ARM).
• Mercado (Leon 3, Agência Espacial
Europeia).
• Grande potencial de compressão.
Suporte em software para o conjunto de instruções
SPARC16
17
Escolha do SPARCv8
18
Suporte em software para o conjunto de instruções
SPARC16
18
Escolha do SPARCv8
19
• Mesmo em arquiteturas
RISC, nem todas
instruções são utilizadas
pelos compiladores.
• Análise das instruções
do MIPS para o
SPEC2006.
• Como nem todas são
utilizadas, é mais fácil
realizar o corte na
instruções.
Suporte em software para o conjunto de instruções
SPARC16
19
Escolha do SPARCv8
20
Suporte em software para o conjunto de instruções
SPARC16
20
Etapas
21
• Escolha do subconjunto SPARCv8.
• Análise de instruções privilegiadas
–Impacto da sua utilizaçao em rotinas que geram
gargalo em um sistemas operacional.
• Codificação do SPARC16
–Facilitando o processo de decodificação em
hardware.
• Modelo que permita coexistência e troca
entre os modos SPARC16 e SPARCv8
–Inclusive entre procedimentos diferentes.
Suporte em software para o conjunto de instruções
SPARC16
21
Etapas
22
• Escolha de um compilador
• Implementação do suporte básico a 16 bits
neste compilador.
• Implementação de otimizações específicas
para o SPARC16.
Suporte em software para o conjunto de instruções
SPARC16
22
Subconjunto SPARC16
23
• Análise estatística da ocorrência de
instruções em benchmarks consagrados:
MediaBench, MiBench e SPEC2006.
• Benchmarks compilados com pelo menos 2
compiladores diferentes.
• Contagem estática e dinâmica.
Suporte em software para o conjunto de instruções
SPARC16
23
Instruções privilegiadas
24
• Análise diferenciada de instruções
privilegiadas.
–Mapeamento de I/O em memória.
–Campos especias para ASI (Address Space
Identifier)
–Traps em software.
Suporte em software para o conjunto de instruções
SPARC16
24
Codificação do conjunto
25
• Dados provenientes da análise
–Tamanho médio de imediatos
–Registradores por bloco básico
• Determinar:
–Quantidade de registradores visíveis
–Tamanho da janela de registradores
–Quantidade de operandos
Suporte em software para o conjunto de instruções
SPARC16
25
Compilador
26
• Ponto crítico do projeto.
• Escolha do compilador adequado
–Suporte a SPARC
–Código Aberto (LLVM, GCC).
• Modificação da etapa de geração de código
–Alteração no backend SPARC.
Suporte em software para o conjunto de instruções
SPARC16
26
Compilador
27
• Teste da geração de código:
–SAV (Sparc Application Verifier) benchmark,
fornecido pela SPARC International
• Implementação de algumas otimizações:
–Preenchimento de delay slots
–Otimização de load/store
–Utilização de small sections
Suporte em software para o conjunto de instruções
SPARC16
27
Compilador
28
• LLVM (Low Level Virtual Machine)
–Código aberto
–Otimizações agressivas (LTO)
–Back-end SPARC
–Projeto moderno, baixa curva de aprendizado
–Facil integração de novos recursos e otimizações
–Back-ends pouco estáveis
Suporte em software para o conjunto de instruções
SPARC16
28
Compilador
29
• GCC (Gnu Compiler Collection)
–Código aberto
–Possui cerca de 50 back-ends estáveis
–Otimizações conservativas
–Alta curva de aprendizado (presença de código
legado)
–A implementação e teste de novos recursos são
demorados.
Suporte em software para o conjunto de instruções
SPARC16
29
Compilador
30
• Entendimento dos seguintes componentes:
–Estruturas de dados da representação
intermediária
–Algoritmos de geração de código independente
de arquitetura.
–Estruturas de dados e callbacks genéricos
customizados em cada arquitetura.
–Back-end SPARC
Suporte em software para o conjunto de instruções
SPARC16
30
Desafios
31
• SPARCv8 possui janela de registradores
–Redução do tamanho da janela
• Densidade de código do SPARCv8 é maior
que o das outras arquiteturas
–Dificuldade na decisão das instruções.
Suporte em software para o conjunto de instruções
SPARC16
31
Cronograma
32
Suporte em software para o conjunto de instruções
SPARC16
32
Cronograma
33
Suporte em software para o conjunto de instruções
SPARC16
33
Download

Suporte em software para o conjunto de instruções