ArchC. Wesley Nunes Gonçalves



Documentos relacionados
Arquitetura de Computadores II. Arm 9. Rodrigo Padilha Thaiane Lopes

Ministério da Educação UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ. Aula 2. Cibele Lemos Freire Viginoski

Processadores BIP. Conforme Morandi et al (2006), durante o desenvolvimento do BIP, foram definidas três diretrizes de projeto:

Universidade de São Paulo

Organização e Arquitetura de Computadores I

Pipeline. Todos os estágios devem estar prontos ao mesmo tempo para prosseguir.

Organização e Arquitetura de Computadores I

Sistemas Computacionais II Professor Frederico Sauer

Capítulo 3 Processadores de Propósito Geral: Software

Componentes do Computador e. aula 3. Profa. Débora Matos

Arquitetura de Computadores I

PSI3441 Arquitetura de Sistemas Embarcados

Informática I. Aula 5. Aula 5-13/05/2006 1

Aula 14: Instruções e Seus Tipos

Arquitetura de Computadores. Tipos de Instruções

Caminho dos Dados e Atrasos

Organização e Arquitetura de Computadores I

Universidade Federal do Rio de Janeiro Pós-Graduação em Informática IM-NCE/UFRJ. Pipeline. Gabriel P. Silva. Microarquitetura de Alto Desempenho

Arquitecturas Alternativas. Pipelining Super-escalar VLIW IA-64

CAPÍTULO 7 NÍVEL DE LINGUAGEM DE MONTAGEM

ULA Sinais de Controle enviados pela UC

MODOS DE ENDEREÇAMENTO

Linguagem de Montagem Funcionamento de CPU e Assembly Rudimentar

Arquitetura de Computadores

Computadores de Programação (MAB353)

Arquitetura de Computadores - Processadores Superescalares. por Helcio Wagner da Silva

Arquitetura de Computadores I

Exemplo: CC1 CC2 CC3 CC4 CC5 CC6 CC7 CC8 CC9 ADD $s0, $t0, $t1 IF ID EX MEM WB SUB $t2, $s0, $t3 IF Stall Stall ID EX MEM WB

Laboratório de Sistemas Processadores e Periféricos Lista de comandos de Assembly

Unidade 10: A Unidade Lógica Aritmética e as Instruções em Linguagem de Máquina Prof. Daniel Caetano

Arquitetura de Computadores. Prof. João Bosco Jr.

Operadores lógicos (bit a bit)

Programando o computador IAS

Tais operações podem utilizar um (operações unárias) ou dois (operações binárias) valores.

PCS-2302 / PCS-2024 Lab. de Fundamentos de Eng. de Computação

O Processador: Caminho de Dados e Controle

Paralelismo a Nível de Instrução

Sistemas Processadores e Periféricos Aula 5 - Revisão

MC404: Organização de Computadores e Linguagem de Montagem Lista de Exercícios

Aula 8. Engenharia de Sistemas Embarcados. Prof. Abel Guilhermino Tópico: Arquitetura ARM

CISC - Complex Instruction Set Computer

Unidade Central de Processamento (CPU) Processador. Renan Manola Introdução ao Computador 2010/01

Funcionamento básico de um computador

Conjunto de instruções do CPU. Arquitectura de um computador. Definição das instruções (1) Definição das instruções (2)

3. O NIVEL DA LINGUAGEM DE MONTAGEM

Display de 7. PdP. Autor: Tiago Lone Nível: Básico Criação: 16/12/2005 Última versão: 18/12/2006. Pesquisa e Desenvolvimento de Produtos

PSI3441 Arquitetura de Sistemas Embarcados

BARRAMENTO DO SISTEMA

Linguagem de Montagem 2. Operações e Operandos

Conjunto de instruções. O Conjunto de Instruções. Conjunto de instruções. Instruções típicas. Instruções típicas. Instruções típicas

ARQUITETURA DE COMPUTADORES

Arquitetura de Computadores. Ivan Saraiva Silva

NOTAS DE AULA Prof. Antonio Carlos Schneider Beck Filho (UFSM) Prof. Júlio Carlos Balzano de Mattos (UFPel) Arquitetura de Von Neumann

Conjunto de. Instrução MIPS. Parte II. Instruções MIPS. Instruções MIPS. Instruções MIPS :: Instruções lógicas. :: Instruções lógicas

2 Formalidades referentes ao trabalho

Ministério da Educação UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ. Aula 1. Cibele Lemos Freire Viginoski

Conjunto de Instruções e Arquitectura p.1

Unidade: Unidade Lógica e Aritmética e Registradores. Unidade I:

PSI3441 Arquitetura de Sistemas Embarcados

Conjunto de instruções e modos de. aula 4. Profa. Débora Matos

O processador é composto por: Unidade de controlo - Interpreta as instruções armazenadas; - Dá comandos a todos os elementos do sistema.

Programação ao nível da máquina. Operações lógicas e aritméticas

3/9/2010. Ligação da UCP com o barramento do. sistema. As funções básicas dos registradores nos permitem classificá-los em duas categorias:

Arquitetura de Computadores Paralelismo, CISC X RISC, Interpretação X Tradução, Caminho de dados

Pipelining - analogia

O hardware é a parte física do computador, como o processador, memória, placamãe, entre outras. Figura 2.1 Sistema Computacional Hardware

7/4/2010. Aula 8. Engenharia de Sistemas Embarcados. Repertório de Instruções. Prof. Abel Guilhermino Tópico: Arquitetura ARM

Organização de Computadores 1

Microcontroladores e Interfaces 3º Ano Eng. Electrónica Industrial

Arquitetura de Computadores

Arquitetura de Computadores - Arquitetura RISC. por Helcio Wagner da Silva

Arquiteturas RISC. (Reduced Instructions Set Computers)

Estrutura de um Computador

Informática I. Aula 4. Aula 4-11/09/2006 1

28/9/2010. Paralelismo no nível de instruções Processadores superescalares

Visão Geral de Pipelining

Introdução. Registos. ARM flags

ARQUITETURA DE COMPUTADORES

Sistemas Embebidos I , Tiago Miguel Dias ADEETC - Secção de Arquitecturas e Sistemas Operativos

Introdução. ULA: Faz os Cálculos UC: Como isso tudo ocorre?

PSI3441 Arquitetura de Sistemas Embarcados

Arquitetura de Computadores. Linguagem de Máquina

INF1004 e INF1005: Programação 1. Introdução à Programação

Organização e Arquitetura de Computadores I. de Computadores

UNIVERSIDADE FEDERAL DE SANTA CATARINA MODELAGEM DE UMA PLATAFORMA VIRTUAL PARA SISTEMAS EMBUTIDOS BASEADA EM POWERPC

SISTEMAS EMBARCADOS. Conjunto de Instruções Thumb2. Prof. André Schneider de Oliveira

Cortex-M3/M4. Conjunto de Instruções Thumb-2 (Assembly Cortex-M3/M4) Unified Assembler Language (UAL) Estrutura de Código em Assembly 06/09/2018

A FÓRMULA DE CONVERSÃO ENTRE AS UNIDADES É: F = 1.8 C

Ministério da Educação UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ. Aula 1. Cibele Lemos Freire Viginoski

ARQUITETURA DE COMPUTADORES

RISC simples. Aula de Março de

Capítulo 4. MARIE (Machine Architecture Really Intuitive and Easy)

Arquitetura de Computadores - Princípio de Funcionamento da CPU. Por Helcio Wagner da Silva

Introdução à Organização e Arquitetura de Computadores. Prof. Leonardo Barreto Campos 1

Organização de Computadores Hardware

Objetivos Gerais. Arquitetura de Computadores. Arquiteturas estudadas. O Computador Neander

Transcrição:

Implementação do Processador ARM7 em ArchC Wesley Nunes Gonçalves 23 de novembro de 2007

ARM7 Instruções Implementadas O ARM possui 37 registradores, sendo 31 registradores de propósito geral e 6 registradores de status. Dos 31 registradores de propósito geral, 16 são visíveis e 15 são utilizados para acelerar o processamento de exceções. Neste trabalho, estão implementados os 16 registradores visíveis, incluindo o registrador PC. Dos registradores de status, o registrador Current Program Status Register (CPSR) foi implementado para armazenar as flags de controle. As flags são geralmente modificadas por instruções de comparação (CMN, CMP, TEQ e TST) e execução de instruções aritméticas. As instruções do processador ARM7 são divididas em diversos tipos, neste trabalho foram implementadas as instruções dos tipos de multiplicação (Multiply), processamento de dados (Data-processing) e desvio (Branch) visualizadas nas Tabelas 1, 2 e 3, respectivamente. Além disso, foi implementado o modo de endereçamento utilizando um registrador ou um imediato e o formato das instruções de acesso a memória foram definidas. Para a execução dessas instruções, principalmente das instruções do tipo Branch, foi necessário implementar a decodificação do campo COND, presente em todas instruções. Essa campo permite que uma instrução seja executada condicionamente de acordo com as flags, estado do processador, entre outros. Por exemplo, uma instrução B com o campo COND=0x00 irá ser executada se a Flag Z=1. Para a execução das instruções foi implementado o processador com 3 estágios: Instruction Fetch - IF, Instruction Decode - ID e Execute - EX. Mnemônico MUL MLA Ação Rd = Rm * Rs Rd = Rm * Rs + Rn Tabela 1: Instruções do tipo Multiply. 1

Mnemônico Ação AND Rd = Rn AND shifter operand EOR Rd = Rn EOR shifter operand SUB Rd = Rn - shifter operand RSB Rd = shifter operand - Rn ADD Rd = Rn + shifter operand ADC Rd = Rn + shifter operand + Flag C SBC Rd = Rn - shifter operand -!(Flag C) RSC Rd = shifter operand - Rn -!(Flag C) TST Atualiza Flags após Rn AND shifter operand TEQ Atualiza Flags após Rn EOR shifter operand CMP Atualiza Flags após Rn - shifter operand CMN Atualiza Flags após Rn + shifter operand ORR Rd = Rn OR shifter operand MOV Rd = shifter operand BIC Rd = Rn AND!(shifter operand) MVN Rd =!(shifter operand) Tabela 2: Instruções do tipo Data-processing. Mnemônico B BL Ação Jump signed immed LR = PC, Jump signed immed,..., MOV PC, LR Tabela 3: Instruções do tipo Branch. 2

Figura 1: Bits da Instrução AND. Figura 2: Bits da Instrução MUL. Dificuldades na Implementação A principal dificuldade encontrada foi entender a arquitetura do ARM7 e a linguagem ArchC para iniciar a implementação. A grande dificuldade na arquitetura do ARM7 foi com relação as Flags, o campo COND e como isso influencia a execução das instruções do tipo Branch. Além disso, uma dificuldade encontrada foi com campos iguais nas instruções AND e MUL. Para identificar se a instrução é uma AND ou MUL é necessário verificar os campos em negrito ilustrados nas Figuras 1 e 2 respectivamente. Como pode ser visto, pode ocorrer a decodificação de uma instrução MUL como se fosse uma instrução AND. Para resolver esse problema, foi necessário declarar a instrução MUL antes da instrução AND, como pode ser visto no trecho de código abaixo. Com isso, a instrução é sempre avaliada antes como MUL e depois como AND. ac_instr<multiply> mla, mul; ac_instr<multiply_long> umull, umlal, smull, smlal; ac_instr<data_processing> and, add, adc ac_instr<branch> b, bl; ac_instr<branch_and_exchange> bx, blx;; Sintaxe de Programas A ferramente segue a mesma sintaxe estabelecida pela arquitetura ARM7. Como exemplo, vamos utilizar um programa para calcular o fatorial abaixo: int contador = 2; 3

int fatorial = 1; int n = 5; fat: fatorial = fatorial * contador; contador = contador + 1; if(contador <= n) GOTO fat; Um possível código, com instruções do ARM7 é mostrado abaixo, com r1 = contador, r2 = fatorial e r3 = n: 1) ADD r1, $zero, 2 2) ADD r2, $zero, 1 3) ADD r3, $zero, 5 4) MUL r2, r2, r1 5) ADD r1, r1, 1 6) CMP r1, r3 7) B -5 8) NOP 9) NOP A instrução B recebe como label o número de instruções que deve ser somada ao PC atual, levando em consideração os estágio do pipeline. Quando a instrução B for executada, o PC estará apontando para a instrução 9 (segundo NOP) devido os estágios do pipeline. Com isso, para retornarmos para a instrução 4, é necessário somarmos -5. Os dois NOPs após a instrução B são necessário para resolver o branch e o programa não seja finalizado com a chamado do syscall ou execute uma instrução que não seria executada. As instruções em hexadecimal são apresentadas abaixo: 0000 E2901002 0004 E2902001 0008 E2903005 000C E0120291 0010 E2911001 0014 E1510003 0018 DAFFFFFB 001C F0000000 0020 F0000000 0024 0000000C 4

É importante notar o campo COND de cada instrução (primeiro valor: E2911001), por exemplo, se COND=E a instrução sempre será executada, se COND=D a instrução será executada se as flags Z == 1 ou N!= V (flags setadas pela instrução CMP - endereço 0014, representando r1 = r3), se COND=F a instrução não será executada. Conclusão e Trabalhos Futuros Neste trabalho foi implementada uma versão simplificada do processador ARM7. Com essa implementação é possível executar programas que usam instruções aritméticas, de desvio condicional (if e loop) e incondicional. O processador executa as instruções através de 3 estágios de pipeline. Para o controle, algumas flags do registrador de status são setadas após a execução de algumas instruções. Como trabalhos futuros estão a implementação do comportamento das instruções de acesso a memória e definição e implementação de outras instruções, como as instruções do coprocessador. Além disso, seria interessante implementar os outros modos de endereçamento das instruções de processamento de dados. 5