• Nenhum resultado encontrado

Arquitetura de Computadores. Prof. Alexandro Baldassin. 1o semestre/2017

N/A
N/A
Protected

Academic year: 2021

Share "Arquitetura de Computadores. Prof. Alexandro Baldassin. 1o semestre/2017"

Copied!
82
0
0

Texto

(1)

Arquitetura de Computadores Prof. Alexandro Baldassin

(2)

Personagens da Semana

In 2000 they shared the IEEE John Von Neumann Medal “for crea(ng a revolu(on in computer architecture through their explora(on, populariza(on, and commercializa(on of architectural innova(ons.” David Pa5erson (le9) John Hennessy (right)

(3)

ARQUITETURA DO CONJUNTO DE

INSTRUÇÕES (CONTINUAÇÃO)

Tradeoffs

(4)

•  O nível de complexidade das instruções é um dos fatores mais determinantes no projeto de um ISA •  Porém, esse fator é uma soma de diversos outros vistos a seguir –  Formato das instruções –  Tipo de armazenamento interno, número de operandos e restrições de processamento –  Modos de endereçamento –  Memória e sub-sistema e entrada e saída

Fatores da complexidade

(5)

•  Uma instrução consiste basicamente de um código de operação e operandos –  Código de operação •  o que a instrução faz –  Operandos •  Valores usados na execução da operação correspondente

Formato das instruções

Duas visões Linguagem de Montagem Linguagem de Máquina add r1, r2, r3 00101000010111111 Quais bits determinam a Formato bem definido necessário!

(6)

•  RISC exemplo: MIPS

(7)

•  CISC exemplo: x86

(8)

•  Tamanho fixo: todas as instruções possuem mesmo tamanho –  Vantagens •  Decodificação pelo hardware é simples •  Mais simples de decodificar mais de uma instrução ao mesmo tempo –  Desvantagens •  Bits desperdiçados (por que isso é ruim?) •  Mais dikcil de estender o ISA •  Tamanho variável: tamanho das instruções diferem –  Vantagens •  Codificação compacta, mais fácil de estender o ISA –  Desvantagens •  Mais lógica necessária para decodificação •  Mais dikcil de decodificar múllplas instruções simultaneamente

Formato das instruções: compromissos

(9)
(10)

Tamanho médio de opcodes (x86)

Fonte: ISA Aging: A X86 Case Study

(11)

•  Geralmente arquiteturas com formato de tamanho fixo possuem decodificação uniforme –  os mesmos bits em cada instrução estão nas mesmas posições, em especial o código de operação –  Permite olmizações de hardware (predição de saltos, visto mais adiante)

Nota sobre formatos

(12)

•  Um ISA pode ser dividido em classes de acordo com o lpo de armazenamento interno, número de operandos e restrições de processamento (ULA)

Classes de ISA

Máquina a pilha (0-address machine) Exemplo (C = A + B) PUSH A PUSH B ADD POP C 0 operandos •  Os operandos estão implicitamente no topo da pilha (TOS) •  Operações push e pop são usadas para transferir operandos entre a memória e a pilha

(13)

•  Um ISA pode ser dividido em classes de acordo com o lpo de armazenamento interno, número de operandos e restrições de processamento (ULA)

Classes de ISA

Máquina acumuladora (1-address machine) Exemplo (C = A + B) LOAD A ADD B STORE C 1 operando •  Um registrador chamado de acumulador é sempre usado implicitamente nas operações

(14)

•  Um ISA pode ser dividido em classes de acordo com o lpo de armazenamento interno, número de operandos e restrições de processamento (ULA)

Classes de ISA

Register-Memory (2-address machine) Exemplo (C = A + B) LOAD R1, A ADD R1, B STORE R1, C 2 operandos •  1 dos operandos pode estar na memória •  1 dos registradores fontes também é deslno •  Registradores estão explícitos na instrução

(15)

•  Um ISA pode ser dividido em classes de acordo com o lpo de armazenamento interno, número de operandos e restrições de processamento (ULA)

Classes de ISA

Load-Store (3-address machine) Exemplo (C = A + B) LOAD R1, A LOAD R2, B ADD R3, R1, R2 STORE R3, C 3 operandos •  Operandos da ULA são apenas registradores •  Instruções específicas usadas para buscar e levar (load-store) valores na memória

(16)

•  Uma arquitetura memory-memory permite que todos os operandos (2 ou 3) estejam em memória –  Ex: VAX (ADD C, A, B) –  Nenhuma máquina atual implementa (por quê?) •  Arquiteturas extended-accumulator ou special-purpose register –  Possuem mais que apenas um acumulador mas impõem restrições de uso

Nota sobre classes de ISA

(17)

A = BC + XY

Pilha Acumulador Register-Memory Memory-Memory Load-Store

Complete o quadro. Assuma que existe instrução para mullplicação. PUSH B PUSH C MUL PUSH X PUSH Y MUL ADD POP A LOAD B MUL C STORE temp LOAD X MUL Y ADD temp STORE A LOAD R1, B MUL R1, C LOAD R2, X MUL R2, Y ADD R1, R2 STORE R1, A MUL R1, B, C MUL R2, X, Y ADD A, R1, R2 LOAD R1, B LOAD R2, C LOAD R3, X LOAD R4, Y MUL R1, R1, R2 MUL R3, R3, R4 ADD R1, R1, R3 STORE R1, A

(18)

Alguns compromissos

Tipo Vantagens Desvantagens

Pilha Register/Memory Memory/ Memory Load/Store •  Tamanho de instrução reduzido •  Chamadas de procedimento eficientes •  Não pode aplicar operações em muitos valores ao mesmo tempo •  Operação deve ser possível de ser representada na forma posfixa •  Dado pode ser acessado sem a necessidade de uma instrução LOAD separada •  Boa densidade de código •  Microarquitetura custosa •  Um operando fonte é sempre subsltuído pelo resultado da operação •  Representação compacta – não desperdiça registradores com temporários •  Microarquitetura complexa •  Memória é gargalo •  Força o uso de registradores (por que isso é bom? – visto a seguir) •  Implementação mais simples •  Maior número de instruções

(19)

•  Virtualmente toda nova arquitetura projetada a parlr de 1980 usa o modelo load-store –  Usar registradores é bom! •  Por que ter registradores é uma boa ideia? –  Usa o princípio da localidade temporal para evitar ter de ir para a memória frequentemente (memória é mais lenta) –  Compilador tem mais oportunidade para olmizar o código

Registradores

(20)

•  Quanldade de registradores afeta: –  Número de bits usados para codificação na instrução –  Número de valores dislntos manldos para acesso rápido –  Lógica, tempo de acesso, consumo de energia •  Número grande de registradores –  Vantagens •  Possibilita melhor uso de alocação de registradores pelo compilador –  Desvantagens •  Formato da instrução maior •  Mais componentes lógicos para implementação (tamanho)

Registradores: compromissos

(21)

•  Sua arquitetura possui 16 instruções e 16 registradores (de 0 até 15). As instruções da sua arquitetura possuem formato fixo de 16 bits. Quantos operandos em registradores sua arquitetura consegue especificar explicitamente em uma instrução ADD? •  E se houvessem 32 registradores?

Impacto número de registradores

16 instruções -> necessário 4 bits Sobram 12 bits para registradores 16 registradores -> necessário 4 bits para endereçá-los (0-15) Cada operando 4 bits => 12/4 => 3 operandos

(22)

•  Um modo de endereçamento determina a localização dos operandos da instrução –  Registrador –  Imediato –  Memória •  Há muitos modos para cálculo do endereço de memória •  Não há na literatura uma normalização para os nomes dos modos de endereçamento –  Usaremos os usados nos livros textos

Modos de endereçamento

(23)

Modos de endereçamento MIPS

addi r2, r3, #100

add r2, r3, r4

lw r2, 10(r3)

(24)

Modos de endereçamento MIPS

addi r2, r3, #100 add r2, r3, r4 lw r2, 10(r3) beq r1, r2, 100 j 1000

(25)

Modos de endereçamento MIPS

addi r2, r3, #100

add r2, r3, r4

lw r2, 10(r3)

(26)

Modos de endereçamento MIPS

addi r2, r3, #100 add r2, r3, r4 lw r2, 10(r3) beq r1, r2, 100 j 1000

(27)

Modos de endereçamento MIPS

addi r2, r3, #100

add r2, r3, r4

lw r2, 10(r3)

(28)

•  Quais as vantagens de mais modos de endereçamentos? –  Melhor mapeamento entre construções de alto nível e baixo nível •  Acesso a arrays, indireção … –  Menor número de instruções/programa e tamanho do código •  E desvantagens? –  Compilador pode ter dificuldades para decidir qual usar •  Muitas formas de fazer a mesma coisa complica o projeto do compilador –  Hardware mais complexo

Modos de endereçamento

(29)

•  Espaço de endereçamento –  Qual a quanldade de memória endereçada? •  Forma de endereçamento (addressability) –  Quantos dados uma única posição de memória armazena? •  Endereçada a bytes (maioria dos ISAs), palavras, … •  Vantagens e desvantagens? •  Ordem de subpalavras na memória quando uma palavra é acessada –  LiEle versus big endian (quando é problema?)

Memória

(30)

•  Restrições de alinhamento –  Nem todo endereço pode ser acessado por toda instrução –  Ex: instruções de load/store de palavras no MIPS necessitam que o endereço seja múllplo de 4 (por quê?) •  Suporte para memória virtual –  Programas tem a ilusão de que a memória ksica é maior do que realmente é –  Compare com o use de overlays …

… mais sobre memória

(31)

•  Como interfacear com disposilvos de entrada/saida? –  Memória mapeada •  Região de memória é mapeada para disposilvos •  Operações são instruções de load/store no endereço desses disposilvos –  Instruções especiais •  Instruções específicas para comunicação com disposilvos •  Vantagens/Desvantagens de cada esquema? –  Qual é mais geral? –  Qual potencialmente economiza espaço de endereçamento?

Sub-sistema de entrada/saída

(32)

•  Modos de operação priveligiados (proteção)? –  Modo usuário versus modo kernel •  Tipos de dados •  Falha de página tratada pelo so{ware ou hardware? •  Coerência de cache gerenciada pelo so{ware ou hardware? •  Tratamento de interrupção/exceção –  Interrupção vetorizada? –  Exceções precisas/imprecisas

Outros tópicos envolvendo ISA

(33)

•  Usualmente temos:

Resumindo …

CISC RISC Instruções complexas Instruções simples Muitos formatos de instrução Poucos formatos de instrução Formato variável Formato fixo Decodificação não-uniforme Decodificação uniforme Muitos modos de endereçamentos Poucos modos de endereçamentos Register-memory / memory-memory Load-store

(34)

•  G.M. Amdahl, G.A. Blaauw and F.P. Brooks - Architecture of the IBM System/360, IBM Journal, 1964 •  D. Pa}erson, C. Sequin - RISC I: A Reduced Instruc@on Set VLSI Computer, ISCA, 1981 •  G. Radin - The 801 minicomputer, ASPLOS, 1982

Leituras recomendadas

(35)

ARQUITETURA MIPS

Aspectos gerais da arquitetura

Linguagem de montagem e de máquina

(36)

•  Estudaremos com mais detalhes o processador MIPS –  MIPS – Microprocessor without Interlocked Pipeline Stages –  Bastante usado em sistemas embarcados –  Usado nos consoles Nintendo 64, Playstalon 1 e 2 –  Microarquitetura (e arquitetura) simples e didálca •  Começaremos vendo aspectos do ISA e a linguagem de montagem –  Importante para posteriormente entendermos como a micro-arquitetura funciona

MIPS

(37)

•  Formatos de tamanho fixo (apenas 3) –  32 bits, decodificação homogênea •  Conjunto de registradores de propósito geral –  32 registradores de 32 bits cada •  Arquitetura load-store com 3 operandos •  Poucos modos de endereçamento (cerca de 5) •  Espaço de endereçamento de 4Gb –  Memória endereçada a byte –  Endianness configurável –  Instruções de load/store de palavras precisam estar alinhadas •  Pelo exposto, MIPS é uma arquitetura RISC ou CISC?

MIPS – Resumo da arquitetura

(38)

Linguagem de montagem

•  Linguagem de Montagem –  versão textual da linguagem de máquina (pode variar de montador para montador) •  Sintaxe para instruções com 3 operandos: mno op1, op2, op3 mnemônico da operação operando

(39)

•  Operandos podem ser divididos em 3 classes principais 1.  Registradores

2.  Imediatos (constantes) 3.  Posição de memória

(40)

•  Registradores podem ser referenciados pelo número ou nome

Registradores

Nome Número Função

$zero $0 constante zero $at $1 reservado para montador $v0-$v1 $2-$3 valores de retorno de procedimento $a0-$a3 $4-$7 argumentos para procedimento $t0-$t7 $8-$15 variáveis temporárias $s0-$s7 $16-$23 variáveis locais (preservados através da chamada) $t8-$t9 $24-$25 variáveis temporárias $k0-$k1 $26-$7 reservado para sistema operacional $gp $28 global pointer $sp $29 stack pointer $fp $30 frame pointer $ra $31 endereço de retorno de procedimento

(41)

Instruções aritmélcas

•  Adição •  Subtração add $s0, $s1, $s2 a = b + c alto nível sub $s0, $s1, $s2

(42)

Instruções aritmélcas

•  Qual sequência de instruções é equivalente à expressão abaixo?

a = b + c + d - e

add $t0, $s1, $s2 # temp0 = b+c sub $t1, $s3, $s4 # temp1 = d-e

(43)

Imediatos

•  Um dos operandos pode ser especificado como imediato •  Imediatos são codificados na própria instrução •  Exemplo: instrução de soma com imediato addi $s0, $s1, 10 a = b + 10 complemento

(44)

•  Por que não há instrução de subtração com imediato no MIPS? •  Como fazer atribuição?

Imediatos

addi $s0, $s1, -10 a = b - 10 a = b add $s0, $s1, $zero

(45)

•  Endereçada a bytes •  Instruções para transferência de dados –  memória → registrador –  registrador → memória •  Toda operação em memória deve ser feita através das instruções de leitura e escrita!!!

Memória

arquitetura load/store

(46)

•  Sintaxe das instruções

Transferência de dados

mno reg1, imm(reg2)

deslocamento (offset) a parZr da

base da memória (dado em bytes!) registrador com endereço base da memória registrador armazenando dado lido (load) ou escrito (store) operação de leitura ou escrita endereço de memória

(47)

•  Leitura de palavras: lw

Leitura de memória

1 12 13 14 0x13 0x91 0x37 0x1F . . . 15 0xAA 11 0xBF . . . lw $t0, 12($s0) assumindo $s0 == 0 12

+

li}le/big endian?

(48)

•  Sequência de instruções equivalente à expressão:

Leitura de memória

a = b + A[5] vetor de palavras lw $t0, 20($s2) # temp = A[5] add $s0, $s1, $t0 # a = b + A[5] use: a = $s0, b = $s1, A = $s2

(49)

•  Escrita de palavras: sw –  similar à operação de leitura •  Lembre-se que o imediato indica um número em complemento de 2 (pode ser negalvo) em bytes.

Escrita de memória

sw $t0, 12($s0)

(50)

•  Alteram o fluxo de execução •  Desvio condicional –  condição é testada –  desvio pode ser tomado ou não •  Desvio incondicional –  desvio sempre tomado •  Rótulo –  determina próxima instrução a ser executada caso desvio seja tomado

Instruções de desvio

(51)

•  Condição testada

–  igualdade entre dois registradores

•  Duas instruções principais

Desvio condicional

beq reg1, reg2, rótulo bne reg1, reg2, rótulo

salta para rótulo se reg1

(52)

•  Transformar para linguagem de montagem do MIPS:

Desvio condicional

// assuma: $s0 = a, $s1 = b, $s2 = c, $s3 = i, $s4 = j if (i==j) a = b + c; a = a – i;

bne $s3, $s4, L1 # se i != j, desconsidera bloco ‘if’ add $s0, $s1, $s2 # a = b + c

L1:

(53)

•  Salto sempre tomado –  necessário especificar apenas o rótulo •  Transformar para linguagem de montagem do MIPS

Desvio incondicional

j DESTINO // assuma: $s0 = a, $s1 = b, $s2 = c, $s3 = i, $s4 = j if (i==j) a = b + c; else a = b – c;

(54)

Desvio incondicional

beq $s3, $s4, BLK_IF # se i == j, executa bloco ‘if’

sub $s0, $s1, $s2 # bloco else: a = b – c

j FIM

BLK_IF:

add $s0, $s1, $s2 # a = b + c

(55)

•  Como testar a seguinte condição? •  Instrução SLT (set less than)

Desigualdades

if (a < b) {} slt $t0, $s0, $s1 # $t0 = ($s0 < $s1) slt regDest, regSrc1, regSrc2

if (regSrc1 < regSrc2) regDest = 1; else RegDest = 0;

(56)

•  Lógicas –  AND, ANDI, OR, ORI •  Shi{s (deslocamentos) –  SLL – shi{ le{ logical –  SRL – shi{ right logical –  Ex:

Outras instruções

sll reg1, reg2, shamt deslocamento (< 32) bits a deslocar resultado

(57)

•  Linguagem de Montagem –  descrição textual das instruções –  computador “não entende” texto •  Linguagem de Máquina –  0’s e 1’s •  Montador (assembler) –  converte linguagem de montagem para linguagem de máquina

Linguagem de máquina

(58)

Tradução

temp = v[k]; v[k] = v[k+1]; v[k+1] = temp; lw $t0, 0($2) lw $t1, 4($2) sw $t1, 0($2) sw $t0, 4($2) 0000 1001 1100 0110 1010 1111 0101 1000 1010 1111 0101 1000 0000 1001 1100 0110 1100 0110 1010 1111 0101 1000 0000 1001 0101 1000 0000 1001 1100 0110 1010 1111 alto nível → linguagem de montagem linguagem de montagem → linguagem de máquina homem máquina compilador montador

(59)

•  Todas instruções possuem 32 bits •  Três formatos principais –  Tipo-R •  operandos são todos registradores –  Tipo-I •  um operando é imediato –  Tipo-J •  instruções de desvio incondicional

Codificação

(60)

Codificação lpo R

add $8, $9, $10

6 bits 5 bits 5 bits 5 bits 5 bits 6 bits

(61)

Codificação lpo R

add $8, $9, $10

0x00 0x20

6 bits 5 bits 5 bits 5 bits 5 bits 6 bits

opcode

funct

(62)

Codificação lpo R

add $8, $9, $10

0x00 0x09 0x0A 0x08 0x20

6 bits 5 bits 5 bits 5 bits 5 bits 6 bits

rs rt rd

(63)

Codificação lpo R

add $8, $9, $10

0x00 0x09 0x0A 0x08 0x00 0x20

6 bits 5 bits 5 bits 5 bits 5 bits 6 bits

(64)

Codificação lpo R

add $8, $9, $10

0x00 0x09 0x0A 0x08 0x00 0x20

6 bits 5 bits 5 bits 5 bits 5 bits 6 bits

(65)

Codificação lpo R

add $8, $9, $10

0x00 0x09 0x0A 0x08 0x00 0x20

000000 01001 01010 01000 00000 100000

(66)

Codificação lpo R

add $8, $9, $10

0x00 0x09 0x0A 0x08 0x00 0x20

000000 01001 01010 01000 00000 100000

6 bits 5 bits 5 bits 5 bits 5 bits 6 bits

0x0 0x2 0x0 0x4 0xA 0x2 0x1 0x0

(67)

Codificação lpo R

add $8, $9, $10

0x00 0x09 0x0A 0x08 0x00 0x20

000000 01001 01010 01000 00000 100000

6 bits 5 bits 5 bits 5 bits 5 bits 6 bits

0x0 0x2 0x0 0x4 0xA 0x2 0x1 0x0 → 0x012A4020 instrução em hexadecimal

(68)

•  Necessário codificar o imediato na instrução •  Desejável que seja consistente com lpo-R

Tipo I

op rs rt rd shamt funct

6 bits 5 bits 5 bits 5 bits 5 bits 6 bits

lpo-R

op rs rt imm

6 bits 5 bits 5 bits 16 bits

lpo-I

fonte deslno complemento de 2 [-32768, +32767]

(69)

Codificação lpo I

addi $21, $22, -50

0x08 0x16 0x15 0xFFCE

6 bits 5 bits 5 bits 16 bits

(70)

•  Se imediato representasse endereço efelvo, somente uma pequena parte da memória seria endereçável •  Solução –  endereçamento relalvo ao PC –  imediato é somado ao valor do PC –  possível saltar ±215 bytes a parlr da posição atual •  Como melhorar?

Imediatos em desvios condicionais

(71)

•  No MIPS instruções são palavras (32 bits), logo são alinhadas em 4 bytes

–  representar imediatos como palavras ao invés de bytes –  possível saltar ±215 palavras a parlr do PC (±217 bytes)

•  Cálculo do endereço

–  Se salto não é tomado –  Se salto é tomado

Imediatos em desvios condicionais

(72)

Codificação de desvios condicionais

op rs rt endereço (imm)

lpo-I

LOOP:

beq $t1, $zero, FIM

addi $s1, $s1, 2 addi $s0, $t1, 1 j LOOP

FIM:

(73)

Codificação de desvios condicionais

op rs rt endereço (imm)

lpo-I

LOOP:

beq $t1, $zero, FIM

addi $s1, $s1, 2 addi $s0, $t1, 1 j LOOP FIM: 0x0003 0x04 0x09 0x00

(74)

•  Se movermos o código de posição, o valor do imediato em uma instrução de salto condicional precisa ser

alterado?

–  não (PIC – Posi(on Independent Code)

•  E se o deslno do salto eslver além de 215 instruções?

–  reorganizar o código e usar salto incondicional

(75)

•  Idealmente, gostaríamos de poder saltar para qualquer lugar na memória (30 bits) •  Necessário campo para código da operação (op) •  Operando especifica 28 bits do endereço. E os 4 bits restantes?

Tipo J

op endereço lpo-J 6 bits 26 bits 226 palavras = 256 MB

(76)

•  Atenção!

–  endereço dado pelo operando em uma instrução de salto

incondicional é absoluto (ao contrário dos saltos condicionais, onde o endereço é relalvo ao PC)

Cálculo do endereço de salto

4 bits 26 bits

endereço efelvo 00

(77)

•  Instrução j permite uma faixa de endereçamento de 226 palavras •  Ok para 99.99999% dos casos, mas ... •  E se precisar saltar para uma faixa de endereço além da permilda por j? –  Usar instrução jr $reg •  código salta para endereço especificado pelo registrador

Saltos incondicionais

(78)

•  Transforme para linguagem de máquina assumindo que code corresponda ao endereço 0x00080000

Codificação de instruções

code: addi $t0, $t0, 2 laco: slt $t1, $t0, $s0 bne $t1, $zero, exit

# 3 outras instrucoes aqui j laco

exit:

(79)

•  Transforme para linguagem de máquina assumindo que code corresponda ao endereço 0x00080000

Codificação de instruções

code: addi $t0, $t0, 2 laco: slt $t1, $t0, $s0 bne $t1, $zero, exit

# 3 outras instrucoes aqui j laco exit: addi $t0, $t0, 2 op = 0x8 rs =0x8 rt = 0x8 imm = 0x2 [0x8|0x8|0x8|0x2] 001000 01000 01000 00....10 0x21080002 0x21080002

(80)

•  Transforme para linguagem de máquina assumindo que code corresponda ao endereço 0x00080000

Codificação de instruções

code: addi $t0, $t0, 2 laco: slt $t1, $t0, $s0 bne $t1, $zero, exit

# 3 outras instrucoes aqui j laco exit: 0x21080002 slt $t1, $t0, $s0 op = 0x0 rs =0x8 rt = 0x10 rd = 0x9 shamt = 0 funct = 0x2A [0x0|0x8|0x10|0x9|0x2A] 000000 01000 10000 01001 00000 101010 0x0110482A 0x0110482A

(81)

•  Transforme para linguagem de máquina assumindo que code corresponda ao endereço 0x00080000

Codificação de instruções

code: addi $t0, $t0, 2 laco: slt $t1, $t0, $s0 bne $t1, $zero, exit

# 3 outras instrucoes aqui j laco exit: 0x21080002 0x0110482A bne $t1, $zero, exit op = 0x5 rs =0x9 rt = 0x0 imm = 0x4 [0x5|0x9|0x0|0x4] 000101 01001 00000 00..100 0x15200004 0x15200004

(82)

•  Transforme para linguagem de máquina assumindo que code corresponda ao endereço 0x00080000

Codificação de instruções

code: addi $t0, $t0, 2 laco: slt $t1, $t0, $s0 bne $t1, $zero, exit

# 3 outras instrucoes aqui j laco exit: 0x21080002 0x0110482A 0x15200004 j laco op = 0x2 imm = 0x20001 [0x2|0x20001] 000010 00 0000 0010 0000 0000 0000 0001 0x08020001 0x08020001

Referências

Documentos relacionados

I – estudantes que tenham cursado integralmente o Ensino Fundamental ou Ensino Médio em escolas públicas, em cursos regulares ou no âmbito da modalidade da Educação de Jovens

Meios de extinção apropriados: Utilizar água neblina, dióxido de carbono (CO 2 ), espuma para hidrocarbonetos e pó químico seco.. Meios de extinção

aqueles determinados pelo caráter e os determinados pelo temperamento. Os resultados serão comparados com o perfil profissional exigido para o cargo/função. Os testes são

A coordenação do Programa de Pós-Graduação em Educação e Cultura (PPGEDUC) do Campus Universitário do Tocantins/UFPA-Cametá informar que, no período de 03 de

Foram realizados voos com um veículo aéreo não tripulado (UAV) e câmera RGB/NIR embarcada para coletar imagens do vinhedo experimental na Cave Geisse e através

f) Use roupas adequadas. Não use roupas soltas ou joias. Mantenha o seu cabelo, roupas e luvas afastadas das partes móveis. Roupas, joias ou cabelos longos soltos podem ser

No caso de trabalhos considerados pelo professor orientador aptos para encaminhamento à Banca Examinadora, o(s) orientando(s) deverá(ão) entregar o TCC ao professor

50 Sensor NTC agua caliente sanitaria averiado (solamente para el modelo sólo calefacción con calentador) Llamar el centro de asistencia técnica autorizado.. 53 Conducto de