Baixe o app para aproveitar ainda mais
Prévia do material em texto
Projeto Lógico de Computadores Nível ISA Projeto Lógico de Computadores Prof. Arthur arthur@unip.br 2016 Nível da Arquitetura do Conjunto das Instruções Conceituação Prof. Arthur Projeto Lógico de Computadores Nível ISA Nível ISA Nível da Arquitetura do Conjunto das Instruções ou Nível ISA - Instruction Set Architecture Prof. Arthur Projeto Lógico de Computadores Nível ISA Máquina Multinível Nível Lógico-Digital Nível da Micro-arquitetura Nível ISA Nível do Sistema Operacional Nível da Linguagem de Montagem Prof. Arthur Projeto Lógico de Computadores Nível ISA Quando uma nova máquina chega ao mercado surgem, de imediato, pelo menos 3 perguntas: Nível ISA Essa máquina é compatível com a anterior? Meu sistema operacional antigo roda nesta máquina? Esta máquina roda todos os meus programas sem que eu precise fazer qualquer modificação neles? Prof. Arthur Projeto Lógico de Computadores Nível ISA Perguntas desta natureza geram uma pressão para que as novas máquinas sejam compatíveis com as anteriores. Nível ISA Prof. Arthur Projeto Lógico de Computadores Nível ISA Quais as características de um bom projeto de Nível ISA? Nível ISA Definir um conjunto de instruções que possa ser implementado com eficiência tanto nas tecnologias atuais como nas futuras, resultando em projetos com uma relação custo-benefício adequada para várias gerações de tecnologias. Fornecer uma interface eficiente com o compilador e com o hardware. Prof. Arthur Projeto Lógico de Computadores Nível ISA Propriedades do Nível ISA Nível ISA Define o aspecto da máquina para um programador da linguagem de máquina, ou, em outras palavras, As instruções do nível ISA são aquelas para as quais o compilador deve gerar código. Prof. Arthur Projeto Lógico de Computadores Nível ISA Prof. Arthur Projeto Lógico de Computadores Nível ISA Propriedades do Nível ISA Nível ISA Para fazer com que o compilador gere código para o nível ISA, o projetista do compilador deve conhecer muito bem o modelo de memória da máquina, quais registradores estão implementados, quais os tipos de dados e de instruções disponíveis e assim por diante. O conjunto de todas essas informações é que define o nível ISA. Prof. Arthur Projeto Lógico de Computadores Nível ISA Instruções Nível ISA A principal característica de um nível ISA é o seu conjunto de instruções de máquina. Essas instruções controlam tudo aquilo que a máquina pode fazer. Do conjunto de instruções de uma máquina sempre fazem parte instruções LOAD e STORE, por exemplo, para permitir o movimento de dados entre a memória e os registradores. Prof. Arthur Projeto Lógico de Computadores Nível ISA Formatos de Instruções Nível ISA Um programa é constituído de uma sequência de instruções, cada uma especificando alguma ação em particular. As instruções contém, obrigatoriamente, “códigos de operação” que irão gerar a ação desejada. Muitas instruções contém, ou especificam, o endereço ou dado a ser usado pela instrução. Por exemplo: uma instrução que compara duas informações para checar se são iguais deve especificar quais caracteres devem ser comparados. Prof. Arthur Projeto Lógico de Computadores Nível ISA Formatos de Instruções - Exemplos Nível ISA Prof. Arthur Projeto Lógico de Computadores Nível ISA Formatos de Instruções Nível ISA Em algumas máquinas todas as instruções têm o mesmo tamanho, e em outras pode haver instruções de diversos tamanhos. As instruções de uma máquina podem ser menores, do mesmo tamanho ou maiores que o tamanho da palavra da máquina. O fato de todas as instruções terem o mesmo tamanho (mesmo número de bits) simplifica muito o projeto do hardware. Prof. Arthur Projeto Lógico de Computadores Nível ISA Formatos de Instruções - Exemplos Nível ISA Prof. Arthur Projeto Lógico de Computadores Nível ISA Critérios para a Determinação do Formato das Instruções Nível ISA Instruções curtas são melhores que as longas, por serem menos complexas e ocuparem menos memória. Cada memória tem uma determinada taxa de transferência (medida em bps – bits por segundo), a qual é maior para instruções mais curtas, o que aumenta a velocidade de processamento. É desejável que o comprimento da palavra seja um múltiplo inteiro do comprimento das instruções. Prof. Arthur Projeto Lógico de Computadores Nível ISA Expansão dos Códigos de Operação Nível ISA A técnica da expansão dos códigos de operação é utilizada para permitir que todas as instruções de um conjunto possam manter o mesmo tamanho. Para instruções simples utiliza-se códigos de operação mais longos, poupando os códigos de operação mais curtos para as instruções mais complexas e que, por isso, necessitam de mais dados no corpo da instrução. Prof. Arthur Projeto Lógico de Computadores Nível ISA Expansão dos Códigos de Operação - Exemplo Palavra de 16 bits Nível ISA 15 instruções 16 instruções 31 instruções 14 instruções Prof. Arthur Projeto Lógico de Computadores Nível ISA Expansão dos Códigos de Operação - Exemplo 1º Grupo: 15 instruções . . . Nível ISA Prof. Arthur Projeto Lógico de Computadores Nível ISA Expansão dos Códigos de Operação - Exemplo Nível ISA Código inicial do próximo grupo = código final atual + 1 Código atual = 1110 Código inicial = 1110 + 1 = 1111 Prof. Arthur Projeto Lógico de Computadores Nível ISA Expansão dos Códigos de Operação - Exemplo 2º Grupo: 14 instruções . . . Nível ISA Prof. Arthur Projeto Lógico de Computadores Nível ISA Expansão dos Códigos de Operação - Exemplo 3º Grupo: 31 instruções . . . . . . Nível ISA 16 instruções 15 instruções Prof. Arthur Projeto Lógico de Computadores Nível ISA Expansão dos Códigos de Operação - Exemplo 4º Grupo: 16 instruções . . . Nível ISA Prof. Arthur Projeto Lógico de Computadores Nível ISA Expansão dos Códigos de Operação - Exercício Nível ISA Projete um código de operação expandido para permitir que todas as instruções seguintes sejam codificadas em 15 bits: 07 instruções com: código de operação (3), endereço-1 (6) e endereço-2 (6) 63 instruções com: código de operação (9), endereço (3) e constante (3) 08 instruções com: código de operação (12) e operando (3) Prof. Arthur Projeto Lógico de Computadores Nível ISA Expansão dos Códigos de Operação - Exercício 1º Grupo: 7 instruções Nível ISA . . . Prof. Arthur Projeto Lógico de Computadores Nível ISA Expansão dos Códigos de Operação - Exercício 2º Grupo: 63 instruções . . . Nível ISA . . . . . . Prof. Arthur Projeto Lógico de Computadores Nível ISA Expansão dos Códigos de Operação - Exercício Nível ISA 2º Grupo: 63 instruções 111 000 000 até 111 000 111 8 instruções 111 001 000 até 111 001 111 8 instruções 111 010 000 até 111 010 111 8 instruções 111 011 000 até 111 011 111 8 instruções 111 100 000 até 111 100 111 8 instruções 111 101 000 até 111 101 111 8 instruções 111 110 000 até 111 110 111 8 instruções 111 111 000 até 111 111 110 7 instruções 63 instruções Prof. Arthur Projeto Lógico de Computadores Nível ISA Expansão dos Códigos de Operação - Exercício 3º Grupo: 8 instruções Nível ISA . . . Prof. Arthur Projeto Lógico de Computadores Nível ISA Endereçamento Nível ISA Uma instrução pode ter mais de um endereço associado a ela. As formas de se endereçar uma determinada posição de memória, ou determinado registrador, são diversas, de acordo com a natureza da operação a ser executada. Prof. Arthur Projeto Lógico de Computadores Nível ISA Endereçamento Imediato Nível ISA A maneira mais simples de uma instrução especificar um operando é contê-lo no campo de endereçamento ao invés de endereçá-lo. Este tipo de operando é denominado de “operando imediato” porque é trazido da memória junto com a instrução e está imediatamente disponível paraexecução. Prof. Arthur Projeto Lógico de Computadores Nível ISA Endereçamento Imediato O endereçamento imediato não usa nenhuma outra referência para buscar o operando. Nível ISA Prof. Arthur Projeto Lógico de Computadores Nível ISA Endereçamento Direto Ocorre quando a instrução contém o endereço de memória onde está o operando necessário. Nível ISA Prof. Arthur Projeto Lógico de Computadores Nível ISA Endereçamento do Registrador Ocorre quando a instrução contém o endereço do registrador onde está o operando necessário. Nível ISA Prof. Arthur Projeto Lógico de Computadores Nível ISA Endereçamento Indireto Ocorre quando a instrução contém o endereço de uma posição de memória a qual contém, por sua vez, o endereço do operando necessário. Nível ISA Prof. Arthur Projeto Lógico de Computadores Nível ISA Endereçamento Indireto Múltiplo Ocorre quando a instrução contém o 1º endereço de uma posição de memória a qual contém outros endereços, até que o endereço do operando desejado seja alcançado. Nível ISA Prof. Arthur Projeto Lógico de Computadores Nível ISA Endereçamento por Indexação O endereço do operando é a soma da constante mais o conteúdo do registrador indicado. Nível ISA Prof. Arthur Projeto Lógico de Computadores Nível ISA Endereçamento por Base-Deslocamento O endereço do operando é a soma da base (que está num registrador) mais o deslocamento. Este caso e o anterior podem coincidir: Se o deslocamento tem bits suficientes para endereçar toda a memória, será designado de endereçamento por Indexação. Caso contrário, será designado por Base-Deslocamento. Nível ISA Prof. Arthur Projeto Lógico de Computadores Nível ISA Endereçamento por Base-Deslocamento Nível ISA Prof. Arthur Projeto Lógico de Computadores Nível ISA Endereçamento por Pilha Nível ISA Para economizar espaço na memória e acelerar o processamento, utiliza-se instruções o mais curtas possível. Se tivermos instruções só com o código de operação, e sem endereços, usa-se o método de endereçamento por pilha. Prof. Arthur Projeto Lógico de Computadores Nível ISA Endereçamento por Pilha Nível ISA O Registrador de Topo de Pilha contém o endereço do topo da pilha, e é atualizado a cada entrada ou saída de informação na pilha. Prof. Arthur Projeto Lógico de Computadores Nível ISA Fluxo de Controle Nível ISA Entende-se por fluxo de controle a sequência na qual instruções são dinamicamente executadas no decorrer de um programa. Em geral, na ausência de desvios e de chamadas a procedimentos, as instruções vão sendo executadas sucessivamente, a partir de endereços consecutivos de memória. As instruções de chamada a procedimento alteram o fluxo de controle, fazendo com que o procedimento corrente pare de ser executado, começando a execução do novo procedimento. Prof. Arthur Projeto Lógico de Computadores Nível ISA Fluxo de Controle Nível ISA As co-rotinas são estruturas parecidas com os procedimentos e também causam o mesmo tipo de alteração no fluxo de controle. As co-rotinas são úteis na implementação do paralelismo entre processos. As interrupções e os traps também alteram o fluxo de controle, quando determinadas condições especiais ocorrem. Prof. Arthur Projeto Lógico de Computadores Nível ISA Fluxo de Controle Nível ISA A execução da maioria das instruções de uma máquina não altera o fluxo de controle. Em geral, após a execução de uma instrução, o processador vai à memória para buscar a instrução armazenada no endereço seguinte àquela que acabou de ser executada. A ordem dinâmica na qual um processador executa suas instruções é a mesma em que elas aparecem na listagem do programa. Prof. Arthur Projeto Lógico de Computadores Nível ISA Fluxo de Controle Nível ISA Processamento sem desvios no fluxo de controle Prof. Arthur Projeto Lógico de Computadores Nível ISA Fluxo de Controle Nível ISA Se um programa contiver desvios, essa relação simples entre a ordem em que a instrução aparece na memória e a ordem de sua execução desaparece. Quando existem desvios, o valor armazenado no registrador PC não é mais uma função linear no tempo. Como resultado disso, torna-se difícil visualizar a sequência de execução das instruções a partir da listagem do programa. Prof. Arthur Projeto Lógico de Computadores Nível ISA Fluxo de Controle Nível ISA Processamento com desvios no fluxo de controle Prof. Arthur Projeto Lógico de Computadores Nível ISA Fluxo de Controle - Procedimentos Nível ISA O procedimento (sub-rotina) é a técnica mais importante para a estruturação de programas. De um lado, uma chamada a procedimento altera o fluxo de controle exatamente do mesmo modo que um desvio, mas o procedimento, ao contrário do desvio, quando termina sua tarefa retorna o controle para o comando ou instrução seguinte à instrução de chamada. Uma sub-rotina é um grupo de instruções que executa alguma tarefa, e pode ser chamada em vários pontos do programa. Ao final da sub-rotina há uma instrução de retorno ao programa chamador. Prof. Arthur Projeto Lógico de Computadores Nível ISA Fluxo de Controle - Sub-rotinas Nível ISA Instruções Prof. Arthur Projeto Lógico de Computadores Nível ISA Fluxo de Controle - Sub-rotinas Nível ISA Instruções Prof. Arthur Projeto Lógico de Computadores Nível ISA Fluxo de Controle - Sub-rotinas Nível ISA Instruções Prof. Arthur Projeto Lógico de Computadores Nível ISA Fluxo de Controle - Sub-rotinas Recursivas Nível ISA Instruções Prof. Arthur Projeto Lógico de Computadores Nível ISA Fluxo de Controle - Co-Rotinas Nível ISA Consideremos um procedimento A (chamador) que chama um procedimento B (chamado): Instruções Prof. Arthur Projeto Lógico de Computadores Nível ISA Fluxo de Controle - Co-Rotinas Nível ISA Os dois procedimentos podem considerar um ao outro como procedimento chamador e chamado. Quando uma co-rotina é retomada, a execução começa no comando suspenso anteriormente, e não no início. Prof. Arthur Projeto Lógico de Computadores Nível ISA Fluxo de Controle - Traps Nível ISA Um trap é uma chamada a procedimento automática, iniciada sempre que ocorrer alguma condição específica causada pela execução de um programa. Por exemplo: Divisão por zero Violação de proteção Código de operação inválido Tentativa de acessar periférico de E/S que não existe Etc. Prof. Arthur Projeto Lógico de Computadores Nível ISA Fluxo de Controle - Traps Nível ISA O trap é disparado para evitar que uma anormalidade cause danos ao processamento. O trap detecta o problema para o qual foi planejado, pára o processamento e alerta para a ocorrência. O trap não tem, contudo, recursos para uma eventual recuperação do problema e nem para reiniciar o processamento. Prof. Arthur Projeto Lógico de Computadores Nível ISA Fluxo de Controle - Interrupções Nível ISA As interrupções são modificações no fluxo de controle de um programa causadas por um evento externo ao processamento do programa, usualmente relacionados a operações de E/S. Por exemplo, um programa pode instruir o disco para iniciar uma transferência de informações, e programá-lo de maneira que ele gere uma interrupção tão logo a transferência se conclua. Prof. Arthur Projeto Lógico de Computadores Nível ISA Fluxo de Controle - Interrupções Nível ISA Da mesma forma que ocorre com os traps, as interrupções também param o processamento do programa atual e transferem o controle para uma rotina de tratamento de interrupção, que executa ações apropriadas. Quando esta rotina termina sua execução, o controle retorna ao programa que teve seu processamento interrompido, o qual reinicia exatamente do ponto em que havia parado. Prof. Arthur Projeto Lógico de Computadores Nível ISA Fluxo de Controle - Interrupções Nível ISA As interrupções têm como funções principais: Disparar programas interruptores Controlar as prioridades dentro da máquina Prof. Arthur Projeto Lógicode Computadores Nível ISA Fluxo de Controle – Interrupções x Traps Nível ISA A diferença essencial entre um trap e uma interrupção é o fato de que os traps são síncronos com o programa, e as interrupções são assíncronas. Se um programa for processado milhões de vezes, com as mesmas entradas, os traps vão ocorrer nos mesmos instantes relativos, a cada nova execução do programa. A ocorrência das interrupções irá variar a cada processamento, dependendo das ações dos dispositivos de E/S a cada instante. Prof. Arthur Projeto Lógico de Computadores Nível ISA Projeto Lógico de Computadores Prof. Arthur arthur@unip.br 2016 Nível da Arquitetura do Conjunto das Instruções Conceituação Prof. Arthur � � Linguagens Atuais� Linguagens Anteriores� Nível ISA� Nível da Micro-Arquitetura� Nível Lógico-Digital� � Código de Operação� Código de Operação� Endereço� Código de Operação� Endereço 1� Endereço 2� � � Instrução� Instrução� Instrução� Instrução� 1 palavra� � � Instrução� Instrução� Instrução� Instrução� 1 palavra� Instrução� Instrução� Instrução� Instrução� � � Instrução� Instrução� Instrução� Instrução� 1 palavra� � Cód. Operação 4� Endereço 1 4� Endereço 2 4� Endereço 4 4� Cód. Operação 8� Cód. Operação 12� Endereço 5 4� Endereço 6 4� Cód. Operação 16� Endereço 7 4� � 210� � 0000� Endereço 1 4� Endereço 2 4� Endereço 4 4� 0001� Endereço 1 4� Endereço 2 4� Endereço 4 4� 0010� Endereço 1 4� Endereço 2 4� Endereço 4 4� 1110� Endereço 1 4� Endereço 2 4� Endereço 4 4� � 010� � 110� � 1410� � 1111 0000� 1111 0001� Endereço 5 4� Endereço 6 4� Endereço 5 4� Endereço 6 4� 1111 0010� Endereço 5 4� Endereço 6 4� 1111 1101� Endereço 5 4� Endereço 6 4� � 1310� � 010� � 110� � 210� � 210� � 1410� � 010� � 110� � 1510� � 010� � 110� � 1510� � 1111 1111 1111 0000� 1111 1111 1111 0001� 1111 1111 1111 0010� 1111 1111 1111 1111� � 010� � 110� � 210� � Código de Operação 3� Endereço-1 6� Endereço-2 6� � 000� 001� 010� 110 � Endereço 3� Código de Operação 9� Constante 3� � 111 000 000 111 000 111 � 111 001 000 111 001 111 � 111 010 000 111 010 111 � Endereço 3� Código de Operação 9� Constante 3� � 111 111 111 000� 111 111 111 001� 111 111 111 010� 111 111 111 111� � Código de Operação 12� Operando 3� � Código de Operação� Operando� � � Código de Operação� Endereço� O operando está nesta posição� � � Código de Operação� Endereço� O registrador está nesta posição� � � O endereço do operando desejado está nesta posição� O operando está nesta posição� � � Código de Operação� Endereço� O operando está nesta posição� O 1o endereço desejado está nesta posição� O 2o endereço desejado está nesta posição� O no endereço desejado está nesta posição� � � Código de Operação� Número do Registrador de Índice� O registrador está nesta posição� Constante� O operando está nesta posição� � � Código de Operação� Número do Registrador de Base� O registrador está nesta posição� Deslocamento� O operando está nesta posição� � � Registrador de Topo de Pilha� Instante t1� Instante t2 Instante t3� � � Tempo Registrador PC � � � Tempo Registrador PC Desvios � � Programa Sub-rotina B Sub-rotina A � � Programa Sub-rotina A 1a chamada� 2a chamada� � � Programa Sub-rotina B Sub-rotina A � � � � � � Programa Sub-rotina � � � Programa A � Programa B �
Compartilhar