Organização e Arquitetura de computadores

Tamanho: px
Começar a partir da página:

Download "Organização e Arquitetura de computadores"

Transcrição

1 Organização e Arquitetura de computadores Instruções: a linguagem de máquina Prof. Dr. Luciano José Senger Introdução Operações no hardware do computador Operandos do hardware do computador Representando instruções no computador Operações lógicas Instruções para tomada de decisões Suporte para procedimentos no hardware do computador Comunicando-se com as pessoas bits Introdução Para controlar o hardware do computador, é necessário falar a sua linguagem Palavras da linguagem do computador são chamadas de instruções = vocabulário échamado de conjunto de instruções Apresentação das instruções através de uma abordagem top-down Linguagens de computadores são semelhantes (entre diferentes arquiteturas), ao contrário da linguagem dos humanos Introdução É fácil ver, por métodos lógicos formais, que existem certos [conjuntos de instruções] que são adequados para controlar e causar a execução de qualquer seqüência de operações... As considerações decisivas, do ponto de vista atual, na seleção de um [conjunto de instruções], são mais de natureza prática: a simplicidade do equipamento exigido pelo [conjunto de instruções] e a clareza de sua aplicação para os problemas realmente importantes, junto com a velocidade com que tratam esses problemas Burks, Goldstine e von Neumann, 1947 Introdução Conjunto de instruções (a ponta do iceberg) Exemplo: MIPS ( Conjunto de instruções criados a partir da década de 1 milhões de processadores fabricados em 22 ATI, Broadcom, Cisco, NEC, Nintendo, Silicon Graphics, Sony, Texas Instruments e Toshiba Processador RISC (conjunto reduzido de instruções) Tamanho de instruções fixo(fixed instruction lengths) Instruções de load-store (load-store instruction sets) Modos de endereçamento limitado(limited addressing modes) Operações limitadas(limited operations) Introdução Arquiteturas de programa armazenado Control necessita 1. Instruções de entrada da memória 2. Sinaisparacontrolaro fluxode informação entre os componentesdo caminhode dados 3. Sequenciamento de instruções CPU Control Datapath Exec Memory Fetch Decode Devices Input Output Datapath tem componentes unidades funcionais e banco de registradores Interconexões-componentesquesãoconectadosde forma queas instruçõespossamser executadase osdados possamser trazidose armazenados na memória

2 Operações no hardware do computador Operandos do hardware do computador Representando instruções no computador Operações lógicas Instruções para tomada de decisões Suporte para procedimentos no hardware do computador Comunicando-se com as pessoas bits Operações do hardware do computador Todo computador precisa realizar operações aritméticas add a, b, c Instrui o computador para realizar a soma entre as variáveis be ce armazenar o resultado em a Exemplo: colocar a soma de b, c, d, eena variável a: Em linguagem de alto nível a = b + c + d + e Em Assembly MIPS: add a, b, c # soma b+c é colocada em a add a, a, d # soma b+c+d está em a add a, a, e # soma b+c+d+e está em a Operações do hardware do computador O número natural de operandospara uma operação de adição é três Exigir que cada instrução tenha exatamente três operações nem mais nem menos, estáde acordo com manter o hardware simples: o hardware para um número variável de operandosémais complicado do que o hardware para um número fixo: Princípio de projeto 1:simplicidade favorece a regularidade Operações do hardware do computador Contra-exemplo: IA-32 (p.e. Pentium) ADD AX,BX Compilando duas instruções de atribuição C no MIPS: a = b + c; d = a e; a tradução é realizada pelo compilador Em MIPS: add a, b, c sub d, a, e Operações no hardware do computador Compilando uma instrução complexa no MIPS f = (g + h) (i + j) O compilador precisa desmembrar essa instrução em várias instruções assembly, pois somente uma operação é realizada por instrução MIPS add t, g, h # var. temp. t contém g+h add t1, i, j # var. temp. t1 contém i+j sub f, t, t1 # f recebe t t1 Note que uma expressão na linguagem C gera 3 instruções assembly para o MIPS Reflexão:um número maior de instruções de máquina por expressão é melhor ou pior? Operandos do hardware do computador Representando instruções no computador Operações lógicas Instruções para tomada de decisões Suporte para procedimentos no hardware do computador Comunicando-se com as pessoas bits

3 Operandos no hardware do computador Ao contrário dos programas nas linguagens de alto nível, os operandosdas instruções aritméticas são restritos, precisam ser de um grupo limitado de locais especiais, embutidos diretamente no hardware, chamados registradores(registers) Os registradores são os tijolos da construção do computador primitivas usadas no projeto do computador e são visíveis para o programador O tamanho dos registrados na arquitetura MIPS é 32 bits; grupos de 32 bits ocorrem com tanta freqüência no MIPS que recebem o nome de palavra (word) Operandos no hardware do computador $at $gp $sp $fp $ra Name $zero $v -$v1 $a -$a3 $t -$t7 $s -$s7 $t -$t9 Register Number reserved for assembler arguments Usage constant (hardware) returned values temporaries saved values temporaries global pointer stack pointer frame pointer return addr(hardware) Preserve on call? n.a. n.a. no yes no yes no yes yes yes yes Operandos no hardware do computador Uma diferença entre variáveis de um programa em linguagem de alto nível e os registradores éque o número de registradores é limitado O computador MIPS tem 32 registradores Princípio de projeto 2: menor significa mais rápido Uma quantidade muito grande de registradores pode aumentar o tempo do ciclo de clocksimplesmente porque os sinais eletrônicos levam mais tempo quando precisam atravessar uma distância maior Deve-se equilibrar o desejo dos programas por mais registradores com o desejo do projetista de manter o ciclo de clock mais rápido Um número maior de registradores necessita de um número maior de bits para representação: influência no tamanho da instrução Operandos no hardware do computador A convenção no MIPS éusar nomes com um sinal de $ seguido de dois caracteres para representar um registrador. $S, $S1, $T, $T1 Compilando uma atribuição em C usando registradores: f = (g + h) (i + j) add $t, $s1, $s2 add $t1, $s3, $s4 sub $s, $t, $t1 Operandos no hardware do computador Operandos na memória Operações aritméticas sóocorrem com os registradores nas instruções MIPS; assim o MIPS deve ter instruções que transferem os dados entre o processador e a memória: instruções de transferência de dados Para acessar uma word na memória, énecessário passar o endereço de memória a ser utilizado Operandos no hardware do computador A instrução que copia dados da memória para um registrador tradicionalmente é chamada de load O formato da instrução loadéo nome da operação seguido pelo registrador a ser carregado, depois uma constante e o registrador usado para acessar a memória. A soma da parte constante da instrução com o conteúdo do segundo registrador forma o endereço de memória

4 Operandos no hardware do computador Compilando uma atribuição quando um operando está na memória Vamos supor que A seja uma sequênciade 1 wordse que o compilador tenha associado as variáveis g e h aos registradores $s1 e $s2. Vamos supor que o endereço inicial da seqüência esteja no endereço armazenado em $s3 (endereço base) g = h + A[]; embora haja uma única operação nessa instrução de atribuição, um dos operandosestána memória, de modo que precisamos transferir A[] para um registrador ($s3 contém elemento base) : lw $t, ($s3) #registrador temporário recebe A[] Operandos no hardware de computador Compilando uma atribuição quando um operando está na memória (cont.) A instrução seguinte (add) pode operar sobre o valor em $t, jáque éum registrador: lw $t, ($s3) add $s1, $s2, $t A constante na instrução échamada de offsete o registrador acrescentado para formar o endereço é chamado de registrador base Operandos no hardware do computador Interface hardware/software Além de associar variáveis a registradores, o compilador aloca estrutura de dados, como vetores, em locais na memória Como os bytes de bits são úteis em muitos programas, a maioria das arquiteturas endereça bytes individuais Endereços de wordscombinam os endereços dos 4 bytes dentro da palavra No MIPS, palavras precisam começar em endereços que sejam múltiplos de 4 Operandos no hardware do computador No MIPS, palavras precisam começar em endereços que sejam múltiplos de 4 (restrição de alinhamento) O endereçamento em bytes afeta o índice do array: para obter o endereço em bytes de maneira apropriada o offset necessita ser igual a 4x=32 A instrução complementar ao loadchama-se store; ela copia dados de um registrador para a memória A instrução storeérepresentada pelo mnemônico sw Operandosno no hardware do computador Compilando com load e store Suponha que a variável h esteja associada ao registrador $s2 e o endereço base do vetor Aesteja armazenado em $s3. Qual código assemblydo MIPS para a instrução de atribuição C a seguir? A[12] = h + A[] Embora seja uma instrução na linguagem C, dois operandosestão na memória; são necessárias instruções para buscar os dois operandos da memória: lw $t, 32($s3) # reg. temp. $t recebe A[] add $t, $s2, $t # reg. temp. $t recebe h + A[] sw $t, 4($s3) # armazena resultado em A[12] Operandos no hardware do computador Interface hardware/software Muitos programas têm mais variáveis do que os computadores têm registradores O compilador tenta manter as variáveis mais utilizadas nos registradores e coloca as restantes na memória, usando load e store para movimentar os dados O processo de colocar variáveis menos utilizadas na memória ou aquelas que só serão empregadas mais tarde é denominado spilling registers Registradores, apesar de serem mais reduzidos e terem um tamanho menor que a memória principal, são mais rápidos: isso define a preocupação com a utilização correta dos registradores Constantes ou operandos imediatos Muitas vezes, os valores que necessitam ser trabalhados são passados na instrução como constantes, e não como endereços de memória; quando os dados são passados dessa forma, como constantes, é utilizado o modo de endereçamento imediato

5 Operandos no hardware do computador Trabalhando com constantes Usando apenas instruções, teríamos de ler uma constante da memória para utilizá-la: lw $t, EndConstante4($s1) add $s3, $s3, $t Supondo que EndConstante4 seja o endereço de memória para a constante 4 Uma alternativa que evita a instrução load, e assim uma leitura em memória, éoferecer instruções aritméticas em que o operando seja uma constante Essa instrução (no caso de uma soma) échamada de add imediato, ou addi: addi $s3, $s3, 4 # $s3 = $s3 + 4 Operandos no hardware do computador Trabalhando com constantes (cont.) Princípio de projeto 3: agilize os casos mais comuns Os operandoscom constantes ocorrem com bastante freqüência e, incluindo constantes dentro das instruções aritméticas, as operações tornam-se mais rápidas para serem executadas Representando instruções no computador Operações lógicas Instruções para tomada de decisões Suporte para procedimentos no hardware do computador Comunicando-se com as pessoas bits Representando instruções no computador Embora quando programa-se em assembly utilizase mnemônicos (como lw, sw, adde sub), as instruções são representadas e executadas através de um conjunto de bits Além disso, como os registradores são parte de quase todas as instruções, épreciso haver uma convenção para mapear os nomes dos registradores em números binários $s a $s7 são mapeados nos registradores de 16 a 23; $t a $t7 são mapeados nos registradores de a 15; Exercício:qual éo código binário para o registrador $s7? Representando instruções no computador Traduzindo uma instrução assemblymips para uma instrução de máquina: add $t, $s1, $s Cada um desse segmentos de uma instrução échamado campo; o primeiro e o último campos combinados dizem ao computador MIPS que essa instrução realiza soma O segundo campoindica o número do registrador que éo primeiro operando de origem da operação de soma (17 = $t1) O terceiro campoindica o outro operando de origem (1 = $t2) O quarto campocontém o número do registrador que receberáo resultado ( = $s) O quinto camponão éempregado nessa instrução 32 Representando instruções no computador Esse layout da instrução échamado de formato de instrução As instruções no MIPS tem todas 32 bits de tamanho Os campos do MIPS op (6 bits) rs (5 bits) rt (5 bits) rd (5 bits) shamt (5 bits) Funct (6 bits) op: operação básica, tradicionalmente chamada de opcode rs: o registrador do primeiro operando de origem rt: o registrador do segundo operando de origem rd: o registrador do operando de destino shamt: shift amount; quantidade de deslocamento funct: função; esse campo seleciona a variante específica da operação no campo op, e as vezes, échamado de código de função

6 Representando instruções no computador Problemas de endereçamento Existe um problema quando uma instrução precisa de campos maiores do que aqueles mostrados. Por exemplo, a instrução lw precisa especificar dois registradores e uma constante; se o endereço tivesse apenas 5 bits do formato anterior, a constante estaria limitada a 32 (2^5) Existe então um conflito entre manter entre o desejo de manter todas as instruções com o mesmo tamanho e o desejo de ter uma instrução único Princípio de Projeto 4: um bom projeto exige bons compromissos O compromisso escolhido pelos projetistas do MIPS émanter todas as instruções com o mesmo tamanho, exigindo assim diferentes formatos para os campos para diferentes tipos de instruções O formato anterior échamado de tipo R(de registrador) ou formato R. Um segundo tipo de formato de instrução échamado de formato I, utilizando pelas instruções imediatas e de transferência de dados. Representando instruções no computador Formato I op (6 bits) rs (5 bits) rt (5 bits) Constante ou endereço (16 bits) O endereço de 16 bits significa que uma instrução lwpode carregar qualquer worddentro de uma região de +/-2^15 do endereço do registrador base (192 words) De modo semelhante, a soma imediata élimitada a constantes que não sejam maiores do que 2^15 lw $t, 32($s3) Aqui, 19(para $s3) écolocado no campo rs, (para $t) écolocado no campo rte 32écolocado no campo de endereço (veja que o formato mudou: o campo rtespecifica o registrador de destino, que recebe o resultado do lw Representando instruções no computador Traduzindo do assembly MIPS para a linguagem de máquina Se $t1 possui a base do arraya e $s2 corresponde a h: A[3] = h + A[3]; É compilada para: lw $t, 12($t1) # reg. $t recebe A[3] add $t, $s2, $t # reg. $t recebe h + A[3] sw $t, 12($t1) # armazena h +A[3] na mem. Representando instruções no computador A instrução lwérepresentada por 35 no opcode O registrador base 9 ($t1) éespecificado no segundo campo (rs) e o registrador de destino ($t) é especificado no terceiro campo (rt) O offset para selecionar A[3] (12=3x4) aparece no campo final A instrução addéespecificada com opcode e funct32 A instrução swéidentificada com 43 no opcode Importante: lembre-se que os valores estão representados em decimal, mas na verdade são representados em binário Representando instruções no computador Por que o MIPS não tem uma instrução de subtração imediata? Constantes negativas aparecem com muito menos frequênciaem C e Java, e por isso não são o caso comum e não merecem suporte especial Como o campo imediato mantém constantes negativas e positivas, a soma imediata de um valor negativo é igual a subtração imediata com um número positivo, de modo que a subtração imediata é supérflua Representando instruções no computador Operações lógicas Instruções para tomada de decisões Suporte para procedimentos no hardware do computador Comunicando-se com as pessoas bits

7 Operações lógicasl Embora o projeto do primeiros computadores se concentrasse em words completas, logo ficou claro que é útil atuar sobre campos de bits de uma word Operações lógicas servem para empacotar e desempacotar grupos de bits em words Operações lógicas Shift a esquerda Shift a direita AND bit a bit OR bit a bit NOT bit a bit Operadores C << >> & ~ Operadores Java << >> & ~ Instruções MIPS sll srl and, andi or, ori nor Operações lógicasl Operações de deslocamento (shifts) Movem todos os bits de uma wordpara esquerda ou para direita, preenchendo com zero os bits que ficaram vazios Shift left logical: sll $t2, $s, 4 # reg $t2 = reg $s << 4 bits O campo da instrução MIPS chamado de shamt(shift amount) é usado nas instruções de deslocamento sslécodificada com zeros nos campos ope funct, rd contém $t2, rtcontém $s e shamtcontém 4 rsnão éutilizado. (op) (rs) 16 (rt) 1 (rd) 4 (shamt) (funct) Operações lógicasl Operações de deslocamento O deslocamento lógico àesquerda de i bits gera o mesmo resultado que multiplicar por 2^i Operações lógicas A operação AND éútil para isolar bits de uma palavra (operações com máscara) and $t, $t1, $t2 # $t = $t1 & $t2 Para colocar um bit em 1 em um grupo de bits, pode-se utilizar a operação OR or $t, $t1, $t2 # $t = $t1 $t2 Operações lógicasl Operações lógicas Os projetistas do MIPS decidiram incluir a instrução NOR no lugar de NOT: se um operando for zero, a instrução é equivalente a NOT: A NOR = NOT (A OR ) = NOT (A) nor $t, $t1, $t3 # $t = ~($t1 $t3) O MIPS oferece instruções lógicas para trabalhar com constantes (modo de endereçamento imediato) AND imediato (andi) OR imediato (ori) Representando instruções no computador Operações lógicas Instruções para tomada de decisões Suporte para procedimentos no hardware do computador Comunicando-se com as pessoas bits Instruções para tomada de decisões O que diferencia o computador de uma calculadora simples éa capacidade de tomar decisões Em linguagens de alto nível: if, else, goto Instruções de desvio condicional no MIPS Branchifequal(desvie se igual) beq registrador1, registrador2, L1 Essa instrução significa ir atéa instrução rotulada por L1se o valor no registrador1for igual ao valor no registrador2 O rótulo éalterado pelo compilador por endereços de memória

8 Instruções para tomada de decisões Instruções de desvio condicional no MIPS Branchifnotequal(desvie se não for igual) Bne registrador1, registrador2, L1 Significa desviar o fluxo de execução para o rótulo L1 caso os valores contidos nos registradores registrador1e registrador2 forem diferentes Compilando if-then-else em desvios condicionais No segmento de código a seguir f, g, h, i e j são variáveis. Se as cinco variáveis correspondem aos cinco registradores de $s a $s4, qual éo código compilado para esta instrução ifem C? if (i == j) f = g + h; else f = g h; Instruções para tomada de decisões bne $s3, $s4, Else add $s, $s1, $s2 j Exit Else: sub $s, $s1, $s2 Exit: A instrução j implementa o desvio incondicional (jump) Instruções para tomada de decisões Interface hardware/software Compiladores criam estruturas mais próximas a linguagem humana como while, do until, etc. Compilando um loopwhileem C While (save[i] == k) i+= 1; Suponha que i e kcorrespondam aos registradores $s3 e $s5 e base do vetor saveesteja em $s6. Qual o código em MIPS que corresponde a esse segmento C? Instruções para tomada de decisões While (save[i] == k) i+= 1; Suponha que i e k correspondam aos registradores $s3e $s5e base do vetor saveesteja em $s6. Qual o código em MIPS que corresponde a esse segmento C? loop: sll $t1, $s3, 2 # $t1 = 4 * i add $t1, $t1, $s6 # $t1 = endereço de save[i] lw $t, ($t1) #$t = save[i] bne $t, $s5, Exit # vá para Exit se save[i] <> k addi $s3, $s3, 1 # i += 1 j Loop Exit: Instruções para tomada de decisões Bloco básico Uma seqüência de instruções sem desvios (exceto, possivelmente no final) e sem destinos de desvio ou rótulos de desvio (exceto, possivelmente, no início Uma das primeiras fases da compilação édesmembrar o programa em blocos básicos Testes de igualdade em assembly MIPS Comparações são realizadas de forma que a instrução compara dois registradores e atribui 1 a um terceiro registrador se o primeiro for menor que o segundo; caso contrário, é atribuído Set onlessthan(atribuir se menor que) slt $t, $s3, $s4 Significa que éatribuído 1 ao registrador $tse o valor no registrador $s3 for menor que o valor no registrador $s4 Instruções para tomada de decisões Testes de igualdade em assembly MIPS Operadores constantes são populares nas comparações Como o registrador $zero sempre tem, pode-se comparar com zero; para comparar com outros valores, existe uma versão com endereçamento imediato da instrução slt: slti $t, $s2, 1 # $t =1 se $s2 < 1 Interface hardware/software Os compiladores MIPS utilizam as instruções slt, slti, beq, bnee o valor fixo para criar todas as condições relativas: igual, diferente, menor que, menor ou igual,maior que, maior ou igual Assim, as construções lógicas de linguagens de alto nível, como C e Java, são mapeadas em instruções assembly de desvio condicional

9 Representando instruções no computador Operações lógicas Instruções para tomada de decisões Suporte para procedimentos no hardware do computador Comunicando-se com as pessoas bits Arrays versus ponteiros Suporte para procedimentos Procedimentos ou funções construções das linguagens de programação que servem para estruturar programas, tornando-os mais fáceis de entender, depurar e reutilizar Seis etapas 1. Colocar parâmetros em um lugar onde o procedimento possa acessá-lo 2. Transferir o controle para o procedimento 3. Adquirir os recursos de armazenamento necessários para o procedimento 4. Realizar a tarefa desejada 5. Colocar o valor de retorno em um local onde o programa que o chamou possa acessá-lo 6. Retornar o controle para o ponto de origem, pois um procedimento pode ser chamado de vários pontos de um programa Suporte para procedimentos O software do MIPS utiliza a seguinte convenção na alocação de seus 32 registradores para chamada de procedimentos: $a -$a3: quatro registradores de argumento, para passar parâmetros; $v -$v1: dois registradores de valor, para valores de retorno $ra: um registrador de endereço de retorno, para retornar ao ponto de origem do programa que efetuou a chamada Além de alocar esses registradores, o assemblydo MIPS inclui uma instrução apenas para os procedimentos: ela desvia para um endereço e simultaneamente salva o endereço da instrução seguinte no registrador $ra (instrução jump-and-link) Suporte a procedimentos no hardware Instrução jump-and-link(jal) Jal EnderecoProcedimento O link éarmazenado no registrador $ra, denominado endereço de retorno Implícita na idéia de programa armazenado éa necessidade de ter um registrador para manter o endereço da instrução atual que está sendo executada, chamado de contador de programaou PC (program counter) A instrução jalsalva PC+4 no registrador $rapara o link com a instrução seguinte, a fim de preparar o retorno do procedimento Para apoiar tais situações, computadores como o MIPS utilizam uma instrução de jumpregister(jr), significando um desvio incondicional para o endereço especificado no registrador: Jr $ra Assim, o programa que chama o procedimento, coloca os valores de parâmetro em $a -$a3 e utiliza jalxpar desviar para o procedimento X. O procedimento X realiza as suas operações, coloca os resultados em $v -$v1 e retorna o controle para o callerusando jr$ra Suporte a procedimentos no hardware Usando mais registradores Suponha que um compilador precise de mais registradores para um procedimento do que os quatro disponíveis: utiliza-se a pilha (stack) Pilha Estrutura de dados fila em que o último que entra éo primeiro que sai Stackpointeréajustado em uma wordpara cada registrador salvo ou restaurado Push insere itens Pop remove itens O MIPS tem o registrador $sp, stackpointer, usado para salvar os registradores necessários pelo procedimento chamado As pilhas crescem de endereços maiores para menores Suporte a procedimentos no hardware Compilando um procedimento em C int exemplo_folha (int g, int h, int i, int j){ int f; f = ( g + h ) ( i + j ); Return f; } As variáveis de parâmetro g, h, i e j correspondem ao registradores de argumento $a -$a3 e f corresponde a $s exemplo_folha: addi $sp, $sp, -12 # ajusta a pilha (3 itens) sw $t1, ($sp) # salva registrador sw $t, 4($sp) # salva registrador sw $s, ($sp) # salva registrador

10 Suporte a procedimentos no hardware exemplo_folha: addi $sp, $sp, -12 # ajusta a pilha (3 itens) sw $t1, ($sp) # salva registrador sw $t, 4($sp) # salva registrador sw $s, ($sp) # salva registrador add $t, $a, $a1 # $t contém g+h add $t1, $a2, $a3 # $t1 contém i+j sub $s, $t, $t1 # f = (g+h) (i+j) add $v, $s, $zero # copia f para reg. de retorno Suporte a procedimentos no hardware Preparando o retorno exemplo_folha: addi $sp, $sp, -12 # ajusta a pilha (3 itens) sw $t1, ($sp) # salva registrador sw $t, 4($sp) # salva registrador sw $s, ($sp) # salva registrador add $t, $a, $a1 # $t contém g+h add $t1, $a2, $a3 # $t1 contém i+j sub $s, $t, $t1 # f = (g+h) (i+j) add $v, $s, $zero # copia f para reg. de retorno lw $s, ($sp) lw $t, 4($sp) lw St1, ($sp) addi $sp, $sp, 12 # exclui 3 itens da pilha jr $ra Suporte a procedimentos no hardware O software do MIPS separa 1 dos registradores em dois grupos (convenção) $t-$t9: 1 registradores temporários que não são preservados pelo procedimento chamado $s-$s7: registradores que precisam ser preservados em uma chamada (se forem usados, o procedimento chamado os salva e restaura) Procedimentos aninhados A solução éempilhar os valores dos registradores que vão ser utilizados Código que chama: empilha $a?, $t? Procedimento chamado: empilha $rae registradores usados por ele Resumo: sempre éinteressante empilhar registradores usados pelo procedimento Suporte a procedimentos no hardware int fact (int n){ if (n < 1) return(1); else return (n * fact(n-1)); } fact: addi $sp, $sp, - # ajusta pilha para 2 itens sw $ra, 4($sp) # salva endereço de retorno sw $a, ($sp) # salva o argumento n slti $t, $a, 1 # teste para n < 1 beq $t, $zero, L1 # se n>= 1, desvia para L1 addi $v, $zero, 1 # prepara o retorna 1 addi $sp, $sp, # retira dois itens da pilha jr $ra # retorna L1: addi $a,$a, -1 # argumento recebe n-1 jal fact # chama fact com n-1 lw $a, ($sp) # retorna de jal: restaura o arg. N lw $ra, 4($sp) # restaura o endereço de retorno addi $sp, $sp, # ajusta pilha para remover 2 itens mul $v, $a, $v # calcula n * fact(n-1) jr $ra # retorna para o procedimento que chamou Suporte a procedimentos no hardware Interface hardware/software Uma variável em C éum local na memória, e sua interpretação depende tanto do seu tipo quanto da classe de armazenamento A linguagem C possui duas classes de armazenamento: estáticas e automáticas As variáveis automáticas são locais a um procedimento e são descartadas quando o procedimento termina. As variáveis estáticas permanecem durante entradas e saídas de procedimento As variáveis C declaradas fora de procedimentos são consideradas estáticas, assim como as variáveis declaradas dentro de procedimento com a palavra reservada static Para simplificar o acesso aos dados estáticos, o software do MIPS reserva outro registrador, chamado de ponteiro global, e referenciado como $gp $gpéum ponteiroglobal quereferenciaa memóriaparafacilitaro acesso através de operações simples de load e store. Suporte a procedimentos no hardware Reservando espaço para novos dados na pilha A pilha também éutilizada para armazenar variáveis que são locais ao procedimento, que não cabem nos registradores, como arrays ou estruturas locais O segmento da pilha que contém todos os registradores salvos e as variáveis locais de um procedimento é chamado de frame de procedimento ou registro de ativação

11 Suporte a procedimentos no hardware Reservando espaço para novos dados no heap Além de variáveis que são locais ao procedimentos, programadores precisam de espaço para variáveis estáticas e para estrutura de dados dinâmicas O segmento de um arquivo-objeto Unix que contém o código em linguagem de máquina para as rotinas do arquivo-fonte Suporte a procedimentos no hardware Reservando espaço para novos dados no heap A forma de reservar memória permite que a pilha e o heapcresçam um em direção ao outro, permitindo o uso eficiente da memória enquanto os dois segmentos aumentam e diminuem A forma pela qual os endereços são usados são convenções do software e não fazem parte da arquitetura MIPS A linguagem C aloca e libera espaço no heapcom funções explícitas malloc(): aloca espaço no heap free(): libera espaço no heap Representando instruções no computador Operações lógicas Instruções para tomada de decisões Suporte para procedimentos no hardware do computador Comunicando-se com as pessoas bits Comunicando-se com as pessoas Representação de caracteres Código ASCII de bits Computadores necessitam de instruções que realizem a movimentação de grupos de bits de palavras lb $t, ($sp) Sb $t, ($sp) Caracteres são representados por conjuntos de strings, com geralmente três opções para representação: A primeira posição da string éreservada para indicar o tamnho de uma string; Uma variável acompanhante possui o tamanho da string(como uma estrutura); A última posição da stringéocupada por um caractere que serve para marcar o final da string ( \ na linguagem C; $ x6) Comunicando-se com as pessoas Compilando um procedimento de cópia de string para demonstrar o uso de stringsem C void strcpy(char x[], char y[]){ int i; i = ; } while ( (x[i] = y[i])!= \ ) i += 1; Considerando que os endereços base para os arraysx e y são encontrados em $a e $a1 strcpy: addi $sp, $sp, -4 sw $s, ($sp) add $s, $zero, $zero L1: Comunicando-se com as pessoas strcpy: addi $sp, $sp, -4 sw $s, ($sp) add $s, $zero, $zero L1: add $t1, $s, $a1 # endereço de y[i] em $t1 lb $t2, ($t1) # $t2 = y[i], como é um byte, não i * 4 add $t3, $s, $a # endereço de x[i] em $t3 sb $t2, ($t3) # x[i] = y[i] beq $t2, $zero, L2 # se y[i]==, vai para L2 addi $s, $s, 1 # i = i + 1 j L1 L2: lw $s, ($sp) addi $sp, $sp, 4 jr $ra

12 Comunicando-se com as pessoas Caracteres e stringsem Java Unicodeéuma codificação universal dos alfabetos da maior parte das linguagens humanas 16 bits para representar um caractere lh $t, ($sp) sh $t, ($sp) Ao contrário da linguagem C, Java reserva uma word para indicar o tamanho da string Representando instruções no computador Operações lógicas Instruções para tomada de decisões Suporte para procedimentos no hardware do computador Comunicando-se com as pessoas bits Endereçamento no MIPS para imediatos Endereçamento no MIPS para operandos imediatos e endereços de 32 bits Embora manter todas as instruções com 32 bits de tamanho seja interessante, em certas situações é conveniente ter uma constante de 32 bits ou endereços de 32 bits Embora as constantes na maioria das vezes sejam curtas e caibam em um campo de 16 bits, às vezes elas são maiores O conjunto de instruções MIPS inclui a instrução load upperimmediate(lui) especificamente para atribuir os 16 bits mais altos de uma constante a um registrador, permitindo que uma instrução subseqüente atribua os 16 bits mais baixos de uma constante Exemplo lui $t, 255 Endereçamento no MIPS para imediatos Carregando uma constante de 32 bits Qual éo código em assemblydo MIPS para carregar esta constante de 32 bits no registrador $s? lui $s, 61 ori $s, $s, 234 Endereçamento em desvios condicionais e jumps As instruções de jumpno MIPS possuem o endereçamento mais simples possível. Elas utilizam o último formato de instruções do MIPS, chamado de J, que consiste em 6 bits para o campo de operação e o restante dos bits para o campo de endereço Endereçamento MIPS para imediatos Desvios condicionais e jumps 26 bits são alocados para o campo de endereço (32 6) Em desvios condicionais, énecessário especificar dois operandosalém do endereço de desvio: 6 bits de opcode, 5 bits para registrador, 5 bits para registrador, 16 bits para endereço Se os endereços do programa tivessem que caber nesse campo de 16 bits, nenhum programa poderia ser maior que 2**16 Uma alternativa seria especificar um registrador que sempre seria somado ao endereço de desvio, de mode que uma instrução de desvio pudesse calcular o seguinte: Contador de programa = Registrador + endereço de desvio Endereçamento do MIPS para desvios Desvios condicionais Qual registrador usar? A resposta vem da observação de como os desvios condicionais são usados Os desvios condicionais são encontrados em loopse em instruções if,de modo que costumam desviar para uma instrução próxima. Por exemplo, cerca de metade de todos os desvios condicionais nos benchmarksspec2 vão para locais a menos de 16 instruções Como o contador de instruções contém o endereço da instrução atual, podemos desviar em +/-2**15 palavras da instrução atual se o usarmos o PC como registrador a ser somado ao endereço.

13 Endereçamento no MIPS para desvios Desvios condicionais Essa forma de endereçamento édenominada endereçamento relativo ao PC Como na maioria dos computadores atuais, o MIPS utiliza o endereçamento relativo ao PC para todos os desvios condicionais. Instruções JAL chamam procedimentos que não tem motivos para estarem próximas àinstrução atual: a arquitetura MIPS utiliza o formato longo (J) para instruções de chamada de procedimento Como todas as instruções tem tamanho de 4 bytes, o MIPS aumenta o alcance do endereçamento interpretando o campo de endereçamento relativo a word, e não ao byte: assim, o campo de 16 bits pode se desviar para uma distância quatro vezes maior; da mesma forma, o campo de 2 bits nas instruções de jump também endereçam words. Endereçamento de desvios no MIPS Exemplo Se considerarmos que o loopinicia na posição de memória, qual éo código de máquina para esse loop? loop: sll $t1, $s3, 2 # $t1 = 4 * i add $t1, $t1, $s6 # $t1 = endereço de save[i] lw $t, ($t1) #$t = save[i] bne $t, $s5, Exit # vá para Exit se save[i] <> k addi $s3, $s3, 1 # i += 1 j Loop Exit: Endereçamento de desvios no MIPS Endereçamento no MIPS Resumo dos modos de endereçamento Endereçamento de registrador: onde o operando éum registrador; Endereçamento de base e deslocamento: onde o operando estáno local de memória cujo endereço éa soma de um registrador e uma constante de instrução Endereçamento imediato: onde o operando éuma constante dentro da própria instrução Endereçamento relativo ao PC: onde o endereçamento é a soma do PC e uma constante na instrução Endereçamento pseudodireto: onde o endereço de jump são os 26 bits da instrução concatenados com os bits mais altos do PC Endereçamento no MIPS Interface hardware/software Embora as instruções estudadas tem 32 bits em tamanho, a arquitetura MIPS tem extensões de 64 bits, em resposta a necessidade de software para programas maiores Uma única instrução pode trabalhar com modos de endereçamento diferentes: Representando instruções no computador Operações lógicas Instruções para tomada de decisões Suporte para procedimentos no hardware do computador Comunicando-se com as pessoas bits

14 Traduzindo e iniciando um programa Hierarquia de tradução para a linguagem C Um programa em alto nível éinicialmente compilado para um programa em assembly, e depois montado em um módulo objeto em linguagem de máquina. O link-editor combina os vários módulos com as rotinas de biblioteca para resolver todas as referências. O loader, então, coloca o código de máquina nos locais apropriados em memória, para ser executado pelo processador. Traduzindo e iniciando um programa Compilador O compilador transforma o programa C em um programa em assembly, uma forma simbólica daquilo que a máquina entende. Montador As arquiteturas aceitam a programação em pseudo-instruções e mnemônicos, que são convertidos em linguagem de máquina pelo montador O montador transforma o programa assemblyem um arquivo objeto, que éuma combinação de instruções em linguagem de máquina, dados e informações necessárias para colocar instruções na memória Para produzir a versão binária das instruções, precisa determinar os endereços de todos os rótulos - os montadores registram os rótulos utilizados nos desvios e nas instruções de transferência de dados por meio de uma tabela de símbolos, que contém pares de símbolo e endereço Traduzindo e iniciando um programa Arquivo objeto em sistemas UNIX Cabeçalho: descreve o tamanho e posições das outras partes do código Segmento de texto: código em linguagem de máquina Segmento de dados: contém os dados alocados por toda a vida do programa (dados estáticos) Informações de relocação: identificam instruções e wordsque dependem de endereços absolutos quando o programa é carregado na memória Tabela de símbolos: contém os rótulos restantes que não estão definidos, como referências externas Informações de depuração Traduzindo e iniciando um programa Linkeditor(link-edição) Colocar os módulos de código e dados simbolicamente na memória Determinar os endereços de rótulos de dados e instruções Remendar referências internas e externas O linkeditorproduz um arquivo executável, que tem o mesmo formato do arquivo objeto, exceto que não tem referências não resolvidas Linkedição estática x dinâmica Desvantagens da linkedição estática: Rotinas de biblioteca fazem parte do código e não podem ser atualizadas Carrega a biblioteca inteira, mesmo se parte da biblioteca nuncaseja chamada Desvantagens da linkedição dinâmica: Execução dos programas pode se tornar mais lenta Erros de execução em programas que necessitam de bibliotecas dinâmicas não existentes. Representando instruções no computador Operações lógicas Instruções para tomada de decisões Suporte para procedimentos no hardware do computador Comunicando-se com as pessoas bits Como os compiladores otimizam Compiladores Construídos considerando um conjunto de fases de otimização Otimização: espaço de armazenamento e velocidade de execução

15 Como os compiladores otimizam Compilador Afeta significantemente o desempenho dos programas Transformação de alto nível: procedimentos inline Loop unrolling desdobramento de loops for (i = ; i < 1; i++) g (); Depoisdo loop unrolling. for (i = ; i < 1; i += 2) { g (); g (); } Otimizações Otimizações locais atuam dentro de um bloco básico Otimizações globais atuam entre blocos básicos Alocação de registradores Como os compiladores otimizam Otimizações locais Eliminação de sub-expressões comuns x[i] = x[i] + 4 O cálculo do endereço de x[] ocorre duas vezes Outras otimizações Redução de força:substitui operações complexas por outras mais simples, por exemplo um mult por um deslocamento à esquerda Propagação de constante: encontram constantes no código e as propagam, encolhendo os valores de constante sempre que possível Propagação de cópia: propaga valores que são cópias simples, eliminando a necessidade de ler valores Eliminação de local de armazenamento: encontra locais com armazenamento não utilizados Eliminação de código morto: encontra fragmentos de código que nunca são utilizados código morto ocorre com bastante freqüência. Como os compiladores otimizam Otimizações globais Movimentação de código Encontra código que é invariante no loop; um trecho que código que calcula o mesmo valor, independente da iteração corrente do loop; Eliminação de variável de indução Éum combinação de transformações que reduz o trabalho na indexação de arrays Representando instruções no computador Operações lógicas Instruções para tomada de decisões Suporte para procedimentos no hardware do computador Comunicando-se com as pessoas bits Exemplo de ordenação na linguagem C O procedimento swap void swap(int v[], int k){ int temp; temp = v[k]; v[k] = v[k+1]; v[k+1] = temp; } sll $t1, $a1, 2 # registrador $t1 = k * 4 add $t1, $a, $t1 # $t1 = v + (k*4) lw $t, ($t1) # $t = v[k] (temp) lw $t2, 4($t1) # $t2 = v[k+1]; sw $t2, ($t) # v[k] = registrador $t2 sw $t, 4($t1) # v[k+1] = registrador $t (temp) Exemplo de ordenação na linguagem C O procedimento swap completo swap: sll $t1, $a1, 2 # registrador $t1 = k * 4 add $t1, $a, $t1 # $t1 = v + (k*4) lw $t, ($t1) # $t = v[k] (temp) lw $t2, 4($t1) # $t2 = v[k+1]; sw $t2, ($t) # v[k] = registrador $t2 sw $t, 4($t1) # v[k+1] = registrador $t (temp) jr $ra

16 Exemplo de ordenação na linguagem C O procedimento sort void sort(int v[], int n){ int i, j; for(i=; i < n; i++){ for(j=i-1; j >= && v[j] > v[j+1]; j --){ swap(v,j); } } Alocação de registradores para sort Os dois parâmetros do procedimento sort, v e n, estão nos registradores de parâmetro $a e $a1, e alocamos o registrador $s a ie o registrador $1 a j Exemplo de ordenação na linguagem C Código para o procedimento sort(primeiro loop) loops são compostos de 3 partes: Inicialização das variáveis de controle Teste da condição de controle Incremento da variável de controle move $s, $zero #i= For1tst: slt $t, $s, $a1 beq $t, $zero, exit1... addi $s, S,1 j for1slt exit1 Exemplo de ordenação da linguagem C Código para o procedimento sort(segundo loop) for(j=i-1; j >= && v[j] > v[j+1]; j --) Teste de loopcomposto de duas partes: J >- V[j] > v[j+1] addi $s1, $1, -1 #j=i-1 For2tst: slti $t, $1, # $t = 1 se j < bne $t, $zero, exit2 sll $t1, $s1, 2 # $t1 = j * 4 add $t2, $a, $t1 # $t2 = v + (j+4) lw $t3, ($t2) # $t3 = v[j] lw $t4, 4($t2) # $t4 = v[j+1] slt $t, $t4, $t3 # $t $t4 >= $t3 beq $t, $zero, exit2... (corpo do for 2) add $1, $1, -1 # j -= 1 j for2tst exit2: Exemplo de ordenação em C Chamada de procedimento em sort swap(i,j) jal swap Passando parâmetros em sort Os procedimentos sort e swaputilizam como parâmetros os registradores $a, $a1 Énecessário então salvar os registradores em $s2 e $3 antes da chamada do procedimento (melhor que salvar na pilha) move $s2, $a move $s3, $a1 Depois passamos os parâmetros para swap da seguinte forma: move $a, $s2 move $a1, $s1 Exemplo de ordenação em C Preservando registradores em sort Deve-se salvar o endereço de retorno $ra(lembre-se que são loops aninhados) O procedimento sorttambém utiliza registradores salvos, de modo que precisam ser salvos addi $sp, $sp, -2 # 5 registradores sw $ra, 16($sp) # salva $ra na pilha sw $s3, 12($sp) # sala $s3 na pilha sw $s2, ($sp) sw $s1, 4($sp) sw $s, ($sp) Ao final do procedimento, os registradores devem ser restaurados na ordem inversa Representando instruções no computador Operações lógicas Instruções para tomada de decisões Suporte para procedimentos no hardware do computador Comunicando-se com as pessoas bits

17 Vida real: instruções do IA-32 Os projetistas Oferecem às vezes um conjunto de operações mais poderosas do que aquelas encontradas no MIPS O objetivo éreduzir o número de instruções executadas por um programa O perigo éque essa redução pode ocorrer ao custo da simplicidade, aumentando o tempo que um programa leva para executar, pois as instruções são mais lentas. Essa lentidão pode ser o resultado de um ciclo de clockmais lento ou a requisição de mais ciclos de clockdo que uma seqüência mais simples Vida real: instruções do IA-32 IA-32 Arquitetura que evoluiu ao longo do tempo, sendo produto de diferentes grupos independentes, que modificaram a arquitetura por 2 anos, acrescentando novos recursos ao conjunto de instruções original, como alguém poderia acrescentar roupas em uma mala pronta Marcos importantes: 197: Intel 6 extensão do assemblypara o ; arquitetura de 16 bits com registradores de 16 bits, com usos dedicados, ao contrário do MIPS, que tem registradores de propósito geral; endereçamento de memória com 2 bits 19: coprocessador7 anunciado; estende o conjunto original de instruções em 6 instruções de ponto flutuante 192: 26 com endereçamento de memória de 24 bits com um modelo de proteção de memória 195: 36, processador de 32 bits com novos modos de endereçamento e registradores de 32 bits : 46, Pentium, : instruções MMX nos processadores Pentium 1999: melhorias nas instruções SIMD e oito registradores adicionais; instruções SSE (Streaming SIMD extensions) 21: extensões com 144 instruções adicionais para lidar com operações multimídia, exploração da computação paralela nos chips 23: AMD anuncia extensões arquitetônicas para aumentar o espaço de endereçamento de memória de 32 para 64 bits, alargando os registradores para 64 bits Vida real: instruções do IA-32 Registradores e instruções Falácias e armadilhas Falácias Instruções mais poderosas significam maior desempenho Escreva em assemblypara ter melhor desempenho Armadilha Esquecer que os endereços seqüenciais de wordem máquinas com endereçamento em bytes não diferem em 1. Comentários finais Programa armazenado Permite a construção de máquinas de propósito geral A seleção de um conjunto de instruções que a máquina possa entender exige um equilíbrio delicado entre a quantidade de instruções necessárias para executar programas, a quantidade de ciclos de clockpor instrução e a velocidade do Princípios de projeto: Simplicidade favorece a regularidade: instruções de mesmo tamanho e se possível com o mesmo significado quanto aos operandos Menor émais rápido: o desejo de velocidade éo motivo para que o MIPS tenha apenas 32 registradores Torne os casos comuns mais velozes: alguns exemplos são os desvios em relação ao contador de programa e endereçamento imediato para constantes Um bom projeto exige bons compromissos: exemplo éo compromisso de manter todas as instruções com o mesmo tamanho frente à necessidade de representação de constantes que necessitam de mais bits para a representação Comentários finais Instruções MIPS Cada categoria de instruções MIPS estáassociada a construções que aparecem nas linguagens de programação Instruções aritméticas correspondem às operações encontradas nas instruções de atribuição Instruções de transferência de dados provavelmente ocorrerão quando se lida com estruturas de dados, como arrayse estruturas Os desvios condicionais são usados em instruções ife em loops Os jumpsincondicionais são usados em chamadas de procedimento e retornos, e para instruções case/switch

18 Leituras e exercícios cios Leituras Patterson, capítulo 2 Exercícios Patterson, capítulo 2

Arquitetura de Computadores. Linguagem de Máquina

Arquitetura de Computadores. Linguagem de Máquina Arquitetura de Computadores Linguagem de Máquina Ivan Saraiva Silva Formato de Instrução MAC O MIC possui dois formatos de instrução: 4 bits 12 bits Formato 1 CODOP ENDEREÇO 8 bits 8 bits Formato 2 CODOP

Leia mais

Aula 14: Instruções e Seus Tipos

Aula 14: Instruções e Seus Tipos Aula 14: Instruções e Seus Tipos Diego Passos Universidade Federal Fluminense Fundamentos de Arquiteturas de Computadores Diego Passos (UFF) Instruções e Seus Tipos FAC 1 / 35 Conceitos Básicos Diego Passos

Leia mais

Arquitetura de Sistemas Digitais (FTL066) Instruções: Linguagem do Computador Segunda Lista de Exercícios

Arquitetura de Sistemas Digitais (FTL066) Instruções: Linguagem do Computador Segunda Lista de Exercícios Arquitetura de Sistemas Digitais (FTL066) Instruções: Linguagem do Computador Segunda Lista de Exercícios 1) Explore conversões de números a partir de números binárias com sinal e sem sinal para decimal:

Leia mais

MIPS. Prof. Carlos Bazilio http://www.ic.uff.br/~bazilio bazilio@ic.uff.br

MIPS. Prof. Carlos Bazilio http://www.ic.uff.br/~bazilio bazilio@ic.uff.br MIPS Prof. Carlos Bazilio http://www.ic.uff.br/~bazilio bazilio@ic.uff.br Introdução Plataforma projetada da parceria entre NEC, Nintendo, Silicon Graphics e Sony Possui um conjunto de instruções que e

Leia mais

Organização de Computadores 1

Organização de Computadores 1 Organização de Computadores 1 5 CONJUNTO DE INSTRUÇÕES Prof. Luiz Gustavo A. Martins Introdução O que é um conjunto de instruções? Coleção completa das instruções que a CPU é capaz de executar (entende).

Leia mais

Computadores de Programação (MAB353)

Computadores de Programação (MAB353) Computadores de Programação (MAB353) Aula 6: 27 de abril de 2010 1 Recaptulando operações já estudadas Operações lógicas 2 3 Exercícios Referências bibliográficas Recaptulando operações já estudadas Operações

Leia mais

Computadores de Programação (MAB353)

Computadores de Programação (MAB353) Computadores de Programação (MAB353) Aula 8: 04 de maio de 2010 1 Formatos de instruções MIPS 2 Endereçamento de operandos imediatos de 32 bits Endereçamento em desvios Modos de endereçamento do MIPS 3

Leia mais

Conjunto de Instruções e Arquitectura p.1

Conjunto de Instruções e Arquitectura p.1 Conjunto de Instruções e Arquitectura Luís Nogueira luis@dei.isep.ipp.pt Departamento Engenharia Informática Instituto Superior de Engenharia do Porto Conjunto de Instruções e Arquitectura p.1 Organização

Leia mais

Computadores de Programação (MAB353)

Computadores de Programação (MAB353) Computadores de Programação (MAB353) Aula 7: 29 de abril de 2010 1 2 Subrotinas Um procedimento ou função é uma subrotina armazenada que executa uma tarefa específica baseada nos parâmetros de entrada

Leia mais

Organização e Arquitetura de Computadores I

Organização e Arquitetura de Computadores I Organização e Arquitetura de Computadores I Caminho de Dados Slide 1 Sumário Introdução Convenções Lógicas de Projeto Construindo um Caminho de Dados O Controle da ULA Projeto da Unidade de Controle Principal

Leia mais

Arquitetura de Computadores

Arquitetura de Computadores Universidade Federal de Santa Catarina Centro Tecnológico Curso de Pós-Graduação em Ciência da Computação Aula 2 Arquitetura do Processador MIPS: características gerais, registradores, formatos de instrução,

Leia mais

MODOS DE ENDEREÇAMENTO

MODOS DE ENDEREÇAMENTO UNINGÁ UNIDADE DE ENSINO SUPERIOR INGÁ FACULDADE INGÁ DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO ERINALDO SANCHES NASCIMENTO MODOS DE ENDEREÇAMENTO MARINGÁ 2014 SUMÁRIO 6 MODOS DE ENDEREÇAMENTO...2 6.1 ENDEREÇAMENTO

Leia mais

Conjunto de Instruções. Conjunto de Instruções

Conjunto de Instruções. Conjunto de Instruções Conjunto de Instruções It is easy to see by formal-logical methods that there exist certain [instruction sets] that are in abstract adequate to control and cause the execution of any sequence of operations...

Leia mais

Introdução à Arquitetura de Computadores

Introdução à Arquitetura de Computadores 1 Introdução à Arquitetura de Computadores Hardware e software Organização de um computador: Processador: registradores, ALU, unidade de controle Memórias Dispositivos de E/S Barramentos Linguagens de

Leia mais

Predição de Desvios e Processadores Superescalares Especulativos

Predição de Desvios e Processadores Superescalares Especulativos Predição de Desvios e Processadores Superescalares Especulativos Arquiteturas para Alto Desmpenho Prof. pauloac@ita.br Sala 110 Prédio da Computação www.comp.ita.br/~pauloac Tomasulo Especulativo Se os

Leia mais

Anotações da 2a Edição

Anotações da 2a Edição Anotações da 2a Edição OBS: Essas anotações são adaptações do material suplementar (apresentações PPT) ao Livro do Hennessy e Patterson. Supõe-se que os estudantes tenham noções de lógica digital e linguagem

Leia mais

Paralelismo a Nível de Instrução

Paralelismo a Nível de Instrução Paralelismo a Nível de Instrução É possível obter maior desempenho computacional com: tecnologias mais avançadas, tais como circuitos mais rápidos; melhor organização da CPU, tais como o uso de múltiplos

Leia mais

ARQUITECTURA DE COMPUTADORES CAPÍTULO II AULA X

ARQUITECTURA DE COMPUTADORES CAPÍTULO II AULA X ARQUITECTURA DE COMPUTADORES CAPÍTULO II AULA X Índice Traduzindo e iniciando uma aplicação Compiladores Assembladores Linkers Loaders DLLs Iniciando um programa em Java Após toda a matéria abordada nesta

Leia mais

Descrição e análise da implementação em Assembly MIPS da função itoa

Descrição e análise da implementação em Assembly MIPS da função itoa Descrição e análise da implementação em Assembly MIPS da função itoa Alana Rocha 1, Guilherme Alves 2, Guilherme Nunes 3 e Luiz Guilherme 4 Objetivo e visão geral do documento Este documento tem o objetivo

Leia mais

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

Nível da Arquitetura do Conjunto das Instruções Nível da Arquitetura do Conjunto das Instruções (Aula 13) Fluxo de Controle Fluxo Seqüencial de Controle e Desvios (1) Fluxo de Controle: É a seqüência na qual instruções são dinamicamente executadas Isto

Leia mais

ARQUITETURA DE COMPUTADORES

ARQUITETURA DE COMPUTADORES 1 ARQUITETURA DE COMPUTADORES U C P Prof. Leandro Coelho Plano de Aula 2 Aula Passada Definição Evolução dos Computadores Histórico Modelo de Von-Neumann Básico CPU Mémoria E/S Barramentos Plano de Aula

Leia mais

Arquitetura de processadores: RISC e CISC

Arquitetura de processadores: RISC e CISC Arquitetura de processadores: RISC e CISC A arquitetura de processador descreve o processador que foi usado em um computador. Grande parte dos computadores vêm com identificação e literatura descrevendo

Leia mais

Conjunto de Instruções

Conjunto de Instruções Conjunto de Instruções Para comandar o hardware do computador, é necessário que falemos sua língua: As palavras da linguagem de máquina são chamadas de instruções; O vocabulário forma o conjunto de instruções,

Leia mais

Memória cache. Prof. Francisco Adelton

Memória cache. Prof. Francisco Adelton Memória cache Prof. Francisco Adelton Memória Cache Seu uso visa obter uma velocidade de acesso à memória próxima da velocidade das memórias mais rápidas e, ao mesmo tempo, disponibilizar no sistema uma

Leia mais

Organização e Arquitetura de Computadores I

Organização e Arquitetura de Computadores I Organização e Arquitetura de Computadores I Pipeline Slide 1 Pipeline Pipeline Hazards: Hazards Estruturais Hazards de Dados Hazards de Controle Organização e Arquitetura de Computadores I Caminho de Dados

Leia mais

Arquitetura de Computadores Moderna

Arquitetura de Computadores Moderna Arquitetura de Computadores Moderna Eduardo Barrére (eduardo.barrere@ice.ufjf.br) DCC/UFJF Baseado no material do prof. Marcelo Lobosco Agenda Visão Geral Objetivos do Curso Ementa Bibliografia Avaliações

Leia mais

5 - Vetores e Matrizes Linguagem C CAPÍTULO 5 VETORES E MATRIZES

5 - Vetores e Matrizes Linguagem C CAPÍTULO 5 VETORES E MATRIZES CAPÍTULO 5 5 VETORES E MATRIZES 5.1 Vetores Um vetor armazena uma determinada quantidade de dados de mesmo tipo. Vamos supor o problema de encontrar a média de idade de 4 pessoas. O programa poderia ser:

Leia mais

2. A influência do tamanho da palavra

2. A influência do tamanho da palavra 1. Introdução O processador é o componente vital do sistema de computação, responsável pela realização das operações de processamento (os cálculos matemáticos etc.) e de controle, durante a execução de

Leia mais

Organização e Arquitetura de Computadores I

Organização e Arquitetura de Computadores I Organização e Arquitetura de Computadores I Caminho de Dados Slide 1 Sumário Introdução Convenções Lógicas de Projeto Construindo um Caminho de Dados O Controle da ULA Projeto da Unidade de Controle Principal

Leia mais

Programação Estruturada. Programação Estruturada. Idéias Básicas da Programação Estruturada

Programação Estruturada. Programação Estruturada. Idéias Básicas da Programação Estruturada Programação Estruturada Programação Estruturada Paradigmas de Linguagens de Programação As linguagens desse paradigma são muitas vezes chamadas de linguagens convencionais, procedurais ou imperativas.

Leia mais

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

Conjunto de. Instrução MIPS. Parte II. Instruções MIPS. Instruções MIPS. Instruções MIPS :: Instruções lógicas. :: Instruções lógicas Faculdade de Ciências Aplicadas e Sociais de Petrolina FACAPE Conjunto de Pae II Transferência de Dados Lógicas Controle Supoe a procedimentos Prof. Sérgio Adaptado dos slides de Sistemas Processadores

Leia mais

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

Conjunto de instruções e modos de. aula 4. Profa. Débora Matos Conjunto de instruções e modos de endereçamento aula 4 Profa. Débora Matos Conjunto de Instruções A = ((B + C) x D + E F)/(G x H) A H denotam posições da memória endereços As arquiteturas possuem as seguintes

Leia mais

Modos de entrada/saída

Modos de entrada/saída Arquitectura de Computadores II Engenharia Informática (11545) Tecnologias e Sistemas de Informação (6621) Modos de entrada/saída Fonte: Arquitectura de Computadores, José Delgado, IST, 2004 Nuno Pombo

Leia mais

Linguagem de Montagem 2. Operações e Operandos

Linguagem de Montagem 2. Operações e Operandos Linguagem de Montagem 2 Operações e Operandos Revisão Para executar uma tarefa qualquer, um computador precisa receber instruções precisas sobre o que fazer Esse conjunto de instruções chamamos de algoritmo

Leia mais

ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM

ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM Linguagem de programação Linguagem de Alto Nível próximo ao ser humano, escrita de forma textual. Ex: if (a==b) a=b+c; Linguagem de Montagem (Assembly) próximo à linguagem de máquina, escrita em códigos

Leia mais

Unidade 5: Sistemas de Representação

Unidade 5: Sistemas de Representação Arquitetura e Organização de Computadores Atualização: 9/8/ Unidade 5: Sistemas de Representação Números de Ponto Flutuante IEEE 754/8 e Caracteres ASCII Prof. Daniel Caetano Objetivo: Compreender a representação

Leia mais

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

Conjunto de instruções do CPU. Arquitectura de um computador. Definição das instruções (1) Definição das instruções (2) Arquitectura de um computador Caracterizada por: Conjunto de instruções do processador (ISA Estrutura interna do processador (que registadores existem, etc Modelo de memória (dimensão endereçável, alcance

Leia mais

Introdução à Arquitetura de Computadores. Renan Manola Introdução ao Computador 2010/01

Introdução à Arquitetura de Computadores. Renan Manola Introdução ao Computador 2010/01 Introdução à Arquitetura de Computadores Renan Manola Introdução ao Computador 2010/01 Introdução Conceitos (1) Computador Digital É uma máquina que pode resolver problemas executando uma série de instruções

Leia mais

Computador Digital Circuitos de um computador (Hardware)

Computador Digital Circuitos de um computador (Hardware) Computador Digital SIS17 - Arquitetura de Computadores (Parte I) Máquina que pode resolver problemas executando uma série de instruções que lhe são fornecidas. Executa Programas conjunto de instruções

Leia mais

Java Como Programar, 8/E

Java Como Programar, 8/E Capítulo 5 Instruções de controle: Parte 2 Java Como Programar, 8/E (C) 2010 Pearson Education, Inc. Todos os 5.1 Introdução Instrução de repetição for Instrução de repetição do while Instrução de seleção

Leia mais

Representando Instruções no Computador

Representando Instruções no Computador Representando Instruções no Computador Humanos aprenderam a pensar na base 10 Números podem ser representados em qualquer base Números mantidos no hardware como série de sinais eletrônicos altos e baixos

Leia mais

CAPÍTULO 7 NÍVEL DE LINGUAGEM DE MONTAGEM

CAPÍTULO 7 NÍVEL DE LINGUAGEM DE MONTAGEM CAPÍTULO 7 NÍVEL DE LINGUAGEM DE MONTAGEM 71 Introdução Difere dos níveis inferiores por ser implementado por tradução A tradução é usada quando um processador está disponível para uma mensagem fonte mas

Leia mais

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

Sistemas Processadores e Periféricos Aula 2 - Revisão Sistemas Processadores e Periféricos Aula 2 - Revisão Prof. Frank Sill Torres DELT Escola de Engenharia UFMG Adaptado a partir dos Slides de Organização de Computadores 2006/02 do professor Leandro Galvão

Leia mais

Algoritmos e Estruturas de Dados I 01/2013. Estruturas Condicionais e de Repetição (parte 2) Pedro O.S. Vaz de Melo

Algoritmos e Estruturas de Dados I 01/2013. Estruturas Condicionais e de Repetição (parte 2) Pedro O.S. Vaz de Melo Algoritmos e Estruturas de Dados I 01/2013 Estruturas Condicionais e de Repetição (parte 2) Pedro O.S. Vaz de Melo Problema 1 Suponha que soma (+) e subtração (-) são as únicas operações disponíveis em

Leia mais

Arquitetura de Computadores. Assembly Miscelâneas. Mário O. de Menezes. http://www.tf.ipen.br/~mario

Arquitetura de Computadores. Assembly Miscelâneas. Mário O. de Menezes. http://www.tf.ipen.br/~mario Arquitetura de Computadores Assembly Miscelâneas Mário O. de Menezes http://www.tf.ipen.br/~mario AC Mário O. de Menezes 1 Lembrando Instruções Lógicas e Shift operam em bits individuais, diferente de

Leia mais

BACHARELADO EM SISTEMAS DE INFORMAÇÃO EaD UAB/UFSCar Sistemas de Informação - prof. Dr. Hélio Crestana Guardia

BACHARELADO EM SISTEMAS DE INFORMAÇÃO EaD UAB/UFSCar Sistemas de Informação - prof. Dr. Hélio Crestana Guardia O Sistema Operacional que você usa é multitasking? Por multitasking, entende-se a capacidade do SO de ter mais de um processos em execução ao mesmo tempo. É claro que, num dado instante, o número de processos

Leia mais

MIPS ISA (Instruction Set Architecture)

MIPS ISA (Instruction Set Architecture) MIPS ISA (Instruction Set Architecture) MIcroprocessor without Interlocking Pipeline Stages MIPS Processador RISC de 32 bits Referência dos Processadores RISC Mais de 100 Milhões de processadores vendidos

Leia mais

Linguagem C: variáveis, operadores, entrada/saída. Prof. Críston Algoritmos e Programação

Linguagem C: variáveis, operadores, entrada/saída. Prof. Críston Algoritmos e Programação Linguagem C: variáveis, operadores, entrada/saída Prof. Críston Algoritmos e Programação Linguagem C Linguagem de uso geral (qualquer tipo de aplicação) Uma das linguagens mais utilizadas Foi utilizada

Leia mais

INTRODUÇÃO À LINGUAGEM C++

INTRODUÇÃO À LINGUAGEM C++ INTRODUÇÃO À LINGUAGEM C++ 1 - VARIÁVEIS Variáveis espaço de memória reservado para armazenar tipos de dados, com um nome para referenciar seu conteúdo. Observações importantes Todas as variáveis devem

Leia mais

Arquitetura de Computadores. Tipos de Instruções

Arquitetura de Computadores. Tipos de Instruções Arquitetura de Computadores Tipos de Instruções Tipos de instruções Instruções de movimento de dados Operações diádicas Operações monádicas Instruções de comparação e desvio condicional Instruções de chamada

Leia mais

Introdução à Arquitetura de Computadores

Introdução à Arquitetura de Computadores Introdução à Arquitetura de Computadores Um programa pode ser definido como uma seqüência de instruções que descrevem como executar uma determinada tarefa. Uma instrução pode ser definida como um comando

Leia mais

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

Unidade: Unidade Lógica e Aritmética e Registradores. Unidade I: Unidade: Unidade Lógica e Aritmética e Registradores Unidade I: 0 Unidade: Unidade Lógica e Aritmética e Registradores UNIDADE LÓGICA E ARITMÉTICA E REGISTRADORES O Processador é um chip com milhares de

Leia mais

Introdução à Engenharia de Computação

Introdução à Engenharia de Computação Introdução à Engenharia de Computação Tópico: O Computador como uma Máquina Multinível (cont.) José Gonçalves - LPRM/DI/UFES Introdução à Engenharia de Computação Máquina Multinível Moderna Figura 1 Máquina

Leia mais

O COMPUTADOR. Introdução à Computação

O COMPUTADOR. Introdução à Computação O COMPUTADOR Introdução à Computação Sumário O Hardware O Software Linguagens de Programação Histórico da Linguagem C Componentes Básicos do Computador O HARDWARE: O equipamento propriamente dito. Inclui:

Leia mais

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

PARTE II - CONJUNTO DE INSTRUÇÕES ARQUITETURA DE COMPUTADORES ANTONIO RAMOS DE CARVALHO JÚNIOR PARTE II - CONJUNTO DE INSTRUÇÕES ARQUITETURA DE COMPUTADORES ANTONIO RAMOS DE CARVALHO JÚNIOR Introdução Instruções são representadas em linguagem de máquina (binário) E x i s t e m l i n g u a g e n

Leia mais

SSC0114 Arquitetura de Computadores

SSC0114 Arquitetura de Computadores SSC0114 Arquitetura de Computadores 3ª Aula Arquitetura MIPS: ISA, Formato das instruções e Modos de endereçamento MIPS Monociclo: Caminho de Dados e Unidade de Controle Profa. Sarita Mazzini Bruschi sarita@icmc.usp.br

Leia mais

Computador: Hardware + Software

Computador: Hardware + Software Conceitos Básicos de Arquitetura de Computadores Capítulo 3 Computador: Hardware + Software 1 Computador: Hardware + Software Aplicação (Netscape) Software Hardware Compilador Montador Processor Memory

Leia mais

SOP - TADS Sistemas de Arquivos Cap 4 Tanenmbaum

SOP - TADS Sistemas de Arquivos Cap 4 Tanenmbaum SOP - TADS Sistemas de Arquivos Cap 4 Tanenmbaum Prof. Ricardo José Pfitscher dcc2rjp@joinville.udesc.br Material cedido por: Prof. Rafael Rodrigues Obelheiro Prof. Maurício Aronne Pillon Cronograma Introdução

Leia mais

Organização e Projetos de Computadores. Capítulo 2. Organização e Projetos de Computadores. Instruções

Organização e Projetos de Computadores. Capítulo 2. Organização e Projetos de Computadores. Instruções Capítulo 2 Hennessy Patterson 1 Instruções Linguagem da máquina Vamos trabalhar com a arquitetura do conjunto de instruções MIPS (Micrrocessor without interlocked pipeline stages Micrrocessador sem estágios

Leia mais

Introdução a Programação. Ponteiros e Strings, Alocação Dinâmica

Introdução a Programação. Ponteiros e Strings, Alocação Dinâmica Introdução a Programação Ponteiros e Strings, Alocação Dinâmica Tópicos da Aula Hoje aprenderemos a relação entre ponteiros e strings Ponteiros para strings X Vetores de Caracteres Vetores de ponteiros

Leia mais

E/S CPU. Memória (Instruções e dados) 2 PARADIGMA IMPERATIVO. Instruções e dados. Resultados das operações. Unidade lógica e aritmética

E/S CPU. Memória (Instruções e dados) 2 PARADIGMA IMPERATIVO. Instruções e dados. Resultados das operações. Unidade lógica e aritmética 2 PARADIGMA IMPERATIVO 2.1 CONCEITO As linguagens que pertencem ao paradigma imperativo tomam por base a perspectiva da máquina. Ou seja, no modo como o computador executa programas em linguagem de máquina.

Leia mais

Arquiteturas RISC. (Reduced Instructions Set Computers)

Arquiteturas RISC. (Reduced Instructions Set Computers) Arquiteturas RISC (Reduced Instructions Set Computers) 1 INOVAÇÕES DESDE O SURGIMENTO DO COMPU- TADOR DE PROGRAMA ARMAZENADO (1950)! O conceito de família: desacoplamento da arquitetura de uma máquina

Leia mais

Ambiente de desenvolvimento de Programação Assembly MCU 8051 IDE

Ambiente de desenvolvimento de Programação Assembly MCU 8051 IDE SEL-433 APLICAÇÕES DE MICROPROCESSADORES I Prof. Evandro L. L. Rodrigues Ambiente de desenvolvimento de Programação Assembly MCU 8051 IDE http://mcu8051ide.sourceforge.net/ Tela inicial Criar novo projeto:

Leia mais

Conceitos básicos da linguagem C

Conceitos básicos da linguagem C Conceitos básicos da linguagem C 2 Em 1969 Ken Thompson cria o Unix. O C nasceu logo depois, na década de 70. Dennis Ritchie, implementou-o pela primeira vez usando o sistema operacional UNIX criado por

Leia mais

Arquitectura de Computadores

Arquitectura de Computadores Arquitectura de Computadores Prof. Doutora Ana Isabel Leiria Ano Lectivo 2004/05 Prof. Doutora Margarida Madeira e Moura Eng. António Rosado Ano lectivo 2005/06 Pág. 1 Guias das aulas práticas 1. INTRODUÇÃO

Leia mais

1. SINTAXE DA LINGUAGEM ASSEMBLY

1. SINTAXE DA LINGUAGEM ASSEMBLY 1. SINTAXE DA LINGUAGEM ASSEMBLY Antes de se escrever em assembly, é conveniente construir um fluxograma do programa. Um fluxograma não faz referência à linguagem a utilizar, pelo que pode ser utilizado

Leia mais

Sistemas Operacionais. Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com

Sistemas Operacionais. Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com Sistemas Operacionais Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com Estruturas de Sistemas Operacionais Um sistema operacional fornece o ambiente no qual os programas são executados. Internamente,

Leia mais

Geração de código intermediário. Novembro 2006

Geração de código intermediário. Novembro 2006 Geração de código intermediário Novembro 2006 Introdução Vamos agora explorar as questões envolvidas na transformação do código fonte em uma possível representação intermediária Como vimos, nas ações semânticas

Leia mais

Estrutura de Dados Básica

Estrutura de Dados Básica Estrutura de Dados Básica Professor: Osvaldo Kotaro Takai. Aula 4: Tipos de Dados O objetivo desta aula é apresentar os tipos de dados manipulados pela linguagem C, tais como vetores e matrizes, bem como

Leia mais

TÉCNICAS DE PROGRAMAÇÃO

TÉCNICAS DE PROGRAMAÇÃO TÉCNICAS DE PROGRAMAÇÃO (Adaptado do texto do prof. Adair Santa Catarina) ALGORITMOS COM QUALIDADE MÁXIMAS DE PROGRAMAÇÃO 1) Algoritmos devem ser feitos para serem lidos por seres humanos: Tenha em mente

Leia mais

Montagem e Manutenção. Luís Guilherme A. Pontes

Montagem e Manutenção. Luís Guilherme A. Pontes Montagem e Manutenção Luís Guilherme A. Pontes Introdução Qual é a importância da Montagem e Manutenção de Computadores? Sistema Binário Sistema Binário Existem duas maneiras de se trabalhar e armazenar

Leia mais

Introdução à Engenharia de Computação

Introdução à Engenharia de Computação Introdução à Engenharia de Computação Tópico: Organização Básica de um Computador Digital Introdução à Engenharia de Computação 2 Componentes de um Computador Computador Eletrônico Digital É um sistema

Leia mais

ULA Sinais de Controle enviados pela UC

ULA Sinais de Controle enviados pela UC Solução - Exercícios Processadores 1- Qual as funções da Unidade Aritmética e Lógica (ULA)? A ULA é o dispositivo da CPU que executa operações tais como: Adição Subtração Multiplicação Divisão Incremento

Leia mais

Software Básico. Conceito de Linguagem de Máquina e Montagem: introdução ao Assembly. Prof. MSc. Hugo Vieira L. Souza

Software Básico. Conceito de Linguagem de Máquina e Montagem: introdução ao Assembly. Prof. MSc. Hugo Vieira L. Souza Software Básico Conceito de Linguagem de Máquina e Montagem: introdução ao Assembly Prof. MSc. Hugo Vieira L. Souza Este documento está sujeito a copyright. Todos os direitos estão reservados para o todo

Leia mais

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

Componentes do Computador e. aula 3. Profa. Débora Matos Componentes do Computador e modelo de Von Neumann aula 3 Profa. Débora Matos O que difere nos componentes que constituem um computador? Princípios básicos Cada computador tem um conjunto de operações e

Leia mais

Informática I. Aula 5. http://www.ic.uff.br/~bianca/informatica1/ Aula 5-13/05/2006 1

Informática I. Aula 5. http://www.ic.uff.br/~bianca/informatica1/ Aula 5-13/05/2006 1 Informática I Aula 5 http://www.ic.uff.br/~bianca/informatica1/ Aula 5-13/05/2006 1 Ementa Histórico dos Computadores Noções de Hardware e Software Microprocessadores Sistemas Numéricos e Representação

Leia mais

Organização de Computadores Como a informação é processada?

Organização de Computadores Como a informação é processada? Curso de ADS/DTEE/IFBA Organização de Computadores Como a informação é processada? Prof. Antonio Carlos Referências Bibliográficas: 1. Ciência da Computação: Uma visão abrangente - J.Glenn Brokshear 2.

Leia mais

IFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira

IFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira IFPE Disciplina: Sistemas Operacionais Prof. Anderson Luiz Moreira SERVIÇOS OFERECIDOS PELOS SOS 1 Introdução O SO é formado por um conjunto de rotinas (procedimentos) que oferecem serviços aos usuários

Leia mais

Capítulo 7 Nível da Linguagem Assembly

Capítulo 7 Nível da Linguagem Assembly Capítulo 7 Nível da Linguagem Assembly Presente em quase todos os computadores modernos. Implementado por tradução. Linguagem fonte => Linguagem alvo. O programa no arquivo fonte não é executado diretamente

Leia mais

BARRAMENTO DO SISTEMA

BARRAMENTO DO SISTEMA BARRAMENTO DO SISTEMA Memória Principal Processador Barramento local Memória cachê/ ponte Barramento de sistema SCSI FireWire Dispositivo gráfico Controlador de vídeo Rede Local Barramento de alta velocidade

Leia mais

Sistemas Microcontrolados

Sistemas Microcontrolados Sistemas Microcontrolados Uma Abordagem com o Microcontrolador PIC 16F84 Nardênio Almeida Martins Novatec Editora Capítulo 1 Introdução Os microcontroladores estão presentes em quase tudo o que envolve

Leia mais

Algoritmos DCC 119. Introdução e Conceitos Básicos

Algoritmos DCC 119. Introdução e Conceitos Básicos Algoritmos DCC 119 Introdução e Conceitos Básicos Sumário Sistemas de Numeração Sistemas Computacionais Estrutura de um Computador Digital Sistemas Operacionais Algoritmo Introdução Formas de representação

Leia mais

Sistemas Computacionais II Professor Frederico Sauer

Sistemas Computacionais II Professor Frederico Sauer Sistemas Computacionais II Professor Frederico Sauer Livro-texto: Introdução à Organização de Computadores 4ª edição Mário A. Monteiro Livros Técnicos e Científicos Editora. Atenção: Este material não

Leia mais

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

Arquitetura de Computadores - Arquitetura RISC. por Helcio Wagner da Silva Arquitetura de Computadores - Arquitetura RISC por Helcio Wagner da Silva Introdução RISC = Reduced Instruction Set Computer Elementos básicos: Grande número de registradores de propósito geral ou uso

Leia mais

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

Sistemas Processadores e Periféricos Aula 5 - Revisão Sistemas Processadores e Periféricos Aula 5 - Revisão Prof. Frank Sill Torres DELT Escola de Engenharia UFMG Adaptado a partir dos Slides de Organização de Computadores 2006/02 do professor Leandro Galvão

Leia mais

Infraestrutura de Hardware. Instruindo um Computador

Infraestrutura de Hardware. Instruindo um Computador Infraestrutura de Hardware Instruindo um Computador Componentes de um Computador Unid. Controle Controle Memória Registradores PC MAR IR AC Programa + Dados Instrução Endereço Operando ALU Temp Datapath

Leia mais

9 Comandos condicionais

9 Comandos condicionais 9 Comandos condicionais Um comando condicional é uma instrução empregada quando se deseja criar um desvio, isto é, a opção de executar-se ou não um determinado trecho de código, segundo uma condição. Em

Leia mais

Pipelining - analogia

Pipelining - analogia PIPELINE Pipelining - analogia Pipelining OBJECTIVO: Aumentar o desempenho pelo aumento do fluxo de instruções Program execution Time order (in instructions) lw $1, 100($0) Instruction fetch ALU Data access

Leia mais

Projeto 1 - Bootloader

Projeto 1 - Bootloader Projeto 1 - Bootloader IF677 - Infra-Estrutura de Software Centro de Informática - UFPE Autor: Thyago Porpino (tnp) Objetivos Desmistificar o processo de inicialização de um computador. Entender como um

Leia mais

Organização de Computadores Software

Organização de Computadores Software Organização de Computadores Software Professor Marcus Vinícius Midena Ramos Colegiado de Engenharia de Computação (74)3614.1936 marcus.ramos@univasf.edu.br www.univasf.edu.br/~marcus.ramos Objetivos: Entender

Leia mais

REPRESENTAÇÃO DE DADOS EM SISTEMAS DE COMPUTAÇÃO AULA 03 Arquitetura de Computadores Gil Eduardo de Andrade

REPRESENTAÇÃO DE DADOS EM SISTEMAS DE COMPUTAÇÃO AULA 03 Arquitetura de Computadores Gil Eduardo de Andrade REPRESENTAÇÃO DE DADOS EM SISTEMAS DE COMPUTAÇÃO AULA 03 Arquitetura de Computadores Gil Eduardo de Andrade O conteúdo deste documento é baseado no livro Princípios Básicos de Arquitetura e Organização

Leia mais

Análises Geração RI (representação intermediária) Código Intermediário

Análises Geração RI (representação intermediária) Código Intermediário Front-end Análises Geração RI (representação intermediária) Código Intermediário Back-End Geração de código de máquina Sistema Operacional? Conjunto de Instruções do processador? Ambiente de Execução O

Leia mais

Organização e Arquitetura de Computadores I

Organização e Arquitetura de Computadores I Organização e Arquitetura de Computadores I Linguagem de Montagem Slide 1 Operações Lógicas Embora os primeiros computadores se concentrassem em words completas, logo ficou claro que era útil atuar sobre

Leia mais

ARQUITETURA DE COMPUTADORES

ARQUITETURA DE COMPUTADORES 01001111 01110010 01100111 01100001 01101110 01101001 01111010 01100001 11100111 11100011 01101111 00100000 01100100 01100101 00100000 01000011 01101111 01101101 01110000 01110101 01110100 01100001 01100100

Leia mais

Capítulo SETE Números em Ponto Fixo e Ponto Flutuante

Capítulo SETE Números em Ponto Fixo e Ponto Flutuante Capítulo SETE Números em Ponto Fixo e Ponto Flutuante 7.1 Números em ponto fixo Observação inicial: os termos ponto fixo e ponto flutuante são traduções diretas dos termos ingleses fixed point e floating

Leia mais

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

Microcontroladores e Interfaces 3º Ano Eng. Electrónica Industrial Microcontroladores e Interfaces 3º Ano Eng. Electrónica Industrial Carlos A. Silva 2º Semestre de 2005/2006 http://www.dei.uminho.pt/lic/mint Assunto: Pipeline Aula #5 28 Mar 06 Revisão Na implementação

Leia mais

Organização e Arquitetura de Computadores I

Organização e Arquitetura de Computadores I Organização e Arquitetura de Computadores I Aritmética Computacional Slide 1 Sumário Unidade Lógica e Aritmética Representação de Números Inteiros Aritmética de Números Inteiros Representação de Números

Leia mais

Trabalho 7 Fila de prioridade usando heap para simulação de atendimento

Trabalho 7 Fila de prioridade usando heap para simulação de atendimento Trabalho 7 Fila de prioridade usando heap para simulação de atendimento Data: 21/10/2013 até meia-noite Dúvidas até: 09/10/2013 Faq disponível em: http://www2.icmc.usp.br/~mello/trabalho07.html A estrutura

Leia mais

Concurso Público para provimento de cargo efetivo de Docentes. Edital 20/2015 CIÊNCIA DA COMPUTAÇÃO I Campus Rio Pomba

Concurso Público para provimento de cargo efetivo de Docentes. Edital 20/2015 CIÊNCIA DA COMPUTAÇÃO I Campus Rio Pomba Questão 01 Assumindo um registrador de 10 bits e utilizando-se de representação binária, com valores negativos representados em código de 2, os valores em representação decimal 235, -189 possuem, respectivamente,

Leia mais