Instruções
Instruções Para que um programa possa ser executado por um computador, ele precisa ser constituído de uma série de instruções de máquina e estar armazenado em células sucessivas na memória principal. A UCP é responsável pela execução das instruções que estão na memória.
Instrução de máquina É uma operação básica que o processador consegue interpretar e executar. Representação elementar que gera uma ação em um computador. Determina o que o computador deve fazer naquele instante. Um programa é composto por muitas instruções, que são executadas de forma ordenada pelo processador. Exemplo de instrução no processor MIPS. No caso do MIPS, o opcode contem 6 bits.
Tipos de instruções Matemáticas e lógicas Movimentação de dados Soma, subtração, and, or... Movimentação de dados registrador – registrador; registrador – memória; memória – registrador. Entrada/Saída Controle Instruções de salto
Instruções Linguagem Assembly - conjunto de símbolos que representam as instruções de máquina de forma mais amigável para o ser humano. Assembler - é quem faz a tradução do código Assembly para a linguagem de máquina.
Executando programas Quem executa um programa é o hardware e o que ele espera encontrar é um programa em linguagem de máquina (uma sequência de instruções de máquina em código binário). A linguagem de máquina é composta de códigos binários, representando instruções, endereços e dados e está totalmente vinculada ao conjunto ("set") de instruções da máquina.
Execução de programas... Um ser humano usa seu conhecimento e inteligência para traduzir uma tarefa complexa (tal como, por exemplo, a tarefa de buscar uma pasta num arquivo) numa série de passos elementares (identificar o móvel e gaveta onde está a pasta, andar até o móvel, abrir a gaveta, encontrar a pasta, retirar a pasta e fechar a gaveta). Para o computador, uma instrução precisa ser detalhada, dividida em pequenas etapas de operações, que são dependentes do conjunto de instruções do computador e individualmente executáveis.
Execução de programas Fazendo um paralelo com linguagens de alto nível, o programa elaborado pelo programador (o código-fonte, composto de instruções complexas) precisa ser "traduzido" em pequenas operações elementares (primitivas) executáveis pelo hardware Cada uma das instruções tem um código binário associado, que é o código da operação.
Formato geral de uma instrução Formato de instruções: Código de operação (opcode) - é o identificador da instrução a ser executada; Operandos - dados que serão manipulados pela instrução. Estrutura de uma instrução 00000010001100100100000000100000 add $t0, $s1, $s2
Formato geral de uma instrução Código da operação ou OPCODE Identifica a operação a ser realizada pelo processador. É o campo da instrução cuja valor binário identifica (é o código binário) da operação a ser realizada. Este código é a entrada no decodificador de instruções na unidade de controle. Cada instrução deverá ter um código único que a identifique.
Formato geral de uma instrução Operandos São os campos da instrução cujo valor binário sinaliza a localização do dado (ou é o próprio dado) que será manipulado (processado) pela instrução durante a operação. Em geral, um operando identifica o endereço de memória onde está contido o dado que será manipulado, ou pode conter o endereço onde o resultado da operação será armazenado. Finalmente, um operando pode também indicar um Registrador (que conterá o dado propriamente dito ou um endereço de memória onde está armazenado o dado). Os operandos fornecem os dados da instrução. Obs.: Existem instruções que não tem operando. Ex.: Instrução HALT (PARE).
Conjunto de Instruções Quando se projeta um hardware, define-se o seu conjunto ("set") de instruções - o conjunto de instruções elementares que o hardware é capaz de executar. O projeto de um processador é centrado no seu conjunto (“set") de instruções. ISA = instruction set architeture.
Conjunto de Instruções ISA (Instruction Set Architecture) - Conjunto de instruções que um processador é capaz de executar. Dentro de um ISA podem existir vários formatos de instrução.
Conjunto de Instruções Exemplos de ISAs
Conjunto de instruções... Funcionalmente, um processador precisa possuir instruções para: operações matemáticas aritméticas: +, - , × , ÷ ... lógicas: and, or, xor, ... de complemento de deslocamento Operações de movimentação de dados (memória <--> UCP, reg <--> reg) Operações de E/S (leitura e escrita) Operações de controle (desvio de seqüência de execução, parada)
ISA – Arquitetura de instruções
ISA – Arquitetura de instruções Componentes do nível Conjunto de instruções Conjunto de registradores Tipos de dados nativos Modos de endereçamento de memória Esquemas de E/S
ISA – Arquitetura de instruções Exemplo: IAS (década de 50)
ISA – Arquitetura de instruções Exemplo: IAS Os registradores AC e MQ são utilizados em todas as operações aritméticas. Ac registra os bits mais significativos e MQ os menos significativos.
ISA – Arquitetura de instruções Exemplo: Conjunto de instruções do IAS
ISA – Arquitetura de instruções Exemplo: Conjunto de instruções do IAS
ISA – Arquitetura de instruções Exemplo: Conjunto de instruções do IAS
ISA – Arquitetura de instruções Tipos de arquiteturas comuns
ISA – Arquitetura de instruções Tipos de arquiteturas comuns
ISA – Arquitetura de instruções Tipos de arquiteturas comuns : Operação: c = a + b
Conjunto de instruções As estratégias de implementação de processadores são: CISC - Complex Instruction Set Computer. RISC - Reduced Instruction Set Computer.
Conjunto de instruções CISC (Complex Instruction Set Computer) Possui como característica um grande número de instruções. Ideia: quanto mais instruções fossem implementas no computador, melhor seria o desempenho. Porém, a maior parte das instruções utilizadas são simples e quase sempre as mesmas
Conjunto de instruções RISC (Reduced Instruction Set Computer) Possui número reduzido de instruções São mais simples do que as CISC Instruções mais complexas são implementadas pelo software. Tempo de execução menor que a CISC, ou seja, as instruções RISC são executadas mais rápidas. Entretanto, um programa em RISC utiliza mais instruções para fazer a mesma coisa. Mesmo assim, o RISC é mais rápido.
Conjunto de instruções CISC - Complex Instruction Set Computer – Um conjunto de instruções maior e mais complexo, implicando num processador mais complexo, com ciclo de processamento mais lento; Exemplo: PC, Macintosh; RISC - Reduced Instruction Set Computer – um conjunto de instruções menor e mais simples, implicando num processador mais simples, com ciclo de processamento rápido. Exemplo: Power PC, Alpha, Sparc;
Conjunto de instruções RISC x CISC Tendência atual: arquiteturas híbridas.
Lembre-se... Obs.: adotaremos o termo instrução para as instruções de máquina ou em linguagem Assembly e comando para linguagens de alto nível. Há hoje uma crescente tendência a se utilizar um conjunto de instruções reduzido, de vez que o compiladores tendem a usar em geral apenas uma pequena quantidade de instruções. Há também vantagens na implementação do hardware - maior simplicidade, menor tempo de ciclo de instrução).
Finalmente, para fazer um processador você apenas precisa... a) Definir o conjunto de instruções (todas as possíveis instruções que o processador poderá executar) · definir formato e tamanho das instruções · definir as operações elementares b) Projetar os componentes do processador (UAL, UC, registradores, barramentos, ...)
Projeto do Processador Duas estratégias são possíveis na construção do decodificador de instruções da UC: wired logic (as instruções são todas implementadas em circuito) microcódigo (apenas um grupo básico de instruções são implementadas em circuitos; as demais são "montadas" através de microprogramas que usam as instruções básicas.
Execução das instruções Monociclo Busca Le Reg. Mem. ULA Esc. Reg Quem controla a entrada da próxima instrução é a UNIDADE de CONTROLE. Busca na memória Busca do operando na memória 1 único ciclo de clock. Busca: 2ns LeReg: 1ns ULA: 2ns Mem: 2ns EscReg: 1ns Portanto, tempo de ciclo de 8ns Tempo total: 24ns
Execução das instruções Multiciclo Busca Le Reg. Mem. ULA Esc. Reg Tempo total: 30 ns Vantagem: instruções menores utilizam menos ciclos que as instruções maiores. Nesse momento não ocorre o Pipeline. Os estágios funcionam sequencialmente
Instruções Pipeline: Divisão das instruções em pedaços que são executados separadamente; Cada estágio de um pipeline executa uma parte de cada instrução; Possibilidade de execução de várias instruções simultaneamente, em estágios diferentes.
Pipeline é natural Exemplo de Lavanderia Tem-se os volumes A, B, C e D de roupas para lavar, secar e passar A lavadora leva 30 minutos A secadora leva 40 minutos A passadeira leva 20 minutos A B C D
Lavanderia Sequencial 6 7 8 9 10 11 Meia noite Tempo 30 40 20 30 40 20 30 40 20 30 40 20 T a s k O r d e A B A lavadora Sequencial Multiciclo C D A lavanderia sequencial leva 6 horas para 4 volumes
Lavanderia em Pipeline 6 7 8 9 10 11 Meia noite Tempo 30 40 20 o r d e m A B C D Lavanderia em Pipeline leva 3.5 horas
Execução das instruções - Pipeline Tempo total: 14ns Os estágios funcionam paralelamente
Paralelismo O processador perde muito tempo aguardando os dados da memória. Para melhorar o desempenho do sistema, utiliza-se o paralelismo. Pode ocorrer em dois níveis Nível de instrução – pipeline Nível de hardware – mais de um processador
Paralelismo Multiprocessador Multicomputador Processadores interligados que executam instruções do mesmo programa e que compartilham a mesma memória. Multicomputador O mesmo que o anterior, porém, além da memória compartilhada, possui também uma memória própria. Trabalha como se fosse um outro computador, portanto, melhorando o desempenho.
Paralelismo Multiprocessador Multicomputador