Transcript Document
Tecnologías y Arquitecturas
Parte I
Andrés Djordjalian <[email protected]>
Seminario de Sistemas Embebidos
1er cuatrimestre de 2011
FIUBA
03:34
1 de 47
Temas de estas primeras clases
Introducción: ¿Qué es y con qué se implementa un
sistema embebido?
Micros de los 70s y 80s
Todavía con cierta vigencia
• Ej., Intel 8051
Circuitos digitales
Máquinas de estado, secuenciales sincrónicos, separación
datapath-FSM, FPGA
Arquitecturas modernas. Parte I
RISC y pipelining
Algunos detalles de las ISAs ARM
Familias
Conjuntos de instrucciones Thumb / Thumb 2 / ARM
03:34
2 de 56
¿Qué son los sistemas embebidos?
Son circuitos que hacen algún procesamiento de
datos, destinados a una aplicación particular
…a diferencia de las computadoras, que tienen múltiples
aplicaciones según el software que se instale.
Generalmente forman parte de un sistema mayor
…que puede incluir partes analógicas, electromecánicas, etc.
Por eso se le dice embebido
Ejemplos de aplicaciones:
Control industrial cajas registradoras calculadoras
periféricos para computadoras domótica PDAs teléfonos
control de electrodomésticos controles remotos cámaras
digitales reproductores de DVD y mp3 equipos para medicina
GPS telemetría routers señalización avionics control
de automóviles videojuegos etcétera etcétera…
03:34
3 de 56
¿Cómo se implementan los SE?
Son sistemas principalmente digitales
Compuestos por circuitos combinacionales y secuenciales
•
Estos últimos, en la gran mayoría de los casos, son sincrónicos.
Pueden incluir un procesador, o incluso varios
En la materia, vamos a ocuparnos de los que incluyen uno.
Distintas formas de implementarlos:
Todos componentes COTS (commercial off-the-shelf)
Esos y algún ASIC (application-specific integrated circuit)
En lugar de un ASIC, una FPGA (field-programmable gate
array)
Cada vez hay más aplicaciones, porque pueden
hacerse dispositivos que
03:34
Cuestan menos x transistor
Consumen menos x transistor
Son más rápidos
4 de 56
Sistema en un Chip (SoC)
En un chip, se pueden conectar entre sí distintos bloques
prediseñados, como si fueran componentes que se
interconectan en un circuito impreso
A esos bloques se los llama cores (núcleos) o IP (intellectual-property,
o propiedad intelectual)
Se forma así un SoC (System
on Chip)
El la manera típica de diseñar
un ASIC complejo
ASIC = Application-Specific IC
Se puede hacer lo mismo con una FPGA
…y se le dice PSoC = Programmable System on a Chip
Para mejor performance, algunas FPGA traen (fijo) un procesador
La integración normalmente se hace mediante:
Un lenguaje de descripción de hardware (ej. VHDL, Verilog)
O una herramienta gráfica
Un core puede ser un procesador
03:34
5 de 56
Procesadores que vamos a usar
ARM 7TDMI ( unos u$s 3 )
Arquitectura RISC
32 bits
Lanzado en 1995
Pipeline de 3 etapas
ISA ARM (32 bits) y Thumb (16 bits)
0,95 DMIPS/MHz (con el set ARM)
0,28 mW/MHz (con proceso TSMC 0.18G)
ARM Cortex M3 ( unos u$s 2 )
Arquitectura RISC
32 bits
Lanzado en 2004
Pipeline de 3 etapas con
branch speculation
ISA Thumb 2 (16/32 bits)
1,25 DMIPS/MHz
0,19 mW/MHz (con proceso TSMC 0.18G)
Un 8051 procesa a unos 0,1 DMIPS/MHz
Los precios son por microcontroladores con 8K flash y 2K RAM o más
03:34
6 de 56
Ejemplo de uno de gama más alta
TI OMAP 3530 u$s 45, trae dos cores:
ARM Cortex A8
32 bits
Arquitectura RISC
ISA ARM (32 bits) y Thumb-2 (16/32 bits)
desde 600 MHz hasta más de 1 GHz
Arquitectura superescalar (2 issue)
Lanzado en 2009
Pipelines de 13 etapas
Caches L1: split, 16KB o 32 KB c/u
Cache L2: 64 KB a 2 MB
TMS320C64x+
2 DMIPS/MHz
Procesador digital de señales (DSP)
Extensión para
multimedia: NEON
32 bits
Arquitectura VLIW (8 issue)
Aritmética de punto fijo de 40 bits
03:34
7 de 56
Temas de estas primeras clases
Introducción: ¿Qué es y con qué se implementa un
sistema embebido?
Micros de los 70s y 80s
Todavía con cierta vigencia
• Ej., Intel 8051
Circuitos digitales
Máquinas de estado, secuenciales sincrónicos, separación
datapath-FSM, FPGA
Arquitecturas modernas. Parte I
RISC y pipelining
Algunos detalles de las ISAs ARM
Familias
Conjuntos de instrucciones Thumb / Thumb 2 / ARM
03:34
8 de 56
MOS Technology 6502 (año 1975)
03:34
9 de 56
Algunos de los primeros micros
1985
1970
32 bits
1975
PMOS
1980
| NMOS
| HMOS
68020
| CMOS
80386
Motorola 68000
16 bits
Intel 8086
80286
8088
GI PIC1640
MOS T. 6502
Zilog Z80
8 bits
8008
8080
Motorola 6800
4 bits
03:34
Intel 8048
8051
6805
68HC11
tiempo
10 de 56
Intel 4004
Mercado en el 2006: 8 bits
03:34
11 de 56
Arquitectura de Computadoras
Paremos un minuto para definir algunas cosas:
“Arquitectura” es la descripción de un sistema en
un nivel de abstracción alto
Ej., mediante un diagrama de bloques
Ej., “arquitectura de computadoras” (refiriéndonos al
procesador nomás; no al disco, interfaces, etc.), de la cual hay
dos tipos:
1) “Arquitectura de Conjunto de Instrucciones”
Instruction-Set Architecture, o ISA
Es la arquitectura “vista desde afuera”
•
Registros, conjunto de instrucciones, esquema de interrupciones,
etc.
A esta, a veces se le dice “arquitectura” a secas
2) “Microarquitectura”
Es la arquitectura interna del procesador
•
03:34
O sea, cómo está implementada la ISA
12 de 56
Tipos de ISA
Acumulador
Código para:
foo=bar+baz
Load bar
Add
baz
Store foo
Algunos de los
micros con ISA
de este tipo
Prácticamente
todos los de 8
bits
03:34
RegistroMemoria
Load-Store
Load R1,bar Load R1,bar
Add
R1,baz Load R2,baz
Store foo,R1 Add R3,R1,R2
Store foo,R3
Intel 8086,
Motorola 68000
Los de 32 bits
modernos
13 de 56
Instrucciones en el 8086 y 68000
Las dos arquitecturas son register-memory de 2
operandos (como máximo)
No pueden haber dos accesos a memoria en una instrucción.
8086:
ADC
AX,baz
68000:
ADD.W baz,D0
En el 68000 original, la anterior tardaba 8 ciclos (!)
Suponiendo que la memoria respondía sin esperas
Un simple MOVE.B D0,D1 tardaba 4 ciclos (!)
Tienen muchos modos de direccionamiento
12 en el 8086, 8 en el 68000
Incluyendo cosas como:
CMPM.B
(A1)+,(A2)+
CMPA.L
100H(A2,D0.W),A3
Multiplicación
MULU foo,D1
…70 ciclos (!)
03:34
14 de 56
Temas de estas primeras clases
Introducción: ¿Qué es y con qué se implementa un
sistema embebido?
Micros de los 70s y 80s
Todavía con cierta vigencia
• Ej., Intel 8051
Circuitos digitales
Máquinas de estado, secuenciales sincrónicos, separación
datapath-FSM, FPGA
Arquitecturas modernas. Parte I
RISC y pipelining
Algunos detalles de las ISAs ARM
Familias
Conjuntos de instrucciones Thumb / Thumb 2 / ARM
03:34
15 de 56
Problema a resolver
Diseñar un circuito que codifique una cadena de
bytes a código RLE
Codificar en RLE (run-length encoding) significa convertir las
secuencias de un mismo número en la tupla:
<código de escape, número, cantidad de repeticiones>
• Ej.: abccbaaaaaba abccb/a5ba
Es particularmente útil para comprimir gráficos
• Se usa en el formato PCX
8
8
Data in
Data out
Codificador RLE
Valid1
Ready1
Valid2
Ready2
CK
(La interfaz es como la de una memoria FIFO)
03:34
16 de 56
Problema
a resolver
8
8
Data in
Codificador RLE
Valid1
Ready1
Data out
Valid2
Ready2
CK
¿Va a ser un circuito combinacional o secuencial?
Que sea un secuencial sincrónico
Son más fáciles de diseñar
• En particular, de validar que la temporización sea correcta
Son escalables
Por eso, la electrónica digital está orientada hacia sincrónicos
• Los componentes, el software EDA, etc.
• Dejemos las técnicas asincrónicas (que son diversas) para casos
especiales, más avanzados
Recordemos que un secuencial es una máquina de
estados finitos (finite-state machine, o FSM)
Que, a su vez, puede ser descripta mediante un diagrama de
estados
03:34
17 de 56
Diagramas de estado
Ejemplo: Detector de secuencia “abac”
entradas = {a,b,c}
salidas = {sí, no}
Moore
Produce “sí” sólo
cuando las últimas
cuatro entradas
fueron “abac”
Mealy
03:34
18 de 56
Actividad
Formen grupos
de 2 a 4 personas
1. Dibujen el diagrama de estados de una máquina de
Moore que produzca, en la salida, un 1, 2 o 3,
cuando sus últimas dos entradas fueron 1, 2 o 3,
respectivamente
Entrada = {1,2,3}
Salida = {-,1,2,3}
2. Lo mismo, pero para una máquina de Mealy
3. ¿Cuándo se producen las transiciones en estas
máquinas y las de la diapositiva anterior? ¿En qué
momentos puede cambiar de estado un secuencial
sincrónico? Entonces, ¿hay que sincronizar?
03:34
19 de 56
Secuenciales sincrónicos
Máq. de Moore
03:34
Máq. de Mealy
20 de 56
Secuenciales
sincrónicos
i1
o1
o1
o
1
= señal indefinida
03:34
Diagrama de tiempo
21 de 56
Problema a resolver
8
8
Data out
Data in
Codificador RLE
Valid1
Valid2
Ready2
Ready1
CK
¿Va a ser un circuito combinacional o secuencial?
Que sea un secuencial sincrónico
Más o menos, ¿qué cantidad de estados necesita
tener este secuencial?
03:34
22 de 56
Máquina de estados + Datapath
Para encarar estos problemas, se suele separar en
dos subsistemas:
Una ruta de datos (o datapath), compuesta por los
combinacionales y registros que se repiten “n” veces (en este
caso, 8) dado que trabajan sobre cada bit.
Una máquina de estados (o FSM) que controla el datapath
• Frecuentemente se le dice unidad de control.
• (FSM = Finite-State Machine)
Control
Datapath
U.C.
Status
Implementándolo así, la FSM de un codificador RLE
necesita no más que un número manejable de
estados
03:34
23 de 56
Datapath para un codificador RLE
A=Din
¿Qué pasa si
entra un ‘\’?
Data
in
Comparador
TS1
Registro A
Registro B
Data
out
cargar
TS2
cargar
contar
resetar
Valid1
Ready1
03:34
Contador
TC
(terminal
count)
TS3
‘\’
(const)
Valid2
Ready2
24 de 56
Datapath para un codificador RLE
Comparador
contra ‘\’
Din=‘\’
A=Din
Comparador
Data in
TS1
Registro A
Registro B
Data
out
cargar
cargar
contar
resetar
Valid1
Ready1
03:34
TS2
Contador
TC
‘\’
(const)
TS3
Valid2
Ready2
25 de 56
Unidad de control del codificador
No la vamos a hacer toda porque es grande
…aunque no tanto (¿unos 12 o 15 estados?)
Pero planteemos una de las transiciones a modo de ejemplo:
•
…haciéndola una máquina de Mealy
Un estado va a ser: “El codificador está
‘almacenando’ un solo carácter, distinto de ‘\’.”
Otro estado va a ser: “El codificador está
‘almacenando’ dos caracteres iguales, distintos de
‘\’.”
1. ¿Qué condiciones producen la transición del primero
al segundo?
2. ¿Qué salidas tiene que presentar la U.C. durante esa
transición?
03:34
26 de 56
Una Transición (ej.)
Comparador
contra ‘\’
El codificador está
‘almacenando’ un solo
carácter, distinto de ‘\’
?/?
Din=‘\’
El codificador está
‘almacenando’ dos
caracteres iguales,
distintos de ‘\’
A=Din
Comparador
Data in
TS1
Registro A
Registro B
Data
out
cargar
cargar
contar
resetar
Valid1
Ready1
03:34
TS2
Contador
TC
TS3
‘\’
(const)
Valid2
Ready2
27 de 56
Cómo no implimentaríamos hoy ese
codificador
Difícilmente nos interese implementarlo con
componentes MSI…
Componentes MSI son CIs de compuertas, contadores, etc., por
ejemplo de series 74LSxx, 74HCxx, 74Fxx, CD4xxx, etc.
…porque no sería tan económico como las
alternativas
Debido, entre otros factores, a los costos de interconexión
…y porque no sería tan rápido y/o de bajo consumo
como las alternativas
Debido, también, a las interconexiones
• Porque salir de un integrado y entrar en otro implica que hayan
capacitancias parásitas
– Estas bajan la velocidad y aumentan el consumo
Si no necesitáramos velocidad y/o bajo consumo, seguramente
preferiríamos usar un micro
03:34
28 de 56
Cómo sí implimentaríamos hoy ese
codificador
Usaríamos una FPGA o un CPLD
FPGAs = Field-Programmable Gate Array
• (o “arreglo de compuertas programable ‘in situ’”)
CPLDs = Complex Programmable Logic Device
• (o “dispositivo lógico programable complejo”)
…o lo implementaríamos en un circuito integrado full
custom CMOS
Full custom = que se diseña todo “a medida”
…o usaríamos un Structured ASIC o un Gate Array
Esto es un término medio entre las dos opciones anteriores
Significa fabricar un circuito integrado (generalmente CMOS),
pero haciendo “a medida” únicamente algunas capas de metal
(o sea, interconexión), utilizando el resto prefabricado
• Las capas prefabricadas pueden proveer un arreglo de compuertas,
o celdas más complejas
03:34
29 de 56
FPGA - ¿Qué es?
Definición simplificada:
Arreglo de celdas básicas programables cuyas
interconexiones también son programables
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
Arquitectura genérica de FPGA
03:34
Fuente: UBA - Sistemas Embebidos - FPGA – SoftCores – 2010 – Franco Ferrucci, Sebastián García
30 de 56
FPGA - Flujo de Diseño
Flujo de diseño típico:
Verificación
Entrada
de Diseño
Síntesis
Lógica
Place &
Route
Programación
Lenguaje de descripción de
Hardware:
-VHDL
-Verilog
03:34
Fuente: UBA - Sistemas Embebidos - FPGA – SoftCores – 2010 – Franco Ferrucci, Sebastián García
31 de 56
Lenguajes de Descripción de HW
Para el diseño de circuitos digitales, los “circuitos de
compuertas” fueron reemplazados, en gran medida,
por lenguajes de descripción de hardware
= hardware-description languages, o HDL
Los más populares son VHDL y Verilog
O sea que, para diseñar un ASIC o una FPGA,
normalmente se escribe un código VHDL o Verilog,
que un software EDA puede simular y sintetizar
Se puede usar en dos niveles de abstracción:
Nivel de comportamiento (behavioral level):
• Describe la funcionalidad del circuito, similar a un programa de
computación
Nivel de transferencia de registros (register-transfer level, o
RTL):
• Describe cómo se implementa lo de arriba moviendo datos de un
circuito a otro
• Este código tiene unas 10 veces más líneas que el anterior
03:34
32 de 56
FSM + Datapath en un HDL
Para codificarlos, hay dos estilos:
1. Poner la FSM y el datapath en distintas partes del código
• Para implementar la FSM se usa algo similar a un switch-case de C
2. … o juntar el FSM y el datapath
• Intercalando transferencias de registros en la estructura símil switchcase que se usa para implementar la FSM
(Ver ejemplos en archivos separados)
La ventaja de la 1 es que se logra mayor conciencia de
los recursos que se están “pidiendo”
Y eso sirve para optimizar, por ejemplo arreglándoselas con un
solo sumador
O sea que la desventaja de la 2 es que uno no se da cuenta que
hay una FSM por un lado y un datapath por otro
• Pero eso puede ser una ventaja, porque lo hace más fácil de
programar.
03:34
33 de 56
Temas de estas primeras clases
Introducción: ¿Qué es y con qué se implementa un
sistema embebido?
Micros de los 70s y 80s
Todavía con cierta vigencia
• Ej., Intel 8051
Circuitos digitales
Máquinas de estado, secuenciales sincrónicos, separación
datapath-FSM, FPGA
Arquitecturas modernas. Parte I
RISC y pipelining
Algunos detalles de las ISAs ARM
Familias
Conjuntos de instrucciones Thumb / Thumb 2 / ARM
03:34
34 de 56
Procesadores
Lo explicado
hasta ahora
puede usarse
para diseñar y
fabricar
procesadores
Un datapath
simple de
ejemplo:
Fuente: S. Furber; ARM System-on-Chip
Architecture, 2nd ed; Pearson Education;
2000
03:34
35 de 56
Procesadores
En un procesador, la unidad de control puede ser
compleja
En particular si las instrucciones nativas (o sea en Assembly)
realizan operaciones complicadas o requieren varios ciclos de
máquina
• Esa era la tendencia hasta los ochentas
Estas UCs podían demandar bastante tiempo de
diseño y ocupar buena parte del silicio de los
primeros microprocesadores
Frecuentemente, para implementar UCs complejas
sin perder flexibilidad, se usaba una técnica llamada
microprogramación
Consistía en guardar el comportamiento de la UC en una ROM,
como si fuera un programa, que era “ejecutado” por un circuito
secuencial sencillo y genérico.
03:34
36 de 56
Reduced-Instr.-Set Computer (RISC)
En los 70s, en IBM primero, y en las universidades de
Stanford y Berkeley después, se empezó a cuestionar
esta tendencia de sumarle complejidad a los
conjuntos de instrucciones
Sus argumentos:
Gracias a los compiladores, las instrucciones sofisticadas dejan
de ser útiles
Eliminándolas, se puede optimizar las que sí lo son
…y se ahorra mucho tiempo de diseño
…y se libera superficie de silicio ocupada por la unidad de
control, la que puede usarse para mejorar el datapath
• Por ej, para ponerle un mejor multiplicador
Nace el estilo RISC para el diseño de arquitecturas de
computadoras
…que, desde entonces, tiene enorme influencia en la disciplina
03:34
37 de 56
Características del Estilo RISC
(no excluyentes)
Arquitectura tipo load-store
Las operaciones lógicas y aritméticas operan sólo sobre
registros. Las únicas instrucciones que acceden a memoria son
para transferir su contenido desde o hacia un registro
Conjunto de instrucciones reducido
…aunque, hoy en día, hay RISC con montones de instrucciones
Las intrucciones tienen largo uniforme (ej. 32 bits)
…aunque, hoy en día, hay ISAs RISC con largo variable, como
Thumb 2
Todas las instrucciones pueden ser ejecutadas en 1
ciclo
…suponiendo que la memoria responde lo suficientemente
rápido
03:34
38 de 56
El Estilo RISC
Se habla de “arquitecturas RISC” versus
“arquitecturas CISC”
La mayoría de las arquitecturas planteadas desde entonces son
RISC
En algunas de las que no son RISC, se traducen internamente
las instrucciones CISC a un código RISC que es ejecutado por
un núcleo RISC
• Eso se hace, por ejemplo, en las microarquitecturas modernas para
PC
Una de las ventajas de RISC es que es óptimo para
pipelining
Pipelining es una técnica para aumentar la frecuencia de clock, y
como consecuencia, la velocidad de procesamiento
Pero primero veamos un típico datapath RISC
03:34
39 de 56
Datapath RISC
Patterson, Hennessy; Computer
Organization and Design, The
Hardware Software Interface
Ejemplo de una Instrucción con 3 Operandos:
01001 … 010
Opcode, etc.
03:34
0 0 0 0 1 1 0 0 0 1 0 1 0 0 0 1 1 0
Reg. destino
Registros fuente
0…1
40 de 56
Datapath RISC + Unidad de Control
03:34
41 de 56
Segmentación (Pipelining)
Ejemplos de
código Assembly:
03:34
LDR R1,[R0]
LDR R3,[R2]
ADD R1,R1,#200
CMP R5,R6
BEQ SonIguales
ADD R5,R5,R4
ADD R5,R6,R7
SUB R4,R4,R5
42 de 56
Segmentación (Pipelining)
03:34
43 de 56
ARM
Acorn era “la Apple británica”. En los 80s creó su
propio procesador RISC para sus computadoras
Acorn, Apple y VLSI Technology forman ARM en 1990
El modelo de negocios es ofrecer IP, para que
licencien:
Fabricantes de
microcontroladores
como NXP, Atmel,
ST, TI, etc.
O quienes
necesitan micros
en sus ASICs
• Ej., fabricantes
de teléfonos
celulares
03:34
(Semicast Research)
44 de 56
Mercado Actual de 32 bits
03:34
45 de 56
Periféricos
Un microcontrolador es un procesador con memoria y
periféricos, todo en un mismo chip
Ejemplos de periféricos de uso actual:
Interfase serie asincrónicas (UART) Interfase serie sincrónica
pines de E/S (puerto paralelo) Modulador de ancho de pulso
(PWM) Conversores A/D y D/A Comparador de tensión
Temporizador (timer) Puerto I2C / SPI Interfase USB
Controlador CAN Puerto I2S reloj de tiempo real
Controlador Ethernet (MAC/PHY) Controlador de LCD Etc.
Otros circuitos que pueden tener:
Oscilador para fck Circuito de reset Watchdog timer Brownout reset Puerto JTAG Etc.
Los periféricos son un factor importante a tener en
cuenta para decidir qué microcontrolador usar
03:34
46 de 56
Temas de estas primeras clases
Introducción: ¿Qué es y con qué se implementa un
sistema embebido?
Micros de los 70s y 80s
Todavía con cierta vigencia
• Ej., Intel 8051
Circuitos digitales
Máquinas de estado, secuenciales sincrónicos, separación
datapath-FSM, FPGA
Arquitecturas modernas. Parte I
RISC y pipelining
Algunos detalles de las ISAs ARM
Familias
Conjuntos de instrucciones Thumb / Thumb 2 / ARM
03:34
Pero antes, demos un pantallazo sobre CMOS…
47 de 56
Circuitos Integrados MOS
Ley de Moore: Cada
2 años, el doble de
transistores
NMOS
03:34
48 de 56
CMOS
Fuente: Wikimedia Commons
03:34
49 de 56