Arquitetura de Computadores Trabalhos Práticos

Documentos relacionados
Arquitectura de Computadores Y86 Sequencial. Créditos Randal E. Bryant

Arquitectura de Computadores Y86 Instruções

Arquitectura de Computadores Y86 Sequencial. Créditos Randal E. Bryant

Y86: Datapath Sequencial. Arquitectura de Computadores Lic. em Engenharia Informática Luís Paulo Santos

A arquitectura IA32. A arquitectura de um processador é caracterizada pelo conjunto de atributos que são visíveis ao programador.

Programando em Assembly

AJProença, Sistemas de Computação, UMinho, 2017/18 1. Componentes (físicos) a analisar: a unidade de processamento / o processador:

Fluxo de Execução em Assembly

Arquitectura de Computadores II L.E.S.I. 3º ano 2005/06. Módulo nº 4 Encadeamento e resolução de anomalias

Professor: Dr. Rogério Rodrigues de Vargas.

Y86: Encadeamento de Instruções (PIPE) Arquitectura de Computadores Lic. em Engenharia Informática Luís Paulo Santos

Intel x AT&T - recapitulação

Infraestrutura de Hardware. Implementação Monociclo de um Processador Simples

Arquitectura de Computadores II L.E.S.I. 3º ano. Módulo nº 3 Princípios gerais de encadeamento

Arquitetura de Computadores I. Prof. Ricardo Santos (Cap 2)

PARTE II - CONJUNTO DE INSTRUÇÕES ARQUITETURA DE COMPUTADORES ANTONIO RAMOS DE CARVALHO JÚNIOR

ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I

Curso: LMCC Exame 1ª Chamada 14/Jun/06 Disciplina: Arquitectura de Computadores Duração: 2h30m

Registradores na Arquitetura MIPS. 29/4/2016 MIPS - Instruction Set Architecture

Pilha de execução Volnys Borges Bernal Departamento de Sistemas Eletrônicos (PSI) Escola Politécnica da USP

Assembly IA32 Procedimentos

Estrutura do tema ISA do IA-32

Organização e Projeto de Computadores

Microprocessadores. Família x86 - Evolução

Estruturas de controlo do C if-else statement

Introdução ao Assembly

TEÓRICA. lb $t0, 1($t1)

Universidade Federal da Bahia Instituto de Matemática Departamento de Ciência da Computação MATA49 Programação de software básico Arquitetura Intel

Pipeline. Ciclos de Operação da CPU Estágios do Pipeline Previsão de Desvio. Estrutura da CPU. Em cada ciclo, a CPU deve:

Estrutura do tema ISA do IA-32

ção de Computadores I

Arquitetura de Computadores I Prof. Ricardo Santos (Cap 2)

Organização de Computadores

Tópicos Avançados em Sistemas Computacionais: Infraestrutura de Hardware Aula 10

lw, sw add, sub, and, or, slt beq, j

Arquitetura e Organização de Computadores

Estrutura do tema ISA do IA-32

SSC0114 Arquitetura de Computadores

A Arquitetura: conjunto de instruções

CPU. CPU Unidade Central de Processamento. Função: leitura, escrita e processamento de dados

Assembly do IA-32 em ambiente Linux

Infra-estrutura de Hardware

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES A UNIDADE LÓGICA ARITMÉTICA E AS INSTRUÇÕES EM LINGUAGEM DE MÁQUINA

Disciplina de. Organização de Computadores Digitais

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

Projeto de Processadores Programáveis

Estrutura de uma função ( / procedimento )

Infraestrutura de Hardware. Implementação Multiciclo de um Processador Simples

Arquiteturas de Computadores

Introdução a Engenharia Reversa

Assembly do IA-32 em ambiente Linux

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES A UNIDADE LÓGICA ARITMÉTICA E AS INSTRUÇÕES EM LINGUAGEM DE MÁQUINA

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES A UNIDADE LÓGICA ARITMÉTICA E AS INSTRUÇÕES EM LINGUAGEM DE MÁQUINA

Universidade Federal do Rio de Janeiro Bacharelado em Ciência da Computação. Arquitetura de Computadores I. Organização Básica do Computador

DataPath II Tomando o controle!

SISTEMAS EMBARCADOS Arquitetura ARM Cortex-M3

O Computador Neander Neander - Computador Hipotético Didático

Nível da Arquitetura do Conjunto de Instruções. Ronaldo de Freitas Zampolo

Organização de Computadores 1

Universidade de São Paulo

Data types. In C: char. short. int/long. double/long long AC 2017/2018. Pedro Serra / Sérgio Ferreira

Arquitecturas Alternativas. Arquitectura X86-64 Arquitecturas RISC Exemplo: MIPS Desempenho de sistemas Pipelining

Organização e Arquitetura de Computadores I

Microarquitetura IJVM. Datapath mic-1. Função dos Registradores. mic-1

Sistemas de Computação

Exceções no Fluxo de Execução: Interrupções e Traps

Otimização de Execução em Processadores Modernos. William Stallings - Computer Organization and Architecture, Chapter 12 [Trad. E.Simões / F.

Introdução à Computação: Arquitetura von Neumann

Linguagem de Montagem Assembly

Ordem de Bytes: Big Endian e Little Endian

AULA 05: LINGUAGEM DE MONTAGEM: SUPORTE A PROCEDIMENTOS

Microprocessadores I ELE Aula 7 Conjunto de Instruções do Microprocessador 8085 Desvios

Neander - características

Computadores de Programação (DCC/UFRJ)

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

Processamento e Linguagem de Máquina. O processador Programação Assembler (Linguagem de Máquina)

Arquitetura de Computadores Conceitos Fundamentais. Graduação em Engenharia Elétrica - UFPR Prof. Carlos Marcelo Pedroso 2016

Arquiteturas de Computadores. Princípios e exemplos de conjuntos de instruções

Paradigma CISC. Arquitetura ARM Cortex-M3. Paradigma CISC. Paradigma RISC. Paradigma RISC. Resumo: RISC x CISC 18/08/2016

Lic. Ciências da Computação

Sistemas de Computação para Controle e Automação CIC132. Assembly. Assembly. Notas. Décima quarta aula: Introdução a programação Assembly

SSC0611 Arquitetura de Computadores

Estrutura do tema ISC

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

Microprocessadores I ELE Conjunto de Instruções do Microprocessador 8085 Aula 9 - PILHA E SUBROTINAS -

MIPS ISA (Instruction Set Architecture)

Organização de Computadores

ELT601 Eletrônica Digital II Graduação em Engenharia Eletrônica

Nível da Arquitetura do Conjunto das Instruções

LISTA 02 CONJUNTO DE INSTRUÇÕES - GABARITO

2. A influência do tamanho da palavra

Sistemas Operacionais. Pilha de execução Volnys B. Bernal 1. Agenda. Pilha de execução. Os problemas. Os problemas.

ORGANIZAÇÃO DE COMPUTADORES O PROCESSADOR E SEUS COMPONENTES

PSI3441 Arquitetura de Sistemas Embarcados

Disciplina de Organização de Computadores I

Computadores e Programação (MAB-353) Primeira Prova -Prof. Paulo Aguiar (DCC/UFRJ) 19/05/ pontos

Organização e Projeto de Computadores 3: Modo de Endereçamento, Sub-Rotina, Instruções de E/S, Interrupção

Relembrando desempenho...

Transcrição:

Arquitetura de Computadores Trabalhos Práticos

Trabalhos Práticos 1. Bloco de memória em Verilog 2. Y86 1 instrução 5 ciclos 3. Y86 pipeline 4. Y86 dual core com cache 5. Trabalho no CUDA 3 pontos 7 pontos 10 pontos 15 pontos 15 pontos 2

Bloco de memória em Verilog module MEM1k (CLK,ADDR,DATA,RD,WR,CS); input [9:0] ADDR; inout [31:0] DATA; input CLK,RD,WR,CS; wire [9:0] AI = ADDR; wire [9:0] AO = ADDR; wire [31:0] DI = DATA; assign DATA = (CS & WR)?DO:32 bz; endmodule 3

Bloco de memória em Verilog Terminar implementação do bloco anterior CS = 1 se for realizar leitura ou escrita na memória RD = 1 se leitura da memória WR = 1 se escrita na memória Assumir que RD e WR nunca serão ativos ao mesmo tempo Leitura é assíncrona Escrita é síncrona no negedge do clock CLK Implementar bloco de memória MEM1M, com 1MByte ou 256k palavras de 32 bits utilizando blocos MEM1k 4

Processor Y86 CLK RESET INT Y86 DATA[31:0] ADDR[31:0] RD WR WAIT 5

Processor Y86 CLK : clock RESET : pino de reset. Quando o reset ocorrer, PC é atualizado para o valor 0x00000000 INT : pino de interrupção (será utilizado nos próximos trabalhos) DATA : pino de dados ADDR : pino de endereços RD : leitura de memória WR : escrita de memória WAIT : pino de espera (será utilizado nos próximos trabalhos) 6

Processor Y86 %eax %ecx %edx %ebx Program registers %esi %edi %esp %ebp Condition codes OF ZF SF PC Memory Registradores Mesmo que IA32 Condition Codes Flags de um bit que são modificadas por operações de ALU» OF: Overflow ZF: Zero SF:Negative Program Counter Indica endereço da próxima instrução Memória Endereçamento por byte, em little endian 7

Instruções do Y86 Formato 1 6 byte Tamanho da instrução pode ser determinado no primeiro byte Codificação mais simples que IA32 8

Codificação dos Registradores Identificação de 4 bits %eax %ecx %edx %ebx 0 1 2 3 %esi %edi %esp %ebp 6 7 4 5 Mesma codificação do IA32 Código 8 significa nenhum registrador 9

Exemplo de Instrução ADDL Assembly Codificação addl ra, rb 6 0 ra rb rb < ra + rb Y86 somente permite operações de ALU em registradores Ativa condition codes e.g., addl %eax,%esi Codificação: 60 06 Dois bytes Primeiro byte determina operação Segundo byte determina fonte e destino de dados 10

Instruções ALU (OP1) Add Código Operação Inc addl ra, rb 6 0 ra rb incl rb 6 4 8 rb Subtract (ra from rb) subl ra, rb 6 1 ra rb Dec decl rb 6 5 8 rb And andl ra, rb 6 2 ra rb Not notl rb 6 6 8 rb Exclusive Or xorl ra, rb 6 3 ra rb Or orl ra, rb 6 7 ra rb 11

Instruções Move rrmovl ra, rb 2 0 ra rb Register > Register irmovl V, rb 3 0 8 rb V Immediate > Register rmmovl ra, D(rB) 4 0 ra rb D Register > Memory mrmovl D(rB), ra 5 0 ra rb D Memory > Register Similares a movl do IA32 Formato de memória mais simples Nome da instrução determina tipo de dado 12

Exemplos de Instrução Move IA32 Y86 Codificação movl $0xabcd, %edx irmovl $0xabcd, %edx 30 82 cd ab 00 00 movl %esp, %ebx rrmovl %esp, %ebx 20 43 movl 12(%ebp),%ecx movl %esi,0x41c(%esp) mrmovl 12(%ebp),%ecx rmmovl %esi,0x41c(%esp) 50 15 f4 ff ff ff 40 64 1c 04 00 00 movl $0xabcd, (%eax) movl %eax, 12(%eax,%edx) movl (%ebp,%eax,4),%ecx 13

Instrução de Jump Jump Unconditionally jmp Dest 7 0 Dest Jump When Less or Equal jle Dest 7 1 Dest Jump When Less jl Dest 7 2 Dest Jump When Equal je Dest 7 3 Dest Jump When Not Equal jne Dest 7 4 Dest Jump When Greater or Equal jxx Codificação dos tipos de jump são diferenciadas pelo function code Utiliza condition codes Idênticas ao IA32 Codificam endereço completo Ao contrário de endereçamento relativo ao PC do IA32 jge Dest 7 5 Dest Jump When Greater jg Dest 7 6 Dest 14

Pilha de Programa do Y86 Fim Região da memória que armazena dados do programa Utilizada no Y86 (e IA32) como suporte a chamada de procedimentos Aumenta endereços Topo %esp Topo da pilha indicado por %esp Endereço do topo da pilha Pilha cresce na direção de endereços menores Uma instrução de push decrementa a pilha inicialmente Uma instrução de pop incrementa o apontador da pilha 15

Operações de Pilha pushl ra a 0 ra 8 Decrementa %esp by 4 Armazena a palavra de ra na memória apontada por %esp Similar ao IA32 popl ra b 0 ra 8 Lê palavra apontada por %esp Salva em ra Incrementa %esp por 4 Similar ao IA32 16

Chamada e Retorno de Subrotina Call e Return call Dest 8 0 Dest Push endereço da próxima instrução na pilha Inicia execução a partir de Dest Similar ao IA32 ret 9 0 Pop endereço da pilha Utiliza como endereço da próxima instrução a ser executada Similar ao IA32 17

Outras Instruções nop 0 0 Não faz nada halt 1 0 Pára execução de instruções IA32 possui instrução similar, mas ela não pode ser executada em modo de usuário No simulador, ela é utilizada para parar a simulação 18

Conjunto de Instruções Byte 0 1 2 3 4 5 nop 0 0 halt 1 0 rrmovl ra, rb 2 0 ra rb irmovl V, rb 3 0 8 rb V rmmovl ra, D(rB) 4 0 ra rb D mrmovl D(rB), ra 5 0 ra rb D OP1 ra, rb 6 fn ra rb jxx Dest 7 fn Dest call Dest 8 0 Dest ret 9 0 pushl ra A 0 ra 8 popl ra 19 B 0 ra 8 jmp 7 0 jle 7 1 jl 7 2 je 7 3 jne 7 4 jge 7 5 jg 7 6

Instruções ALU (OP1) Add Código Operação Inc addl ra, rb 6 0 ra rb incl rb 6 4 8 rb Subtract (ra from rb) subl ra, rb 6 1 ra rb Dec decl rb 6 5 8 rb And andl ra, rb 6 2 ra rb Not notl rb 6 6 8 rb Exclusive Or xorl ra, rb 6 3 ra rb Or orl ra, rb 6 7 ra rb 20

Execução SEQ Estado Fluxo Program Counter (PC) Condition code register (CC) Banco de registradores Memória Espaço único para dados e programa Leia instrução especificada pelo PC Processe estágios Atualize PC PC Write back Memory Execute Decode icode, ifun ra, rb valc newpc vale, valm Addr, Data Bch CC alua, alub srca, srcb dsta, dstb valm Data memory valp vale ALU vala, valb A B Register M file E Fetch Instruction memory PC increment PC 21

Estágios Fetch Decode Execute Memory Lê instrução da memória Lê registradores e decodifica instrução Calcule valor ou endereço Lê ou escreve na memória Write Back/PC Atualiza registradores e PC PC Write back Memory Execute Decode icode, ifun ra, rb valc newpc vale, valm Addr, Data Bch CC alua, alub srca, srcb dsta, dstb valm Data memory valp vale ALU vala, valb A B Register M file E Fetch Instruction memory PC increment PC 22

Decodificação Opcional Opcional 5 0 ra rb D icode ifun ra rb valc Formato Byte de instrução Byte de registrador Byte de constante icode:ifun ra:rb valc 23

Executando Operação ALU OPl ra, rb 6 fn ra rb Fetch Decode Execute Lê dois bytes Lê operandos Executa operação Memory Não faz nada Write back/pc Atualiza registrador destino Atualiza PC por PC + 2 Atualiza CC 24

Cálculo nos Estágios OPl ra, rb Fetch Decode Execute Memory Write back icode:ifun M 1 [PC] ra:rb M 1 [PC+1] valp PC+2 vala R[rA] valb R[rB] vale valb OP vala Set CC R[rB] vale PC valp Lê byte de instrução Lê byte de registradores Calcula próximo PC Lê operando A Lê operando B Realiza operação de ALU Atualiza registrador de CC Escreve resultado Atualiza PC 25

Executando rmmovl rmmovl ra, D(rB) 4 0 ra rb D Fetch Decode Lê 6 bytes Lê registradores e decodifica instrução Memory Escreve na memória Write back Não faz nada Atualiza PC por PC + 6 Execute Calcula endereço efetivo 26

Cálculo nos Estágios: rmmovl rmmovl ra, D(rB) Fetch Decode Execute Memory Write back icode:ifun M 1 [PC] ra:rb M 1 [PC+1] valc M 4 [PC+2] valp PC+6 vala R[rA] valb R[rB] vale valb + valc M 4 [vale] vala PC valp Lê byte de instrução Lê byte de registradores Lê deslocamento D Cálcula próximo PC Lê operando A Lê operando B Calcula endereço efetivo Escreve valor na memória Atualiza PC Utiliza ALU para calcular endereço 27

Executando popl popl ra b 0 ra 8 Fetch Decode Execute Lê dois bytes Lê registrador esp Incrementa esp por 4 Memory Lê da posição de memória apontada pelo valor anterior de esp Write back Atualiza esp Escreve resultado em ra Atualiza PC por PC + 2 28

Cálculo nos Estágios: popl popl ra Fetch Decode Execute Memory Write back icode:ifun M 1 [PC] ra:rb M 1 [PC+1] valp PC+2 vala R[%esp] valb R [%esp] vale valb + 4 valm M 4 [vala] R[%esp] vale R[rA] valm PC vaip Lê byte de instrução Lê byte de registradores Calcula próximo PC Lê apontador de pilha Lê apontador de pilha Incrementa apontador de pilha Lê da posição anterior de esp Atualiza apontador de pilha Escreve resultado Utiliza ALU para incrementar esp Precisa atualizar dois registradores 29 ra esp

Executando Jumps jxx Dest 7 fn Dest fall thru: XX XX Not taken target: XX XX Taken Fetch Decode Execute Lê 5 bytes Incrementa PC por 5 Não lê nenhum registrador e decodifica instrução Determina se branch vai ser tomado ou não Memory Não faz nada Write back Não faz nada Atualiza PC para Dest se branch for tomado ou para PC + 5 se branch não for tomado 30

Cálculo nos Estágios: Jumps Fetch Decode jxx Dest icode:ifun M 1 [PC] valc M 4 [PC+1] valp PC+5 Lê byte de instruções Lê endereço de destino Endereço se branch não for tomado Execute Memory Write back Bch Cond(CC,ifun) PC Bch? valc : valp Branch é tomado? Atualiza PC Calcula os dois endereços Escolhe endereço baseado no CC 31

Executando call call Dest 8 0 Dest return: XX XX target: XX XX Fetch Decode Execute Lê 5 bytes Incrementa PC por 5 Lê apontador da pilha Decrementa apontador da pilha (esp) por 4 Memory Escreva novo PC para o topo da pilha Write back Atualiza apontador da pilha Seta PC para Dest 32

Cálculo nos Estágios: call call Dest Fetch Decode Execute Memory Write back icode:ifun M 1 [PC] valc M 4 [PC+1] valp PC+5 valb R[%esp] vale valb + 4 M 4 [vale] valp R[%esp] vale PC valc Lê byte de instruções Lê endereço destino Calcula ponto de retorno Lê apontador da pilha Decrementa apontador da pilha Escreve ponto de retorno na pilha Atualiza apontador da pilha Set PC to destination Usa ALU para decrementar o apontador de pilha Armazena na pilha PC atualizado 33

Executando ret ret 9 0 return: XX XX Fetch Decode Execute Lê 1 byte Lê apontador da pilha Incrementa apontador da pilha por 4 Memory Lê endereço de retorno do topo da pilha Write back Atualiza apontador da pilha Atualiza PC com o endereço de retorno 34

Cálculo nos Estágios: ret ret icode:ifun M 1 [PC] Lê byte de instruções Fetch Decode Execute Memory Write back vala R[%esp] valb R[%esp] vale valb + 4 valm M 4 [vala] R[%esp] vale PC valm Lê apontador da pilha Lê apontador da pilha Incrementa apontador da pilha Lê endereço de retorno do topo da pilha Atualiza apontador da pilha Atualiza PC com o endereço de retorno Utiliza ALU para incrementar topo da pilha Lê endereço de retorno do topo da pilha 35

Y86 SEQ : O que entregar? Cálculo dos estágios para todas os grupos de instruções Determinação do que será guardado ao fim de cada estágio guardado serão registradores internos 36

Esqueleto do Código module Y86(ADDR, DATA, RD, WR, RESET, CLK); input RESET,CLK; inout [31:0] DATA; output [31:0] ADDR; output RD,WR; reg [4:0] PIPE; always @(posedge CLK or posedge RESET) if (RESET) PIPE[4:0] <= 5 b10000; else PIP[4:0] <= {PIPE[0],PIPE[4:1]}; wire FETCH, DECODE, EXECUTE, MEMORY, WRITEBACK; assign {FETCH, DECODE, EXECUTE, MEMORY, WRITEBACK} = PIPE[4:0]; reg [31:0] PC, valpc; always @(posedge CLK or posedge RESET) if (RESET) PC[31:0] <= 32 h00000000; else if (WRITEBACK) PC[31:0] <= valpc[31:0]; else PC[31:0] <= PC[31:0]; endmodule 37

Assemblando Y86 unix> yas [ V] eg.ys Gera arquivo de código objeto eg.yo Resultado parece arquivo disassemblado V gera arquivo que pode ser carregado em Verilog 0x000: 308400010000 irmovl Stack,%esp # Set up stack 0x006: 2045 rrmovl %esp,%ebp # Set up frame 0x008: 308218000000 irmovl List,%edx 0x00e: a028 pushl %edx # Push argument 0x010: 8028000000 call len2 # Call Function 0x015: 10 halt # Halt 0x018:.align 4 0x018: List: # List of elements 0x018: b3130000.long 5043 0x01c: ed170000.long 6125 0x020: e31c0000.long 7395 0x024: 00000000.long 0 38

Outros Trabalhos Y86 pipe Y86 dual core com cache CUDA A ser determinado posteriormente 39