Confira neste webinar uma introdução ao RISC-V como a alternativa open-source às ISAs proprietárias como ARM e x86. E muitas outras informações!
Para mais detalhes acesse: https://www.embarcados.com.br/webinars/isa-risc-v-e-seu-ecossistema/
5. Uma Introdução a ISA RISC-V
e seu Ecossistema
Marcelo R. Pias, Nathan F. Garcia e Luiz Gustavo C. Xavier
Centro de Ciências Computacionais - C3
Universidade Federal do Rio Grande (FURG)
6. Sumário
1. Introdução: Why RISC-V?
2. ISA Base RV32I
3. Instruções Atômicas
4. Extensão Vetorial
5. RISC-V e Arquiteturas de
Domínio Específico
6. Fundação RISC-V
7. Bibliografia gratuita
2
12. +1 bilhão vendido/ano
Mercado dominado por
processadores ISA ARM
+100.000 cores por
warehouse
Cloud Computing, SaaS,
IaaS
Infraestrutura Wired/Wireless
Smart TV / Música / Jogos /
Automotivo
Internet of Things!
Indústria 4.0
Mobile Warehouse-scale Embarcado
8
13. 9
+1 bilhão vendido/ano
Mercado dominado por
processadores ISA ARM
+100.000 cores por
warehouse
Cloud Computing, SaaS,
IaaS
Infraestrutura Wired/Wireless
Smart TV / Música / Jogos /
Automotivo
Internet of Things!
Indústria 4.0
ARM x86 ARM
15. ISA vs Microarquitetura
ISA, µArch, circuitosInterface Software e Hardware
Nível de aplicação
Desenvolvedores
Sistema Operacional
Compilador
11
MicroprocessadorISA - Arq. Conjunto de
Instruções
16. Por que o conjunto de instruções é tão
importante?
“A ISA é a interface mais
importante de um sistema de
computação, onde o Software
encontra o Hardware.”
12
17. ● Precisamos de todas estas ISAs?
● Estas devem ser proprietárias?
● E se existisse uma ISA free e open-source que
todos pudessem utilizar?
13
18. Open Software - Padrões Funcionam!
14
Fonte: RISC-V Foundation
19. Origem do RISC-V: Ensino em Berkeley
15
Em 2010, após muitos projetos utilizarem MIPS e SPARC, foi o
momento de procurar uma ISA para os próximos projetos de
pesquisa:
● ARM quase impossível – sem 64-bit, complexo, Prop. Intelectual
● x86 impossível – extremamente complexa, problemas com Prop.
Intelectual
Início de projeto de 3 meses em 2010:
Desenvolver nova ISA do zero.
Andrew Waterman, Yunsup Lee, David Patterson, Krste Asanovic
20. O que há de diferente no RISC-V?
16
SIMPLICIDADE
DESIGN DO ZERO
MODULARIDADE
Muito menor se comparada
às outras ISAs comerciais
Pequena ISA Base
Evita utilizar características
da microarquitetura
34. O que são? Por que usá-las?
30
• Em cenários de execução concorrente, são necessários
meios para barrar o acesso simultâneo de diferentes
processos ou threads a uma mesma área de
endereçamento.
• Instruções Atômicas: atomicidade a nível de instrução,
muito mais “baratas” que aquisição de mutex.
37. Inst. Atômicas X Semaphores
33
var mtx sync.Mutex
mtx.Lock()
defer mtx.Unlock()
if x == value {
x = 0
}
atomic.CompareAndSwapInt32(&x, value, 0)
38. Inst. Atômicas X Semaphores
34
var mtx sync.Mutex
mtx.Lock()
defer mtx.Unlock()
if x == value {
x = 0
}
atomic.CompareAndSwapInt32(&x, value, 0)
Sys Mutex Lock/Unlock = 25ns
Go sync.Mutex ~= 100ns
Fonte: How to optimize Go code for really high performance.
Disponível em: https://www.youtube.com/watch?v=ZuQcbqYK0BY
Go atomic ~= 15ns
Sem contenção de trava
(+escalável)
41. Arquiteturas Puramente Vetoriais
37
• Ideia básica:
• Conjuntos de elementos de dados em “registradores vetoriais”
• Opera sobre estes registradores, escrevendo resultado na
memória
• Registradores são controlados pelo compilador
• Usados para “esconder” latência de memória
• Aumentar a largura de banda de memória
42. Por que o grande interesse?
38
Extensão vetorial (Intel / ARM)
Processamento Audio/Video Streaming
Máquina Vetorial
NVIDIA Nano Jetson GPU
(aplicações Deep Learning
embarcadas)
Máquina Vetorial
Apple GPUs
Neural Engine
NLP (Natural Language
Processing) - Deep Learning
43. Arquiteturas Puramente Vetoriais - RV32V
39
• Vagamente baseada no Cray-1
• 32 64-bit registradores vetoriais
• Totalmente pipeline
• Hazards de dados e controle são detectados
• Registradores Escalares (31 geral, 32 ponto flutuante)
44. Instruções RV32V
40
• .vv: operação sobre dois vetores
• .vs and .sv: operação sobre vetor e escalar
• LV/SV: vector load & vector store de um endereço
45. RV32V - Exemplo DAXPY
41
vsetdcfg 4*FP64 # Enable 4 DP FP vregs
fld f0,a # Load scalar a
vld v0,x5 # Load vector X
vmul v1,v0,f0 # Vector-scalar mult
vld v2,x6 # Load vector Y
vadd v3,v1,v2 # Vector-vector add
vst v3,x6 # Store the sum
vdisable # Disable vector regs
RV32V: 8 instruções
RV64: 258 instruções (modo escalar)
46. Tempo de Execução
42
• Depende de 2 fatores:
• Tamanho dos vetores operandos
• Dependência entre dados
• ULAS vetoriais consomem um elemento por ciclo de clock:
• Tempo de execução é aprox. o tamanho do vetor
47. Desafios
43
1. Tempo de Start Up
• Latência da unidade vetorial
• Considera o mesmo que no Cray-1
• Floating-point add => 6 clock cycles
• Floating-point multiply => 7 clock cycles
• Floating-point divide => 20 clock cycles
• Vector load => 12 clock cycles
48. Desafios
44
2. Novas Features:
• > 1 elemento de dados por ciclo relógio
• Cláusulas IF em código vetorial
• Matrizes Multidimensionais
• Matrizes Esparsas
• Programação de um computador vetorial
49. Exemplo Vector Masking Registers
45
int X[64], Y[64];
for (int i = 0; i < 64; i++){
if (X[i] != 0)
X[i] = X[i] – Y[i];
}
50. Exemplo Vector Masking Registers
46
vsetdcfg 2*FP64 # Enable 2 64b FP vector regs
vsetpcfgi1 # Enable 1 predicate register
vld v0,x5 # Load vector X into v0
vld v1,x6 # Load vector Y into v1
fmv.d.x f0,x0 # Put (FP) zero into f0
vpne p0,v0,f0 # Set p0(i) to 1 if v0(i)!=f0
vsub v0,v0,v1 # Subtract under vector mask
vst v0,x5 # Store the result in X
vdisable # Disable vector registers
vpdisable # Disable predicate registers
51. Exemplo Vector Masking Registers
47
vsetdcfg 2*FP64 # Enable 2 64b FP vector regs
vsetpcfgi1 # Enable 1 predicate register
vld v0,x5 # Load vector X into v0
vld v1,x6 # Load vector Y into v1
fmv.d.x f0,x0 # Put (FP) zero into f0
vpne p0,v0,f0 # Set p0(i) to 1 if v0(i)!=f0
vsub v0,v0,v1 # Subtract under vector mask
vst v0,x5 # Store the result in X
vdisable # Disable vector registers
vpdisable # Disable predicate registers
Uso de registradores de
“predicado” para
“desabilitar” elementos
53. Introdução
49
“Uma abordagem mais centrada em hardware é
projetar arquiteturas adaptadas a um domínio de
problema específico e oferecer ganhos significativos de
desempenho (e eficiência) para esse domínio.”
David Patterson
54. Introdução
50
Exemplos:
● módulos de satélites;
● gravadores de áudio;
● bitcoin miners;
● aceleradores de IA (Deep Learning).
Fonte: bitmain.com
Fonte: netxplatform.com
55. Unidade de Processamento de Tensores
51
● “Uma unidade de processamento de tensores (TPU) é um
circuito integrado desenvolvido pela Google especificamente
para o aprendizado de máquinas de rede neural.”
Fonte: physlink.com
56. Unidade de Processamento de Tensores
52
● Idealizado em 2006, desenvolvido em 2013;
● Curto tempo de desenvolvimento;
● Baseado nas funções do TensorFlow
● David Patterson (um dos criadores do RISC-V) participou do
desenvolvimento
Fonte: tensorflow.org
57. Unidade de Processamento de Tensores
53
Recursos computacionais:
● MXUs (Unidade de Multiplicação de Matrizes);
● Buffer unificado;
● Unidade de Ativação.
58. 54
● Alto desempenho em computações de álgebra linear
● Treinamento de modelos drasticamente mais rápidos
UPTs: Vantagens
59. UPTs: Vantagens
55
● 1 TPU = 100 milhões de fotos analisadas no Google Fotos por dia
Fonte: techcrunch.com
60. UPTs: Vantagens
56
● Ótima relação Desempenho/Potência
Fonte: John Hennessy and David Patterson Deliver Turing Lecture at ISCA 2018
64. Por quê RISC-V em Circuitos Especializados?
60
● Livre;
● Em crescimento;
● Modular.
65. Por quê RISC-V em Circuitos Especializados?
61
● Futuras extensões
Fonte: seucondominio.com.br
66. Por quê RISC-V em Circuitos Especializados?
62
● 2% da emissão de CO2 do mundo advém do
uso de aparelhos eletrônicos
● CIAEs e ADEs: muito importantes!
Fonte: Nature - How to stop data centres from gobbling up the world’s electricity
68. Missão
64
“A Fundação RISC-V é uma organização
sem fins lucrativos controlada por seus
membros, direcionando o
desenvolvimento e impulsão a adoção
da ISA RISC-V.”
69. Membros
65
● Mais de 230 membros até o momento;
● Hierarquia definida, com limitação baseada em
incentivo.
70. Como se tornar membro?
66
• Diferentes planos de contribuição (organizações e
individual)
• Benefícios: participação em eventos da fundação, direito
a voto e assento nas reuniões de decisão
• https://riscv.org/membership-application/
75. Guia prático RISC-V: Atlas de uma Arquitetura Aberta
71
● 100% livre, gratuito
● Traduzido em português
● Ótima introdução ao RISC-V
76. Objetivo
72
“Pensamos que um guia de programação
compacto ajudaria os recém chegados a
entender por que RISC-V é um conjunto
de instruções atraente, e também verem
como ela difere-se das ISAs do passado.”
77. Alguns Tópicos Abordados
73
Cap. 2: ISA Base;
Cap. 4: Multiplicação e divisão;
Cap. 6: Instruções atômicas;
Cap. 7: Instruções compactas;
Cap. 8: Computação vetorial;
Cap. 11: Futuras extensões.
82. Leitura
78
● 125 páginas de conteúdo; 236 no total
● 75 imagens e tabelas nessas páginas;
Em comparação:
RISC-V: Atlas de uma arquitetura aberta: 236 páginas no
total e 76,702 palavras
ARM Architecture Reference Manual Ltd. 2014: 2736
páginas 895,032 palavras
Intel Corporation 2016: 2198 páginas e 2,186,259 palavras
85. Single Instruction Multiple Data - SIMD
81
• Explora paralelismo em nível de dados
• Computação científica orientada a matrizes
• Processadores orientados a mídias (imagem e áudio)
• É mais eficiente em termos de energia que MIMD
• Busca apenas UMA instrução por operação nos dados
• opção atrativa para dispositivos móveis
86. Operações em Lotes - “Comboios”
82
• Sequências de dependências “leitura-após-escrita”
colocadas no mesmo grupo através de encadeamento
• Encadeamento:
• Permite operação sobre vetor iniciar a medida que elementos
individuais do operandos de origem tornam-se disponíveis
87. Exemplo
83
vld v0,x5 # Load vector X
vmul v1,v0,f0 # Vector-scalar multiply
vld v2,x6 # Load vector Y
vadd v3,v1,v2 # Vector-vector add
vst v3,x6 # Store the sum
Comboios:
1 vld vmul
2 vld vadd
3 vst
88. ET-Maxion e ET-Minion
84
● Baseados na arquitetura de processadores BOOM
(Berkeley-Out-Of-Order Architecture). Ou seja, livre:
https://github.com/riscv-boom/riscv-boom
● Focados em aplicações de aprendizado em geral (álgebra linear)
● Visam o melhor desempenho por watt do mercado.