PSI3441 – Arquitetura de Sistemas Embarcados

Slides:



Advertisements
Apresentações semelhantes
Arquitetura e organização de computadores
Advertisements

Arquitetura e organização de computadores.
Arquitetura de Computadores
Exemplo de arquitetura registrador-registrador- MIPS
Processador Intel Itanium
Professor: Erivelto Tschoeke – UDESC/CEPLAN
REPRESENTAÇÃO DE INSTRUÇÕES
Unidade Central de Processamento
Unidade Central de Processamento
Representação de Instruções
ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I prof. Dr. César Augusto M. Marcon prof. Dr. Edson Ifarraguirre Moreno Computador Cleópatra Arquitetura e Programação.
Unidade Central de Processamento UCP
Organização e Arquitetura de Computadores
Agenda - Aula 2 Introdução (Computador Digital) Processadores
Processamento de dados na UCP e memória UCP
Unidade Central De Processamento: Processador
Parte 3 Seção de Dados e Unidade de Controle
Estrutura do Processador
Arquitetura de Computadores
Arquitetura de computadores
Arquitetura do ARM RISC (Reduced Instruction Set Computer) – Conjunto relativamente grande de registradores – Modelo “load/store “de processamento Operações.
Sistemas Operacionais Arquitetura de Computadores
Organização de Computadores Implementação da UCP Construção do caminho de dados Controle Implementação monociclo.
 Evolução constante das linguagens de programação de alto nível (LAN) desde o Fortran (primeira LAN)  Surgimento de novos paradigmas como a OO, Orientação.
TRABALHO AVALIATIVO ALUNO: FRANCISCO HELIÉSUS DE MEDEIROS MATÉRIA: ORGANIZAÇÃO DE COMPUTADORES.
Construção de Via de dados Trabalho Avaliativo do Primeiro Bimestre. Marcos André de Sena Silva.
Arquitetura ARM Subrotinas.  Implementar uma sub-rotina requer dois passos: 1.Armazenar o endereço de retorno. 2.Desviar a execução para o endereço da.
Ana Carolina, Andersen, Arthur, Bruno, Eduardo, Gisele, Guilherme, Jennifer, Leonardo, Lucas, Monique, Ricardo, Rodrigo A., Thiago, Victor, Wagner e William.
Capítulo 10 Conjuntos de instruções: Características e funções William Stallings Arquitetura e Organização de Computadores 8 a Edição © 2010 Pearson Prentice.
Introdução a Ciência da Computação Aula 05 Prof. Francisco G. Rodrigues.
Como funciona o processador Nomes: Fernando, Maurício, William Turma: 1J-1PC1 Disciplina: Fundamentos da Computação Curso: Técnico em Programação de Computadores.
Programação em Assembly Conceitos Iniciais Prof. Luiz Antonio Rodrigues Prof. Luiz Antonio Unioeste - Cascavel Jpanel e Diagramadores.
CPU por dentro. Por dentro do CPU + ULA Teoria - Considerando que a ALU já tem dois números porque já fez LOAD - CPU recebe a instrução da RAM ( que está.
ARQUITETURA AULA 3 Prof. Luiz Ricardo Lima 2º sem de 2016.
Arquitetura do SET de instruções Instruction SET CISC vs RISC
Arquitetura de Computadores
Programação em Assembly
Ciclos de operação em processador
Arquitetura de Computadores
NEANDERWin - Simulador
Mapeamento de Entrada e Saída em Sistemas Digitais
PSI3441 – Arquitetura de Sistemas Embarcados
INSTITUTO FEDERAL DO CEARÁ Mauro Oliveira
PSI3441 – Arquitetura de Sistemas Embarcados
Computador MIPS Organização básica e conjunto de instruções.
Caminho de Dados (aula passada)
Hardware É a parte física de um sistema de computação, ou seja, todos os elementos materiais que o constituí (circuitos eletrônicos, dispositivos mecânicos,
Prof. Wellington Franco
Arquitetura e Assembly*
LINGUAGENS DE PROGRAMAÇÃO
Instruções.
Arquitetura e organização de computadores
SISTEMAS OPERACIONAIS
Níveis de Abstrações TANENBAUM:
Organização de Computadores
Aplicações de Flip-Flops Registradores
Representação da Informação
Funcionamento básico de um processador de 8 bits
Sistemas Operacionais I
Organização de Computadores
Microprocessadores e Microcontroladores
Arquitetura 8051 Disciplina: Microcontroladores Prof. Remy Eskinazi
Arquitetura de Computadores
Bus de controlo Bus de Endereços Bus de dados SET LIGADO ENABLE LIGADO.
PSI3441 – Arquitetura de Sistemas Embarcados
Organização de um Computador
Hierarquia de memória Memória Interna. Memória A.W. Burks, H.H. Goldstine e J. von Neumann Preliminary Discussion of the Logical Design of na Eletronic.
Conjunto de instruções
Transcrição da apresentação:

PSI3441 – Arquitetura de Sistemas Embarcados - Arquitetura do µProcessador Escola Politécnica da Universidade de São Paulo Prof. Gustavo Rehder – grehder@lme.usp.br Prof. Sergio Takeo – kofuji@usp.br Prof. Antonio Seabra – acseabra@lsi.usp.br

Objetivo da Aula Entender como o processador executa um programa O que é o ciclo de máquina Entender a microarquitetura de processadores (focado no Cortex M0+ da ARM) Conhecer diferentes instruções executadas pelo processador

Metodologia de Projeto (Baseado em Plataforma) Especificação da Arquitetura Especificação da Aplicação Arquiteturas Aplicações Aplicação Específica Platforma Específica   Especificação da Arquitetura Definição do Hardware CPU ?

Necessidade de conhecer a arquitetura e funcionamento de CPUs Definição da CPU Processador, Microcontrolador, DSP, FPGA, ASIC? (http://www.eetimes.com/document.asp?doc_id=1275272) Arquitetura: Load/Store, Register Memory, Stack? Von Neumann ou Harvard? (http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.faqs/ka3839.html) RISC ou CISC? (https://cs.stanford.edu/people/eroberts/courses/soco/projects/risc/risccisc/) 8 bits, 16 bits, 32 bits ou 64 bits? 64 Mb, 128 Mb,256 Mb, ... ? Velocidade do Clock? 16 MHz, 48 MHz, ... ? Memória Externa? Periféricos? AD/AD, timers, comunicação serial, ... ? Consumo de potência? Preço? Cache? Pipeline? DMA? Necessidade de conhecer a arquitetura e funcionamento de CPUs

Tarefa a ser executada pela CPU Programa (C, C++, Basic, Pascal, Python, Assembly, VLPs) 2+2 4 Compilação 10 10 Binário 1 Código de máquina Somador de 2 bits

Dentro da CPU – Ciclo de Máquina 2+2 4 ALU = Arithimetic and Logic Unit 2º Passo “DECODE” Decodifica as instruções 3º Passo “EXECUTE” Executa as instruções Unidade de Controle ALU 1º Passo “FETCH” Busca as instruções na memória 4º Passo “STORE” Armazena os resultados na memória Memória

Arquitetura Simplificada “Load/Store” A CPU não faz operações na Memória, todas as operações são realizadas pelo ALU utilizando dados do Registrador O programa e os dados são gravados na Memória O programa é executado sequencialmente, uma instrução em cada linha da memória Memória (Grande e Lenta) Registrador de Propósito Geral (Pequena e Rápida) Controle Operando 2 ALU Registrador de Dados Endereço da Memória Contador de Programa Registrador de Instrução Operando 1 Operação R0 R1 R2 R3 R4 1 2 3 4 5 6 7 8 9

Arquitetura Simplificada “Load/Store” 3 Tipos de Operação (Instruction Set Architecture – ISA): Transferência – Leitura, Escrita... Dados – Adição, Subtração, Multiplicação, Divisão, Lógica... Desvio – Jump, Branch... Depende do Processador Memória (Grande e Lenta) Registrador de Propósito Geral (Pequena e Rápida) Controle Operando 2 ALU Registrador de Dados Endereço da Memória Contador de Programa Registrador de Instrução Operando 1 Operação R0 R1 R2 R3 R4 1 2 3 4 5 6 7 8 9

Arquitetura Simplificada “Load/Store” – ARM Cortex M0+ Formato da Instrução: Operação Destino, Operando 1, Operando 2 Instrução: MOVE – atribui o valor de Op2 ao registrador Rd MOV Rd, Op2 Constante de 8 bits Dependendo da operação não é usado OpCode Destino Valor Memória (Grande e Lenta) Registrador de Propósito Geral (Pequena e Rápida) Controle Operando 2 ALU Registrador de Dados Endereço da Memória Contador de Programa Registrador de Instrução Operando 1 Operação R0 R1 R2 R3 R4 MOV R0, #2 1 MOV R1, R0 2 ADD R2, R0, R1 3 MOV R3, #0x8 4 STR R2, [R3] 5 6 7 8 9 2+2

Arquitetura Simplificada “Load/Store” – ARM Cortex M0+ Depois de inicializar, Contador de Programa (PC) aponta para a próxima instrução a ser executada. A instrução é copiada para o Registrador de Instrução (IR) – “FETCH”. O Controle decodifica a instrução e carrega variáveis – “DECODE”. A operação é executada pelo ALU – “EXECUTE”. O resultado é armazenado no registrador R0 – “STORE”. Memória (Grande e Lenta) Registrador de Propósito Geral (Pequena e Rápida) Controle Operando 2 ALU Registrador de Dados Endereço da Memória Contador de Programa Registrador de Instrução Operando 1 Operação Destino R0 R1 R2 R3 R4 2 MOV R0, #2 1 MOV R1, R0 2 ADD R2, R0, R1 3 MOV R3, #0x8 4 STR R2, [R3] 5 6 7 8 9 MOV R0, #2 2 MOV

Arquitetura Simplificada “Load/Store” – ARM Cortex M0+ Ao fim do ciclo o PC é incrementado, apontando para a próxima instrução. A instrução é copiada para o Registrador de Instrução (IR) – “FETCH”. O Controle decodifica a instrução e carrega variáveis – “DECODE”. A operação é executada pelo ALU – “EXECUTE”. O resultado é armazenado no registrador R1– “STORE”. Memória (Grande e Lenta) Registrador de Propósito Geral (Pequena e Rápida) Controle Operando 2 ALU Registrador de Dados Endereço da Memória Contador de Programa Registrador de Instrução Operando 1 Operação Destino R0 R1 R2 R3 R4 1 2 MOV R0, #2 1 MOV R1, R0 2 ADD R2, R0, R1 3 MOV R3, #0x8 4 STR R2, [R3] 5 6 7 8 9 2 MOV R1, R0 MOV R0, #2 2 MOV

Arquitetura Simplificada “Load/Store” – ARM Cortex M0+ Ao fim do ciclo o PC é incrementado, apontando para a próxima instrução. A instrução é copiada para o Registrador de Instrução (IR) – “FETCH”. O Controle decodifica a instrução e carrega variáveis – “DECODE”. A operação é executada pelo ALU – “EXECUTE”. O resultado é armazenado no registrador R2– “STORE”. Instrução: ADD – Soma valores de Op1 e Op2 e armazena no registrador Rn. ADD Rd, Op1, Op2 ; Rd = Op1 + Op2 OpCode Destino Valor 1 Valor 2 Memória (Grande e Lenta) Registrador de Propósito Geral (Pequena e Rápida) Controle Operando 2 ALU Registrador de Dados Endereço da Memória Contador de Programa Registrador de Instrução Operando 1 Operação Destino 2 R0 R1 R2 R3 R4 1 2 MOV R0, #2 1 MOV R1, R0 2 ADD R2, R0, R1 3 MOV R3, #0x8 4 STR R2, [R3] 5 6 7 8 9 2 4 ADD R2, R0, R1 MOV R0, #2 2 2 ADD MOV 4

Arquitetura Simplificada “Load/Store” – ARM Cortex M0+ Ao fim do ciclo o PC é incrementado, apontando para a próxima instrução. A instrução é copiada para o Registrador de Instrução (IR) – “FETCH”. O Controle decodifica a instrução e carrega variáveis – “DECODE”. A operação é executada pelo ALU – “EXECUTE”. O resultado é armazenado no registrador R3 – “STORE”. Memória (Grande e Lenta) Registrador de Propósito Geral (Pequena e Rápida) Controle Operando 2 ALU Registrador de Dados Endereço da Memória Contador de Programa Registrador de Instrução Operando 1 Operação Destino 3 R0 R1 R2 4 R3 R4 2 2 MOV R0, #2 1 MOV R1, R0 2 ADD R2, R0, R1 3 MOV R3, #0x8 4 STR R2, [R3] 5 6 7 8 9 2 MOV R3, #0x8 MOV R0, #2 0x8 Valor em Hexa 0x8 MOV MOV

Arquitetura Simplificada “Load/Store” – ARM Cortex M0+ Ao fim do ciclo o PC é incrementado, apontando para a próxima instrução. A instrução é copiada para o Registrador de Instrução (IR) – “FETCH”. O Controle decodifica a instrução e carrega variáveis – “DECODE”. A operação é executada pelo ALU – “EXECUTE”. O resultado é armazenado na memória no endereço especificado pelo registrador R3 – “STORE”. Instrução: STORE – Armazena o valor do registrador Rn no endereço da memória indicado pelo registrador Rd. STR Rd, [Rn] OpCode Valor Endereço Memória (Grande e Lenta) Registrador de Propósito Geral (Pequena e Rápida) Controle Operando 2 ALU Registrador de Dados Endereço da Memória Contador de Programa Registrador de Instrução Operando 1 Operação Destino R0 R1 R2 4 R3 R4 4 3 2 MOV R0, #2 1 MOV R1, R0 2 ADD R2, R0, R1 3 MOV R3, #0x8 4 STR R2, [R3] 5 6 7 8 9 2 STR R2, [R3] MOV R0, #2 0x8 4 0x8 0x8 MOV STR 4 4

Arquitetura Simplificada “Load/Store” – ARM Cortex M0+ O que acontece no próximo ciclo? FALHA!! Não tem instrução para executar!! O processador deve sempre rodar em loop infinito!! Memória (Grande e Lenta) Registrador de Propósito Geral (Pequena e Rápida) Controle Operando 2 ALU Registrador de Dados Endereço da Memória Contador de Programa Registrador de Instrução Operando 1 Operação Destino 4 5 R0 R1 R2 4 R3 R4 2 MOV R0, #2 1 MOV R1, R0 2 ADD R2, R0, R1 3 MOV R3, #0x8 4 STR R2, [R3] 5 6 7 8 9 2 MOV R0, #2 0x8 4

Arquitetura Simplificada “Load/Store” – ARM Cortex M0+ Instrução: LOAD – Carrega o registrador Rd com o valor do endereço da memória indicado pelo registrador Rn. LDR Rd, [Rn] Como colocar a posição 8 da memória no R4? Qual é o fluxo? OpCode Destino Endereço Memória (Grande e Lenta) Registrador de Propósito Geral (Pequena e Rápida) Controle Operando 2 ALU Registrador de Dados Endereço da Memória Contador de Programa Registrador de Instrução Operando 1 Operação Destino 4 5 R0 R1 R2 4 R3 R4 2 MOV R0, #2 1 MOV R1, R0 2 ADD R2, R0, R1 3 MOV R3, #0x8 4 STR R2, [R3] 5 6 7 8 9 2 LDR R4, [R3] MOV R0, #2 0x8 4 LDR R4, [R3] 4

Arquitetura Simplificada “Load/Store” – ARM Cortex M0+ Instrução: LOAD – Carrega o registrador Rd com o valor do endereço da memória indicado pelo registrador Rn. LDR Rd, [Rn] LOAD pode ser usado para colocar endereços de 32 bits nos registradores! OpCode Destino Endereço Memória (Grande e Lenta) Registrador de Propósito Geral (Pequena e Rápida) Controle Operando 2 ALU Registrador de Dados Endereço da Memória Contador de Programa Registrador de Instrução Operando 1 Operação Destino R0 2 R1 R2 4 R3 R4 5 4 0xFF000000 MOV R0, #2 1 MOV R1, R0 2 ADD R2, R0, R1 3 MOV R3, #0x8 4 STR R2, [R3] 5 6 7 8 9 2 LDR R0,=0xFF000000 MOV R0, #2 0x8 4 LDR R4, [R3] LDR R0,=0xFF000000 4

Exercício Controle ALU Dado o diagrama do processador abaixo, escreva o código para executar a função abaixo e armazene X em 0xFF0C. Qual é o valor de X? X = (a+b)-(c+d), sendo a = 1, b = 2, c = 3, d = 4 Instrução de subtração: SUB Rd, Rn, Op2 ; Rd=Rn-Op2 Memória 32bits Registrador de Propósito Geral 32 bits Controle Operando 2 ALU Registrador de Dados Endereço da Memória Contador de Programa Registrador de Instrução Operando 1 Operação Destino 0xFF00 0xFF01 0xFF02 0xFF03 0xFF04 0xFF05 0xFF06 0xFF07 0xFF08 0xFF09 0xFF0A 0xFF0B 0xFF0C 0xFF00 mov r0, #1 0xFF01 add r1, r0,#2 0xFF02 ldr r0,=0xFF0C 0xFF03 str r1,[r0] 0xFF04 mov r0, #3 0xFF05 add r1,r0,#4 0xFF06 0xFF07 ldr r0,[r0] 0xFF08 sub r0,r0,r1 0xFF09 ldr R0,=0xFF0C 0xFF0A str r0,[r1] 0xFF0B 0xFF0C 0xFFFFFFFC R0 R1

Subtração utilizando complemento de 2 X = (a+b)-(c+d), sendo a = 1, b = 2, c = 3, d = 4 X = (1+2)-(3+4) = 3-7 = 3 + (-7) SUB Rd, Rn, Op2 Procedimento: Tirar o complemento de 2 do subtraendo (Op2) – inverter os bits e somar 1 Adiciona-lo ao minuendo (Rn) 7 em Hexa expresso em 32 bits 0000 0007 Complemento de 2 FFFF FFF9 0000 0003 + FFFF FFF9 FFFF FFFC = -4 FFFF FFFC  1111 1111 1111 1111 1111 1111 1111 1101 Complemento de 2  000 0000 0000 0000 0000 0000 0000 0100  4 Este bit indica que é negativo