Você está na página 1de 59

UNIVERSIDADE DE SÃO PAULO

Instituto de Ciências Matemáticas e de Computação

Processadores Softcore.

Dr. Leandro Andrade Martinez

Apresentação:
Arquitetura de Computadores 20/08/2017
Organização de um computador moderno

• Concepção de um sistema de computador


–Executar aplicações (velocidade, confiabilidade,
eficiência)
–Reduzir custos (tamanho do die, tecnologia,
time-to-market)
• A chave: gerenciar complexidade!
2
Intel 4004

Primeiro microprocessador

Lançado em 1970

2250 transistors

12 mm²

108 KHz

2 Projetistas
Intel 8086

(+9 Anos) Lançado em 1979

Arquitetura básica x86

29.000 transístores

33 mm²

5 MHz
Intel 80486

(+10 Anos) Lançado em 1989

Primeira implementação x86 com pipeline

1.200.000 transístores

81 mm²

25 MHz
Intel Pentium

(+5 Anos) Lançado em 1993

Primeiro x86 superscalar

3.100.000 transístores

296 mm²

60 MHz
Intel Pentium III

(+6 Anos) Lançado em 1999

95.000.000 transístores

125 mm²

450 MHz
Intel Core2duo

(+7 Anos) Lançado em 2006

293.000.000 de transístores

143 mm²

3.16 GHz
Processadores Intel
Tendências
Tendências

Intel 4004 (milhares de transístores)


Número de projetistas: 2

Intel Core i7 (bilhões de transístores)


Número de projetistas: ~1500
Arquitetos
Microarquitetura
Projetistas de circuito
Validação
Software

Próximo processador intel


Número de projetistas? x
Projetos digitais modernos

Hardcores
• ~ ¾ bilhões de transístores (core i7)
• Projeto e Projeto de alto custo
• Riscos altos
– Depois de pronto não pode ser modificado
• Inviável se o mercado não for muito
grande
– incluindo a maioria das aplicações da
indústria eletrônica
• Há alguma alternativa?
FPGA
Field Programmable Gate Arrays
(Arranjo de Portas Programáveis em Campo)
FPGA

Combina a ideia dos Dispositivos Lógicos Programáveis (PLDs) e arrays de portas lógicas

Introduzido inicialmente em 1985 pela Xilinx

Arrays de blocos lógicos (implementam funções lógicas)

Inúmeros canais de roteamento e conexão

Cercada por recursos de roteamento programáveis

I/O flexível

Fabricantes dominantes

Xilinx e Altera

Outros fabricantes

Actel e Lattice Logic


FPGA

Shinya T-Y, NAIST


FPGA

Shinya T-Y, NAIST


FPGA

17
FPGA

Shinya T-Y, NAIST


FPGA

DE0-Nano

19
FPGA

20
FPGA DE2i-150
Dual Core

150M E.L.

21
FPGA

22
FPGA - Processo de síntese

Shinya T-Y, NAIST


Linguagens de Descrição de Hardware
Exemplo – CI 7408
Paradigma de Desenvolvimento Sw/Hw
Implementações do Filtro FIR (Resposta de Impulso Finita)

Data In Data In Reg Reg Reg Reg Reg Reg

C0 C1 C2 C3 C4 C5 ... C255
Coeficientes

256 Loops necessários para


Processar amostras 256 Operações em
Reg um ciclo de clock

Data Out
Data Out

DESEMPENHO

DSP Convencional Hardware Customizado


Execução serial Execução paralela
20 linhas de C++ 3500 linhas de HDL

26
Síntese de Alto Nível (HLS)

Vantagens
HLS (High-Level Synthesis)
Bluespec e OpenCL
Código HDL de Alto Nível
Simulação rápida SystemVerilog
VHDL
Verilog

Circuitos
Lógicos

27
Plataformas baseadas em FPGA com processadores

IP IP ...
RISC Processador externo + FPGA

IP IP ...
FPGA
“SoftCore”

RISC IP ...
FPGA com processador RISC (“soft”) embarcado

IP IP ...
FPGA

28
Soft cores - O que são?

• Processadores descritos em HDL (Hardware Description


Language)
– VHDL, Verilog, Bluespec, etc.
library IEEE;
use IEEE.std_logic_1164.all;
entity instruction_register is
port (
clk, en_A, en_D, ld, reset: in STD_LOGIC;
aBus: out STD_LOGIC_VECTOR(15 downto 0);
dBus: inout STD_LOGIC_VECTOR(15 downto 0);
load, store, add, neg, halt, branch: out STD_LOGIC;
cbranch, iload, istore, dload, dadd: out STD_LOGIC
);
end instruction_register;
architecture irArch of instruction_register is
signal irReg: STD_LOGIC_VECTOR(15 downto 0);
Soft cores - vantagens

• Maior nível de abstração


– Reuso de componentes pré-desenvolvidos. Ex.: IP (Intellectual Property)
cores
– Flexibilidade - modificações de recursos por meio de interfaces gráficas ou
acesso ao código fonte
– Simplifica modificações ou atualizações
• Customização
– Configuração pode ser específica aos requisitos da aplicação
Soft cores - vantagens

• Múltiplos componentes podem ser substituídos por uma


única FPGA
• Independência* de plataforma
– Podem ser sintetizados em FPGAs ou em ASICs
• Baixo risco de obsolecência
– Não dependência de “processador de prateleira”
• Código HDL pode ser desenvolvido/comprado, mantido e reutilizado.
Exemplos: aplicações militares, núcleo de aplicações financeiras e etc.
Soft cores - vantagens

• Baixa latência entre processador e componentes dentro da


FPGA (por que isso é vantajoso?)
• Desenvolvido/disponibilizado pela maioria de fabricantes de
FPGA, por meio de empresas especializadas ou comunidade
Soft cores - desvantagens

• Desempenho inferior a um processador hardcore


– Softcore é implementado com as primitivas lógicas da FPGA
• Custo superior a um processador “off the shelf”
• Alguns estão disponíveis apenas pelas fabricantes de FPGA
(Altera/Xilinx) para uso em suas famílias de FPGAs
(Nios/Microblaze)
Softcores - exemplos de plataformas

• Altera NIOS II
• Xilinx Microblaze
• OpenRISC
• Oracle OpenSPARC
• Cobham Gaisler LEON3
ALTERA - NIOS II

32 bits - Arquitetura RISC (Reduced Instruction Set


Computer - Vantagens?)

Até 256 instruções customizáveis

Suporte a MMU em versão fast

Por quê usar uma MMU? Um SO depende dela?

Configuração disponível por meio de ferramenta


gráfica (Quartus QSys)

Clock máximo de 350 Mhz (Stratix V)


ALTERA - NIOS II

Prós

Pode ser utilizado em toda família Altera


Ambiente de desenvolvimento simples de usar

Não necessita de licença quando se usa a versão Web


Edition do Quartus II

Contras

Pode ser utilizado apenas em FPGAs da Altera

Alguns IP-core tem licença que limita tempo de uso

Código fonte não disponível


ALTERA - NIOS II (Famílias)
Características Nios II Nios II Nios II
Economy Standard Fast

Objetivo Otimizado para Equilibrio entre Otimizado para


tamanho (aplicações tamanho e velocidade melhor desempenho
pequenas) computacional

Cache (Instrução/Dados) -- Até 64KB/-- 64KB/64KB

Estágios de Pipeline 1 5 6

Multiplicação por Hardware -- 3 Ciclos por Mult. 1 Ciclo por Mult.

Elementos Lógicos ~700 ~1400 > 1800

Memória Gerenciável 2 GB 2 GB 4 GB

Predição de desvio -- Estática Dinâmica


XILINX - Microblaze

32 bits RISC

Lançado em 2001

Estável e com constantes adições de recursos

Última versão: suporte a bus AXI

Suporte a Sistemas Operacionais (MMU?)

Configuração disponível por meio de ferramenta gráfica


(Vivado)

Disponível em 6 configurações pré-definidas e apenas para


FPGAs Xilinx

Clock máximo de 377 Mhz (fast - Virtex-7)


Xilinx Microblaze

● Prós
○ Pode ser utilizado em toda família Xilinx
○ Inúmeras opções de configuração
○ Utiliza o barramento AXI por padrão

● Contras
○ Pode ser utilizado APENAS em família Xilinx
○ EDK (Embedded Dev Kit) exige licença
○ Código fonte não disponível
OpenRISC

● Iniciado (OpenRISC 1000) por grupo de estudantes eslovenos em


1999

○ Versão 1200 é mantido por desenvolvedores do


Opencores.org

● Arquitetura 32 bits disponível em Verilog sob GNU LGPL


● Clock máximo de 100 Mhz (O que impede ser mais que isso?)
OpenRISC

● Prós
○ Praticamente todo open source
(incluindo RTL)
○ GNU Toolchain é suportada
plenamente (MIPS)
○ Difundido na comunidade
● Contras
○ Poucas placas FPGA suportadas
○ Depuração complexa
○ Barramento obsoleto
○ Muitos blocos IP não são mais
mantidos
Oracle OpenSparc

● UltraSPARC t1 e t2 - arquiteturas liberada


pela Sun como opensource em 2005
(VHDL) e 2007 (Verilog), respectivamente
● Única implementação 64 bits multicore
disponível sobre licença GNU

● Vespeiro 💀
○ Nenhuma implementação em FPGA
conhecida ou documentada
■ Desafio a qualquer time de
desenvolvedores
Cobham Gaisler LEON3
Código completo disponibilizado em VHDL

Baseado e compatível com a arquitetura do


SPARC V8 - 32 bits

Inúmeros recursos configuráveis:

Pipeline com 7 estágios

Multiplicação e divisão por hardware

FPU padronizada em IEEE-754

Cache de instruções e dados


separados, com suporte a snoop
Cobham Gaisler LEON3

Prós

Disponibilizado gratuitamente sob GNU GPL para uso em pesquisa e


educação

Todo código RTL disponível

Suporte técnico excelente e rápido

Suporte a diversos SOs (Linux, RTOS, …)

GNU Toolchain é suportada plenamente


Contras

Não disponível para algumas plataformas de FPGA

Comunidade restrita
Softcores - Comparativo

Medidas de desempenho¹ baseadas no benchmark CoreMark

Não susceptível a otimizações de compilação

Composto por listas, strings e arrays nas quais as


atribuições de variável são realizadas apenas em tempo
de execução

Não faz chamadas a bibliotecas externas

Uso de ponteiros tem acesso à memória em padrões não


sequenciais

¹http://www.eetimes.com/document.asp?doc_id=1280290&page_number=6
Softcores - Aplicações comerciais

Wireless communication products

Calisto architecture (Broadcom)

Roteadores CISCO

Carrier Routing System

192 Xtensa Processadores in the Cisco


Silicon Packet Processor

capable of scaling up to 92 terabits per


second
Exemplo

47
48
49
// Função que envia os bits para a saída do FPGA para acionar o LCD
void LCD(int x, int rs, int e)
{ IOWR_ALTERA_AVALON_PIO_DATA(LCD_PIO_BASE,x + e*256 + rs*1024);
// Timer
volatile int i; i = 0;
while (i<50000) i++;
};
// Escreve uma letra no LCD
void letra(char c)
{ LCD(0,1,1);
LCD((int)c,1,1);
LCD(0,0,0);
};
// Escreve uma palavra no LCD
void escreve(char p[32])
{ int i=0;
while (p[i] != '\0’) { letra(p[i]); i++; };
};

// Muda de linha no LCD


void linha(int l)
{ LCD(0,0,0);
if (l == 1) { LCD(127,0,1); LCD(127,0,0); };

50
Futuro

Intel ATOM + FPGA

51
Introdução FPGAs atuais
CERN openlab 04/2017
(QPI: Quick Path Interconnect)

71 milhões de
portas lógicas!

https://www.hpcwire.com/2017/04/14/xeon-fpga-processor-tested-at-cern/

52
Processador + FPGA

(QPI: Quick Path Interconnect)

53
Introdução Coprojeto de Hardware e Software
Paradigma inicial Paradigma contemporâneo
Início Início

Especificação Especificação

Particionamento
Particionamento
Modelagem Projeto
Software Hardware
Modelagem Modelagem
Avaliação Software Hardware
Compilar Sintetizar

Integração
Compilar Sintetizar

Falha
Avaliação

Ok
Fim
Fim

ADAS-Vison
Framework

54
Introdução Exploração do Espaço de Projeto (DSE)

Concisão da
Especificação Concisão: Modelagem

Baseado em Análises
ADAS-Vison
Framework
Acurácia: IPs

Maior Abstração
Baseado em Simulações

Erro Capacidade de Modelo


análise
Sistema

Complexidade de projeto e RTL


tempo de exploração

Acurácia

55
Desenvolvimento Demonstração da interface

56
Resultados Estudo de caso
Primeiro estudo de caso: Gabarito para Detecção de Pedestres

Entrada Conversor Estabilizador Detector de Filtro Detector Classificador Saída


Dados RGB - Cinza Vertical Movimento Erosão BLOB Proporção Dados

Detalhamento
• Detecção de movimento por diferenciação de quadros
• Detecção de objetos por Blob
• Classificação pelo tamanho dos objetos

57
Resultados Representação da aplicação gerada
Projeto conceitual: Totalmente em hardware
Entrada Conversor Estabilizador Detector de Detector Classificador Saída
Dados RGB - Cinza Vertical Movimento BLOB A Proporção Dados

Mapeamento offset

Interconexões Glue-Box
Representação de HW

Controlador
Barramento de Controle

I/O
Conversor NIOS II Estabiliza Blob RGB-Gray
Detecção
Classificador
Conversor
I/O
Entrada Front-End Movimento Saída

Legenda
Barramento de Dados
Entrada/Saída
Hardware Controlador de
Memória
Software
FPGA
Processador

Memória

58
Agradecimentos Fim da Apresentação

Muito obrigado pela sua atenção.

59

Você também pode gostar