Baixe o app para aproveitar ainda mais
Prévia do material em texto
1 Processamento Microprocessadores e capacidade de processamento � Tecnologia de circuitos integrados � Integra a memória, a lógica e o controle do computador em um único chip Processamanto paralelo � Problema é fragmentado em partes menores � Múltiplas instruções são processadas simultaneamente com vários processadores Processamanto paralelo Multiprocessadores Multicomputadores 2 Tipos � Processamento em lote � As transações são acumuladas e armazenadas até o processamento � Processamento on-line � Transações são registradas diretamente no computador e processadas imediatamente •• ProcessamentoProcessamento distribudistribuíídodo:: DistribuiDistribuiççãoão de de trabalhotrabalho de de processamentoprocessamento entreentre vvááriosrios computadorescomputadores •• ProcessamentoProcessamento centralizadocentralizado:: ReslizadoReslizado porpor umcomputadorumcomputador central de central de grandegrande porteporte •• ComputaComputaççãoão cliente/servidorcliente/servidor:: Divide o Divide o processamentoprocessamento entreentre ““clientesclientes”” e e ““servidoresservidores”” nana rederede Tipos Figura 6-7 Cliente - Servidor Cliente - Servidor •• ComputadoresComputadores de de rederede (CR):(CR): ComputadorComputador de mesa de mesa simplificadosimplificado, , nãonão armazenaarmazena dados dados permanentementepermanentemente •• ComputaComputaççãoão peerpeer--toto--peer:peer: ProcessamentoProcessamento distribudistribuíídodo queque ligaliga computadorescomputadores atravatravééss dada Internet Internet ouou de de redesredes privadasprivadas Processamento em Rede Processamento em Rede 3 MultiprogramaMultiprogramaççãoão •• ExecutaExecuta doisdois ouou maismais programasprogramas simultaneamentesimultaneamente usandousando o o mesmomesmo computadorcomputador •• A CPU A CPU executaexecuta apenasapenas um um programaprograma masmas atendeatende ààss necessidadesnecessidades de de entradaentrada e e sasaíídada de de outrosoutros Execução de um único programa versus multiprogramação Tempo Tempo compartilhadocompartilhado •• CompartilhamentoCompartilhamento de de recursosrecursos computacionaiscomputacionais porpor muitosmuitos usuusuááriosrios simultaneamentesimultaneamente MultiprocessamentoMultiprocessamento •• ExecuExecuççãoão de de duasduas ouou maismais instruinstruççõesões simultaneamentesimultaneamente emem um um úúniconico sistemasistema, , usandousando maismais de de umauma CPUCPU S.O. ProgramasProgramas tradutorestradutores de de linguagemlinguagem e e utilitutilitááriosrios •• TraduzTraduz programasprogramas emem linguagemlinguagem de alto de alto nníívelvel emem linguagemlinguagem de de mmááquinaquina •• LinguagensLinguagens de de programaprogramaççãoão:: ConsisteConsiste dos 1s e 0s do dos 1s e 0s do ccóódigodigo binbinááriorio •• LinguagemLinguagem Assembly:Assembly: LembraLembra a a linguagemlinguagem de de mmááquinaquina, , substituisubstitui recursosrecursos mnemônicosmnemônicos porpor ccóódigosdigos numnumééricosricos •• LiguagensLiguagens de de terceiraterceira gerageraççãoão:: FORTRAN, COBOL, BASIC, Pascal e CFORTRAN, COBOL, BASIC, Pascal e C Linguagens de programação Instruções � Para comandar o hardware de um computador, precisamos falar a linguagem dele. � As palavras da linguagem da máquina são chamadas de instruções. � O conjunto de instruções formam um vocabulário. � Normalmente representados por um código assembly 4 Linguagem de máquina � Os projetistas de máquina buscam: � Um conjunto de instruções que facilite a construção do hardware e do compilador. � Maximizar a performance � Minimizar o custo � Após aprender a linguagem de uma máquina torna-se fácil aprender outras mais. � Mesmos princípios � Instruções MIPS: Nintendo, sony... Linguagem de máquina � Linguagem assemby é essencialmente suportada diretamente em hardware. � Simplicidade -> regularidade � Limite nos tipos de operandos (registradores) � Limite no conjunto de operações Elementos de uma instrução � Código da operação (codop) � Faça isto � Endereço do operando fonte � Use isto � Endereço do operando resultado � Coloque o resultado aqui Operações aritméticas � MIPS: add a,b,c # a = b + c � Obs. Os nomes dos operandos não são a, b e c � Instruções são mais rígidas que em linguagem de alto nível � MIPS: 3 operandos � Exemplo: a = b + c + d + e add a, b, c # a = b + c add a, a, d # a = a + d add a, a, e #a = a + e Variáveis Assembly : Registradores � Assembly não utiliza variáveis � Operandos Assembly são registradores � Número limitado de localizações especiais construídas diretamente no hardware � Operações podem somente ser realizadas nestes � Como os registradores estão diretamente no hardware eles são muito rápidos. � Exemplo: � MIPS: 32 registradores de 32 bits � Cada registrador tem um nome � Os nomes começam com $ � $s0, $s1, $s2... ,$s7-> correspondem às variáveis de programa � $t0, $t1, $t2...,$t9 -> registradores temporários � Zero: $zero Variáveis Assembly : Registradores 5 Adição e Subtração � Sintaxe das instruções: � Nome da operação (add, sub) � Operando destino � Primeiro operando fonte � Segundo operando fonte add $t0, $s1, $s2 Adição e subtração � Exemplo: f = (g + h) – (i + j); add $t0, $s1, $s2 add $t1, $s3, $s4 sub $s0, $t0, $t1 f g h i j $s0 $s1 $s2 $s3 $s4 Adição e subtração � Exemplo: a = b + c + d – e; add $s0, $s1, $s2 add $s0, $s0, $s3 sub $s0, $s0, $s4 a b c d e $s0 $s1 $s2 $s3 $s4 Instruções Lógicas � Operações AND e OR; � Sintaxe semelhante às operações aritméticas; � Exemplos: � and $t0,$s0,$s1 � or $t0,$s0,$s1 Operandos Imediatos � Imediatos são costantes numéricos. � São comuns em códigos, logo existem instruções especiais para eles. � Somar imediato: addi $t0, $t1, 10 # $t0 = $t1 + 10 Imediato Transferência de dados � Transferem dados entre registradores e memória � Memória para registrador � Registrador para memória 6 Memória para registrador � Sintaxe da instrução de carga (load) � Nome da operação (instrução) � Registrador que receberá o valor � Deslocamento numérico em bytes � No MIPS deslocamento possui 16 bits, podendo ser positivo ou negativo. � Registrador contendo um ponteiro para a memória. � Nome da instrução: lw (load word) � 32 bits são transferidos de uma vez Registrador para memória � Também queremos armazenar o valor de um registrador na memória. � Nome da instrução sw (store word); � Sintaxe idêntica a instrução load; sw $t0,12($s0) � Essa instrução tomará o ponteiro em $s0, somará 12 bytes a ele, e então armazenará o valor do registrador $t0 no endereço de memória apontado pela soma calculada Instruções de desvio � O MIPS possui duas instruções de desvio condicional � beq (branch if equal) – desvie se igual � bne (branch if not equal) – desvie se não igual � Sintaxe: beq registrador1, registrador2, L1 � Se conteúdo de registrador1 igual ao conteúdo de registrador2, desvie para o label L1 bne registrador1, registrador2, L1 � Se conteúdo de registrador1 diferente do conteúdo de registrador2, desvie para o label L1 Instruções de desvio � A instrução de desvio no MIPS é a jump (pule, ou desvie para) � sintaxe: � j L1 # desvie para o label L1 � Essa instrução é equivalente ao goto Instruções de desvio if (a == 0) a = a+1; else a = a-1; � Exemplo: Desvios condicionais � Vamos executar o nosso trecho de código na linguagem do MIPS: � a : $s0 beq $s0,$zero,L1 # se a = 0 vai para L1 subi $s0,$s0,1 # faz a = a -1 j L2 # vai para L2 L1: addi $s0,$s0,1# faz a = a+1 L2: if (a == 0) a = a+1; else a = a-1; 7 Laços � Como faríamos para executar o seguinte código: � Reescrevendo: LOOP: a = a + 1; if(a != 10) goto LOOP; do{ a = a + 1; }while (a != 10); Laços � Em linguagem de máquina teríamos: a: $s0 , 10 : $s1 LOOP: addi $s0,$s0,1 bne $s0,$s1,LOOP do{ a = a + 1; }while (a != 10); Exercício � Traduza os seguintes trechos de código para o assembly do Mips: a) b = 0; do{ b = b + 5; }while(b != 50); b) if (b == 10) b = b - 1; else b = b*2;
Compartilhar