Manual de SoluçõesArquitetura e Organização de Computadores Oitava Edição WIlliam STALLINGS ÍNDICE Capítulo 1 Introdução 5 Capítulo 2 Computador Evolução e Desempenho 6 Capítulo 3 Função do Computador e Interligação 14 Capítulo 4 Memória Cache 19 Capítulo 5 Memória interna 32 Capítulo 6 Memória externa 38 Capítulo 7 Input / Output 43 Capítulo 8 do Sistema Operacional de Apoio 50 Capítulo 9 Arquitetura do Computador 57 Capítulo 10 Jogos de Instrução: Características e Funções 69 Capítulo 11 Modos de endereçamento e formatos de Conjuntos de instruções 80 Capítulo 12 Estrutura e Função do Processador 85 Capítulo 13 Reduced Instruction Set Computers 92 Capítulo 14 da Instrução Nível Paralelismo e Processadores superescalares 97 Capítulo 15 Controle da Operação Unidade 103 Capítulo 16 Controle microprogramada 106 Capítulo 17 Processamento Paralelo 109 Capítulo 18 Computadores Multicore 118 Capítulo 19 Sistemas de Números 121 Capítulo 20 Lógica Digital 122 Capítulo 21 A arquitetura IA-64 126 Apêndice B Assembly Language and Related Topics 130 CAPÍTULO 1 INTRODUÇÃO RESPOSTAS PARA PERGUNTAS 1.1 Arquitetura de computadores refere-se aos atributos de um sistema visíveis a um programador, ou, dito de outra forma, esses atributos que têm um impacto direto sobre a execução de um programa lógico. Organização do computador refere-se à operação unidades e suas interconexões que realizam as especificações arquitetônicas. Exemplos de atributos arquitetônicos incluir o conjunto de instruções, o número de bits usados para representar vários tipos de dados (por exemplo, números, caracteres), mecanismos de E/S, e técnicas para lidar com a memória) Atributos organizacionais incluem os detalhes do hardware transparentes para o programador, tais como sinais de controle; interfaces entre o computador e periféricos, e a tecnologia de memória utilizada) 1.2 Estruturas computador refere-se ao modo pelo qual os componentes de um computador são inter- relacionados. A Função de um Computador refere-se à operação de cada componente individual, como parte da estrutura) 1.3 Processamentos de dados, armazenamento de dados, movimentação de dados e controle) 1.4 Unidade Central de Processamento (CPU): controla a operação do computador e executa suas funções de processamento de dados, muitas vezes referido simplesmente como processador. Memória principal: Armazena dados. I / O: Move dados entre o computador e sI ambiente externo. A interligação do Sistema: Alguns mecanismo que prevê a comunicação entre CPU, memória principal, e I / O. Um exemplo comum de um sistema de interconexão ocorre por meio de um barramento de sistema, que consiste num número de fios condutores a que todas as outras componentes se ligam) 1.5A unidade de controle: controla o funcionamento da CPU e, portanto, o computador. Unidade Lógica e Aritmética (ALU): Realiza o processamento de dados do computador funções Registradores: fornece armazenamento interno para a CPU. Interconexão CPU: Alguns dos mecanismos que prevê a comunicação entre a unidade de controle, ALU e registradores. CAPÍTULO 2 - EVOLUTÇÃO DO COMPUTADOR E DESEMPENHO RESPOSTAS PARA PERGUNTAS 2.1 Em um programa de computador armazenado, os programas são representadas numa forma adequada para armazenar na memória junto com os dados. O computador recebe as instruções, lendo-as da memória, e um programa pode ser ajustado ou alterado para definir os valores de uma parte da memória) 2.2 A memória principal, que armazena os dados e instruções: uma aritmética e lógica unidade (UAL) capaz de operar em dados binários, uma unidade de controlo, a qual interpreta as instruções na memória e faz com que eles sejam executados, e entrada e saída (I / O) equipamento operado pela unidade de controlo. 2.3 Portas, células de memória e interconexões entre portas e células de memória) 2.4 Moore observou que o número de transistores que podem ser colocados em um único chip foi dobrando a cada ano e previu corretamente que esse ritmo vai continuar em um futuro próximo. 2.5 As Instrução definidas, semelhantes ou idênticas: Em muitos casos, o mesmo conjunto de instruções de uma máquina é compatível com todos os membros da família) Deste modo, um programa que executa em uma máquina também será executado em qualquer outra) Semelhantes ou idênticos sistemas operacionais: O mesmo sistema operacional básico está disponível para toda a família membros. Aumentar a velocidade: A taxa de execução de instruções aumenta de baixo para os membros da família mais elevados. Aumento do número de portas de E/S: Vão de baixo para os membros da família mais elevados. Aumentar tamanho da memória: Ao passar de baixa para os familiares mais elevados. Aumento de custos: Ao passar de baixa para os membros da família mais elevados. A CPU então afirma na linha de controle de gravação para a memória e coloca o endereço no barramento de endereços e os dados no barramento de dados. A CPU também coloca os dados que quer escrever no MBR.2a) Opcode Operando 00000001 000000000010 b) Primeiro. 2. e 3001.3 Para ler um valor de memória. A instrução contém o endereço dos dados que deseja carregar. 2001. A CPU então ativa a linha de controle de leitura de memória e coloca o endereço no barramento de endereços. Memória coloca o conteúdo da localização de memória passando-o para o barramento de dados. a CPU coloca o endereço do valor que ela quer em o MAR. 8:19) Modificar endereço em 4D 10R JUMP M (3.000 locais contíguos na memória. RESPOSTAS PARA OS PROBLEMAS 2. a CPU coloca o endereço do valor que ele quer escrever no MAR. os vetores são processados a partir de um local alto para uma localização baixa) Localização Instrução Comentários 0 999 Constante (contagem N) 1 1 Constante 2 1000 Constante 3L LOADM (2000) Transferir A (I) para AC 3R ADDM (3000) Computar a (i) + B (I) 4L StorM (4000) Transfira a soma C (I) 4R LOAD M (0) Contagem de carga N 5L M SUB (1) Decremento N em 1 5R JUMP + M (6. a CPU deve fazer acesso de memória para buscar a instrução. Para escrever um valor na memória. Uma contagem variável N é configurada para 999 e depois de cada passo decrementado até atingir -1. Durante a fase de execução de acessos de memória para carregar o valor de dados localizado nesse endereço para um total de duas viagens a memória) 2. Esta dado é então transferido para o MBR. 00:19) Parada 6R STOR M (0) Atualização N 7L ADD M (1) Incrementar AC por 1 7R ADD M (2) 8D STOR M (3.6 Em um microprocessador. 20:39) Teste N e ramo de 6R se não negativo 6L JUMP M (6. começando em locais 1001. 28:39) Modificar endereço no 3R 9R ADD M (2) 10L STOR M (4. Transfere os dados da memória para o barramento de dados para o correspondente local de memória) . Assim. 8:19) Modificar endereço em 3L 8R ADD M (2) 9L STOR M (3. 00:19) Filial de 3L 2. e C são cada um deles armazenados em 1.1 Este programa é desenvolvido em [HAYE98]. B. respectivamente) O programa inicia-se com a metade esquerda do local 3. Os vetores de A. todos os componentes da CPU estão em um único chip. Todos os caminhos de dados para / de MAR são 12 bits. podemos representar 210 padrões. Com dez bits.2 GHz).7 A discrepância pode ser explicado pelo fato de outros componentes do sistema. ao mesmo tempo. então esses mesmos tubos podiam ser tratados como bits binários. Caminhos para / de MQ são 40 bits. De acordo com a Apple Computer. 2. tais como os componentes do sistema (memória. embora a maquina Intel possa ter uma maior velocidade de clock (2.55.9 Esta representação é um desperdício. existe um tempo de atraso antes da operação de leitura ou gravação pode ser realizada) Enquanto isso está acontecendo. Tempo de execução = 3. 2.4 GHz contra 1. Se pudéssemos ter um número arbitrário desses tubos em ON.7. barramento. porque para representar um único dígito decimal de 0 a 9 precisamos ter dez tubos.8 Como observado na resposta ao problema de 2. os sistemas de memória e os avanços no processamento de I/Ocontribuir para o razão de desempenho. arquitetura) e o conjunto de instruções também devem ser levados em conta) A medida mais precisa é executar os dois sistemas com um benchmark) Existem programas de benchmark para determinadas tarefas. 2. 2. ou os padrões de 1024. o que não significa necessariamente que o sistema irá executar mais rápido. os gargalos têm sido o desempenho dos módulos de memória e a velocidade do barramento. o G4 é comparável ou melhor do que uma velocidade superior de clock de um Pentium em muitos benchmarks.4 Índice de endereços 08A LOAD M (0FA) STOR M (0FB) 08B LOAD M (0FA) JUMP + M (08D) 08C LOAD -M (0FA) STOR M (0FB) 08D Este programa irá armazenar o valor absoluto do conteúdo da posição de memória 0FA na memória local 0FB) 2. 2. Um sistema é tão rápido quanto a sua ligação mais lenta) Nos últimos anos. 2.8.6 O objetivo é aumentar o desempenho. gráficos operações. estes padrões podem ser usados para representar os números de 0 a 1023. além da velocidade do relógio fazer uma grande diferença na velocidade geral do sistema) Em particular. Diferentes sistemas não são comparáveis em velocidade de clock) Outros fatores. tais como execução de aplicativos de escritório.10 CPI = 1. e assim por diante) Os sistemas podem ser comparados uns com os outros sobre quanto tempo eles levam para completar essas tarefas. Caminhos de / para AC são 40 bits.87 ns. Para uma série de pedidos de palavras sucessivas.5 Todos os caminhos de dados de / para a MBR são 40 bits. Fonte: [HWAN93] . à taxa máxima é duplicou. realizando operações de ponto flutuante. um endereço pode ser apresentado para o outro módulo. Para inteiros. Quando um endereço é apresentado a um módulo de memória. taxa MIPS = 25. 49 I 1.21 3 Computador C 3.00 1.2 0. (b) Para o Vax.1 1 2.71 3. A relação de contagem de instruções do RS/6000 para o VAX é [X *18] / [12x * 1] = 1.11 F 1.11 a) b)’ 2.325 1 0.26 2 2.00 1.2).09 Média Aritmética 1. Assim que: Ic = T × [(Taxa MIPS) / 106].00 0.39.125 1 Categoria Aritmética RANK Categoria Harmônica Rank Computador A 25.1 1 5 Programa 3 0.25 2 Computador B 2.31 1.19 H 1.00 2. Os valores MIPS são: Computador A Computador B Computador C Programa 1 100 10 5 Programa 2 0.43 0. CPI = 25/18 = 1.19 1. 2.00 1.10 2.14 (a) Normalizado de R: Índice de referência Processador R M Z E 1.11 0.13 A partir da Equação (2.00 1.1 2 Programa 4 1 0. CPI = (5 MHz) / (1 MIPS) = 5.2.5.8 3 0.12 (a) Podemos expressar a taxa de MIPs como: [(MIPS taxa) / 106] = Ic/ T. MIPS = Ic/ (T × 106) = 100 / T.60 K 1. Para o RS/6000.50 (b) Normalizado para M: . 00 1.00 2.10 (c) Recorde-se que quanto maior for a relação.82 F 0.00 1.00 1.00 Média Geométrico 0. M é a mais lenta das máquinas.13 I 0.00 Média Aritmética 1.00 1. por uma quantidade significativa) Com base em (b).11 0.00 H 2.54 K 0. maior a velocidade) Com base em (a) R é a mais lenta das máquinas.25 1.00 1.48 1.02 Usando a média geométrica.13 I 0.00 1.59 1.00 1.00 1. 2.00 1.0 Média Aritmética 1 1.01 1.00 1.09 Média Geométrico 1.48 1.43 0.54 K 0.Índice de referência Processador R M Z E 0.90 1.32 1.15 (a) Normalizado para X: Índice de referência Processador X Y Z 1 1 2.84 1.00 0.90 1. não importa qual máquina é usada para normalização.87 1.00 1.49 I 1.0 0.10 2. por um valor modesto.84 1.11 F 1.5 2.5 2 1 0.19 H 1.60 K 1.00 1.00 1.25 Média Geométrico 1 1 1 Normalizada a Y: .15 1. R é o mais lento. (d) Normalizado de R: Índice de referência Processador R M Z E 1.32 1.82 F 0.00 1.18 Normalizado para M: Índice de referência Processador R M Z E 0.00 H 2.00 0.00 0.71 3.59 1.19 1. O CPI aumentou devido ao aumento do tempo de acesso à memória) (b) MIPS = 400/2.5 1 0.000 instruções gerais. (c) O fator de aumento da velocidade é a razão entre os tempos de execução. Agora. 2.0 Média Aritmética 1. Da mesma máquina Z é metade da velocidade X para referência 1. as três máquinas são mostrados para ter igual desempenho quando normalizado para X.11 tempo para executar programa em processadores paralelos N 1. há instruções adicionais de adição para coordenar entre (linhas) threads. nós calculamos o tempo de execução conforme T = Ic/ (MIPS × 106). Utilizando a Equação 2.Índice de referência Processador X Y Z 1 0. temos tempo para executar o programa de um processador único 11 𝑆𝑝𝑒𝑒𝑑𝑢𝑝 = = = 6.125 Média Geométrico 1 1 1 Máquina Y é duas vezes mais rápido como máquina X para referência 1. Para este caso.6 + (2 × 0. mas a metade da velocidade para referência 2. Em segundo lugar. Claramente. e também o mesmo desempenho quando normalizado para Y. descobrirão que Y e Z são 25% mais rápido do que X. mas duas vezes mais rápido para referência 2. o tempo de execução de cada uma das oito processadores está Portanto.1) = 2.18) + (4 × 0.0 1 4.2. Com 8 processadores. descobriram que X é de 25% mais rápido do que Y e Z é mais de duas vezes mais rápido que Y. t1 = (2 × 106) / (178 × 106) = 11 ms. se normalizar a Y e calcular a média aritmética da velocidade métrica. Em primeiro lugar.64. se normalizar a X e calcular a média aritmética da velocidade métrica. estas três máquinas têm equivalência de desempenho. a média aritmética não tem valor neste contexto. a parte do código é inerentemente serial) Tudo isso é paralelizável. mas com programação em . b) Quando a média geométrica é utilizada. cada processador executa 1/8 dos 2 milhões de instruções.8 (d) A resposta a esta pergunta depende de como interpretamos "lei de Amdahl) Lá são duas ineficiências no sistema paralelo.25 1 2. há uma contenção para acesso à memória) O modo que o problema é afirmado. No entanto. Esses resultados são muito mais em linha com a nossa intuição.25 2 2.16 (a) Assumindo o mesmo mix de instrução significa que as instruções adicionais para cada tarefa deve ser alocado proporcionalmente entre os tipos de instrução.12) + (12 × 0. além dos 25.64 = 152. Há uma queda correspondente na taxa de MIPS. Para o único processador caso. Intuitivamente. Assim temos a seguinte tabela: Tipo de Instrução CPI Instrução Mix Aritmética e lógica 1 60% Load /store com acerto de cachê 2 18% Branch 4 12% Referência da memória com falta de cache 12 10% CPI = 0. 3.3 (1) Desabilitar todas as interrupções enquanto uma interrupção está sendo processada. cima) Alguém pode argumentar no conflito de acesso à memória significa que.17 a) Speedup = (tempo de acesso na memória principal) / (tempo de acesso em cache) = T2/ T1. Processamento de Dados: O processador pode executar alguma operação aritmética ou lógica em dados. Operação de dados (do): Executa a operação indicada na instrução. Operando busca (if): Busca o operando da memória ou lê-lo em de I / O. então a lei de Amdahl reduz a SpeedUp = N = 8 para este caso. com base nas informações fornecidas. transferindo entre o processador e um módulo de E/S. determinar o endereço do operando. Operando cálculo de endereço (OAc): Se a operação envolve referência a um operando em memória ou disponível via I / O.2) no Capítulo 4. Instrução de busca (se): Leia a instrução de seu local memória para dentro do processador. b) O tempo médio de acesso pode ser calculada como T = H × T1 + (1 . Neste caso. o denominador é maior. Decodificação operação Instrução (IOD): Analisa a instrução para determinar o tipo de operação a ser executada e operando(s) a ser utilizado(s). . em seguida. Mas. 𝑂 𝑡𝑒𝑚𝑝𝑜 𝑑𝑒 𝑒𝑥𝑒𝑐𝑢çã𝑜 𝑎𝑛𝑡𝑒𝑠 𝑑𝑒 𝑎𝑝𝑟𝑖𝑚𝑜𝑟𝑎𝑚𝑒𝑛𝑡𝑜 𝑇2 𝑇2 1 𝑆𝑝𝑒𝑒𝑑𝑈𝑝 = = = = = 𝑂 𝑡𝑒𝑚𝑝𝑜 𝑑𝑒 𝑒𝑥𝑒𝑐𝑢çã𝑜 𝑎𝑝ó𝑠 𝑜 𝑎𝑝𝑟𝑖𝑚𝑜𝑟𝑎𝑚𝑒𝑛𝑡𝑜 𝑇 𝑇1 + (1 − 𝐻)𝑇2 (1 − 𝐻) + 𝑇1 𝑇2 . 3.1 Processadores de memória: Os dados podem ser transferidos a partir do processador para a memória ou a partir da memória para o processador. o aumento de velocidade real é de apenas cerca de 75% do aumento de velocidade teórica) 2. CAPÍTULO 3 Computador Função e Interconexões Respostas as Perguntas 3. (2) Definir prioridades para interrupções e permitir uma interrupção de maior prioridade de causa um manipulador de interrupção de menor prioridade para ser interrompido. não está claro como quantificar esse efeito na equação de Amdahl) Se assumir que a fração de código que é paralelizável é f = 1. Processador.H) × (T1 + T2) = T1 + (1 . Operando store (os): Escreva o resultado na memória ou para I / O.E/S: Os dados podem ser transferidos para ou a partir de um periférico. Assim.H) × T2) Esta é a equação (4. em certa medida. Controle: Uma instrução pode especificar que a seqüência de execução ser alterados. Agora.2 Cálculos de endereço Instrução (IAC): Determine o endereço da próxima instrução para ser executado. de modo que o aumento de velocidade é menor. instruções de referência a memória não são paralelizáveis.H) × T2 Usando a equação (2.8): 𝑂 𝑡𝑒𝑚𝑝𝑜 𝑑𝑒 𝑒𝑥𝑒𝑐𝑢çã𝑜 𝑎𝑛𝑡𝑒𝑠 𝑑𝑒 𝑎𝑝𝑟𝑖𝑚𝑜𝑟𝑎𝑚𝑒𝑛𝑡𝑜 𝑇2 𝑇2 1 𝑆𝑝𝑒𝑒𝑑𝑈𝑝 = = = = = 𝑂 𝑡𝑒𝑚𝑝𝑜 𝑑𝑒 𝑒𝑥𝑒𝑐𝑢çã𝑜 𝑎𝑝ó𝑠 𝑜 𝑎𝑝𝑟𝑖𝑚𝑜𝑟𝑎𝑚𝑒𝑛𝑡𝑜 𝑇 𝐻 × 𝑇1 + (1 − 𝐻)𝑇2 (1 − 𝐻) + 𝐻 𝑇1 𝑇2 c) T = H × T1 + (1 . 4 (a) A porção de endereço de IR (941) é carregada para o MAR.e o PC é incrementado. (c) O valor do MBR é carregado para o AC.3. Pinos de controle de interface: Controlar o tempo das transações e fornecer coordenação entre os iniciadores e alvos. Em vez disso. Processador de I / O: O processador envia os dados para o dispositivo de E/S.2 1 (a) O PC contém 300. 3 (a) O valor no PC (301) é carregado para o MAR. em hexadecimal) é carregado para o MBR. (c) O valor do MBR é carregado no IR. 2 (a) A porção de endereço de IR (940) é carregada para o MAR (b) O valor de localização 940 está carregado no MBR. I/O para ou a partir memória: Para estes dois casos. Perguntas e Respostas 3. 301: 5940.1. .5 Com vários barramentos há menos dispositivos por barramentos. e (2) reduz os efeitos de estrangulamento. Processador para a memória: o processador escreve uma unidade de dados na memória. Pinos de Interrupção: Estes são fornecidos para dispositivos PCI que deve gerar pedidos de serviço. o endereço da primeira instrução. (c) O valor do MBR é carregado no IR. porque cada barramento pode ser mais curto. um módulo de E/S é permitido trocar dados diretamente com a memória. (b) O valor de localização 301 (que é a instrução com o valor de 5941) é carregado no MBR. Endereço e dados pinos: Incluir 32 linhas que são multiplexadas em tempo para endereços e dados. (b) O valor de localização 941 é carregado para o MBR. Pinos de Arbitragem: Ao contrário das outras linhas de sinal da PCI. Pinos de suporte de cache: Estes pinos são necessários para apoiar a memória PCI que pode ser armazenado em cache no processador ou outro dispositivo. Passo 4: 3 + 2 = 5 → AC Passo 5: 7006 → IR. Este valor é carregado em que o MAR. I/Opara o processador: O processador lê dados de um dispositivo de I/O através de um módulo de E/S. Pinos de Relatório de Erros: Usado para reportar paridade e outros erros. JTAG / Boundary Scan Pins: Estas linhas de sinal apoiar procedimentos de teste definidos na norma IEEE 1149. e o PC é incrementado. Passo 2: 3 → AC Passo 3: 5940 → IR. 3.4 Memórias para o processador: O processador lê uma instrução ou uma unidade de dados da memória. usando acesso direto à memória (DMA). (b) O valor de localização 300 (que é a instrução com o valor de 1940. Isto (1) reduz a propagação atraso. estes não são linhas compartilhadas. sem passar pelo processador. 302: 7006 Passo 1: 3005 → IR. 3.1 Memórias (conteúdo em hexadecimal): 300: 3005. Barramento de extensão de pinos de 64 bits: Incluir 32 linhas que são multiplexadas em tempo para endereços e dados e que são combinados com as linhas de endereço / dados obrigatoriamente para formar um 64-bit endereços / barramento de dados. Passo 6: AC → Dispositivo 6 3. cada mestre PCI tem o seu próprio par de linhas de arbitragem que o conecta diretamente ao barramento PCI arbitrário. Estes dois passos podem ser feitos em paralelo.6 Pinos do sistema: Incluir o relógio e o pino reset. 5 Ciclo de clock = 1/8 MHz = 125ns Ciclo de Barramento = 4 × 125ns = 500ns 2 bytes transferidos a cada 500ns.4 Nos casos (a) e (b). pode-se supor a primeira metade irá decodificar para acessar uma "fila" na memória. ele pode suportar 28 = 256 de entrada e dois8 = 256 portas de byte de saída e o mesmo número de portas de 16 bits de entrada e de saída. a única diferença é que com uma memória de 8 bits cada acesso irá transferir um byte. porque o barramento de dados é de apenas 16 bits. (b) O valor de AC é carregado para o MBR. No primeiro caso.3 a) 224 = 16 MBytes. um microprocessador de 32 bits terá um barramento de endereços externo de 32 bits e um contador de programa de 32 bits. dobrando o barramento externo de dados significa mais amplos (talvez mais novos) on-chip controlador de barramento de dados / travas e modificações para a lógica de controle de barramento. ele terá de ser 32-bits de comprimento. Para um endereço de 32 bits. 3. Para além da operação de endereços de dois passos. o "comprimento de palavra" de memória terá de dobrar para ser capaz de enviar / receber 32 quantidades bits. se ele irá conter apenas o código operação (chamado de registro de código op) então ela terá que ser de 8 bits de comprimento. ele exigirá dois ciclos para buscar uma instrução de 32 bits ou operando. o microprocessador será capaz de aceder a 216 = 64K bytes. Assim. assim taxa de transferência = 4 M Bytes/seg) A duplicação da freqüência pode significar adotar uma nova tecnologia de fabricação de chips (assumindo que todas as instruções irão ter o mesmo número de ciclos de relógio). Para o caso (c). o microprocessador terá dois ciclos para buscar a instrução de 32 bits / operando. no mínimo. 6 (a) A porção de endereço de IR (941) é carregada para o MAR. (2) Os 16 bits do endereço colocado no barramento de endereços não podem acessar toda a memória. um pino de saída adicional será necessário para realizar este novo sinal) Para o caso (d). (c) O valor do MBR é armazenado na localização 941. um controle da interface de memória de forma mais complexa é necessária para travar a primeira parte do endereço e. 5 (a) O valor no PC (302) é carregado em que o MAR. (b) O valor de localização 302 (que é a instrução com o valor de 2941) é carregado no MBR. são necessárias instruções de entrada e de saída separadas. no segundo caso. (c) O valor do MBR é carregado no IR. Quando . também será necessária duplicar (aproximadamente) para não retardar o microprocessador. cuja execução gerará "sinais I/O" separados (diferentes dos sinais de "memória" gerados com a execução de instruções do tipo de memória). No entanto. e o PC é incrementado. b) (1) Se o barramento de endereços local é de 32 bits. a velocidade dos chips de memória. Se o registro de instrução é para conter toda a instrução. enquanto com uma memória de 16 bits um acesso pode transferir um byte ou uma palavra de 16 bytes. enquanto que o segundo metade é enviada depois para o acesso de uma "coluna" de memória. em seguida. (c) O valor antigo da AC e o valor de localização MBR são adicionados e o resultado é armazenado no AC.6 a) Entrada do teletipo é armazenado em INPR. O INPR só aceita dados de o teletipo quando FGI = 0. 3. em qualquer caso. c) O contador de programa deve ser de pelo menos 24 bits. 3. Tipicamente. a distinção entre uma porta de entrada e saída é definida pelo sinal que a instrução de entrada executa ou gerado pela saída) 3. a menos que os segmentos de registradores de chips sejam utilizados que podem trabalhar com um contador de programa menor. o endereço completo pode ser transferido de uma vez e decodificado na memória. a segunda parte (porque o microprocessador irá terminar em duas etapas). Portanto. A CPU verifica periodicamente FGI) Se FGI = 1. o número máximo de mestres é determinado dividindo-se a quantidade de tempo que leva um mestre de barramento para passar através da prioridade barramento pelo período do relógio. 3. ele verifica FGO. apenas a prioridade 16 do dispositivo pode transmitir. 3. com estados de espera. Este dispositivo deve adiar a todos os outros. é muito dispendioso.11 a)Com uma freqüência de clock de 10 MHz. Assim. Assim. Somente quando há grande demanda no barramento. a CPU transfere os conteúdos da INPR à AC e define FGI a 0. Quando a CPU tem dados para enviar para o teletipo. que é muito mais rápida do que o teletipo. por isso. dos quais 50 são um byte de comprimento e 50 são dois bytes. a instrução leva 26 ciclos de ônibus sem estados de espera e 34 ônibus ciclos com estados de . a memória deve colocar os dados em no barramento no mais tardar até 55ns desde o início da T3. se nenhuma das linhas de TR é afirmado. o sinal Write tem uma duração de 150ns. o sinal de leitura começa a subir no início de T2. as taxas de transferência de dados diferem por um fator de 1. Para inserir dois ciclos de relógio. a CPU transfere os conteúdos da AC para OUTR e define FGO em 0.9 O dispositivo de menor prioridade é atribuída prioridade 16. Assim. a ser feita a cada ciclo de clock) Isto exige que o sinal de prioridade se propague ao longo da cadeia (Figura 3. ele é armazenado em INPR e FGI é definido como 1. resultando em oito estados de espera) A instrução. Se FGO = 0. desejamos para uma operação de barramento arbitraria. O teletipo define FGI a 1 após a palavra ser impressa) b) O processo descrito em (a). deve verificar repetidamente FGI e FGO. dois ciclos de relógio devem ser inseridos. 3.12 a)O período de clock é de 125ns.7 a) Durante um único ciclo de barramento.10 No início de qualquer ranhura. para um aumento de 50%. No entanto. b) Suponha-se que fazer 100 transferências de operandos e instruções. 3.19. leva 24 ciclos de relógio. a instrução leva 16 ciclos de clock de barramento. o CPU deve esperar. O registro IEN pode ser definido pela CPU (sob controle programador) 3.os dados chegam. o teletipo pode emitir uma interrupção para a CPU sempre que ele está pronto para aceitar ou enviar dados.5.13a) Um relógio de 5 MHz corresponde a um período de relógio de 200ns. b)Os dados continuam a ser válidos para 150 + 20 = 170ns. O microprocessador de 16 bits tem o dobro da taxa de transferência de dados. o período de clock é de 10-9 s = 100ns.26) em um período de relógio. Se forem utilizadas as interrupções. c)Um estado de espera) 3. 3. o que significa que a maior parte do tempo. Isto lhe dá o tempo de espera médio mais baixo na maioria das circunstâncias. b) Neste caso. há pelo menos um pedido pendente. Se FGO = 1.14 a)Sem os estados de espera. O comprimento do ciclo de leitura de memória é de 300ns. pode transmitir em qualquer slot não reservados pelos outros dispositivos SBI) 3.8 O ponto central do relógio é para definir os horários dos eventos no barramento. A instrução requer quatro acessos à memória. O microprocessador de 8 bits tira 50 + (2 x 50) = 150 ciclos de barramento para a transferência) O microprocessador de 16 bits requer 50 + 50 = 100 ciclos de ônibus. A CPU. Portanto. o Pronto da linha pode ser colocada em baixo no início do T2 e mantida baixo para 250ns. será o dispositivo de prioridade 16 que não terá o tempo de espera médio menor. b)A partir da Figura 3. o microprocessador de 8 bits transfere um byte enquanto que a Transferências de microprocessadores de 16 bits é de dois bytes. b)O sinal de leitura começa a cair em 75ns a partir do início do terceiro ciclo de relógio (meados do segundo meio de T3). 3. 3.16 Um ciclo de barramento leva 0. Se os ciclos de barramento repetir um após o outro.18 O processador precisa de mais nove ciclos de clock para completar a instrução. 40 itens de 16 bits e 40 bytes. Se ambos estão estranho alinhado. um ciclo de memória tem 1us. a interrupção Reconheça começará depois de 900ns.17 Considere um mix de 100 instruções e operandos. 3.5us.espera.25us. Se ambos os operandos são even-alinhadas.625 = 1. para uma duração total de 0. 3. Isso equivale a uma melhoria de 20/120 ou cerca de 17%. A taxa de transferência de dados correspondente é 1/0. para um aumento de 33%.19 . Em média. Um ciclo ler ônibus leva 500ns = 0. 3.625us.15 a)O período de clock é de 125ns. o tempo necessário é de 4us.6MB / s. b)O estado de espera se estende o ciclo de leitura de ônibus por 125ns. o número necessário é de 100. o tempo necessário é de 3us. Se um é ímpar alinhado. leva 2us para buscar os dois operandos. portanto. Assim. eles consistem de 20 de 32 bits itens. Para o microprocessador de 32 bits. podemos atingir uma taxa de transferência de dados de 2MB / s. O número de ciclos necessários para o barramento do microprocessador de 16 bits é (2 × 20) + 40 + 40 = 120. O tempo de acesso a um determinado local é independente da seqüência de acessos anteriores e é constante) 4. mais lento o tempo de acesso. ou esperar para chegar ao local final) Acesso aleatório: Cada local endereçável na memória tem um único.2Faster actempo cesso. maior capacidade. mais a pesquisa seqüencial.CAPÍTULO 4 CACHE MEMÓRIA RESPOSTAS PARA PERGUNTAS 4. Acesso deve ser feito em uma sequência linear específica) Acesso direto: blocos individuais ou registros têm um endereço único baseado na localização física) O acesso é feito por acesso direto para chegar a uma vizinhança geral. 4. contando. chamado registros. menor custo por bit.3 É possível organizar os dados através de uma hierarquia de memória de tal forma que a percentagem de acessos para cada nível sucessivamente mais baixo é substancialmente menor do que o do nível acima) Porque . maior capacidade.1 Acesso sequencial: A memória é organizada em unidades de dados. maior custo por bit. fisicamente fio-nos abordar mecanismo. referências de memória tendem a se agrupar. O número de linhas em cache: 4000 hex. b) Comprimento Endereço: 24.4 Em um sistema de cache. Cada bloco contém 128 palavras. sete bits são necessários para especificar a palavra) TAGSETWORD Endereço de memória principal =847 4. mantendo instrução usado recentemente e valores de dados na memória cache e explorando uma hierarquia de cache) ANSWERS TOPROBLEMAS 4.5 Um campo identifica uma única palavra ou byte dentro de um bloco de memória principal) O outros dois campos especificam um dos blocos de memória principal) Esses dois campos são um campo de linha.1 O cache é dividida em 16 conjuntos de 4 linhas cada) Portanto. o comprimento tag é de 8 bits. que identifica um dos blocos que podem caber em que set. 4. 4. Por conseguinte.9 localidade espacial é geralmente explorada usando blocos de cache maiores e por incorporando mecanismos de pré-busca (ir buscar itens de uso antecipado) na lógica de controle de cache) Localidade temporal é explorada. o número de unidades endereçáveis: 224.7 Um campo identifica uma única palavra ou byte dentro de um bloco de memória principal) O outros dois campos especificam um dos blocos de memória principal) Esses dois campos são um campo de conjunto.2 Há um total de 8 kbytes/16 bytes = 512 linhas no cache) Assim o cache consiste em 256 conjuntos de duas linhas cada) Portanto 8 bits são necessários para identificar o conjunto número. Localidade temporal refere-se à tendência de um processador para acessar locais de memória que tenham sido usados recentemente) -19 - 4. e um campo de tag.6 Um campo de tag identifica um bloco de memória principal) Um campo de palavra identifica um única palavra ou byte dentro de um bloco de memória principal) 4. Tamanho da tag: 8. portanto. então o comprimento tag é 14 bits eo comprimento do campo palavra é de 4 bits. número de blocos na memória principal: 222. que identifica um dos conjuntos de cache. Portanto. Tamanho do bloco: 4. Portanto. Para a memória principal de 64 Mbyte. que identifica um dos blocos que podem caber em linha) 4. e um campo de tag.4 a) Comprimento Endereço: 24. TAGSETWORD Endereço de memória principal =1484 4. quatro bits são necessários para identificar o número de série) A memória principal consiste em 4K = 212 blocos. é necessário um endereço de 26 bits. cada bloco de memória principal pode ser mapeado em qualquer linha em um conjunto particular. mapeamento direto mapeia cada bloco de memória principal em apenas um possível linha de cache) Mapeamento associativo permite que cada bloco de memória principal para ser carregado em qualquer linha de cache) No set-associativa mapeamento. os dados na memória de nível superior não precisa de alterar muitas vezes para satisfazer os pedidos de acesso à memória) 4.3 Endereço111111666666BBBBBB a) Tag / Linha / Palavra11/444/166/1999/2BB/2EEE/3 b) Tag / Palavra44444/1199999/22EEEEE / 3 c) Tag / Set / Palavra22/444/1CC/1999/2177/EEE/3 4. . número de blocos na memória principal: 222. o cache é dividido em uma série de conjuntos de linhas de cache. o número de unidades endereçáveis: 224. Tamanho do bloco: 4. os comprimentos de tag conjunto mais deve ser de 12 bits e.8 Localidade espacial se refere à tendência de execução de envolver um número de memória locais que estão agrupados. A memória principal é constituída por 64-Mbyte/16 bytes = 222 blocos. tamanho da tag: 22. O número de linhas em cache: 214. os comprimentos de tag conjunto mais deve ser de 22 bits. que identifica uma das linhas do cache. o número de unidades endereçáveis: 224.c) Comprimento Endereço: 24. Tamanho do bloco: 4. número de sets: 213. 4. Tamanho da tag: 9. número de linhas no cache: 214.5Tamanho do bloco quadro = 16 bytes = 4 doublewords 16 KBytes Número de imagens de blocos em cache = 16 Bytes 1024 Número de conjuntos = Número de imagens de blocos Associatividade -20 - 1024 256 conjuntos 4 20 bits84 EtiquetaConjuntoCompensar 8 Defina 0 Conjunto 1 • • • Definir 255 20 Tag (20) Comp1 Comp2 . número de blocos na memória principal: 222. O número de linhas em conjunto: 2. doubleword 2: 8F8 A B C D E(1000)(1111)(1000) Defina = 143 -21 - .COMP3 Comp4 Acertar 4 4 DW Conjunto 0 Conjunto 1 • • • Conjunto 255 Exemplo: doubleword de localização ABCDE8F8 é mapeado sobre: conjunto 143. qualquer linha. 7 Um endereço de 32 bits consiste em um campo de 21 bits tag. Cada conjunto no cache inclui 3 bits LRU e quatro linhas. ranhura 6. 5 bits média = Número de linha. Cada linha é composta por 4 palavras de 32 bits. 4.4. ranhura 21 c) Bytes com endereços 0001 1010 0001 1000 através de 0001 1010 0001 1111 são armazenado no cache d)256 bytes e) Porque dois itens com dois endereços de memória diferentes podem ser armazenadas no mesmo lugar no cache) O tag é usada para distinguir entre eles. um campo de conjunto de 7 bits. slot 3. 3 bits mais à direita = byte número b) slot 3. -22 - .6 12 bits10 bits 4. e uma palavra de 4 bits campo. um bit válido.8 a)8 bits mais à esquerda = tag. e uma tag 21-bit. address = 18 bits. Como pode ser visto para N = 4. um total de seis bits são necessários. sI contador é definido como 0 e todos os outros contadores são incrementado por 1.15): Quando uma linha tem de ser substituído. L2. O algoritmo de substituição funciona da seguinte forma (Figura 4. o cache irá determinar qual o par de blocos foi menos utilizado recentemente e marcá-lo para a substituição.B0 ← 0. memória principal = 64K × 32 bits = 256 Kbytes = 218 bytes. para um conjunto de blocos de N.9a)Os bits são definidos de acordo com as seguintes regras com cada acesso ao conjunto: 1.4) R (2. .Se o acesso é L0. número de conjuntos S = C / K = 512.Se o acesso é L2 ou L3. Em seguida. a linha usada menos recentemente de tudo é L0.10 Tamanho do bloco = 4 palavras = 2. que requer apenas N (N-1) / 2 bits. L3).4) R (3. a coluna pode ser vazio). temos o seguinte esquema: R (1.B2 ← 0. O esquema funciona como se segue) Considere uma matriz R com N linhas e N colunas. tamanho do cache = 4048 palavras. L1 e L2. 4. c = 1024 quadros bloco. Quando uma falta ocorre eo conjunto é não completa. todos os contadores com valores mais baixos do que o valor original para o bloco acessados são incrementados por 1.B1 ← 1. L1. Em geral. 5. b) A 80486 divide as quatro linhas de um conjunto em dois pares (L0. o sI contador é definido como 0 e todos os outros contadores são incrementados por 1. a linha pode estar vazia) e para os quais a coluna é inteiramente 1 (para todos os bits na coluna. L3) eo membro usado menos recentemente de que o par é L2. o bloco com o valor do contador 3 passa.Se o acesso é L1.2)R (1. -23 - 4. I) é definido como 0. a abordagem acima requer pedaços 2N. Quando ocorre uma falta eo jogo está cheio. No entanto.Se o acesso é L3. A regime mais eficaz pode ser concebido. um novo bloco é trazido.B1 ← 0. o cache irá primeiro determinar se o uso mais recente foi de L0 e L1 ou L2 e L3.3)R (2. linha i de R (I. Quando o cache é inicializado ou liberado todos os 128 conjuntos de três bits LRU estão definidas para zero. Considere o caso em que o fim da utilização era: L0.B2 ← 1. o contador para esse bloco é definido como 0. 2. a seleção final apenas aproxima LRU. A par usado menos recentemente é (L2.4.B0 ← 1. Esta abordagem necessita de um total de 8 bits. Bocado B0 é usado para selecionar o par que tem sido usado menos recentemente) Dentro de cada par. doublewords associatividade K = 2. 6. sem contar a diagonal) Para N = 4. e tomar a parte triangular superior direito da matriz.3)R (1.Se o acesso é L2. L3. Dependendo do histórico de acessos. um bit é usado para determinar qual membro do par foi usado menos recentemente) No entanto.4) Quando a linha que é referenciado. e coluna I do R (J. O bloco LRU é aquele para o qual a linha está inteiramente igual a 0 (para os bits na linha. 3. o algoritmo irá sempre escolher a entrada usada menos recentemente ou a entrada segundo usado menos recentemente) c) A maneira mais simples de implementar verdadeiras LRU para um conjunto de quatro linhas é associar um contador de dois bits com cada linha) Quando um acesso ocorre.Se o acesso é L0 ou L1. que é selecionado para substituição. J) é definido como 1. tamanho do Tag = 20 bits. linha = 6 bits. número de conjuntos na cache = 2d= 217. Tamanho da tag = 9 bits. O número de linhas na cache = k × 2d = 219. número de blocos na principal memória = 2s = 226. O número de linhasem cache = indeterminado. número de blocos na principal memória = 2s = 226.12 a) Porque o tamanho do bloco é de 16 bytes e o tamanho de palavra é um byte. b)Formato de endereço: Tag = 26 bits. tamanho da tag = 26 bits. word = 6 bits Número de unidades endereçáveis = 2s + w = 232bytes. Consequentemente. set = 17 bits. isto significa que existe são 16 palavras por bloco.Bits da palavra (6 bits)(9)(2)(1) EtiquetaConjunto palavra select Tag (6)4 palavras Defina 0 Comparar •0• •• •• Comparar 1 Definir 511 4. a palavra = 6 bits Defina 0 (8 palavras) Definir 511 (8 palavras) Número de unidades endereçáveis = 2s + w = 232 bytes. Cada linha de cache / ranhura corresponde a um bloco de memória) Isso significa que cada slot cache contém 16 bytes. O número de linhas em cache de 2r = 26 = 64. precisamos de 12 bits (212 = 4096). 4. c) Formato Endereço: tag = 9 bits. O número de linhas no conjunto = k = 4. dada a 20 bits (1 Mbyte) principal endereço de memória: Bits 0-3 indicam a palavra offset (4 bits) Bits 4-15 indicam o compartimento cache (12 bits) Bits 16-19 indicam a tag (restantes bits) F0010 = 1111 0000 0000 0001 0000 Palavra offset = 0000 = 0 Slot = 0000 0000 0001 = 001 Tag = 1111 = F 01234 = 0000 0001 0010 0011 0100 Palavra offset = 0100 = 4 Slot = 0001 0010 0011 = 123 -24 - . Vamos precisar de 4 bits para indicar que a palavra que queremos fora de um bloco. o número de blocos na principal memória = 2s = 226. Se o cache é 64 Kbytes então 64Kbytes/16 = 4096 slots de cache) Para responder a estas 4096 vagas de cache.11 a)Formato Endereço: Tag = 20 bits. word = 6 bits Número de unidades endereçáveis = 2s + w = 232 bytes. respectivamente) Quando um sucesso ocorre. 1.Tag = 0000 = 0 CABBE = 1100 1010 1011 1011 1110 Compensar Palavra = 1110 = E Slot = 1010 1011 1011 = ABB Tag = 1100 = C b) Precisamos escolher qualquer endereço onde o slot é o mesmo. o contador de o bloco que é referenciado é definido como 0.048 conjuntos de que precisamos 11 bits (211 = 2048). Já não precisa identificar qual slot de um bloco de memória pode mapear para. Os outros contadores no conjunto com os valores -25 - inicialmente menores do que o contador de referência são incrementados por 1. Quando uma falta ocorre.096 vagas de cache) Se implementarmos uma de duas vias cache associativo. o deslocamento da palavra) é diferente) Aqui estão dois exemplos em que o slot é 1111 1111 1111 Endereço 1: Compensar Palavra = 1111 = Slot de 1111 1111 1111 Tag = 0000 Endereço = 0FFFF Endereço 2: Compensar Palavra = 0001 = Slot de 1111 1111 1111 Tag = 0011 Endereço = 3FFF1 c)Com um cache completamente associativo. Quando abordamos um conjunto. Todos os outros contadores no conjunto são . nós vai pesquisar simultaneamente os dois slots de cache para ver se a pessoa tem uma marca que corresponda o alvo. onde cada conjunto tem dois slots. o bloco no conjunto cujo valor do contador é 3 passa e sI contador definido como 0. e 3. Para abordar estas 2. o cache é dividido em um TAG e um WORDOFFSET campo. O deslocamento palavra deve ser de 4bits para endereçar cada palavra no bloco de 16 palavras. 2. mas a tag (e opcionalmente. temos 4. então isso significa que nós colocamos dois slots de cache em um único conjunto. Inicialmente. Nosso endereço de 20 bits agora está dividido da seguinte forma: Bits 0-3 indicam a palavra compensar Bits 4-14 indicar o conjunto de cache Bits 15-20 indicam a tag F0010 = 1111 0000 0000 0001 0000 Palavra offset = 0000 = 0 Cache Set = 000 0000 0001 = 001 Tag = 11110 = 1 1110 = 1E CABBE = 1100 1010 1011 1011 1110 Compensar Palavra = 1110 = E Cache Set = 010 1011 1011 = 2BB Tag = 11001 = 1 1001 = 19 4. arbitrariamente definir os quatro valores de 0. os contadores restantes permanecem inalterados. Isso deixa 16 bits restantes para a marca) F0010 Palavra offset = 0h Tag = F001h CABBE Compensar Palavra = Eh Tag = CABBh d) Como calculado em parte um. Nosso esconderijo passou a deter 4096/2 = 2.13 Associar um contador de 2 bits com cada Ts =umTI H dos I quatro blocos em um conjunto. porque um bloco pode serem qualquer slot e vamos procurar cada cache ranhura em paralelo.048 sets. e assim por diante. em seguida. num bloco de dados são transferidos de M2 para M1 e. o nível de memória 2. o nível de memória i SI= Tamanho do nível de memória i TI= Tempo para acessar uma palavra em nível de memória i HI = Probabilidade de que uma palavra está na memória i e em nenhuma memória de nível superior BI= Tempo para transferir um bloco de dados de nível de memória (i + 1) para o nível de memória i Vamos cache de estar no nível de memória 1. 4.15a) Uma referência para a primeira instrução é imediatamente seguido por uma referência para o segundo. memória principal. Em seguida.16Definir CI = Custo médio por bit.14 Escrevendo para trás uma linha leva 30 + (7 × 5) = 65 ns. Assim: T2 = B1 + T1 -26 - Mais T3 = B2 + T2 = B1 + B2 + T1 Generalizando: I-1 TI=ΣBj T1 j 1 . Começamos com o resultado da teoria da probabilidade de que: N Valor Esperado de x = ΣiPr x 1 I 1 Podemos escrever: N Σ I 1 Precisamos perceber que se uma palavra está em M1 (cache). para um total de doses de N de memória) Depois N ΣCISI I 1 Cs N ΣSI I 1 A derivação de Ts é mais complicado. 4. pelo menos uma vez está escrito mais de 2.incrementado por 1. tempo suficiente para 2.17 vezes. o cache write-back será mais eficiente) 4. lê-se imediatamente) Se está em M2 mas não M1.17 single-palavra operações de memória) Se a linha média que está escrito. b) Os dez acessos a [i] dentro do interior para o laço que ocorrem dentro de um curto intervalo de tempo. ler. Assim NI-1N =ΣΣ BjHI T1ΣHI Ts I 2j 1I 1 N MasΣHI 1 I 1 Finalmente NI-1 =ΣΣ BjHI T1 Ts I 2j 1 4. blocos de 16 a 31 são lidas em conjuntos de 0 a 15. as substituições serão necessárias em conjuntos de 0 a 3. cada conjunto é composto por 4 faixas horárias. blocos 32-47 são lidas em conjuntos de 0 a 15. o tempo para ler um bloco de 64 palavras a partir do cache se ele estiver ausente é 11T. não há substituição necessária através do bloco 63.18a)Acesso 631 Senhorita Bloco 3 → Slot 3 Acesso 641 Senhorita Bloco 4 → Slot 0 Acesso 65-706 Acessos Acesso 151 Senhorita Bloco 0 → Slot 0Primeiro loop Acesso 161 Senhorita Bloco 1 → Slot 1 Acesso 17-3115 Acessos Acesso 321 Senhorita Bloco 2 → Slot 2 Acesso 801 Senhorita Bloco 5 → Slot 1 Acesso 81-9515 Acessos Acesso 151 HitSegundo loop Acesso 161 Senhorita Bloco 1 → Slot 1 Acesso 17-3115 hits Acesso 321 Hit Acesso 801 Senhorita Bloco 5 → Slot 1 Acesso 81-9515 hits . mas todos os blocos em conjuntos de 4 a 15 permanecer intacta) Assim. cada slot consiste de 64 palavras. então só pode estar pronto em primeiro transferir a palavra da memória principal para a cache e.15 -27 - 4.17 A memória principal é constituída por 512 blocos de 64 palavras. em seguida. Podemos agora expressar o factor de melhoria da seguinte forma) Com sem cache Fetch tempo = (10 passes) (68 blocos / pass) (10T/block) = 6800T com cache Fetch tempo=(68) (11T)primeira passagem + (9) (48) (T) + (9) (20) (11T)outros passes =3160T Melhoria = 3160T= 2. 48 blocos estão livres. a leitura do cache) Assim. o bloco 0 a 15 são lidas em conjuntos de 0 a 15. blocos 48- 63 são lidas em conjuntos de 0 a 15. e os restantes 20 deve ler dentro Seja T o tempo para ler 64 palavras a partir do cache) Então 10T é o tempo para ler 64 palavras da memória principal) Se uma palavra não está no cache. Os últimos quatro grupos de blocos envolve uma substituição. em cada passagem sucessiva. e os blocos 64-67 são lidos em conjuntos de 0 a 3. Como cada conjunto tem 4 slots. Em cada passagem sucessiva. Locais de 0 a 4351 no principal memória ocupam blocos de 0 a 67. Cache é composto por 16 conjuntos. Na primeira seqüência de busca. 80-950 Misses34 Acessos Quinto ciclo 15-32. 80-950 Misses34 Acessos Décimo malha 15-32. 80-952 Misses32 Acessos Quinto ciclo 15-32.. 80-952 Misses32 Acessos Sexto malha 15-32. 80-952 Misses32 Acessos Laço Nona 15-32. 80-952 Misses32 Acessos Décimo malha 15-32. 80-950 Misses34 Acessos Sexto malha 15-32.983 . continua a Décima loop Para as linhas 63-702 Misses6 Acessos Primeiro ciclo 15-32.. Todos os hits para os próximos oito iterações -28 - Para as linhas 63-702 Misses6 Acessos Primeiro ciclo 15-32.. 80-950 Misses34 Acessos Total = 6 Misses 342 Acessos Hit Ratio = 342/348 = 0. 80-950 Misses34 Hits Quarta laço 15-32.931 b)Acesso 631 Senhorita Bloco 3 → Conjunto 1 Slot 2 Acesso 641 Senhorita Bloco 4 → Defina 0 Slot 0 Acesso 65-706 Acessos Acesso 151 Senhorita Bloco 0 → Defina 0 Slot 1Primeiro loop Acesso 161 Senhorita Bloco 1 → Conjunto 1 Slot 3 Acesso 17-3115 Acessos Acesso 321 Senhorita Bloco 2 → Defina 0 Slot 0 Acesso 801 Senhorita Bloco 5 → Conjunto 1 Slot 2 Acesso 81-9515 Acessos Acesso 151 HitSegundo loop Acesso 16-3116 Acessos Acesso 321 Hit Acesso 80-9516 Acessos . 80-950 Misses34 Acessos Laço Oitava 15-32. 80-950 Misses34 Acessos Sétimo malha 15-32. 80-952 Misses32 Acessos Laço Oitava 15-32. 80-950 Misses34 Acessos Laço Nona 15-32.Acesso 151 HitTerceiro Circuito Acesso 161 Senhorita Bloco 1 → Slot 1 Acesso 17-3115 hits Acesso 321 Hit Acesso 801 Senhorita Bloco 5 → Slot 1 Acesso 81-9515 hits Acesso 151 HitQuarta loop Padrão . 80-952 Misses32 Acessos Total:24 Misses324 Acessos Hit Ratio = 324/348 = 0. 80-954 Misses30 Acessos Segundo malha 15-32.. 80-954 Misses30 Acessos Segundo malha 15-32. 80-950 Misses34 Acessos Terceiro ciclo 15-32.80-952 Misses32 Acessos Quarta laço 15-32. 80-952 Misses32 Acessos Terceiro ciclo 15-32. 80-952 Misses32 Acessos Sétimo malha 15-32. 05) T2 > 1.5) + (0.875 ns ao abrigo do regime revisto.H) × (T + T ) = (0.1 × T1 = T1 + (1 .03) (210) = 8.725 ns s 1 1 2 4. torna-se mais importante para aumentar a taxa de acerto.H) × (T + T ) = (0.H) T2 (0.21a)Primeiro.22 Há três casos a considerar: Localização da palavra referenciada No esconderijo Não em cache.1) (0.5 + 50 + (31) (5) + 2.4.5 ns são necessários ler a palavra solicitada) = 2.5 + 50 + (15) (5) + 2. devemos ter 1 + (0.5 = 210 ns Tsenhorita e T = H × T + (1 . usando a Equação (4.0660 + 20 = 80 .1). A condição é T2 > 50 b)À medida que o tempo de acesso quando há uma falta de esconderijo se tornam maiores. um adicional de 2.95) (2.1): 1.5 ns são necessários para determinar que um cache miss ocorre) Em seguida.5 + (0.97) (2.6) = 0. 2.920 (0.1).05) T2 Sob as novas condições. o tempo médio de acesso é T1 + (1 . Sob as condições iniciais.1). utilizando a equação (4.H) T2 = 1 + (0.H) (1200) H = 1190/1200 4.5 = 130 ns Tsenhorita b)O valor de T senhorita na parte (a) é equivalente à quantidade (T1 + T2) na Equação (4.5 + (0. temos: Ts 1 1 2 -29 - = 2.03) T2 Para melhorar o desempenho.19a)Custo = Cm × 8 × 106 = 8 × 103¢ = $ 80 b)Custo = Cc × 8 × 106 = 8 × 104¢ = $ 800 c)A partir da Equação (4. mas em principal memória Não em cache ou a memória principal ProbabilidadeO tempo total para acesso em ns 0. o linha desejada é lido no cache) Em seguida. 4.20a)Sob as condições iniciais.03) T2 Resolvendo para T2.05) (130) = 8. o tempo médio de acesso é = H × T + (1 .1) (100) = (1 .5) + (0. o tempo médio de acesso é 1. 1 × 300) = 138 ns.08 → 0.6 → 0. -30 - . A taxa de tráfego: Escrever através = 0.7232 byte / instrução Escrever de volta = 0.gerar palavras de 32 tráfego.2) × 8 = 145. Em média. a instrução média leva 1000 ns para buscar e executar. Nesse ritmo.12608 bytes / instrução Para write-back: (14 + 4. É evidente que o desempenho degrada) No entanto. note que.992 bytes / instrução Para write-back: (10 + 3) × 8 = 104 → 0.04 ×8 = 40. Isto reduz o tempo de espera para outros solicitantes de ônibus. as referências de leitura resultar em (0. o total tráfego é (6 + 1. uma única palavra é escritapara trás. uma linha de memória deve ser lido. Para escrever acidentes. Em média.8 desses acidentes exigem uma gravação de linha antes de uma leitura de linha) Assim. 4. de modo a utilização de ônibus é de 0.104 bytes / instrução c) Para write-through: [(0. portanto.(0. O tráfego total: 72. Para uma taxa de perda superior. tais como dispositivos DMA e outros microprocessadores. a média de tempo de acesso aumenta em apenas 12 ns.32 palavras físicas de tráfego.9) (20) + (0.4 palavras.06) (80) + (0.9 × 120) + (0.05) × 168× 8] + 32 = 99. isto cria 200 referências de cache (168 referências de leitura e 32 referências de escrita).03) × 168 =5.9 × 120) + (0.25a)Para um processador de 1 MIPS. O comprimento efectivo de um ciclo de memória é (0.04) (12000080) = 480.2 → 0.624 bytes / instrução b)Para write-through: [(0.0412ms + 60 + 20 = 12000080 Assim.1456 bytes / instrução d) A taxa de perda de 5% é cerca de um ponto de cruzamento.45. write-through é superior. o tempo médio de acesso seriam: Médio = (0. write-back é superior. Ônibus utilização é agora (150 + 300) / 1000 = 0. embora o tempo de acesso à memória aumenta em 120 ns.026 ns 4. Sob write-through.23a)Considerar a execução de instruções 100.1) (0.07) × 168 × 8] = + 32 126. com 100instruções de criar 200 referências de cache e. portanto.04 ler erra) Para cada falta ler. um acesso ao cache leva 120 ns e uma memória principal acesso leva 180 ns. Para uma taxa de perder inferior.4) = 0. 4. Para escrever de volta. gerando 5. o tráfego de memória é aproximadamente igual para as duas estratégias.32 palavras.6 b) Por apenas metade das instruções deve ser utilizado o ônibus para busca de instrução.8) × 8 = 62. em média de 1.1 × 180) = 126 ns.24a)Um ciclo de clock é igual a 60 ns. 6 erros de cache) Supondo que 30% das linhas são sujos. b)O cálculo é agora (0. uma instrução utiliza dois ciclos do bus para um total de 600 ns. 26 a) Tuma = Tc + (1 .3SRAM é usada para a memória cache (dentro e fora do chip).e é usada para o DRAM memória principal) 5.H1) Tc2] + (1 . um valor limiar determina se o carga é interpretado como 1 ou 0.H) Tb + W (Tm .132 ciclos de clock) -31 - CAPÍTULO 5 IERCADO MEMÓRIA RESPOSTAS PARA PERGUNTAS 5.16 ciclos de clock) Para uma linha tamanho de quatro palavras ea transferência nonburst. pois eles são capazes de ser lido para sentir o estado.28 a) ciclos pena perder = 1 + 4 = 5 relógio b) pena perder = 4 × (1 + 4) = 20 ciclos de relógio c) pena perder = pena perder por uma palavra + 3 = 8 ciclos de clock) 4.27 Tuma = [Tc1 + (1 . CAS = endereço de coluna.2 (1) A memória em que as palavras individuais de memória são acessados diretamente através de fio-nos abordar a lógica) (2) principal de memória semicondutor.D4 = linhas de dados.1 Eles apresentam dois estados estáveis (ou semi-estável).4.032 x 5 = 0. Além disso. o capacitor pode armazenar qualquer valor de carga dentro de uma faixa. 5.4SRAM geralmente têm tempos de acesso mais rápidas do que as DRAM. mesas de função. selecione:. Uma memória flash inteira pode ser apagada em um ou alguns segundos. para definir o estado. Uma célula SRAM é um dispositivo digital. é possível apagar apenas blocos de memória em vez de um chip inteiro. média pena perder = 0. média pena perder = 0.8 Linhas A1 = Endereço . em que os valores binários são armazenados usando flip-flop configurações lógica-gate tradicionais.22 ciclos de clock) Para um tamanho de linha de 4 palavras ea transferência explosão. pois eles são capazes de ser escrito em (pelo menos uma vez). A memória flash é intermediário entre EPROM e EEPROM em termos de custo e funcionalidade) Como EEPROM. todo o armazenamento As células devem ser eliminados ao mesmo estado inicial pela exposição do chip empacotado à radiação ultravioleta) Erasure é realizada por brilhar uma luz ultravioleta intensa através de uma janela que é projetado para o chip de memória) EEPROM é uma memória de leitura. 5.29 A pena média é igual a perder os tempos de pena perder a taxa de falta) Para uma linha tamanho de uma palavra. memória flash usa uma tecnologia de apagamento elétrico.7 EPROM é lido e escrito eletricamente. tanto para ler os dados a partir da memória e para escrever novos dados para a memória rápida e facilmente) 5. 5. antes de uma operação de gravação.H2) Tm 4.A0:. memória unidade de controle microprogramada queria funções.DRAM são menos caro e mais pequeno do que SRAM. e assim atinge a alta densidade (em comparação com EEPROM) de EPROM. 5.011 x 20 = 0. memória flash utiliza apenas um transistor por bit.5 Uma célula de DRAM é essencialmente um dispositivo analógico usando um capacitor.6 Sub-rotinas de biblioteca para freqüência. principalmente. NC: = .011 x 8 = 0. No entanto.H) Tb + Wb(1 . 5.H) Tb = Tc + (1 . em que é possível. programas do sistema. média pena perder = 0. que pode ser escrito em qualquer hora sem apagar conteúdos anteriores. o que é muito mais rápido do que EPROM.Tc) b) Tuma = Tc + (1 . apenas o byte ou bytes abordados são atualizados.H) (1 + Wb) Tb 4. D1 . a memória flash não fornece em nível de byte rasura) Tal como EPROM. que podem ser utilizados para representar binário 1 e 0. Não é necessária nenhuma correção.0096.6 × 10-6 s) / 10-3 s = 0. os dados de trocas SDRAM com o processador sincronizado com um sinal de relógio externo e em execução no total velocidade do barramento do processador / memória. que é de 10 Mbps.4 A22 A21 A20 A19 A0 S0S1 Decoder S2 S3 S4 S5 S6 S7 Chip selectChip select 1 Mb1 Mb . então o valor numérico da Syndroma indica a posição do bit de dados de erro. b) 320 Mbps = 40 MB / s. Este bit de dados é invertido para correção.1 A organização de 1 bit-por-chip tem várias vantagens. sem impor estados de espera) ANSWERS TO PROBLEMAS 5.não conectar. que é de aproximadamente 1%.3 a) O tempo de ciclo da memória = 60 + 40 = 100 ns. ROMs são muito menores do que RAM e é muitas vezes possível conseguir uma ROM inteiro em uma ou duas fichas. -32 - 5. que é assíncrona. A fração de tempo dedicado a atualização da memória é (9. OE: saída habilitar. uma maior densidade de bits pode ser alcançado por um determinado pacote tamanho. Se o síndroma contém todos 0s. em seguida ocorrI um erro num dos 4 bits de verificação. Além disso. Se o síndrome contém mais de um bit definido como 1. incluindo o bit de paridade. o tempo dedicado para atualizar é 64× 150 ns = 9600 ns.11 Ao contrário da DRAM tradicional. RAS = endereço de linha. Vcc: = fonte de tensão. nenhuma Foi detectado um erro.2 Em 1 ms. se existe ou não um corresponder em que a posição do bit para as duas entradas. selecione:. se um múltiplo-bits por chip organização é usado. Cada bit da síndrome é 0 ou 1 de acordo com. 5. 5.9 Um pouco anexado a uma matriz de dígitos binários para fazer a soma de todos os binário dígitos. 5. Se o síndroma contém um e apenas um bit 1. 5. 5. A taxa de dados máxima é de 1 bit a cada 100 ns. Ele requer menos pinos o pacote (apenas uma linha de dados para fora) e. portanto. é um tanto mais fiável porque tem apenas um condutor de saída) Esses benefícios têm levado ao uso tradicional de 1-bit-per-chip de RAM. Isso economiza no custo e é razão suficiente para adoptar que organização.10 A síndrome é criado pelo XOR do código em uma palavra com uma versão calculado do referido código. Na maioria dos casos. sempre ímpar (paridade ímpar) ou até mesmo sempre (mesmo paridade). Vss: = terra) WE: escrever permitir. o tempo de acesso deve ser não mais do que 240-125 = 115 ns. RAS vai ativo 50 ns depois. 5. Marcar o início de T1como 0. Assim. ou o tempo de 125.Chip selectChip select 1 Mb1 Mb Chip selectChip select 1 Mb1 Mb Chip selectChip select 1 Mb1 Mb 5. b)Um único estado de espera vai aumentar a exigência de tempo de acesso a 115 + 100 = 215 ns. 5.5a)A duração de um ciclo de relógio é de 100 ns. b)Um contador de 8 bits é necessária para contar 256 linhas (28 = 256). D0) palavra 0 = 1111 (escrito em posição 0 durante um pulso) palavra 1 = 1110 (escrito em posição 0 durante pulso b) palavra 2 = 1101 (escrito em posição 0 durante pulso c) palavra 3 = 1100 (escrito em posição 0 durante pulso d) palavra 4 = 1011 (escrito em posição 0 durante pulso e) .6a)O período de atualização a partir de uma linha para outra não deve ser maior do que 4000/256 = 15. D1. Dados deve tornar-se disponível pelas DRAM em tempo de 300-60 = 240.7a) pulsar a = writepulso f = writepulso k = leitura pulso b = writepulso g = saídas de loja-disable pulso c = writepulso h = leitura pulso d = writepulso i = leitura pulso e = writepulso j = leitura -34 - pulso l = ler pulso m = leitura pulso n = saídas de loja-disable b) Os dados são lidos em via pinos (D3. D2. Isto pode ser facilmente atendidas por DRAM com tempos de acesso de 150 ns.Address tempo Ativar retorna para uma baixa de 75.625 mS. a recebI resultados de blocos na tabela a seguir: Posição121110987654321 BitsD8D7D6D5C8D4D3D2C4D1C2C1 . 5. Levará 32 DRAM para a construção do memória (32 × 256 Kb = 8 Mb). O1. como mostrado na Figura 5.88192/64 = 128 fichas. Em seguida. O0) pulso h:1111 (localização ler 0) pulso i:1110 (localização ler 1) pulso j:1101 (localização leia 2) pulso k:1100 (localização ler 3) pulso l:1011 (localização ler 4) pulso m: 1010 (leia localização 5) 5. A partir disso. O2. Agora.palavra 5 = 1010 (escrito em posição 0 durante pulso f) palavra 6 = aleatório (não escrevi para este local 0) c) Ligações de saída são (O3. de modo que a palavra buscada é 001111001111.9 A memória total é de 1 megabyte = 8 megabits. dispostos em 8 linhas por 64 colunas: AB 36 A0 = GA0 = H -A Ak 10A9-A7A6-A1 Seção 0 (mesmo)Seção 1 (ímpar) Todos os zeros En 0 Fila 0• Fila 1• •• •112 • Linha 7 ••• 178 ••• ••• ••• ••• 113119120 ••• 915 •• 8 •• •• • • •Linhas 121127 8 Depende tipo de8 processador 5.10. suponha que o único erro é em C8.625 horas = 22 meses. temos um MTBF = 109/ 64.10 A palavra armazenada é 001101001111.000 = 15. A taxa de falha composto é de 2000 × 32 = 64000 FITS. 10. 5 e 3 Assim. 4. 4. 5.1. O layout de bits de dados e bits de verificação: Bit PosiçãoPosição NúmeroVerifique BitsBits de dados 2110101M16 2010100M15 1910011M14 1810010M13 1710001M12 1610000C16 1501111M11 1401110M10 1301101M9 1201100M8 .14 Como a Tabela 5.12 O Hamming Palavra inicialmente calculado foi: número de bits:121110987654321 001101001111 Fazendo um exclusivo-OR de 0111 e 1101 os rendimentos 1010 indicando um erro no bit 10 da Hamming Word) Assim.13 Necessidade K bits de verificação de tal forma que 1024 + K ≤ 2K . 5. 9. 5 e Verificar o bit 2 calculada por valores em números de bits: 11. Verifique o bit 8 calculado valores em números de bits: 12.11 Os bits de dados com o valor 1 se encontrarem em posições de bit 12. -36 - 5. 11. 7 . 11. 7. que é pouco verificação C8. os bits de verificação são: 0 0 1 0 5. 6.2 indica. O valor mínimo de K que satisfaz esta condição é 11. 7. 10 e 9 Verificar o bit 4 calculada por valores em números de bits: 12. calculado por valores em números de bits: 11. 5 bits de verificação são necessárias para um código SEC para os dados de 16 bits palavras. 5. 6 e 3 Verificar bit 1. a palavra de dados lidos da memória era 00011001. e 1: Posição121110987654321 BitsD8D7D6D5C8D4D3D2C4D1C2C1 Bloco11000010 Códigos110010110101 Os bits de verificação são em número de bits 8. 2 e 1. 2.Bloco001111001111 Códigos1010100101110011 -35 - A verificação mordI cálculo após recepção: PosiçãoCódigo Hamming1111 101010 91001 70111 30011 XOR = síndrome1000 O resultado diferente de zero detecta e erro e indica que o erro está na posição do bit 8. C8 = 1.3 A cabeça de leitura é composto por um magneto (MR) Sensor parcialmente blindado. Invertendo o direcção da corrente inverte o sentido da magnetização do suporte de gravação. o código é C16 = 1. C 4 = 1. O Material de MR tem uma resistência elétrica que depende da direção do . Uma corrente eléctrica no fio induz um campo magnético através da abertura.1 Melhoria na uniformidade da superfície da película magnética para aumentar disco confiabilidade) Uma redução significativa em defeitos gerais na superfície para ajudar a reduzir leitura / gravação erros.1101011M7 1001010M6 901001M5 801000C8 700111M4 600110M3 500101M2 400100C4 300011M1 200010C2 100001C1 As equações são calculados como antes. que é o bit de dados 4. Os pulsos são enviados para a cabeça de gravação. que por sua vez magnetiza uma pequena área do suporte de gravação. C1 = M1 ⊕ M2 ⊕ M4 ⊕ M5 ⊕ M7 ⊕ M9 ⊕ M11 ⊕ M12 ⊕ M14 ⊕ M16. -37 - CAPÍTULO 6 EXternal MEMÓRIA RESPOSTAS PARA PERGUNTAS 6. Melhor rigidez para reduzir dinâmicas de disco. C2 = 1. C8 = 1.2 O mecanismo de gravação é baseada no facto de que a energia eléctrica que flui através de uma bobina produz um campo magnético. C1 = 0. Se ocorrer um erro de bits de dados 4: C16 = 1. 6. Maior capacidade de resistir a choques e dano 6. Para a palavra 0101000000111001. por exemplo. C4 = 0. Comparando os dois: C16 C8 C4 C2 C1 11110 11001 00111 O resultado é um erro identificado na posição de bit 7. Capacidade para suportar alturas de mosca inferiores (descritos posteriormente). com padrões diferentes para as correntes positivas e negativas. e padrões magnéticos são gravados na superfície abaixo. C1 = 1. C2 = 0. cada disco membro opera de forma independente. estas tiras podem ser blocos físicos. a leitura ou gravação é então realizada como os movimentos do setor sob a cabeça.4 mM. Para níveis mais elevados. o tempo que leva para posicionar a cabeça na pista é conhecido como o tempo de busca) Uma vez que a faixa é selecionada. e os bits de paridade são armazenados na faixa correspondente no disco de paridade) 5: paridade distribuída bloco intercalados. no qual a superfície é dividida em várias zonas. 6. 6. Assim. semelhante ao nível 2. todos os discos membros participam na execução de todos os I/Opedido.14 1.11Para o nível RAID 1.6512 bytes. um simples bit de paridade é calculado para o conjunto de bits individuais na mesma posição em todos os discos de dados. um bit-por-bit de paridade é calculado através de tiras tiras em cada disco de dados correspondente.74 mM e uma distância mínima entre poços de 0. Um conjunto de tiras logicamente consecutivas que mapeia exactamente uma tira de cada membro da matriz é referida como uma listra) 6. Uma vez que a cabeça está em posição. o controlador de disco espera até que o setor apropriado gira para alinhar com a cabeça) O tempo que leva para o começando do setor a atingir a cabeça é conhecido como atraso rotacional) A soma o tempo de busca. chamado faixas. a capacidade de uma faixa e a latência rotacional ambos aumento para posições mais próximas do bordo exterior da o disco.834 um) O DVD utiliza um laser com comprimento de onda mais curto e atinge um espaçamento de malha 0. os dados são organizados no prato em um conjunto de anéis concêntricos. Bits são embalados de forma mais estreita em um DVD) O espaçamento entre as alças de uma espiral um CD é de 1. o disco de roda mais lentamente para acessos.9 0: não-redundante 1: espelhado. 6. O resultado destas duas melhorias é sobre um aumento . de modo que cada cabeça de disco está na mesma posição em cada disco. alterações de resistência são detectados como sinais de tensão. 6.10 O disco é dividido emde tiras. o número de bits por pista é constante) Um aumento na densidade é conseguida com gravação por zonas múltiplas.6 mM e a distância mínima entre os poços ao longo da espiral é 0. mas distribui as tiras de paridade em todos os discos. eo atraso de rotação é igual ao tempo de acesso. Em uma matriz de acesso independente. Os dados são transferidos para e do disco em sectores. um código de correção de erro é calculado através de bits em cada disco de dados correspondente. cada disco tem um disco espelho contendo o mesmo dados. o número de bits por pista é constante) A uma velocidade linear constante (CLV). 6. o conjunto de todas as faixas na mesma posição relativa no prato é referido como um cilindro. a redundância é conseguido por ter duas cópias idênticas de todos dados. setores. a redundância é alcançada através da utilização de erro de correcção códigos. mas em vez de um código de correção de erro. 6. 6: Block-intercalados dupla paridade distribuída. que é o tempo que leva para entrar em posição para ler ou escrever. Tipicamente. os eixos das unidades individuais estão sincronizados. em qualquer dado momento. e os bits de código são armazenadas nas posições de bits correspondentes por vários discos de paridade) 3: paridade Bit-intercalado.8 1.13 Para o sistema constante da velocidade angular (CAV). com zonas mais distantes do centro contendo mais bits do que as zonas mais próximas do centro. 6. dois cálculos de paridade diferentes são executados e armazenados em blocos separados em discos diferentes. 3.12 Em uma matriz de acesso paralelo. 2: redundante via código de Hamming.4 Para o sistema constante da velocidade angular (CAV). Capacidade do disco redundante é usado para armazenar informações de paridade. Os dados são distribuídos entre as unidades físicas de um array. 6.5 Em um disco magnético. de modo que os pedidos de E/S separados podem ser satisfeitos em paralelo. 4: paridade Bloco entrelaçado. perto da borda exterior do que para aqueles perto do centro. ou algum outra unidade) As tiras são mapeadas round robin para os membros da matriz consecutivos.magnetização do médio movendo sob ele) Por passagem de uma corrente através da Sensor de MR. o que é a parte de transferência de dados da operação e do tempo para a transferência é a tempo de transferência) -38 - 6. semelhante ao nível 4. que garante a recuperação de dados em caso de uma falha de disco.7 Em um sistema móvel-cabeça. se houver. Para um disco com vários pratos. 6. RAID é um conjunto de unidades de disco físicas vistos pelo sistema operacional como um único unidade lógica) 2. Nesta técnica.j sej . independente da posição actual no caminho]. a cerca de 4. os chefes são reposicionados para gravar uma nova pista. que é apenas 2 / N. O DVD-ROM pode ser de dois lados ao passo que os dados são gravados em apenas um lado de um CD) Isso traz a capacidade total de até 17 GB) 6. desta vez na direcção oposta) Esse processo continua.1• • •N .2 N . a probabilidade de uma busca de comprimento j é a probabilidade de que qualquer uma destas duas faixas é selecionado. a probabilidade incondicional de escolher qualquer pista particular é 1 / N. a faixa atual está tão perto de uma das extremidades do disco (pista 0 ou faixa N . Portanto. o primeiro conjunto de bits é registada ao longo de todo o comprimento da fita) Quando a extremidade da fita é alcançado.15 A técnica de gravação típico usado em fitas de série é referido como serpentina gravação. portanto. Então: N-1 Σ× Pr faixa atual é faixa t t 0 N-1 2K 1 N ΣPs K/t t 0 . então. e pelo ajustamento de foco. Podemos. os lasers em discos DVD pode ler cada uma das camadas separadamente) Esta técnica é quase o dobro da capacidade do disco.j• • •N .1 ou T ≥ N . de volta e para trás.1 a) Vamos usar a notação Ps [j / t] = Pr [procurar de comprimento j quando a cabeça está atualmente posicionado sobre o controle t].5 GB) A reflectividade inferior da segunda camada limita a sua capacidade de armazenamento de modo a que uma duplicação completa não é conseguida) -39 - 3.1) que apenas uma faixa é exatamente j faixas de distância) No segundo caso. até que a fita está cheia) ANSWERS TO PROBLEMAS 6. afirmar: 1 Ps[J] / t Ps[J] / t N 2 N set ≤ j . quando os dados estão sendo gravados.1 <t <N . b)Vamos Ps [K] = Pr [procurar de comprimento K. e.1Vai ser útil para manter a seguinte representação das faixas de N de um disco em mente: 01• • •j . O DVD emprega uma segunda camada de poços e as terras na parte superior da primeira camada de um DVD de camada dupla tem uma camada semireflective em cima da camada reflectora.j No primeiro caso.7 GB) 2.de sete vezes em capacidade. há duas faixas que são exatamente as faixas j longe da pista t. Reconhecer que cada uma das N faixas é igualmente susceptível de ser solicitado. a cerca de 8. ea fita é novamente gravado em todo o sI comprimento. N-1 3N N -1 2N -1 3N N2 -1 3N d)Isto segue diretamente a partir da última equação. 6.2K) das faixas. sabemos que Ps [K / t] assume o valor de 1 / N para 2K do faixas.Da parte (a).N-1 .2tA tS 1 ntA tS 1 n 2rrN2rrN 6. Assim EK K × PSK 1 Ps K N 2 2 N NN2K K 2 N-2K 2 N2 N-NK2 -40 - c) N -1N-1N-1N-1 2K2 Σ Σ-2K22 2ΣK-ΣK2 2K 0NNNK 0N K 0K 0 N-1 N2 N-1 N 2N -1 2 N2 2N-1 .N-1 N263N . eo valor 2 / N para (N .3a)Capacidade = 8 × 512 × 64 × 1 KB = 256 MB . 52 + 16. ou cerca de 154 ms.7 ms.000 / 360 = 16.6) = 133. em .7 + 2. assim 5 MB requer exatamente 10 cilindros. 6. c) Com 600 setores por trilha eo tempo para uma revolução completa de 8. os setores podem ser escritos de volta em uma seqüência diferente da seqüência de leitura) Assim. Isso requer 75. então os cálculos são simplificados. portanto.7 ms. rastrear o acesso tempo.5)+ (8.3 ms para ler todos os 8 faixas em um cilindro. atraso rotacional e tempo de gravação setor.08 + 16.7 Depende da natureza do padrão de pedido de I / O. e tão somente o tempo de atraso de rotação é contada) Tempo de transferência Total = 0.5 Cada setor pode conter 4 registros lógicos. a cabeça se move últimos três sectores.6 a) O tempo é constituído pelos seguintes componentes: setor ler tempo. que é o tempo de acesso da via para o caminho certo.24 ms.333 ms. Então. 6. há uma revolução a cada 8. Isto é de 16. e mais de um quarto do sector. Se a faixa é pedido trilha 0.000 / 96 = 782 faixas. o tempo médio de busca é.3) = 1425. a gravação pode começar com setor 5 da faixa 9. se apenas um processo único está fazendo I/Oe só está fazendo um grande I/Oem um momento. Este setor é atingido 0.5 faixas. Entre a leitura ea escrita há um tempo o movimento da cabeça de 2 ms para passar de faixa 8 para rastrear 9.333 ms.3 + 133.000 / 4 = 75000 setores.167 ms. que é de 16. b) O tempo para ler ou escrever uma trilha inteira é simplesmente o tempo para uma única revolução.995 ms.3 ms. Por conseguinte.5 ms. em seguida. O atraso de rotação é o tempo necessário para a cabeça de alinhar com um sector de novo.333 ms/600 = 0.2 ms de atraso rotacional. Em um extremo. Suponha uma latência de rotação antes de cada pista) Tempo de acesso = 8 + 9 × (8. b)Às 7200 rpm.3 ms em média para encontrar setor 0 e 8 × (60/3. 149. então o tempo de busca é o tempo para atravessar 29. Às um ms por 100 faixas. Durante este tempo. O tempo de movimento da cabeça de 2 ms sobrepõe o com os 16. porque a cabeça se move entre as faixas adjacentes.7/32 = -41 - 0. O disco terá o tempo de busca de 8 ms para encontrar i cilindros. 6.08 ms após a conclusão da operação de leitura) Assim.84 MB / s 6.3 ms c) Cada cilindro é composto por 8 faixas × 64 setores / faixa × 1 KB / setor = 512 KB.4a)Se assumirmos que a cabeça começa a trilha 0. O número necessário de setores é 300.7 = 35.999 faixas. se a pista é solicitado rastrear 29. 8. o tempo necessário para passar para o próximo cilindro adjacente é de 1. O tempo para ler ou escrever um setor é calculado da seguinte forma: A única revolução para ler ou escrever uma faixa inteira leva 60. então o tempo de busca é 0. o tempo total de transferência = 16.b) Latência de rotação = rotation_time / 2 = 60 / (3600 × 2) = 8. Tempo para ler ou escrever um único setor = 16. em média. d) O resultado é a soma das quantidades anteriores. porque a trilha inteira é tamponado.52 ms. que por sua vez requer 782/110 = 8 superfícies. Tempo de acesso faixa = 2 ms.3 +1. a distribuição de disco melhora o desempenho. No entanto. Se há muitos processos que fazem muitos pedidos de E/S de pequeno porte.2 ms.48 ms.2 + 0.7 × (31/32) = 16. a média latência rotacional é 4.999 / 2 = 14999. o tempo de transferência para um setor é 8.3 + 133. Tempo médio de acesso = tempo de busca + latência rotacional = 16. Para um pedido aleatório.52× 4 = 2.5 ms bytes d) Taxa de pico = rotações segundo × setores × 3600 revoluçãoSecter60 × 64 × 1 KB = 3.01389 ms.999.52 = 17. o número de faixas é atravessado 29. Máquina legível: Indicado para a comunicação com o equipamento. o custo é = 2. Comunicação: Indicado para a comunicação com . Para a fita. o tamanho da Ct reserva teria que ser de cerca de 5 a tuberculose para a fita a ser menos caro. -42 - CAPÍTULO 7 INput/ OUtput RESPOSTAS PARA PERGUNTAS 7. mas há um aumento o número de bits por um factor de 14/8. Isto é.7. o esquema de CD tem uma densidade de armazenamento de dados de 1. 6.8RAID 0: 800 GBRAID 4: 600 GB RAID 1: 400 GBRAID 5: 600 GB RAID 3: 600 GBRAID 6: 400 GB 6. uma matriz nonstriped de discos deve proporcionar um desempenho comparável ao RAID 0.10a)2× 3 × $ 150 = $ 900 b)$ 2. temos Z = 4762. Fator de melhoria Net é 3 × (8/14) ≈ 1. Para o disco.500 + ((Z/400) × 3 × $ 50).1 Legível: Indicado para a comunicação com o usuário do computador. d) Uma onde você manter um monte de conjuntos de backup.seguida.500 + (3 × 3 × $ 50) = 2.7 vezes maior do que o regime de gravação directa) 6. o custo é Cd = (Z/500) × 3 × R $ 150.950 dólares c) Seja Z = número de GB à qual as duas abordagens dar aproximadamente o mesmo custo. densidade pouco melhora por um factor de 3. Se colocarmos Cd = Ct e resolver para Z. Assim.9 Com o regime de CD. 7 O processador faz uma pausa para cada ciclo de ônibus roubado pelo módulo de DMA) ANSWERS TO PROBLEMAS 7. É necessário verificar o tampão a uma taxa de. ou 75%.5 mS. 7. O instruções subsequentes podem estar no mesmo processo. existe o risco de sobrescrever caracteres no buffer. poll software. assim. O aumento de velocidade é (2560 .125 = 1. em nome de um processo. esse processo então ocupado-esperas para que a operação seja concluída antes de prosseguir. em que cada caracter é representado por um código único de 7 bits binário. a um módulo de E/S. 216 = Endereços de porta 64K são possíveis. Caso contrário. exigindo 4.2 No modo de endereçamento direto. novamente. a transferência se 5 × 128 = 640 ciclos de clock (ignorando a busca de uma só vez da instrução iterativa e sIs operandos). enquanto o segundo dispositivos exige e porta de entrada de dados e uma porta de saída de dados. Com isolado I / O. Se o dispositivo estiver pronto. 128 caracteres diferentes podem ser representadas. 7. Caso contrário.125 mS.5 a) Cada dispositivo de I/Orequer uma saída (do ponto de vista do processador) porta para os comandos e uma porta de entrada para o estado. um comando especifica se o endereço refere-se a uma posição de memória ou de um dispositivo de E/S. 7. No entanto.5 Com mapeamento de memória I / O. um opcode especifica ou uma operação de entrada ou saída. existe um único espaço de endereço para locais de memória e os dispositivos de E/S. Interromper-driven I / O: O processador emite um comando de I/Oem nome de um processo. de modo que um ciclo de instrução leva 12 × 0. como a teclado. 7. arbitragem ônibus (vetorizado). Normalmente. uma vez por cada 60 ms. Dados buffering) A detecção de erros. 7. 28 = 256 portas podem ser abordados. b) O primeiro dispositivo requer apenas uma porta parade dados. A gama completa de endereços pode estar disponível para ambos.640) / 2560 = 0.6a) O pritaxa NTING é retardado a 5 cps. O total é de 3 instruções.4 Programmed I / O: O processador emite um comando de I / O. o totalnúmero de portas é sete) c) sete) 7. Comunicação dispositivos. 7. continua a executar as instruções seguintes. 7. a transferência se 20 × 128 = 2560 ciclos de clock) Com bloco de I / O. b) A situação deve ser tratada de forma diferente com os dispositivos de entrada.8 Vantagens de memória mapeada I / O: . o processador tem um período de relógio de 0.2 O código de texto mais usado é o Alfabeto Internacional de Referência (IRA). vetorizado).dispositivos remotos 7. pelo menos. de modo que existem 256 endereços de porta de entrada e 256 endereços de porta de saída) No segundo modo de endereçamento. 7. se não é necessária para que processo para aguardar a conclusão do I / O. além de pelo menos uma outra instrução para examinar o conteúdo de registro. O processador trata os dados de status e registros de módulos I/Ocomo locais de memória e usa as mesmas instruções de máquina para acessar tanto memória e I/Ode dispositivos.75.3Controle e timing) Comunicação Processor. O processador envia um pedido para a transferência de um bloco de dados para o módulo de DMA e só é interrompido.364 KB 7. o processo é suspensa até à interrupção do trabalho e a outra é realizada) Acesso direto à memória (DMA): Um módulo de DMA controla a troca de dados entre a memória principal e um módulo de E/S.4 Usando não-bloco de E/S instruções. isso seria permitir que 128 dispositivos a serem abordados. cadeia (poll hardware. após o bloco inteiro foi transferido.6 Quatro categorias gerais de técnicas são de uso comum: várias linhas de interrupção.1 No primeiro modo de endereçamento. Para verificar o status requer um tipo de entrada instrução de ler o registro de status do dispositivo. 7. o endereço da porta reside em um de 16 bits registradores. a instrução pode endereçar até 216 = Portas 64K) 7. Porque cada dispositivo requer um comando e uma porta de status.5 mS. uma instrução do tipo de saída é necessária para apresentar dados ao processador de dispositivo. uma instrução pode endereçar até 216 = Portas 64K) Em modo de endereçamento indireto.7 Às 8 MHz. por isso é possível rItilizar os endereços. e é interrompido pelo módulo de E/S quando este tiver concluído sI trabalho. então. que é de 250 + 250 = 500 ns. 7. que.13 a) Para a efetiva transferência. o intervalo de tempo entre interrupções é 16 × 125 = 2000 mS. e não pode ser interrompida) Assim. A quantidade total de tempo que o ônibus é ocupado para a transferência é de 128 mS. é mais longo. Esta é uma melhoria de quase um factor de 2 sobre o resultado da peça (B). Este é menor do que o resultado obtido na parte (a) por um factor de 20. A taxa de dados resultante é 1 MB / s.67 MB / s c) Dois estados de espera adicionar um acréscimo de 0. o processador precisa acessar a memória principal. Isso retarda o processador aproximadamente 833 ×100% 0.4 mS. portanto. ou um a cada 833 mS. b) O tempo de transferência de um byte no modo de ciclo de roubo é 250 + 500 + 250 = 1000 ns = 1 mS. ou 99. leva 0. No entanto. A redução é de 1 .9 a) O processador verifica o teclado 10 vezes por segundo. A duração do programa Por conseguinte. de modo que a redução do tempo total é de 16× 6 = 96 mS.12 Vamos ignorar os dados das operações de leitura / escrita e assumir a processador só vai buscar instruções. portanto.6 × 10-6) = 1. de um total de 220 mS. O DMA. uma vez por microssegundo. Este tempo adicional é insignificante. 2. A fração de tempo de processador consumido é 220/2000 = 0.1.000.12% 7. O módulo de DMA transfere caracteres a uma taxa de 1200 caracteres por segundo. O hardware de endereçamento lógico para o módulo de E/S é mais complexa. no ciclo de clock leva 0. Não há linhas de controle adicionais são necessários no ônibus para distinguir memória comandos a partir de comandos de E/S. na maioria máquinas são mais do que instruções de E/S. a transferência de DMA podem ser de ou para um dispositivo que está a receber ou enviar dados por uma corrente (por exemplo. 7.10 a) O dispositivo gera 8000 interrupções por segundo ou uma taxa de uma a cada 125 mS.2 mS.(60/288000) = 0. -44 - b) Apenas 60 visitas seria necessário.999. "rouba" a cada 833 1 ciclo.11 c) O tempo por byte foi reduzido em 6 mS. então a fração de tempo do processador consumido é 100/125 = 0. Em seguida. Cada interromper agora exige 100 mS para o primeiro caractere mais o tempo para transferência de cada personagem restante. A transferência de um byte. o número de vezes que o teclado é digitalizado é 10× 60 × 60 × 8 = 288.56 ms. Mapeados na memória I/Outiliza instruções de memória de referência. Em 8 horas. geralmente não dano ocorre.56 ms. 7.11 Se um processador seja apreendida na tentativa de ler ou escrever de memória. e vários registos pode ser utilizado para trocar dados com os módulos de E/S. se o módulo de DMA é realizada up (acesso negado continuando a memória principal). disco ou fita). o tempo necessário é (128 bytes) / (50 KBps) = 2. exceto uma ligeira perda de tempo.96) / 2000 = 0.14a) Às 5 MHz. portanto. . b) A taxa de dados é de 1 / (0. Somado a isso é a hora de transferir o controle de ônibus no início e no final da transferência. de modo que o tempo de transferência pode ser considerado como 2. porque o endereço do dispositivo é mais longo. A fração de tempo de processador consumido é. 2. que soma 8 × 15 = 120 mS. os dados serão perdidos.9% 7. Desvantagens de mapeamento de memória I / O: 1. de modo que a transferência de um byte leva 1 mS. Se cada interrupção consome 100 mS. Dirigindo-se mais flexível) Exemplos: Os vários modos de endereçamento de o conjunto de instruções pode ser usado.8 b) Neste caso. (220 .062. 7.6 mS. 75 mS sem a necessidade de estados de espera) Este corresponde a um período de relógio de 0.15 Um ciclo de DMA pode demorar até 0.05 = 50.6 + 2 × 1. e o número de bits de dados é de 128 × 7 = 896.75 / 3 = 0. portanto. que deve ser dada a mesma prioridade) -45 - 7. × R = 0.05 × 5 + 0. Esta abordagem permitiria eliminar os circuitos associados a inserção estado de espera e também reduzir a dissipação de energia) 7. Em seguida.000 palavras / segundo. b) Porque todas as 4 ligações têm a mesma taxa de dados.2 + 10 × 1 = 1625. calcula-se a fracção g de bits que são transmitidos bits de dados. Assim.25 mS. por isso o modo burst não pode ser utilizado. 1. O número de bits de dados é de 16 × 7 = 112 bits.56 × R e) Com 9 caracteres de controle e 128 caracteres de informação. o ER máxima taxa de dados eficaz é ER = gR a) Há 7 bits de dados. cada quadro contém (9 + 16) × 8 = 200 bits.17 Apenas um dispositivo de cada vez pode ser atendido em um canal seletor. Taxa máxima = 800 + 800 + 2 × 6.7. A taxa de transferência de E/S é.5 stop bits e 1 bit de paridade) 7 g= 1 + 7 + 1 + 1. × R = 0.18 a) O processador só pode dedicar 5% do sI tempo de I / O.64 × R c) Cada quadro contém 48 = 1024 bits.67 × R b) Cada quadro contém 48 + 128 = 176bits.000 instruções por segundo. e o número de bits de dados é 16 × 7 = 112. 25. que por sua vez corresponde a uma velocidade de relógio de 4 MHz.19Para cada caso. pois isso seria amarrar o ônibus de forma contínua) É necessário Ciclo-roubo. e ignorar qualquer instalação ou o tempo de verificação do status-.84 × R 072 d) Com 9 caracteres de controle e 16 caracteres de informação.82 × R 096 -46 - .16 a) Ligações de telecomunicações pode operar continuamente. O número de bits de dados é de 128 × 7 = 896 bits. então este valor é o que a transferência de E/S máximo taxa) 7. cada quadro contém (9 + 128) × 8 = 1096 bits.95 × 2) = 2.5 ER = 0. 1 bit de início. O número de caracteres é 1024/8 = 128. b) O número de ciclos de máquina disponível para o controle de DMA é 106(0. ER = 200 × R = 0.6 KBytes / seg 7. o valor máximo de I / O taxa de execução de instrução é de 106 × 0.15 × 106 Se assumirmos que o módulo de DMA pode usar todos esses ciclos.O número de caracteres é 128/8 = 16. ER = 176 × R = 0.5 = 7/10. Assim. No segundo sinal. Este procedimento é análogo ao assíncrono I / O. impossibilitando a interrupção. Quando a Apple- servidor se sente um puxão na corda. se a Apple em servidor está fazendo algo realmente importante. Apple servidor vê a bandeira e joga sobre uma maçã.2 Criação do Programa: O sistema operacional oferece uma variedade de instalações e serviços. a linha de leitura I/Oé activado. a porta endereço é a saída para o barramento de endereços. 7.21 CAPÍTULO 8 OPERACIONAL SISTEMA SPOIO RESPOSTAS PARA PERGUNTAS 8. a Apple- -47 - servidor pode estar fazendo algo diferente do que assistir a bandeira de sI amigo (como dormir!). O sinal de alarme ao lado provoca apple-servidor para pegar uma maçã um jogue-o sobre o cerca) O terceiro alarme é um sinal para a Apple comedor de que ele pode pegar e comer a maçã. Ondas brevemente Apple servidor a sua bandeira "enviou-maçã" 4. Apple comedor vê a bandeira "enviou-maçã". para auxiliar o programador na criação . ou espera-loop. Apple comedor levanta a bandeira "com fome" quando estiver pronto para uma maçã. ou de outra forma envolvidos.20 a) Suponha que as mulheres estão trabalhando ou dormindo. No terceiro sinal de relógio. mas olhar para a bandeira de sua amiga) Esta é uma votação. ele quer ter muitas maçãs ou muito poucos. Apple comedor mantém sua bandeira "com fome" fica para baixo até que ela precisa de um outro maçã. Apple-servidor vai vê-lo o tempo todo e vai inundar a amiga com maçãs. Infelizmente. ela pode temporarily desamarrar a corda. b) As mulheres concordam que a Apple-server vai pegar e jogar mais de uma maçã sempre que vê a bandeira de ondulação da Apple comedor. Isso pode ser comparado a uma leitura I/Ofuncionamento num baseado no barramento típico sistema) O diagrama de temporização é como se segue: No primeiro sinal de relógio. Se ele tiver que comer em um ritmo mais lento ou mais rápido do que a velocidade do clock. Este problema pode ser evitado mediante Apple servidor uma bandeira e que prevê a seguinte seqüência: 1. 3. qual deve ser ajustado para corresponder exatamente às necessidades da Apple comedor. tais como editores e depuradores. A seqüência corresponde a um sinal de interrupção e permite que a Apple-servidor para usar sI tempo de forma mais eficiente) Além disso. fazendo com que a porta seleccionada para colocar os dados no barramento de dados. O primeira vez que o alarme dispara. Um problema potencial com E/S síncrona ocorrerá se da Apple-comedor precisa de mudanças.1 O sistema operacional (SO) é o software que controla a execução de programas em um processador e que gere os recursos do processador. 5. ea Apple comedor vai passar fome) Uma solução é não permitir apple-servidor para fazer nada. abordagem. ela não vai ver a bandeira. Nesse caso. leva para baixo a sua bandeira "com fome". Este procedimento é análoga à transferência síncrona de dados entre um dispositivo e um computador. ele alerta. que é claramente ineficiente) c) Suponha que a corda que passa por cima da cerca e está ligada à Apple em servidor de pulso. e agarra a maçã. 2. o CPU lê os dados. 8. Apple comedor pode puxar a corda quando ela precisa de uma maçã. tanto que é hora de trabalhar em maçãs. Um problema com essa abordagem é que se a Apple comedor deixa sua bandeira para cima.7. ela pára o que está fazendo e joga mais de uma maçã. A transferência de maçãs is em sincronia perfeita com o despertador. 8.7Não. Se ele é armazenado por colunas. 8.6Os endereços devem ser dinâmico no sentido de que os endereços absolutos só são resolvidos durante o carregamento ou execução. em seguida. o mesmo algoritmo irá conceder o processador para esse processo. Contabilidade: Um bom sistema operacional irá coletar estatísticas de uso de vários recursos e monitorar os parâmetros de desempenho. controle deve incluir uma compreensão não só da natureza do dispositivo de I/O(unidade de disco.5 Vamos h e denotam o número médio de segmentos e buracos. respectivamente) O probabilidade de que um determinado segmento é seguido por um buraco na memória (e não pela outro segmento) é 0. É intuitivamente razoável de que o número de furos deve ser inferior à . dispositivos I / O e os arquivos deve ser inicializado. juntamente com todas as informações do estado necessária para a execução.4Um processo é um programa em execução. Programação de médio prazo: A decisão de aumentar o número de processos que são parcial ou totalmente na memória principal) Agendamento de curto prazo: A decisão sobre cujo processo disponível será executada pelo processador 8.9Não. O acesso a I/O dispositivos: Cada dispositivo de I/Orequer sI próprio conjunto peculiar de instruções ou sinais de controle para a operação.5. Assuma que embora processador operações não podem se sobrepor. na maioria das vezes.8Não. porque eliminações e criações são igualmente prováveis em equilíbrio. e outros recursos devem estar preparados.1 As respostas são as mesmas para (a) e (b). 8. e cada página terá queser levado em 100 vezes (uma vez para cada linha cálculo). cada linha está espalhado por todos os dez páginas.programas. se um processo de limite de processador é negado o tempo do processador por um período suficientemente longo de tempo. O tamanhoda matriz é de 10 páginas.4O número de divisórias é igual ao númerodebytes de memória principal dividido pelo o número de bytes em cada partição: 224/ 216 = 28. os controlos do sistema operativo aceder ao sistema como um todo e para recursos específicos do sistema) A detecção de erros e resposta: Uma variedade de erros podem ocorrer enquanto um sistema de computador está funcionando.2 Programas de I / O-bound usa relativamente pouco tempo do processador e. assim com s segmentos de memória. um processo ligado à processador não será permanentemente o acesso negado. 8. cada uma das páginas 10 terá de ser trazido para página memória uma vez. A execução do programa: Uma série de tarefas precisam ser realizadas para executar um programa) As instruções e os dados devem ser carregados na memória principal. -50 - 8.1) A utilização do processador NT=100% 8.5O objetivo da troca é fornecer para o uso eficiente da memória principal para execução do processo.10 O TLB é um cache que contém as entradas de tabela de página que têm sido mais usados recentemente) O sI objectivo é evitar que. tais como tempo de resposta) 8. 8. mas também o formato de arquivo no meio de armazenamento. ter de ir para o disco para recuperar uma entrada da tabela de página) ANSWERS TO PROBLEMAS 8. 8. se a memória virtual é usada) 8. Acesso a arquivos controlado: No caso de arquivos. Se a matriz é armazenado por linhas. porque não tem usado o processador de todo no passado recente) Portanto. 8. unidade de fita). O acesso ao sistema: No caso de um sistema partilhado ou público.3 Programação a longo prazo: A decisão de adicionar ao pool de processos a serem executados. I/Ooperações pode) 1 Job:TAT= NTA utilização do processador=50% 2 Vagas:TAT= NTA utilização do processador=100% 4 Jobs:TAT=(2N . Oito bits são necessários para identificar um dos dois8 partições. portanto. o número médio de orifícios devem ser s / 2.3A memória principal pode conter 5 páginas. No entanto. são favorecidos pelo algoritmo. com o exceção de proteção. e foi relatado em "uma anomalia na Características Espaço-Tempo de Certos Programas Executado em uma máquina de paginação ". mas envolvendo apenas cinco páginas distintas. respectivamente) Isto é referido como "anomalia de Belady". carregados na memória principal a partir de endereçar 4000. Para encontrar o mínimo. junho 1969. 8. Se as páginas são muito grandes. R2Teste i> n 4003ramo maior 4009 4004(R3) ← B (R1)Acesso B [i] comregistrador de índice R1 4005(R3) ← (R3) +C (R1) Adicionar C [i] com registrador de índice R1 4006A (R1) ← (R3)Soma loja em A [i] com registrador de índice R1 4007(R1) ← (R1) + um incremento i 4008ramo 4002 6000-6999 armazenamento para A 7000-7999 armazenamento para B 8000-8999 armazenamento para C 9000armazenamento para ONE 9001de armazenamento por n A seqüência de referência gerado por este circuito é 494944 (47484649444)1000 composta por mais de 11.6 a) Dividir endereço binário em número da página virtual e compensados. nenhum dos benefícios listados para segmentação são realizados no S/370. falha de página (Iii) 5499 = 5 × 1024 + 379 mapas para VPN 5 em PFN 0. defina a primeira derivada a 0. a memória principal será desperdiçado. (7 × 1024 +28 = 7196) (Ii)2221 = 2 × 1024 + 173 mapas para VPN 2. (2) A sobrecarga (tamanho da tabela de página. Comunicações do ACM.10 A principal vantagem é a economia de espaço de memória física) Isso ocorre por duas razões: (1) uma tabela de página de usuário pode ser paginada para a memória somente quando ela é necessária) (2) O sistema operacional pode alocar dinamicamente tabelas de páginas de usuários.000 referências. 8. existem dois problemas: (1) Porque muito poucos dados trazidos com cada página. -51 - 8. pois o princípio da localidade sugere que apenas uma pequena parte da página grande será usado. criando um só quando o processo é criado. Claro. haverá a necessidade de ser um monte de I/Opara trazer a muitos pequenas páginas.número de segmentos por segmentos vizinhos podem ser combinadas numa única orifício na exclusão.8 9 e 10 da página de transferências. usar VPN como índice para tabela de páginas.13 Em média. concatenar compensar para obter o endereço de memória física b)(I)1052 = 1024 + 28 mapas para VPN 1 em PFN 7. 8. os índices de sucesso são: N12345678 Relação0/150/152/153/155/158/158/158/15 8. pode aparecer como: 4000(R1) ← ONEEstabelecerregistrador de índice para i 4001(R1) ← nEstabelecer n em R2 4002comparar R1. -52 - . p / 2 palavras são desperdiçados na última página) Assim. página extrato número do quadro. o total de sobrecarga ou resíduos é w = p / 2 + s / p.7 Com tamanho muito pequeno página.9Um total de quinze páginas são referenciadas. Assim. (0 × 1024 379 = 379) 8.11A versão em linguagem de máquina deste programa. 8. O bit P em cada entrada da tabela de segmento oferece proteção para todo o segmento. há uma desvantagem: a tradução de endereços exige um trabalho extra) 8. comprimento de campo para o número da página) serão desproporcionalmente alto. de Belady et al.12 Os segmentos S/370 são de tamanho fixo e não é visível para o programador. o tempo médio de acesso seriam: Médio = (0.0412ms + 60 + 20 = 12000080 memória Assim.4) = 0.1) (0.9) (20) + (0.920 Não em cache.06) (80) + (0.6) = 0. mas em principal(0.1) (0.dw dp p 8.0660 + 20 = 80 memória Não em cache ou principal(0.14 Há três casos a considerar: 1-s 2 0 2p 2s Localização de referênciaProbabilidadeO tempo total para acesso em ns palavra No esconderijo0.04) (12000080) = 480.026 ns 8.15 232 memória 1 quadros de página 22 211 tamanho da página Segmento: 00 1 2 3 700021ABC Descritor Página mesa 232 memória 1 quadros de página 22 211 tamanho da página a)8× 2K = 16K b)16K × 4 = 64 K c)232 = 4 GBytes . Uma diretriz típico é que essa média deve ser mantida acima de 2 minutos. Isto pode parecer muito.A memória principal (232 bytes) 8. em seguida. sIs 11 bits mais à direita são sempre 0. 8.18 O operador do sistema pode avaliar esta quantidade para determinar o grau de "esforço" no o sistema) Ao reduzir o número de postos de trabalho ativos permitidos no sistema.19 Super seção 3124 Supersection endereço base 230 Compensar Supersection 3120190 SeçãoSeção endereço baseSeção defset . sete bits são necessários para a tabela de entrada de 128.17 a) página número (5) offset (11) b) 32 entradas. • Formato de endereço lógico: segmento número (9) offset (22) • As entradas na tabela de mapeamento: 29 = 512. ou seja. os outros dois bits mais significativos são descodificados para seleccionar a MMU.16 • O endereç físico inicial de um segmento é sempre divisível por 1048. torna-se cada entrada de 8 bits de largura) -54 - 8. -53 - • espaço de endereçamento lógico máxima = 29 = 512 (segmentos× 222 bytes / segmento) = 231 bytes. este média pode ser mantido elevado. cada entrada é de 9 bits de largura) c) Se o número total de entradas fica em 32 eo tamanho da página não muda. 8. • Cada entrada na tabela é de 22 bits. • Cada número de segmentos de 9-bit vai para uma MMU. • Número de unidades de gerenciamento de memória necessários = 4. mas não é. negativos) e o restante de N . o bit mais à esquerda é o sinal (0 = 1 = positivos.1 bits de compreender a magnitude do número.31 Pequeno página 12 Página endereço base 110 Página de fset 31 Grande página 16 Grande página endereço de base -55 - 150 Compensar Página 8. Twos Representação Complemento: Um número inteiro positivo é representado como sinal de magnitude) Um número negativo é representado por tomar o complemento booleano de cada bit do número positivo correspondente.1 Inscreva-Magnitude Representação: Em uma palavra N-bit. em seguida.20 Endereço virtual 3120190 Índice L1índice seção Nível 1 (L1) tabela Seção 4095 addr base de seção10 0 Memória Principal -56 - CAPÍTULO 9 COmputer ARithmetic RESPOSTAS PARA PERGUNTAS 9. adicionando 1 para o padrão de bits resultante visto como um inteiro sem sinal) Representação tendenciosa: Um . se o valor da representação é inferior a o preconceito. que é 45. O magnitude do número negativo é determinada por invertendo os bits e adicionando 1: 0010100 + 1 = 0010101 Este é 21. Rodada para - ∞: O resultado é arredondado para baixo em direção ao infinito negativo. de modo que o valor original é -21.6 A representação complemento de dois de um número é o padrão de bits usado para representam um número inteiro. a chamada polarização. Para a multiplicação. é um número negativo. 2n-1 -1 uman-1 Σ2IumaI . O complemento de dois de um número é a operação que calcula a negação de um número em grupos de dois a representação complemento.7 O algoritmo para a realização de pares complemento disso envolve simplesmente adicionando os dois números da mesma maneira que para além ordinário para números sem sinal. expoente. Verifique a existência de zeros.3Adicionar posições de bits adicionais para a esquerda e preencher com o valor do sinal original é bit. adicionando 1 a o padrão de bits resultante visto como um inteiro sem sinal) 9. Normalizar o resultado. 2. Estouro Exponent refere-se a representações de ponto flutuante e se refere a um expoente positivo que excede o valor máximo possível expoente) Estouro significand ocorre quando o -57 - adição de dois significands do mesmo resultado em um sinal de carry do bit mais significativo. n-2 9.4Leve o complemento booleano de cada bit do número positivo.13 Redonda mais próximo: O resultado será arredondado para o número representável mais próximo. 9. é adicionada ao número inteiro. é um número positivo e nós apenas calcular a magnitude como um número binário não assinado. Rodada para 0: resultado é arredondado para zero. obit mais à esquerda é um bit de sinal) Em tendenciosa representação.5Quando a operação é realizada sobre o inteiro n bits -2n-1 (Um seguido de n .3a)A . se tratar os padrões de bits. base) 9. é um número negativo. 9. a sua magnitude é diferente das versões complemento de dois e por isso a intensidade do resultado será diferente) 9. 3. 9. Alinhe os significands.12 Para evitar a perda desnecessária de o bit menos significativo.8 Sinal.11 1.2Em sinal de magnitude e complemento de dois. com um teste de extravasamento.1 Sinal Magnitude:512 =0000 0010 0000 0000 -29=1000 0000 0001 1101 Complemento de dois:512=0000 0010 0000 0000 -29=1111 1111 1110 0011 9. ANSWERS TO PROBLEMAS 9. 4.2 1101011: Porque este começa com um mais à esquerda 1. Adicionar ou subtrair os significands. 9.1 zeros). 9. 0101101 Porque este começa com um mais à esquerda 0.9 Uma vantagem da representação tendenciosa é que os números de ponto flutuante não negativos podem ser tratados como números inteiros para fins de comparação. Rodada em direção a + ∞: O resultado é arredondado para cima em direção a mais infinito.10 Estouro positivo refere-se a representações de números inteiros e refere-se a um número que é maior do que pode ser representado em um determinado número de bits. como os números não assinados. 9. em seguida. significando.valor fixo. 9. 9. 9. 1) 2 Complemente o bit de sinal Mova o bit de sinal para o novo bit mais à esquerda. temos (2n . (A) Se a grandeza de A é igual à magnitude do B.(2n-1 . o bit de sinal do resultado é o sinal de B.1) a (2n-1 .I 0 b) A partir de .6 a) Podemos expressar 2n como (1 + Z).5 O complemento de dois do número original) 9. Exemplo: 11111111 -01110100 10001011 . não há um excesso.1) a (2n-1 . Em seguida. então o bit de sinal do resultado é o sinal de A. onde Z é uma quantidade de todos os bits 1 de n bits.X) resulta no complemento booleano de cada bit de X. se necessário. adicione as duas magnitudes.(2n-1 .X. Se houver um reporte fora do último bit de magnitude. em seguida. -58 - 9. preencher com zeros Complemente o bit de sinal de B e adicionar B para A usando regras para adição de números de sinal-magnitude aqueles complemento .(2n-1 .X) = 1 + Z . Se não houver reporte o resultado é a soma das magnitudes com o mesmo bit de sinal como A e B) 2. e a magnitude do resultado é a magnitude de B menos a magnitude de A) 9.4 Alcance Número de representações de 0 Negação Expansão do bit comprimento Subtrair B de A sign-magnitude . (b) se o A magnitude é superior à magnitude de B. Isto é conhecido como a regra de transporte fim-around) (3) Um estouro ocorre se dois números positivos são adicionados eo resultado é negativo de se dois números negativos são adicionados eo resultado é positivo. ea magnitude do resultado é a magnitude de um menos a magnitude do B) (b) Caso contrário. tratamento de todas as quantidades como inteiros sem sinal. Mas (Z . adicionar pouco que a primeira posição de bit e o resultado propagar carrega. Se A e B têm o mesmo sinal.1) c) (1) Adicionar os dois números como se fossem inteiros sem sinal) (2) Se não houver um transporte fora da posição de sinal. o resultado é zero.1) 2 Complemente cada bit Preencha todos os novos bits posições para a esquerda com o bit de sinal Tome os complemento de B e adicioná-lo a um Regras para adicionar dois números sign-magnitude: 1.1) a (2 n-1 . em seguida. adicionando-X.7 O complemento dezenas é calculado como 105 . b) Na Figura 9. que é como nós definimos o complemento de dois de X. onde M = 72532 e N = 13250: M= dezenas complemento de N = sum = descartar levar dígito = Resultado = 9. que é o complemento de dois de representação-X.Portanto. Do mesmo modo. na Figura 9. podemos subtrair X. (2n .8 M .13250 = 100000 -13250 = 86750.5b.Posições X no sentido horário.10 600000110-611111010600000110-611111010 +1300001101+1300001101-1311110011-1311110011 +1900010011700000111-711111001-1911101101 . movendo doisn . Assim.X) soma uma unidade a quantidade formada. tendo a booleano complementar de cada bit de X.N.9 xn-10 Entradayn-10 cn-20 zn-10 72532 86750 159282 -100000 59282 000 011 101 010 1111 0011 0101 1011 Saída v010 00010 9. que pode subtrair X ou (adicionar-X). Mas a quantidade de (2n . observe que podemos subtrair X ou (add-X).X) é o que nós acabamos de definir como o complemento de dois de X. -59 - Nós subtrair 9. movendo 16 .5A. 9.X posições no sentido horário. 9. AQQ-1M 0000000101110010011Inicial 1011010101110010011A← A . O resultado tem um bit de sinal = 1. de modo que o XOR é 1. em seguida. Parab.M 1110001010101Mudança 9. 9. então não há excesso. uma condição que exclui transbordamento. O resultado tem um bit de sinal = 0.12 A regra estouro foi afirmado o seguinte: Se forem adicionados dois números. • Ambos os números negativos e levar para a posição mais à esquerda) Existe um transporte para fora da posição mais à esquerda. por isso não há excesso. o resultado XOR sempre está de acordo com a presença ou ausência de excesso. • Ambos os números negativos e não levar para a posição mais à esquerda: Há uma bagagem para fora da posição mais à esquerda. é preciso primeiro assinar- estender o segundo mandato. • Ambos os números positivos e um transporte para a posição mais à esquerda bit: Não há transporte para fora da posição mais à esquerda. para que não haja excesso. e verifique se há excesso.15Usando M = 010111 (23) e Q = 010011 (19) que deve receber 437 como o resultado.13 Um estouro não pode ocorrer porque a adição ea subtração alternativo. excesso ocorre se e somente se o resultado tem o sinal oposto. de modo que o XOR é 0. de modo que o XOR é 0. O resultado tem um bit de sinal de 0.11Adicione o complemento de dois. -60 - 9. a)111000b)11001100c)111100001111 d)11000011 + 001101+ 00010010+ 001100001101+ 00011000 100010111011110100100001110011011000 Em todos os casos. O resultado tem um bit de sinal de 1. Por isso. 9. para que não haja excesso.M 1101101010111010011Mudança 1110110101011010011Mudança 1111011010101010011Mudança 0100001010101010011A← A + M .M 1101101010101Mudança 0010101010101A← A + M 0001010100101Mudança 1100010100101A← A . os dois números que são adicionados sempre têm sinais opostos. Como Consequentemente. de modo que o XOR é 1.14AQQ-1M 0000101000101Inicial 0000010100101Mudança 1011010100101A← A . e eles são ambos positivos ou negativos. Há quatro casos: • Ambos os números positivos (bit de sinal = 0) e não levar para a posição mais à esquerda bit: Não há transporte para fora da posição de bit mais à esquerda. então não há excesso. os sinais dos dois números a serem adicionados são diferentes. M 1110101010101010011Mudança 0011011010101010011A← A + M 0001101101011010011Mudança Resposta = 0001 1011 0101 (Que é 437) 9.17AQM 00000000100100111011Inicial 00000001001001101011Mudança 111101101011A← A . A desigualdade é verdadeira se -2Bn + 1 ≤ -1ou1≤ Bn Isso é sempre verdade para B ≥ 2 e n ≥ 1.1. Precisamos mostrar que o produto máximo é inferior a B2n .1.M 00000100100110001011Restaurar 00001001001100001011Mudança 111111001011A← A .1) = B2n . -61 - 9.M 00000100000011011011Q0 ← 1 .M 00000001001001101011Restaurar 00000010010011001011Mudança 111101111011A← A .1.M 00001001001100001011Restaurar 00010010011000001011Mudança 000001111011A← A .1) (Bn .M 00000011110000111011Q0 ← 1 00000111100001101011Mudança 111111001011A← A .2Bn + 1 ≤ B2n . (Bn .16 Um número n dígitos na base B tem um valor máximo de Bn .M 00000111011000011011Q0 ← 1 00001110110000101011Mudança 000000111011A← A .M 00000010010011001011Restaurar 00000100100110001011Mudança 111110011011A← A .M 00000111100001101011Restaurar 00001111000011001011Mudança 000001001011A← A .0010000101010010011Mudança 1101010101010010011A← A . através da subtracção A (I +1) ← 2A (I) . truncagem produz um número maior. Estas duas operações podem ser combinadas em uma única operação: a (i +1) ← 2A (I) + M. -62 - 9.21 a) Constante de Planck: 6.00000000000000000000000000663 29 . Dividendo = -145 = (111101101111)2 é colocado nos registradores A e Q AQM 111101101111001101Inicial 111011011110Mudança 001101Adicionar 001000 111011011110Restaurar 110110111100Mudança 001101Adicionar 000011 110110111100Restaurar 101101111000Mudança 001101Adicionar 111010111001Q0 ← 1 110101110010Mudança 001101Adicionar 000110 110101110010Restaurar 101011100100Mudança 001101Adicionar 111000100101Q0 ← 1 110001001010Mudança 001101Adicionar 111110001011Q0 ← 1 Restante = (111110)2= -2 Quociente = pares complemento de 001011 = (110101)2 = -11 9.18 O algoritmo de divisão nonrestoring baseia-se na observação de que uma restauração na iteração I do formulário A (I) ← A (I) + M é seguido na iteração (I + 1).M. 9.19 Falso.9.20Divisor = 13 = (001101)2 M é colocado em registo.63 × 10-27 → . Para um quociente negativo. o expoente de tanto a constante de Planck e de Avogadro número pode ser representado utilizando dois dígitos. o expoente tem uma polarização de 3.0 × 2-100 127-4 = 123 = 01111011 Formato: 0 01111011 00000000000000000000000 f)-1/32 = -0. Casos especiais são sombreadas na tabela) O primeira coluna sombreada contém os números desnormalizados.25 Neste caso.0 24 -63 - Para representar a aproximação de constante 29 de Base-10 fracionário de Planck algarismos são necessários. Para representar as aproximações tanto a constante de Planck e do número de Avogadro em um formato de número de ponto fixo.22a)bX-Q(1 . são necessários 3 de Base-10 dígitos.1 × 21000 Mude expoente binário para expoente polarizado: 127 + 8 = 135 = 10000111 Formato: 0 10000111 00000000000000000000000 e)1/16 = 0. Para representar os significands. b) Na Base-10 base 10 representação considerada tendenciosa para o expoente (tais que Etendenciosa = E + 50).0 × 2-101 127-5 = 122 = 01111010 Formato: 0 01111010 00000000000000000000000 9.b) Número de Avogadro: 6. pois 27 +50 = 23 e 23 +50 = 73.b-P).0001 = 1.24a)-28 (Não se esqueça do bit escondido) b)13/16 = 0. Portanto. são necessários 29 + 54 = 53 de Base-10 dígitos.00001 = -1.b-P).23a)1 10000001 01000000000000000000000 b)1 10000001 10000000000000000000000 c)1 01111111 10000000000000000000000 d)384 = 110000000 = 1. Vale a pena estudar essa tabela para começar uma sensação para a distribuição eo espaçamento dos números representados em este formato. B-Q-p b)bX-Q(1 . B-Q-1 9.02 × 1023 → 602000000000000000000000. enquanto representando a aproximação do número de Avogadro requer 24 dígitos decimais inteiros. Fonte: [ERCE04] 9. são necessários 3 + 2 = 5 dígitos decimais.8125 c)2 9. . a representam as aproximações de tanto a constante de Planck e de Avogadro número de Base-10 formato de número base 10 de ponto flutuante. 252.031250.18750.51248+∞ 0 0010.25-0.25-2.-64 - bit de sinal e significand 000001 010 Expoente 011 100101110111 0 00000.753.281250.031250.1250.5-11NaN 0.254.81251.5714NaN 0 1110.757.31250.468750.256.093750.8753.250.406250.1252.25-2.343750.68751.93751.125-2.3750.751.75-5.343750.43750.5-5-10NaN 1 011----1.06250.8751.515NaN 1 000-0-0.513NaN 0 1100.755.5-1-2-4-8-∞ 1 001----1.6251.53612NaN 0 1010.375-2.3752.3125-0.5-9NaN 0.5625 1 010-0.6253.511NaN 0 1000.0625-0.093750.218750.6875 .56251.281250.59NaN 0 0100.5510NaN 0 0110.156250.625-1. 1bbbb) 2.28 A base é irrelevante a) Polarização = 26-1 = 25 = 32 b) Polarização = 27-1 = 26 = 64 -65 - 9.0=0 × 16-64= e)-15.27 Passo 1: sinal positivo 0 100 0001 0001 0000 0000 0000 0000 0000 0 100 0000 1000 0000 0000 0000 0000 0000 0 011 1111 0100 0000 0000 0000 0000 0000 0 000 0000 0000 0000 0000 0000 0000 0000 1 100 0001 1111 0000 0000 0000 0000 0000 0 000 0000 0000 0000 0000 0000 0000 0000 0 111 1111 1111 1111 1111 1111 1111 1111 0 100 0100 1111 1111 1111 1111 0000 0000 Passo 2: Extraia o expoente (5B)16 e subtrair o viés (40)16.5 × 2-102200. O resultado decimal é 0. Expresse o número na forma binária: 1011010000 (para normalizar 1.156250.9375 9.(1 .375-0.4 × 10-79 ≈1/16 × 16-64= g)7.4375-0.875-3.5 × 2-1022(1 .5-7-14NaN 1 111----1. Normalizar o número no formulário 0.5-13NaN 0.8125 1 110-0.2 × 1075≈1× 1663= h)65535=164 -1= 9.875-1.1011010000 × 2k onde k = 10 (Base10) ou 1010 (base2) .25-6.30a)1.625-3.5-15NaN 0.5=8/16 × 160= c)1/64=4/16 × 16-1= d)0.75-3. 9.0=1/16 × 161= b)0.468750.406250.7890625.75-7.2-53) × 21023 9.125-0.29 NegativoPositivo UnderflowUnderflow NegativoNegativo exprimívelExprimível PositivoPositivo TransbordamentoNúmerosNúmerosTransbordamento Zero .26 a)1.1875-0.0.75-1.1bbbbbbbbbbbbb 0. Obtendo-se (1B)16 = 27 Passo 3: O significand (CA 0000)16 = 12/16 + 10/256 = 0.0=-15/16 × 161= f)5.7890625 × 1627.5-3-6-12NaN 1 101----1.2-53) × 21023.218750.1 100-0. 2.4 é inferior a 0. 9.224 + 2. O mais próximo que podemos chegar (7 bits) é 0. O sinal de = 0.41. o número de fracções diferentes de zero a 223 .224 -1.220.484. Se excluirmos menos zero e mais e menos infinito.645 EApor = 0. temos a repetição de números binários: 0.8 × 2-1 Em seguida. Por exemplo. Adicionar o viés para o expoente e armazenar a resposta: 1010 + 10000000 = 1001010 4.5.1100110. Este número inclui tanto mais e menos zero e mais e menos infinito. No entanto. Portanto. nem todos esses padrões de bits representam números exclusivos.4 = 0.ε).1 .417 isso o-1.0.101001 .110011001100 .. 3.4-003.f (x) desejável para reescrever tais fórmulas como ε × g (x.0.0.43 significand é 01001 (o primeiro é um implícita).0021 0.31 Há 232 diferentes padrões de bits disponíveis.. É ε) .2228 EB = 0. Então g (x.1011010000 × 2(1010) Uma vez na forma normalizada cada número terá um1 após o decimal ponto. Devido 0.2221 9. um expoente de todos os juntamente com uma fração diferente de zero é dado o valor NaN. para este caso.0049 = -0.. nós ter (1/2 + 1/4 + 1/32 + 1/64) × 2-1 = 0. Onde g (x. Resultado = 1 1001010 01101000000000000000000 Arredondando: b) Nós temos 0.F (x). e o expoente = 0.000. uma polarização de 128 é utilizado. e é usado para sinalizar diversas condições de exceção.ε) = 2x + ε.32Temos 0. de modo que o número total de valores NaN é 224 ..0007 Truncamento: EA = 1.1.0039 -66 . = 1.375 = 0. Convertendo isso de volta para decimal. Para o campo de expoente de 8 bits. O bit de sinal pode ser 0 ou 1. se ε é pequeno.ε) = f (x é ε primeiro calculado simbolicamente) Assim.22288-0. o que significa Não é um número. é implícito. Bit de sinal = 1 5.34 Cancelamento revela erros anteriores no cálculo de X e Y.42 7. Em particular. no campo significando que irá armazenar 01101000000000000000000. .7 . se f (x) = x2.. Portanto. nós reescrever como 0.4 × 20. a) EA = 0. Se f (x) =x. converter 0. Nós não precisamos de armazenar esse número. Resultado: 0 0000000 01001000000000000000000 9.3984375 O erro relativo é . porque o cálculo arredondado de f (x + ε) Destrói grande parte das informações sobre ε. Porque o campo fracção é 23 bits.42 = 0.427 9. então o total é de 232 . o número de diferentes números que podem ser representadas é 232 . muitas vezes ficamos pouca precisão no cálculo de f (x + ε) . este não é normalizada) Assim. devido a casos especiais.33EA = A A A ' EC = 0.8 para binário. (EA + EB) + EAEB ] ≈ AB [1 .B = 0.2228 22211 b) C = A .35 Temos =AAA' EA x+ ε + x.00077 C '= A ".(EA + EB)] O termo produto EAEB deve ser insignificante em comparação com a soma) Conseqüentemente =E +E EAB A B) 9.EA) B '= B (1 .ε) = 9.00036 = 0.EB) A'B '= AB (1 .09 .00045 = 0.B' = 0.36 0. =1-A' A '= A (1 .EA) (1-EB) = AB [1 .0007 00077 = 0.1 então g (x. 744 × 10-3 .50000 × 10-60) = 8. 5. os mantissas são adicionados. 3.0 O resultado intermediário cai abaixo do limiar e deve ser underflow definido como zero.75000 × 10-103 → 0.08844 × 10-1.008877 × 101 = 3. 9. ea soma é renormalizada se necessário. as referências de origem e destino operando.(5.233 × 10-1 = 0.1 Os elementos essenciais de uma instrução de computador são o código de operação.344 × 101 + 0.582 × 101 b)8. requer arredondamento.2.666 × 10-3 = 1.555 × 104 = 1.02200 × 10-99 Este exemplo ilustra como somas underflowed e diferenças de números no mesmo formato são sempre livre de erros de arredondamento.334 × 103 b) Os expoentes devem ser equalizados pela primeira vez. b)(2.777 × 103 = 1.352877 × 101 ≈ 3.40a)2. que especificam os locais de entrada e . que especifica a operação a ser realizada.233 × 10-1 = -2. em seguida.20000 × 10-101 → 0. Por conseguinte.00088 × 10-99 O produto de outra forma exata underflows e deve ser desnormalizada por quatro dígitos.67812 × 10-97) = 2.50000 × 10-60)× (3.590 × 10-2 -68 - CAPÍTULO 10 INstruction SETS: CE haracteristics FFUNÇÕES RESPOSTAS PARA PERGUNTAS 10.58267 × 101 ≈ 2.67834 × 10-97) .344 × 101 + 8.352 × 101 9.877 × 10-2 = 3.50000 × 10-60)× (3.566 × 103 + 7.37a)(2.255 × 101 × 1.6.38 a) Os expoentes são iguais.078 × 10-3 b)8.3343 × 103 ≈ 1.234 × 100 = 2.844 × 10-3 .-67 - 9.2.39a)7.50000 × 10-43) = 8.75000 × 10-120 → 0. c) (5.14456 × 10-1 ≈ -2. O número. mantendo o expoente comum.144 × 10-1 9.833 × 102 5. Na utilização prática de computadores. no topo da pilha) 10.8 1.2 a)7309 . 10. milhares de vezes. número de endereços.14 Um valor numérico armazenado vários bytes com o byte mais significativo no menor endereço numérico está armazenado na moda big-endian) Um valor numérico multibyte armazenado com o byte mais significativo na maior endereço numérico está armazenado na fashion little-endian) ANSWERS TO PROBLEMAS 10. um 0 é deslocado dentro A operação de deslocamento aritmética trata os dados como um inteiro assinado e não muda o bit de sinal) Em um deslocamento aritmético para a direita.saída para a operação. Este é o mesmo código como decimal embalado.1 a)23 b)32 33 10. 10. o operador segue os sIs dois operandos. é necessário um loop de programa) Uma sequência de instruções é executado repetidamente para processar todos os dados. a maioria das máquinas fornecer um código de condição de 1 bit ou de múltiplos bits que é definido como o resultado de algumas operações.11 Register. se outra condição se mantém) 3.13 Nesta notação.7 Com uma mudança de lógica. um resultado. Isso seria impensável se cada instrução teve que ser escrito em separado. Para compor -69 - corretamente um programa de computador grande ou mesmo de médio porte é um extremamente difícil tarefa) Ela ajuda se existem mecanismos para quebrar a tarefa em pedaços menores que podem ser trabalhados em um de cada vez. talvez. Na outra extremidade.2Registros e memória) 10. Dirigindo-se: O modo ou modos pelos quais o endereço de um operando é especificado.6 Para o padrão de bits IRA 011XXXX. o bit de sinal é replicado para a posição pouco à sua direita) Em um deslocamento aritmético à esquerda. dados lógicos. o bit deslocado para fora está perdido. os dígitos de 0 a 9 são representados por sI equivalentes binários. Praticamente todos os programas envolvem alguma tomada de decisão. em mais à direita de 4 bits. e outra coisa. 10. mas o bit de sinal. Gostaríamos que o computador para fazer uma coisa se uma condição segura. e à sua utilização.5 Endereços. caracteres. Os tipos de dados: Os vários tipos de dados em que operações são executadas. e assim por diante) Registros: Número de registradores da CPU que pode ser referenciado por instruções. 10.4 Repertório Operação: Quanta se que as operações para fornecer. início do processo. 10. 10. 10. números. 0000 a 1001. e como operações complexas deve ser. Ela pode exigir milhares ou talvez milhões de instruções para implementar uma aplicação. 10.12 Um procedimento de reentrada é aquele em que é possível ter várias ligações abertas para ele ao mesmo tempo.3Dois operandos. e uma próxima referência de instrução. 10. 10. é essencial ser capaz de executar cada instrução mais de uma vez e. e o endereço da próxima instrução. desvio à esquerda lógico é realizado em todos os bits. os bits de uma palavra são deslocados para a esquerda ou direita) Numa extremidade.10 O termo refere-se à ocorrência de uma chamada de procedimento dentro de um procedimento. Se uma tabela ou uma lista de itens a ser processado. o tamanho de vários campos. que normalmente é implícito. Formato de Instrução: Instrução comprimento (em bits).9 Em primeiro lugar. 2. o que é retidos. Outra abordagem que pode ser utilizada com um período de três endereço formato de instrução é realizar uma comparação e especificar um ramo da mesma instrução. 10. BDIV X. F TOQUE BMUL FMUL RO. FSUB R0. D. R1 ADDSUB TMOV R0.3 a)0. R0 TOQUE CLoja TMOV R1. Para subtrair.6 Empurrar umCARGA EMOV R0. 16980001011010011000 + 17980001011110000110 001011001 00011110 1110110 0011111001101 0100 01101000 1 0100 34840011010010000100 10. R0. DMUL R1. R0ADD R1. 127 e)0. R0 SUBDIV T DIVSTO X POP X Fonte: [TANE90] . em seguida. Se o digito do resultado do binário de 4 bits Além é maior do que 9 (binário 1001). adicione 6 para obter o resultado correto. e adicionando 1 para o resultado. 9 -70 - 10.4 realizar a adição de quatro bits de cada vez. B. E. basta levar as dezenas complementar e acrescentar: 0736 9674 10410 10. 99 f)-9. C TOQUE ECARGA BADD R0. A TOQUE FMUL CDIV R0. 127 c)-127. C MULCARGA DSUB R1. R1 TOQUE DLoja TMOV R0.5 O dezenas complemento de um número é formado subtraindo-se cada algarismo de 9. R1 MULA ADDMOV X. de uma maneira semelhante ao complemento de dois. para que haja um erro 10.b)582 c)1010 não é um número decimal válido embalado. EMUL R0. 255 b)-127. A. 127 d)-128. examinada no Capítulo 13.7 a) A posição de memória cujo conteúdo inicial é zero.a-X SUBS 000-X .a-X . Quando se desejar interromper um programa em um determinado ponto. cujo valor inicial é 0.a-X SUBS Xx0-X . mais uma vez precisa de um local. Suponha que o valor inicial em M (1) é y. 10.yx SUBS 10uma0x SUBS X-Xuma0-X SUBS 0-X .ax SUBS 000-X .a-X .ax SUBS 0xx-X .ax SUBS 1a + x0a + xx 10. e os sIs efeitos são mostrados abaixo. as instruções podem ser substituídos com Noops. Quando patch temporariamente ou alterar um programa.yumaa . Isto pode ser utilizado para tempo ou medindo introdução de atrasos.9 Padrão BitValorAritméticaValorLógico esquerdaValor deslocamento à esquerdamudança 000000000000000000 000011000102000102 000102001004001004 000113001106001106 001004010008010008 00101501010100101010 00110601100120110012 00111701110140111014 01000800000transbordamento10000transbordamento . Suponha AC inicialmente contém o valor a) InstruçãoCAEfeito sobreM (X) M (0) SUBS 0umaumax SUBS 000x SUBS X-X0-X SUBS 0-X-X-X SUBS 000-X SUBS Xx0x -71 - b) Para além disso. Noops são úteis em RISC pipeline. é necessária tanto para X → CA e AC → X. o NOOP é substituído por um JUMP para uma rotina de depuração. InstruçãoCAM (0)H (1)M (X) SUBS 0umaumayx SUBS 1a . 3.8 1. O programa para X → CA.a0-X SUBS 1-X . igual ao tempo de ciclo de instrução para a NOOP. A NOOP pode ser útil para depuração. M (0).10. Nós também precisa localização de destino.a-X . Noops pode ser utilizado para a almofada de porções de um programa para alinhar instruções sobre limites de palavras ou sub-rotinas em limites de página) 4. Um NOOP introduz atraso conhecida em um programa. 2. M (1). 13a)Resultado CMPZC destino <fonte01 destino> fonte00 destino = fonte10 b)Resultado CMPBandeiras destino <fonteS≠ O destino> fonteS = O destino = fonteZF = 1 .12 A instrução DAA pode ser utilizado após uma instrução ADD para permitir o uso a instrução add em duas palavras de 8 bits que possuem casas decimais embalados. A Além decimal embalado com várias dígitos pode. ao invés de instruções da máquina) Neste último caso. ele mostra-se ou como o dígito resultado é maior do que 9.10 Rodada direção -∞. 10. ou por ajuste AF) Se não existe tal realizar. com a inserção de uma única instrução DAA após cada adição. Se houver um carry decimal (ou seja.11 Sim. se a pilha só é usado para armazenar o endereço de retorno. assim. adicionando 6 corrige o resultado. ao mesmo tempo. então o sistema só funcionará se for a unidade de controle que remove parâmetros. resultado superior a 9) no dígito mais à direita. em seguida. 10.01001900010transbordamento10010transbordamento 010101000100transbordamento10100transbordamento 010111100110transbordamento10110transbordamento 011001201000transbordamento11000transbordamento 011011301010transbordamento11010transbordamento 011101401100transbordamento11100transbordamento 011111501110transbordamento11110transbordamento 10000-1610000transbordamento00000transbordamento 10001-1500010transbordamento00010transbordamento 10010-1410100transbordamento00100transbordamento 10011-1310110transbordamento00110transbordamento 10100-1211000transbordamento01000transbordamento 10101-1111010transbordamento01010transbordamento 10110-1011100transbordamento01100transbordamento 10111-911110transbordamento01110transbordamento 11000-810000-1610000-16 11001-710010-1410010-14 11010-610100-1210100-12 11011-510110-1010110-10 11100-411000-811000-8 11101-311010-611010-6 11110-211100-411100-4 11111-111110-211110-2 10. em seguida. 10. Se a pilha é também utilizado para passar parâmetros. a CPU seria necessário tanto um parâmetro e o PC no topo da pilha. Por exemplo: 27 -73 - +46 6D +06 73 O segundo teste de forma semelhante corrige um transporte desde o dígito esquerdo de um byte de 8 bits. ser programado usando o (ADC) instrução normal de add-with-carry em um loop. B CMP AX. então expoente. exceto que o resultado pode ser zero ou diferente de zero. como um efeito colateral. defina os códigos de condição de acordo com the resultado da a operação. comparar conteúdo do registrador AX e localização A. de modo subtração produz um resultado diferente de zero (Z = 0). ou seja. Mover conteúdo da posição de B para registrar AX. A SETGT CX TEST JCXZ OUT ENTÃO OUT d)MOV EAX. Estas instruções de violar este princípio e são. • Não é igual: os dois operandos são desiguais. F MOV BH. então o resultado é positivo ou sem estouro ou negativa (S = 1) com overflow (O = 1).15 a) Pode ser conveniente ter um resultado palavra de comprimento para a passagem de um parâmetro através de uma pilha. • Menos de: Esta condição é o oposto de "Maior ou igual". Esta é uma vantagem do scond) Não parece haver qualquer especial vantagem para o valor do resultado para o verdadeiro número inteiro um contra todos os binários estar. e A e B são ambos positivos ou negativo. Setembro de 1988. c)SUB CX. 10. as instruções que operam em dados valores serão. incompatíveis com o resto da arquitetura) O caso contra: Estas instruções são semelhantes a ramificar em instruções condição em que eles operam com o resultado de outra operação. e assim o conjunto oposto de condições.B) irá produzir um resultado positivo (S = 0) sem transbordamento (O = 0). note que o IEEE tem uma representação para zero. o fato de que essas outras instruções não não é inconsistente) Para uma discussão mais aprofundada. para torná-lo compatível com o passar parâmetro típico. C SETG BL MOV EAX. o que se reflete nos códigos de condição.c)• Igualdade: Os dois operadores são iguais. então a operação complemento de dois (A . menos. o resultado é diferente de zero (Z = 0) • Maior ou igual: O mesmo raciocínio como para "Maior que" se aplica. Se A é maior do que B com A positivo e B negativo. b) O caso para definir as bandeiras: Em geral. 0 SETE BH OU BL. todos os 32 bits são zero c)representação tendenciosa do expoente d) Sim) No entanto. em seguida. Configurar o registro CX a 0 . B CMP EAX. Porque uma filial em código de condição instruções não por si própria os códigos de condição. consulte "códigos devem Scc Set condição?" por F) Williams. significando b)sinal. que produziria resultados que indicam que -0 <0. Em todos estes casos. D CMP EAX. Computer Architecture News. expoente e significando são todos zero. entãosubtração produz um resultado zero (Z = 1). BH . o código de condição deve refletir o estado da máquina depois da execução de cada instrução que se alterou um valor de dados em alguns -74 - caminho. CX MOV AX. Assim.14a)bit de sinal na posição mais significativo. • Menor ou igual: Esta condição é o oposto de "maior que" e assim o conjunto oposto de condições. 10. • Maior que: Se A é maior do que B. portanto. CX = . 16a) Adicionar um byte de cada vez: AB08 90 C2 + 45 98 50 EE F0 A0 7E 12 b) Adicionar 16 bits de cada vez:AB08 90C2 + 4598 EE50 F0A0 7F12 10.18a)(A + B + C) * D b)(A / B) + (C / D) c) A / (B * C * (D + E)) d) A + (B * ((C + (D .20Postfix Notação: AB + C - Equivalente a(A + B) .B) / (C + D × E) .CDE * .F / G / * H * 10. Não são necessárias instruções stackoriented explícitas. BL = 0/1.B) / (C + D × E) A . 10.C -75 - É importante porque de arredondamento e truncamento efeitos.21 Entrada (A .L) / H) 10.19a) AB + C + D + E + b) AB + CD + * E + c) AB * CD * + E + d) AB .17 Se o processador faz com que a utilização de uma pilha para a manipulação de rotina.E) / F) .(a GT b) . que utiliza apenas o empilhar durante a execução de instruções de chamada e retornar.B) / (C + D × E) B) / (C + D × E) ) / (C + D × E) / (C + D × E) (C + D × E) C + D × E) + D × E) D× E) × E) E) ) vazio vazio . dependendo resultado 10. 10. Saltar se o conteúdo de CX igual 0 . Mudar de local B para registrar EAX . 10.22 A etapa final reúne os dois primeiros elementos da pilha usando o operador +.23 -76 - 10.24 a) b) BE 11121314 00010203 15161718 04050607 .Saída vazio vazio A A AB AB- AB- AB- AB-C AB-C AB-CD AB-CD AB-CDE AB-CDE×+ AB-CDE×+/ Pilha (superior em direita) vazio ( ( (- (- vazio / /( /( / (+ / (+ / (+ × / (+ × / vazio 10. Quando o PowerPC está em modo de Little-Endian. ele é visto pelo processador como ainda está sendo armazenado em local 1C mas no modo little-endian) Na verdade.12 não é uma "verdadeira" organização Little-Endian como geralmente definido. ele é projetado para minimizar a manipulação de dados necessário para converter de um Endian para outro. Em vez disso. mas a localização 1A) Quando ocorre uma transferência. o sistema tem de fazer uma unmunging endereço e uma transferência de bytes de dados para converter para a forma prevista para o processador. são o combinações possíveis: 4 bytes Transferências2-Byte Transferências1 byte Transferências (XOR com 100)(XOR com 110)(XOR com 111) OriginalMungedOriginalMungedOriginalMunged EndereçoEndereçoEndereçoEndereçoAdicionarressEndereço 000100000110000111 001101001111001110 010110010100010101 011111011101011100 100000100010100011 101001101011101010 110010110000110001 111011111001111000 Por exemplo. ele transforma os três bits loworder de um endereço de e eficaz para um acesso à memória) Estes três bits são XORed com um valor que depende do tamanho de transferência: 100b para as transferências de 4 bytes. o valor de dois bytes 5152h é armazenado na localização 1C em Big- Modo Endian) No modo de Little-Endian.25 Figura 10. Note-se que os escalares de 64 bytes são armazenados os mesmos em ambos os formatos no PowerPC) Para acomodar escalares menores. Aqui está uma maneira que vai funcionar: # Include main () { . trocado. o valor ainda está armazenada no modo Big-Endian.26 Há uma série de maneiras de fazer isso. uma técnica conhecida como endereço munging é usado.LE 15161718 07060504 11121314 03020100 c) -77 - O objetivo desta pergunta é comparar halfword. palavras e números inteiros doubleword como membros de uma estrutura de dados em forma de Big e Little-Endian) 10. 110 para transferências de 2 bytes. Estes endereços são munged (XOR com 110) para 1A e 1B) O bytes de dados são recuperados. O processador gera endereços eficazes de 1C e 1D para os dois bytes. e 111 para as transferências de 1 byte) A seguir. e apresentado como se encontrado no 1E endereços unmunged e 1C) -78 - 10. mas tem um deslocamento de 7 bit. '1'. outro printf (". Ou seja. que por sua vez contém o endereço do operando eficaz. 11. mas tem um deslocamento de 0 bit. tanto das que envolvem endereçamento indirecto e indexação. 11. as instruções operar em campos de bits operar de forma big-endian) Deste modo. eo bit mais à direita de um byte é o bit 0. 11. '2 '. else if (* p == '3 '&& * (p +1) == '2' && * (p 2) == '1' && * (p 3) == '0 ') printf ("Esta é uma pequena máquina endian \ n)"). O valor contido no campo de um endereço (valor = A) for usado directamente) O outro campo de endereço refere-se a um registo cujo conteúdo é adicionado ao de A para produzir o endereço eficaz.4Registre-se abordar: O campo de endereço refere-se a um registo que contém o operando. Com postindexing. -79 - CAPÍTULO 11 INstruction SETS: ANFRENTAR MODES E FORMATS RESPOSTAS PARA PERGUNTAS 11.8 É típico que existe uma necessidade de incrementar ou diminuir o registo de índice depois cada referência a ele) Porque esta é uma operação tão comum. 11. 11. No entanto. Erro na lógica para determinar máquina endian-ness \ n"). afirmando que o mais pouco significativo de um byte (bit mais à esquerda) é o bit 7. o endereço de instrução corrente é adicionada ao campo de endereço para produzir o EA) 11. ou a utilização de um indicador de modo poderia ser limitado a apenas um dos campos de endereço. usando autoindexing) 11. Registre-se contra a memória: O . que por sua vez contém o endereço do operando eficaz.5 Registrar endereçamento indireto: O campo de endereço refere-se a um registo. Com preindexing.10 Número de modos de endereçamento: Às vezes um modo de endereçamento pode ser indicado implicitamente) Em outros casos. alguns sistemas irá automaticamente fazer isso como parte de um mesmo ciclo de instrução.6 Deslocamento de endereçamento: A instrução tem dois campos de endereço. pelo menos. a indexação é realizada antes do engano.2Endereçamento direto: O conteúdo do campo de endereços do endereço efetivo do operando. '3' * / p = (char *) e inteiro if (* p == '0 '&& * (p +1) ==' 1 '&& * (p 2) == '2' && * (p 3) == '3 ') printf ("Esta é uma grande máquina endian \ n)"). a indexação é realizada após o engano.7 Abordando Relativa: O registo implicitamente referenciada é o contador de programa (PC). o bit mais à esquerda de um byte é o bit 7. e um ou serão necessários mais bits de modo.9 Essas são duas formas de enfrentar. Número de operandos: instruções típicas de máquinas de hoje prever dois operandos.1Endereçamento imediato: O valor do operando é na instrução./ * ASCII para caracteres '0 '.27 bigEndian 10. os modos de endereçamento deve ser expressa. 11. Cada endereço operando no instrução pode requerer o sI próprio indicador de modo.28 A documentação usa bit little-endian ordem. 11. um de que é explícito.int inteiro. char * p.3Endereçamento indireto: O campo de endereço se refere ao endereço de uma palavra na memória. } 10. integer = 0x30313233. 4EAOperandoEAOperando a)5001100e)6001200 b)201500f)R1400 c)11001700g)4001000 d)7021302h)4001000 O autoindexing com incremento é o mesmo que o modo indirecto registo. 11. excepto que R1 é aumentado para 401 após a execução da instrução. 11. com várias combinações de referências de registo e memória mais modos de endereçamento. Porque isso impõe uma limitação grave. 60 d) 30 e) 50 f)70 11. para um número fixo de registos. buscar referência operando e carregar no PC) . mas exige. que aponta para a próxima instrução após a instrução corrente) Neste caso. endereçamento direto é raramente usado. 11. Byte de endereçamento é conveniente para a manipulação de caracteres. temos: 1110100101.1a) 20-B) 40 c. Desvantagens: o aumento da complexidade da CPU. mais bits de endereço. buscar referência operando. Com o deslocamento de -31. Morada granularidade: Em um sistema com 16 . -80 - Número de conjuntos de registros: Uma vantagem de usar vários conjuntos de registro é que.7a)3 vezes: buscar instrução.3a) no campo de endereço b) localização de memória 14 c) a posição de memória cujo endereço é na posição de memória 14 d) registrar 14 e) a posição de memória cujo endereço está no registrador 14 11. o endereço é eficaz 256000.mais que o registo pode ser utilizado para referências de operando. 11. ANSWERS TO PROBLEMAS 11. -81 - b)2 vezes: buscar instrução. o intervalo é aberto para o comprimento do registo de endereço.5 Lembre-se que os usos endereçamento relativo o conteúdo do contador de programa. um endereço pode fazer referência a uma palavra ou um byte. buscar operando.2a) X3 = X2 b) X3 = (X2) c) X3 = X1 + X2 + 1 d) X3 = X2 + X4 11. a instrução corrente é no endereço decimal 256028 e é de 3 bytes de comprimento.ou palavras de 32 bits. com diferentes comprimentos opcode) Dirigindo-se pode ser mais flexível. são necessários os menos bits. Com o endereçamento de deslocamento. o intervalo de endereços que podem ser referenciados está relacionado com o número de bits de endereço.6 (PC + 1) + Endereço relativa = eficaz Endereço Endereço relativa = -621 + 530 = -91 Convertendo para dois complementos representação. de modo que o PC contém 256031.11 Vantagens: É fácil dar um grande repertório de opcodes. para uma memória de tamanho fixo. uma separação funcional requer menos bits a serem utilizados na instrução. Faixa de endereço: Para endereços que fazem referência a memória. à escolha do designer. ao invés de no topo da pilha.9 O modo relativo ao PC é atraente porque permite a utilização de uma relativamente campo de endereço pequena no formato de instrução. Em seguida. que está no local apontado pelo X. de modo que o resultado é jogado fora) g) Sim) A pilha cresce em direção a memória local 0. projetados para simplificar o compilador. -82 - 11. A instrução a seguir é apenas o que é necessário: IMUL EBX.G) / 26 . o enorme investimento em software existente foi perdido através da conversão para o modelo mais novo.(K × 26 × 26) . porque o operando fonte é o conteúdo de X. 4 TOQUE 88. não temos o dobro de "utilidade".13 InstruçãoStack (topo à esquerda) TOQUE 44 TOQUE 77. 11. os programas escritos para os modelos mais antigos da IBM não iria executar nos modelos mais recentes. porque o endereço do topo da pilha não é alterado até que após o buscar do operando destino. 4 SUB5. 11. Ruim para os clientes da IBM existentes e portanto. e muitas referências de dados. ruim para a IBM. use o deslocamento de endereçamento com um deslocamento de 0. 15. 11.16 Seja X o número de instruções de um endereço. relativamente falando.14 O comprimento de instrução de 32 bits produz melhorias adicionais. O comprimento de 16 bits já pode incluir as operações mais úteis e modos de endereçamento.15 Com um comprimento de palavra diferente.11. tudo em uma palavra de instrução de 16 bits. d) Não. 4 ADD15. 4 TOQUE 1010.12a) Não. porque o ponteiro de pilha é incrementado duas vezes. Para a maioria das referências de instruções. em que os elementos da matriz são de 32 bytes. Consideremos o caso de indexação de uma matriz. porque o segundo elemento da pilha é buscado duas vezes. porque o segundo elemento da pilha é buscado duas vezes. 7. Assim.10 Este é um exemplo) de uma instrução CISC para fins especiais. Assim. um endereço X e L instruções zero endereço. e) Não. 4 MUL20 11. o endereço desejado será dentro de um razoavelmente curto distanciar o endereço PC atual) 11.8Coloque o endereço em um registrador. I. f) Não. b) Não. A viabilidade de ter K dois endereço.11Os três valores são somados: 1970 + 48022 + 8 = 50000. c) Sim) A pilha cresce longe da memória local 0. 32 EBX é um registrador de 32 bits que agora contém o deslocamento para a matriz cujo índice é de 1 byte) 11. requer que: (K × 26 × 26) + (X × 26) + G = 216 Resolvendo para X: X = (216 . 11. Os 7 instruções com três operandos usar B.17 O esquema é semelhante ao de problema 11. o padrão de 0001 pode ser usado para especificar mais opcodes. e campo de D é o último 3 bits. No entanto. N1 = 24 × 11 = 264 bits de c) Para instruções de dois endereços.19Não. L = K = 0. como visto na arquitetura IA-64 Itanium. porque agora Operando 2 não pode especificar registar R1.16. b) Poderíamos ganhar um adicional de 32 opcodes atribuindo outro Operando 2 padrão para essa finalidade) Por exemplo. - . dependendo se o campo de Operando 2 é tudo zeros. Assim: N0 =12 × 8 + 7 × 16 = 208 bits de b) O formato de instrução de um endereço consiste de um código de operação de 8 bits e de 16 bits endereço. considere o caso de não-address zero e nenhuma instrução de dois endereços. Neste caso. isto pode ser visto como um único -83 - opcode com um comprimento de bits igual à dos dois campos de código de operação. campo B é os próximos 15 bits. ou seja. e D para operandos e um para opcode) Deixe-000 através de 110 ser opcodes e 111 ser um código indicando que há menos de três operandos. B.Para verificar este resultado. Se um código de operação modifica o outro ou adiciona informação adicional. 11. C. 7 dos quais têm uma endereço. temos X = 216/ 26 = 210 Isto é o que deve ser quando 10 bits são usados para opcodes e 6 bits para os endereços.18a) O formato de instrução zero endereço consiste de um código de operação de 8 bits e um endereço de 16 bits opcional) O programa tem 12 instruções. Cada valor pode ser interpretado como formas. ter vários opcodes. com operandos em D e C) Os opcodes para as 50 instruções sem operandos também podem ser acomodados em B) Fonte:[TANE90] 11. existe um código de operação de 8 bits e dois operandos. campo C é os próximos 15 bits. N2 = 9 × 8 + 7 × 16 + 11 × 4 = 228 pedaços d) Para obter instruções de três endereços N3 = 5 × 8 + 7 × 16 + 8 × 4 = 184 pedaços 11. Os 500 instruções com dois operandos são especificados com 111 no campo A e um código de operação no campo B.20 a) O campo de código de operação pode assumir um dos dois5 = 32 valores diferentes. Fonte: [PROT88]. a instrução não tem sentido. cada de que é de 4 bits (registro) ou 16 bits (memória). 11. Se o conflito dois opcodes. O programa tem 11 instruções. C e D) Um campo é o primeiro de 3 bits. os pacotes de instrução. Divida a instrução de 36 bits em 4 domínios: A. A desvantagem é a de limitar a flexibilidade de programação. para um total de 64 códigos de operação diferentes. da próxima vez . Além do resultado em si que está sendo armazenado em um registro ou memória.6 Vários fluxos: uma abordagem de força bruta é replicar as porções iniciais do oleoduto e permitir que o oleoduto para buscar as duas instruções. programas do sistema operacional para controlar a execução de programas. A PSW normalmente contém códigos de condição além de outras informações de status. e as instruções subsequentes são buscados de acordo. o hardware primeiro verifica se o alvo ramo está dentro do buffer. zero. (2) A instrução de desvio condicional faz com que o endereço da próxima instrução a ser buscada desconhecida) Assim. além de a instrução seguinte a galho. Dados. a próxima instrução é buscada a partir do buffer. otimizando o uso de registradores. que contêm informações de status. O estágio de execução pode. muitas vezes conhecido como o programa palavra de estado (PSW). Previsão Branch: A previsão é feita se um ramo condicional serão tomadas quando -85 - executado. a meta já foi pré-obtidos. um código de condição também está definido. ter que esperar enquanto a próxima instrução é buscada) 12.7 Um ou mais bits que refletem a história recente da instrução pode ser associado com cada instrução de desvio condicional) Estes bits são referidos como / não feita interruptor de tomada que direciona o processador para fazer uma decisão em particular.3 Códigos de condição são bits definidos pelo hardware CPU como o resultado das operações. endereço 12. de uso geral. Alvo ramo Prefetch: Quando um ramo condicional é reconhecido. Tampão Loop: Um buffer de laço é uma pequena memória.1 Registradores visíveis ao usuário: Estes permitem a máquina de montagem ou linguagem programador para minimizar as referências de memória principal. fazendo uso de dois córregos. a fase de buscar deve esperar até receber o próximo endereço de instrução a partir da fase de execução.5 (1) O tempo de execução geralmente será maior do que o tempo de busca) Execução será envolver a leitura e armazenamento de operandos e do desempenho de alguma operação.CAPÍTULO 12 PROCESSOR SESTRUTURA E FUNÇÃO RESPOSTAS PARA PERGUNTAS 12.2 Códigos de condição. Se assim for. uma operação aritmética pode produzir um positivo. então. negativo. o alvo do ramo é pré-obtidos. a fase de buscar pode ter que esperar por algum tempo antes que ele possa esvaziar o buffer. muito alta velocidade mantida pela instrução buscar estágio do pipeline e contendo o n instruções mais recentemente obtida. Controlo e de estado registos: Estes são usados pela unidade de controlo para controlar a funcionamento da CPU e por privilegiados. reorganizando automaticamente instruções dentro de um programa. ou resultado estouro. 12. Esta meta é então guardada até que a instrução ramo é executado. Se o ramo é tomada. Para exemplo. 12. de modo que as instruções de desvio ocorrer mais tarde do que realmente desejado. Assim. O código pode ser posteriormente testado como parte de um operação de ramificação condicional) 12. 12. Ramo Atraso: É É possível melhorar o desempenho do gasoduto.4 Todos os projetos de CPU incluir um registo ou conjunto de registros. em sequência) Se uma sucursal deve ser tomada. B. o atraso é de 1 ns. 90 × 2 = 180.1 problema) b)11111111 00000001 100000000 Carry = 1.101. Fonte: [PROT88]. b) Um factor de 1. por isso. b) O atraso de pior caso é quando ocorre a interrupção logo após o início do instruções.5 ns. Mesmo paridade indica que existe um número par de 1s no resultado. O número desperdiçado é tão elevada como 10 × 4 = 40.1 ns. 12. então a fracção de ciclos de desperdício é 80 / (180 + 80) = 0. Entre = 0.1a)00000010 00000011 00000101 Carry = 0. . em média.a instrução é encontrada) ANSWERS TO PROBLEMAS 12. O comprimento do ciclo de instrução para este caso é [10 + (15 × 64)] × 0. Overflow = 0. o que resulta em um atraso não superior a 15 ciclos de clock = 1.5 ns. Overflow = 0. a ALU leva o complemento de dois de B e adiciona-lo para A: A:11110000 B + 1: 11.5.2 ns b)0.6 ns 12. A instrução pode ser interrompida entre as transferências de bytes. 12. Zero = 1. este sinalizador está definido.1 = 960 ns. -86 - 12. Mesmo paridade = 1. Para instruções de 100. paridade par = 1.6a) A ocorrência de um JUMP programa de resíduos até quatro ciclos de barramento (que corresponde aos 4 bytes na fila de instrução quando o JUMP é encontrado). Zero = 0. b) Se a capacidade da fila de instrução for 8. Half-Carry = 1. o número de ciclos de enlace nonwasted é. a instrução pode ser interrompido depois da busca de instruções. Mesmo paridade = 0.100 A .18. que é de 960 ns. Overflow = 1. Portanto. Half-carry = 0.2Para executar A . 12.3. que leva 10 ciclos de clock. Zero = 0. o atraso de pior caso é de 1. Ver 10.5a) Um fator de 2.B:11011100 Carry = 1. Entre = 0. a fração de ciclos desperdiçados é 40 / (180 + 40) = 0. c) Neste caso. Quando um transporte tem lugar fora do dígito de ordem inferior (de ordem inferior 4 bits). Entre = 1.7 Tempo 12345 Instrução 1FE Instrução 2FE Instrução 3FE Instrução 4FE Este diagrama distorce a verdadeira imagem) Oexecutar etapa será muito mais do que o estágio de buscar. Half-carry = 0. A bandeira Half-Carry é usado na adição de números decimais embalados.4a) A duração de um ciclo de relógio é de 0. 12.3a)0. Portanto. Fonte: [PROT88]. as instruções são completou a uma taxa de uma por ciclo do relógio.2). podemos calcular a aceleração do pipeline de 2 GHz processador contra um processador de 2 GHz comparável sem pipelining: S = (nk) / [k + (n . b) Pela primeira processador. cada instrução leva 4 ciclo de clock. podemos substituir a equação (12.-87 - 12.500 MIPS. por isso a taxa de MIPS é 2500 MHz / 4 = 625 MIPS. para uma taxa de transferência de 2.pq) n) Como uma boa aproximação.1) = 500/104 = 4.1) com: = Pqnkτ + (1 . porque isso envolve apenas algumas instruções de 1.8 12345678910 I1FIDAFOEX I2FIDAFOEX I3FIDAFOEX I4FIDAFO I5FIDA I6FI I15FIDAFOEX 12.10 a) Usando a equação (12. Assim.8 No entanto. e o número que não causam um ramo é (1 . de modo que a taxa de MIPS é de 2000 MIPs. o aumento de velocidade geral é 4.5 GHz.9a) Podemos ignorar o preenchimento inicial do gasoduto eo esvaziamento final o gasoduto.pq) [k + (n .11 O número de instruções causando ramos tomar lugar é PQN. o processador sem pipeline 2 GHz terá uma velocidade reduzida de um factor de 0.8 × 0. o aumento de velocidade é umafator de cinco.1)]τ Tk Equação (12.8 em comparação com o processador de 2. Para o segundo processador.8 = 3.5 milhão instruções. b) Uma instruçãoé completada por ciclo de clock. 12. -88 - 12. Portanto.2) torna-se então T1 Sk Tk pq .8. 14 a) A comparação de memória endereçada por A0 e A1 torna o BNE condicionar falso. assim o loop é executado um total de 256 vezes.15 BuscarD1D2EXWBCMP Reg1. Assim.12 (1) O alvo ramo não pode ser obtida até o sI endereço é determinado. dois ramos não-tomadas são necessários para alterar a previsão de não tomada) No entanto. para both uma saída loop não servirá para mudar o predição. para 4. dependendo do modo de endereçamento. os registros A0 e A1 são incrementados por 4 × 100 $ = US $ 400. dois palpites errados são necessários para alterar a previsão. É improvável que qualquer estratégia é superior ao outro para a maioria dos programas. no caso da figura 12. quando a previsão atual é não tomado. que pode necessitar de um cálculo de endereços. e os dois últimos ramos não eram tomadas. em seguida. a previsão anterior é restaurado. os registros A0 e A1 são incrementados para $ 4.nkτ nkτ 1.13a)Ligue para o primeiro diagrama de estado de Estratégia Estratégia A) Acorresponde ao seguinte comportamento. 12. se a previsão atual é tomada. caso contrário.004 e 5004 dólares.17 e Estratégia B é que. No entanto. então prever que o ramo não será tomada. dois errada são also necessário para voltar à previsão anterior. b) A estratégia funciona melhor quando é geralmente o caso que as sucursais são tomadas. se houver uma alteração na previsão seguido de um erro. enquanto que na Estratégia B. Da mesma forma.17 e Estratégia B. Devido à longword acesso ea postIncrement endereçamento. respectivamente) D1 ainda contém $ FF) 12. Dois erros são obrigados a mudar de uma previsão. o circuito DBNE é encerrada no primeiro comparação. Nesse ponto. respectivamente) -89 - b) O primeiro comparador processa a condição BNE verdade. apenas um palpite errado é necessária para regressar à previsão anterior. dois ramos tomadas são necessários para alterar a previsão de Tomado. Imm BuscarD1D2EXJcc Alvo BuscarD1D2EXAlvo . estas duas estratégias são superior à estratégia A) A diferença entre Figura 12. e os dois últimos ramos foram levados. Quando a maioria das agências são parte de um ciclo. Ou seja. Se ambos os dois últimos ramos da instrução dada não tomaram o ramo. em seguida. O atraso pode ser aumentada se um componente do cálculo de endereço é um valor que ainda não está disponível. porque as cadeias de dados são as mesmas. porque a comparação os padrões de dados são diferentes. tornando este mecanismo de questionável custo- efetividade) 12. prevêem que o ramo serão tomadas. Em ambos Figura 12. Por conseguinte. o circuito DBNE é terminada) D1 é reduzido de 255 ($ FF) para -1. Outros atrasos se relacionam com contenção para o arquivo de registro e memória principal) (2) O custo de replicar partes significativas do gasoduto é substancial.pq k n-1 τ nk pq nk 1. Os loops programa entre as duas primeiras linhas até que o conteúdo de D1 são diminuído abaixo de 0 (a-1).400 $ e $ 5400. como um valor de deslocamento num registo que ainda não foi armazenado no registro. Ligue para a segunda estratégia diagrama de estado B) Estratégia B corresponde à seguinte comportamento. Isto provoca um atraso no carregamento de uma das correntes.17.pq k n -1 12. 17 expoentes umab R comparar estágio 1expoentes por subtracção R a fase 2escolher expoente estágio 3 R significands AB R alinhar significands R adicionar ou subtrair mantissas R ajustarnormalizar estágio 4expoentesresultado RR . Para o meio científico.725 × (0.4 + 0.16Nós precisamos adicionar os resultados para os três tipos de ramos.098 × 0.724 Para o ambiente comercial.725 × (0.177 = 0.432)] + [0.177 = 0. o resultado é: [0.756 -90 - 12. ponderados pelo fração de cada tipo que ir para o alvo.91] + 0.2 + 0.91] + 0.91] + 0.725 × (0. o resultado é: [0.243)] + [0.325)] + [0.12.732 Para o ambiente de sistemas.35 + 0.177 = 0. a resultado é: [0.098 × 0.098 × 0. 16 apresenta o movimento da janela para um tamanho de cinco.1 a) A Figura 4. e todas as instruções de máquinaessa referência estas variáveis usará operandos memória de referência) (2) Incorporação de um conjunto de registros globais no processador. Cada movimento de um janela na figura é por um incremento de 1. Total = 18. 13. uma forma de aumentar a eficácia do oleoduto. de 2 a 6. c) A maior profundidade de chamadas na figura é 15. Formatos simples instrução. 13. portanto. Total = 0. Simples abordando modos. e (3) uma ênfase otimizar o pipeline de instrução. Esses registros seria fixado em número e disponível para todos procedimentos 13. para W = 16. O compilador tentará alocar os registros para as variáveis que irão ser usado mais em um determinado período de tempo. uma baseada em software e o outro em hardware) A abordagem de software é contar com o compilador para maximizar o uso do registo. a janela de cobre 1 a 5. Total = 8. (2) uma grandenúmero de registros ou o uso de um compilador que optimiza a registar-se o uso.-91 - CAPÍTULO 13 REduced INstruction SET COmputers RESPOSTAS PARA PERGUNTAS 13. Esta abordagem requer a utilização de sofisticados algoritmos de programa de análise) A abordagem de hardware é simplesmente usar mais registradores para que mais variáveis pode ser realizada em registros por mais tempo períodos de tempo.16. . b) Os resultados para W = 8 pode ser facilmente lido a partir da Figura 4. 13.2 Duas abordagens básicas são possíveis.4Uma instrução por ciclo. faz uso de um ramo que não terá efeito até que após a execução da instrução seguinte) ANSWERS TO PROBLEMAS 13.3(1) As variáveis declaradas como global em uma HLL podeser atribuídos posições de memória por o compilador. em seguida. Registre-se para registo operações.1(1) um conjunto limitado de instruções com um formato fixo. Cada movimento é um estouro negativo ou um estouro.5 Ramo retardada. Inicialmente. e assim por diante) Apenas quando a janela atinge 5 a 9 já chegamos a um ponto em que uma janela de tamanho 8 teria de mover. 0. deve esperar uma fase) Se essa dependência de dados ocorre uma fraçãoα do tempo. cada JUMP desperdiça a próxima instrução buscar oportunidade) Por isso 2-Way: N + D + J Pipeline de três vias: Como a fase D podem se sobrepor com o subseqüente E fase. R2. podemos gerar o seguinte código: MOV ECX.4 Carregar! rA ← MIE1E2D Carregar! rB ← MIE1E2D NOOPIE1E2 Filial! XIE1E2 Adicionar! rC ← rA + rBIE1E2 Loja! M ← rCIE1E2D 13. os dados de busca não é completada antes da execução da sequência de instruções. 3200. de modo que o termo ainda devem ser incluídos.6LD R1. como pode ser visto na Figura 13.3 Two-way gasoduto: As fases I e E podem se sobrepor. 100. 4-Way: N + α D + 2J 13. 32. Q [ECX]. EBX. e dados- dependente D provoca um atraso de uma fase)No entanto. Carregar campo VAL ADD S. SAIR. 13. Adicione 32-32 × I CMP ECX. Por fim. 1. Assim. S: = S . as causas de cada JUMPuma perda de duas fases. Feito se K = 100 NOP . R1. Se esta seguinte instrução utiliza os dados buscados como um de sIs operandos. Manter o valor de S em R1 LD R2. parece que podemos eliminar o termo D) No entanto. Cada fase D acrescenta atraso. Adicione a S ADD ECX. esses registros são salvos e restaurados como parte da janela para J + 1. Loop até que I × 32 = 100 × 32 -93 - 13. Manter o valor de K em R2 LP SUB R1. Teste contra limite ajustado JNE LP. assim usamos N ao invés de 2N.6. Use registar ECX para segurar 32 × I LP: MOV EBX.2 Os registros temporários de nível J são os registros de parâmetros de nível J + 1. 32.5Se substituirmos I por 32 × I. então: 3-Way: N + α D + J Quatro vias gasoduto: neste caso.-92 - 13.1 LP1 BEQ R2. as fases podem ser mais curto. MR2. 1. Executar SUB no slot atraso JMP 13.7a)LD MR1. C LDMR4. SR2 ADD SR6. A LDSR2. D ADD MR5. De volta para o início do ciclo SUB R1. Carga A em máquina de registo 1 LD MR2. Carga B em máquina de registo 2 ADD MR1. não temos mais a oportunidade de intercalar os cálculos para fins de agendamento. B LDMR3. SR1. SR5 Isto evita os conflitos de condutas provocadas pelas imediatamente referenciar os dados carregados. R2. B. R1. MR3 Um total de 3 registros de máquina são usados. Um. MR1. SR4. B LDSR4. C LDSR5. D ADD SR3. MR3. mas agora que as duas adições usar o mesmo registo.ADD R2. Agora vamos fazer a atribuição registo: LDMR1. MR4 Cinco máquinas registadoras são usados em vez de três. A LDMR2. R2. D ADD MR2.8Número deMaxNúmero deIndiretoLoad / loja instruçãoinstruçãoabordandoabordandocombinada com tamanhostamanho em bytesmodosaritmética Pentium II121215nãosim PowerPC141nãonão MaxUnalignedMaxNúmero de bitsNúmero de bits por númeroabordandoNúmero depor inteiroFP registo especificador depermitidoUsos MMUregistrar memóriaespecificador . mas a programação é melhorada) -94 - 13. Senão incremento K JMP LP1. MR1. b)Primeiro fazemos instrução reordenação do programa original: LDSR1. MR2 ADD MR1. C LD MR3. Adicionar conteúdo de MR1 e MR2 e armazenar na MR3 LD MR2. MR2. Subtrair 1 (r8) L2: Sethi% Oi (L).9 Registrar-to-Register Mover Rd ← Rs + R0 Incremento. [% r10 +% lo (L)]. Conteúdo de carga do local K em r8 cmp% R8. Adicionar 1 a (r8) bL2 nop L1: dezembro% R8.% r10 ª% R8.11 a) OU src com o Go e armazenar o resultado em dst b) SUBCC src2 de src1 e armazenar o resultadoem G0 c) Src1 ORCC com G0 e armazenar o resultadoem G0 d) Dst XNOR comG0 e) Dst SUB de G0 e armazenar em dst f) ADD 1 a dst (operando imediato) g) SUB 1 de dst (operando imediato) h) OU G0 com G0 e armazenar em dst i) SETHI G0 com 0 j) JMPL% I7 8 m% G0 Fonte: [TANE99] -95 - 13. Comparar conteúdo de r8 com 10 bleL1. 10.12 a) SethiOi% (K).operandos Pentium II2sim224 PowerPC1não155 13. K no registrador r8 ld[% R8 +% lo (K)].Rs ClaroRd ← R0 + R0 13.% r8. Loja (r8) para localização L .% r8. -1 ComplementoRs XOR (-1) NegarR0 . decrementoUse ADD com constante imediata de 1.10 N = 8 + (16 × K) 13. Carregar de alta ordem 22 bits de endereço do local . Ramo if (r8) ≤ 10 nop inc% R8. Loja (r8) para localização L c) SethiOi% (K).% r10 ª% R8.% r8. Carregar de alta ordem 22 bits de endereço do local .b) SethiOi% (K). K no registrador r8 ld[% R8 +% lo (K)]. Comparar conteúdo de r8 com 10 ble)aL1. Adicionar 1 a (r8) bL2 nop L1: L2: Sethi% Oi (L). Ramo if (r8) ≤ 10 dezembro% R8. Carregar de alta ordem 22 bits de endereço do local . [% r10 +% lo (L)]. Vários dutos introduzir um novo nível de paralelismo.% r8.% r8. de modo que cada uma das condutas pode lidar com múltiplas instruções ao mesmo tempo. .1 Um processador superescalar é aquele em que a instrução independente múltipla condutas são usadas. K no registrador r8 ld[% R8 +% lo (K)]. Conteúdo de carga do local K em r8 cmp% R8. 10.% r10 ª% R8. [% r10 +% lo (L)]. Cada percurso. Loja (r8) para localização L -96 - CAPÍTULO 14 INstruction-LEVEL PARALLELISM E SUPERSCALAR PROCESSORS RESPOSTAS PARA PERGUNTAS 14. Comparar conteúdo de r8 com 10 ble)aL1. Adicionar 1 a (r8) L2: Sethi% Oi (L). Conteúdo de carga do local K em r8 cmp% R8. Subtrair 1a partir de (r8) inc% R8. Ramo if (r8) ≤ 10 dezembro% R8. Subtrair 1 (r8) inc% R8. 10. composto de múltiplas fases.% r8. múltiplas instruções em paralelo. a velocidade do clock interno dobrou permite a realização de duas tarefas em um ciclo de clock externo 14. e eles são associada com os valores necessários para as instruções em vários pontos no tempo. ea lógica de previsão de desvio. mas permitem que as instruções para executar a conclusão fora de ordem) Out-of-order problema com conclusão fora-de-ordem: O processador tem uma capacidade de antecipação. As instruções são emitidas com -97 - pouca consideração por sua ordem programa original) As instruções também podem executar a conclusão fora de ordem) 14. Assim.2 Superpipelining explora o fato de que muitos estágios de pipeline executar tarefas que exigem menos do que metade de um ciclo de relógio. (3) Os mecanismos para iniciar. muitas vezes. Máquina de paralelismo é determinada pelo número de instruções que podem ser buscados e executadas ao mesmo tempo (o número de condutas paralelas) e por a velocidade e grau de sofisticação dos mecanismos que o processador utiliza para encontrar instruções independentes. a janela de instrução é uma reserva que mantém decodificado instruções. (2) Lógica para determinar verdadeiras dependências envolvendo valores de registro.1 Este problema é discutido em [JOHN91].permitindo múltiplos fluxos de instruções a serem processadas em um tempo. podem ser executadas em paralelo por sobreposição. e buscar mais além.4 Dependência de dados verdadeira: A segunda instrução precisa de dados produzidos pelo primeiro instrução. Dependência de saída: Duas instruções atualizar o mesmo registro. Umabordagem para reiniciar depois de uma interrupção depende de hardware processador para manter uma reinicialização simples e bem definida . Conflitos de recursos: um conflito de recursos é um concurso de duas ou mais instruções para o mesmo recurso ao mesmo tempo.6 Em questão de ordem. ou emissão.5 Nível de Instrução paralelismo existe quando as instruções em uma seqüência são independente e. 14. ao prever os resultados de. com conclusão em ordem: emitir instruções na ordem exata que seria alcançado por execução sequencial e para escrever os resultados na mesma ordem) Em questão de ordem com conclusão fora-de-ordem: emitir instruções na ordem exata que seria atingido pela execução sequencial. e os mecanismos para comunicar esses valores para onde eles são necessários durante a execução. Estas funções requerem o uso de dutos múltiplos buscar e decodificar etapas. um novo registro é alocado para esse valor. incluindo várias unidades funcionais pipeline e hierarquias de memória capaz de atender simultaneamente múltiplas referências de memória) (5) Mecanismos para cometer o estado do processo na ordem correta) ANSWERS TO PROBLEMAS 14. ramo condicional instruções.9 (1) Instrução buscar estratégias que buscam simultaneamente várias instruções. 14. 14.7 Para uma política de emissão fora da ordem. que tem um registro como um operando destino). permitindo-lhe identificar instruções independentes que podem ser trazidos para o estágio de execução. Dependência processual: As instruções a seguir um ramo (tomadas ou não tomadas) têm uma dependência processual no ramo e não pode ser executado até que o ramo é executado. (4) Os recursos para execução paralela de múltiplas instruções. Estes podem ser emitidos a partir da janela de instruções no ordem mais conveniente) 14.8 Registradores são alocados dinamicamente pelo hardware do processador.3De nível de instrução paralelismo refere-se ao grau em que as instruções de um programa pode ser executado em paralelo. 14. de modo que o ensino superior deve atualizar mais tarde) Antidependência: A segunda instrução destrói um valor que a primeira instrução usa) 14. Máquina paralelismo é uma medida da capacidade do processador para aproveitar paralelismo em nível de instrução. Quando um novo valor de registro é criada (ou seja. portanto. quando uma instrução é executada. R5. o endereço de retorno de interrupção indica tanto o local da instrução que causou a interrupção e o local onde o programa deve ser reiniciado. 1510111415 b) InstruçãoBuscarDecodificarExecutarWriteback 0 ADD R3. R1. [r3]1249 2 e R7. R3. R0. R20123 1 Coloque r6. por causa do hardware necessário para dar a aparência de conclusão em ordem) -98 - 14. fornecendo interrupções precisas é mais difícil do que não proporcionando-lhes. 32356 3 ADD R1. r1. R6.estado que é idêntico ao estado de um processador que tem a finalização em ordem) A subcontratante que ofereça este tipo de estado restart é dito para suportar interrupções precisas. R0. Com interrupções precisos. [r5]891924 9 SUB R2. R467912 7 ADD r0. R5. o processador tem um mecanismo para indicar a instrução excepcional e outro para indicar onde o programa deve ser reiniciado. 84567 5 ou R2. R7. R4671516 7 ADD r0. [r5]891318 9 SUB R2. r1. R69101920 10 e R3. 10781718 8 CARGA r6. R7. [r3]1249 2 e R7. r0341011 4 SRL R7. Com a conclusão fora-de-ordem. 323510 3 ADD R1. 8451213 5 ou R2. R1.2a) InstruçãoBuscarDecodificarExecutarWriteback 0 ADD R3. r4. R3. r7561415 6 SUB R5. R20123 1 Coloque r6. R69102526 10 e R3. R1. r4. Sem interrupções precisos. R1. 10781213 8 CARGA r6. r756810 6 SUB R5. R6. 1510112627 c) . r0341112 4 SRL R7. L4L1 . 31234 3 ADD R1. I3 • leitura e escrita: I2. 82345 5 ou R2.L5L2 .4a) escrever-lerescrever-escreverleitura e escrita L2 . A primeira vantagem de ir para "out-of- questão ordem / fora-de-ordem de conclusão "é a capacidade de obter instruções para o fase de execução assim que o recurso estiver disponível) A unidade de decodificação leva um ciclo para puxar um par de instruções. R7. ou seja.5a)Desde I2 e I1 estão em diferentes colunas da unidade de execução. [r3]0149 2 e R7. e. Portanto. não haverá qualquer velocidade acima de I2 com respeito a pelo I1 alterar a sequência emissão ou seqüência de saída) b) A conclusão. por isso ou "Conclusão in-order-issue/out-of-order" ou "out-of-order-issue/out-of-order conclusão "vai corrigir isso. R6451718 10 e R3. Suponha que a única dependência de dados verdadeira que temos é entre I1 e I2.InstruçãoBuscarDecodificarExecutarWriteback 0 ADD R3. I2 deve permanecer no janela de instruções até que I1 está terminado.L4 L1 . R43456 7 ADD r0. passá-los para a janela) Enquanto a janela tem espaço para a instrução. R0.L5L2 . r4.L5L4 . Como uma nota lateral. 10341213 8 CARGA r6. R1. Este não é o caso para a conclusão fora de ordem.L4L1 . r0121011 4 SRL R7. R1. O par foi no tubo juntos e eles devem sair juntos. R6. o resultado de I1 é necessária paraexecutar I2. se não passar isso através de uma ordem de fora-de-" emissão / out-of-order máquina conclusão ". vamos olhar para o que acontece com o execução dessas instruções. [r5]451116 9 SUB R2. r1. R20123 1 Coloque r6. portanto. R5. em ordem requisitos do sistema requerem I5 para ser concluída antes I6 pode ser escrito. r72367 6 SUB R5. em seguida. I2 não está à espera de I1 para terminarutilizando um dos Os recursos da CPU.3• write-write: I1.25 L4: R4b = R1c + R3uma L5: R1d = R1c + 30 14.L3 L2 .L5 b)L1: R1b = 100 L2: R1c R2 =uma + R4uma L3: R2b = R4uma .L2L2 . é improvável que há um conflito de recursos. O que é muito mais provável éque existe uma dependência de dados verdadeiro aqui) Em outras palavras.L5L3 .L4 L1 . Verdadeira dados dependências não podem ser corrigidos usando out-of-orderemitir ou out-of-order conclusão. I2 14. nada deve realizar-se . R3. I3 • write-leitura: I1. 155678 -99 - 14. porque sI recurso é livre. I6 Antidependência: I3. ao mesmo tempo. A única causou neste processo é que I5.6a)Dependência de dados verdadeira: I1. • I2 espera na janela até que I1 é concluída para satisfazer a dependência • I3 sai da janela assim que I1 é terminado com o recurso que I3 necessidades • I4 vem para fora da janela. I4. 14. I5 deve esperar até ciclo de 7 a ser escrito. out-of-order issue/out-of- conclusão ordem "salva dois ciclos.o estágio de decodificação. I1 . I6 b) I1f1 I2f2 I3 I4 c) I1f1 I2f2 I3 I4 d) lookahead janela I5 d1e2s1 d2a1a2 f1d1a1 f2d2m1m2 I5f1d1e1 I6f2d2 d1e2s1 d2a1a2 f1d1a1 f2d2m1m2 I5f1d1e1 I6f2d2 I3f1d1a1 . I2. e I3 -100 - estão preenchidos. mas uma vez que existem apenas dois tubos de escrita. No fim das contas ". I5.I2) ou até que o recurso executar libera permitindo ao palco para executar. logo que I2 é terminado com o recurso que I4 necessidades • não I5 não precisa ficar na janela. I4 Dependência de saída: I5. Isso reduz a execuçãotempopor2 ciclos / 9 ciclos = 22%. As instruções devem ficar na janela até que o dependência é resolvido (por exemplo. logo queele é feito com decodificação • I6 tem que esperar até I4 é terminado com o recurso que i6 necessidades A conclusão fora de ordem permite instruções para entrar no ciclo de gravação como assim que forem concluídas. haverá casos em que o resultado de uma condição de teste .19 Figura 14. pode emitir instruções fora de ordem) 14.16c é equivalente à Figura 12. Parte c é um esquema de estação de reserva. y = unidades de inteiros. w = envio instrução. E. página 114]: "Considerando que. ou seja. se há uma alteração na previsão de feita a não tomada seguido de um erro de predição da tomada é restaurado. mas as filas poderão emitir fora de ordem com relação ao outro. tais como seqüências de construções if-else ou assentamentos de construções semelhantes. como um ramo particular é que se chegou.16b é equivalente à Figura 12. em vez que apenas no individual história de uma instrução de desvio. isto é verdadeiro para qualquer tipo de erro. se houver é uma mudança na previsão seguido de um erro.7 O valor é a partir de [SMIT95]. sem fora de ordem de emissão.I4f2d2m1 f3d3e1 I6f1d1 I1f2d2 I2f1 s2 a2s1 m3s2 s1 m1m2m3s2 s2 a2s1 m3s2 s1 m1m2m3s2 a2s1 m2m3s2 s1 m1m2m3s2 e2s2 d1a1a2s1 14. em seqüências de condicionais. prevêem que este ramo serão tomadas.16d é equivalente à Figura 12. prevêem que este ramo não será feita) Figura 14.8 a) Figura 14. Para a Figura 14.7c. deve ser baseado nos subhistories determinada por esses caminhos. z = unidades de ponto flutuante) Parte um é o método single-fila.7e: Isto é muito próximo a Figura 14. a previsão feita é retida) -101 - b) O raciocínio é resumido em [OMON99. se o último ramo não foi tomada. em seguida. Parte b é um método de múltiplos fila. emitir instruções de cada fila em ordem. se houver uma alteração na previsão de que não foram tomadas para seguido de um erro. é evidente que a previsão de um tal caso.7c) A diferença é a seguinte) Para a Figura 14.16a: Se o último ramo foi tomada.28a Figura 14. Se que consier cada um dos possíveis caminhos que levam a um determinado ramo aninhada.28b Figura 14. com estruturas de controle de fluxo mais complexos.7c. x = unidades de carga / loja. No entanto. a previsão anterior é restaurado. em loop-fechamento ramos. a direção de um ramo é frequentemente afetado pelas direções tomadas por ramos afins. a história passada de uma instrução de desvio indivíduo é geralmente uma boa guia para o comportamento futuro. Execução: A unidade de controlo faz com que cada micro-operação a ser executada) 15. Isso às vezes é referido como o processador o tempo de ciclo. e sinais de controle para os módulos de E/S. é composto por uma seqüência de ciclos de instrução. 15. 15. -102 - CAPÍTULO 15 CONTROLE UNIT OUNCIONAMENTO RESPOSTAS PARA PERGUNTAS 15. se parte das condições são comuns ". As saídas são: Os sinais de controle dentro do processador: Estes são dois tipos: aqueles que causam dados a serem movidos de um registo para outro. com base no programa que está sendo executado.3 A unidade de um processador de controlo executa duas funções: (1) faz com que o processador a executar as micro-operações na sequência adequada.depende do que uma condição anterior. Uma instrução é composto por uma seqüência demicro-operações. Bandeiras: Estas medidas são necessárias pela unidade de controle para determinar o status do processador eo resultado de operações anteriores de UTA) Os sinais de controlo do bus de controlo: A porção de bus de controlo do barramento de sistema proporciona sinais para a unidade de controlo. determinada pelo programa a ser executado. com uma instrução por ciclo de máquina) Essa seqüência de ciclos de instrução não é necessariamente a mesma que a sequência de escrita instruções que compõem o programa. Descrever as micro-operações que o processador executa) 3." provoca uma micro-operação (ou um conjunto de micro-operações simultâneas) a ser realizada para cada impulso de relógio. tais como os sinais de interrupção e reconhecimentos.4 1. Registo Instrução: O código de operação da instrução atual é usado para determinar qual micro-operações para executar durante o ciclo de execução.por exemplo. se as condições estão relacionados em alguns caminho . 15. ou o tempo de ciclo de relógio. 15. 2.2A micro-operação é uma operação elementar CPU. Determine as funções que a unidade de controlo devem ser executadas para fazer com que as micro-operações a serem realizadas. e essas que ativam ALU específico funções. (2) aqueles que activam um caminho de dados.7(1) Aqueles que ativar uma função ALU. (3) .5 Seqüenciamento: A central faz com que o processador para percorrer uma série de micro-operações na seqüência correta. Definir os elementos básicos do processador. por causa da existência de ramificação instruções. A execução real de instruções segue uma seqüência de tempo de instruções. 15. na execução de um programa. Os sinais de controle para controlar o ônibus: Estes também são de dois tipos: controle sinais para a memória. realizada durante um relógio pulso.1 A operação de um computador. e (2) que gera os sinais de controlo que fazem com que cada microoperation para ser executado.6 As entradas são: Relógio: Esta é a forma como a unidade de controle A unidade de controle "mantém o tempo. CR t3: AC← (AC) e (MBR) CALU. t1:MAR ←(IR (endereço)) t2:MBR ← Memória t3:MBR ← Complemente (MBR) t4:MBR ← Incremento (MBR) t5:R1←(R1) + (MBR) 15. C9 . a unidade de controle é essencialmente uma combinatória circuito. C6. SIs sinais lógicos de entrada são transformados em um conjunto de sinais lógicos de saída. que são os sinais de controlo. CR t3:CA←(MBR)C10 LOJA AC t1: MAR←(IR (endereço))C8 t2:MBR←(AC)C11 t3:Memória ←(MBR)C12.2CARGA AC: t1: MAR←(IR (endereço))C8 t2:MBR← MemóriaC5. C7. C9 JUMPt1: PC← IR (endereço)C3 JUMP se AC = 0Teste AC e ativar C3 se AC = 0 Complemente AC t1: AC← (AC)CALU.Aqueles que são os sinais do barramento externo ou outro sistema de interface externa -103 - 15. C7.8 Em uma implementação hardwired. CR t3:CA←(AC) + (MBR) CALU. dependendo do projeto da unidade de controle) E ACt1: MAR ← (IR (endereço))C8 t2: MBR← MemóriaC5. C9 Nota: Deve haver umatraso entre a ativação de C8 e C9. X. e um ou mais sinais de controle devem ser enviados para a ULA) Tudo isso seria feito durante um ou mais pulsos de clock. ANSWERS TO PROBLEMAS 15. C6. que subtrai o conteúdo da posição X partir do conteúdo do registo R1. e coloca o resultado em R1. C7. CW ADD ACt1:MAR←(IR (endereço))C8 t2:MBR← MemóriaC5. C6.1 Considere o SUB instrução R1. -104 - ‘ 15,3a) Tempo necessário= Tempo de propagação + cópia tempo = 30 ns b) Incrementar o contador de programa envolve duas etapas: (1) Z←(PC) + 1 (2) PC←(Z) O primeiro passo requer 20 + 100 + 10 = 130 ns. O segundo passo requer 30 ns. Tempo total = 160 ns. 15,4a)t1:Y←(IR (endereço)) t2:Z←(AC) + (Y) t3:CA←(Z) b) t1:MAR ←(IR (endereço)) t2:MBR ← Memória t3:Y←(MBR) t4:Z←(AC) + (Y) t5:CA←(Z) c)t1:MAR ←(IR (endereço)) t2:MBR ← Memória t3:MAR ←(MBR) t4:MBR←Memória t5:Y←(MBR) t6:Z←(AC) + (Y) t7:CA←(Z) 15,5Suponha configuração da Figura 10.14a) Para a operação de empurrar, assumir o valor a ser empurrada é no registo R1. POP:t1:SP←(SP) + 1 TOQUE: t1: SP←(SP) - 1 MBR←(R1) t2:MAR←(SP) t3:Memória ←(MBR) -105 - CAPÍTULO 16 MICROPROGRAMMED CONTROLE RESPOSTAS PARA PERGUNTAS 16.1 Uma unidade de controlo ligado é um circuito combinatório, no qual os sinais de entrada lógicos transformam-se em um conjunto de sinais lógicos de saída que funcionam como o controle sinais. Numa unidade de controlo microprogramada, a lógica é especificado por um microprograma) Um microprograma consiste em uma seqüência de instruções em língua microprogramação. Estas são instruções muito simples que especificam micro-operações. 16,2 1. Para executar uma microinstrução, ligue todas as linhas de controle indicados por um 1 bit; deixar de fora todas as linhas de controle indicadas por um 0 bit. Os sinais de controlo resultantes irão causar uma ou mais micro-operações a serem realizadas. 2. Se a condição indicada pela condição de pedaços é falso, executar a próxima microinstrução em sequência) 3. Se a condição indicada pelos bits de condição é verdadeira, o próximo microinstrução a ser executada é indicado no campo de endereço. 16,3A memória de controle contém o conjunto de microinstruções que definem o a funcionalidade da unidade de controlo. 16,4 As microinstruções em cada rotina devem ser executadas sequencialmente) Cada rotina termina com um ramo ou instrução de JUMP, indicando para onde ir. 16,5 Em uma microinstrução horizontal cada bit no campo de controle anexado a um controle linha) Em uma microinstrução vertical, um código é usado para cada ação a ser executada eo decodificador traduz esse código em sinais de controle individuais. 16,6 Microinstrução seqüenciamento: Obter a próxima microinstrução a partir do controle memória) Execução microinstrução: Gere os sinais de controle necessários para executar a microinstrução. 16,7 O grau de embalagem refere-se ao grau de identidade entre uma dada tarefa de controle e pedaços microinstrução específicos. Como os bits de tornar mais compactada, um determinado número de bits contém mais informação. Uma microinstrução descompactado tem nenhuma codificação além de atribuição de funções individuais de bits individuais. 16,8 Microprogramas rígidos são geralmente fixos e comprometI-se a memória só de leitura) Microprogramas macias são mais mutáveis e são sugestivos de microprogramação usuário. 16,9Duas abordagens podem ser tomadas para organizar a microinstrução codificado em campos: funcional e de recursos. Os funcionais de codificação método identifica -106 - funções dentro da máquina e designa campos por tipo de função. Por exemplo, se diversas fontes podem ser utilizadas para a transferência de dados para o acumulador, um campo pode ser designado para essa finalidade, com cada código que especifica uma fonte diferente) Codificação de Recursos vê a máquina como consistindo de um conjunto de independente recursos e dedica um campo para cada (por exemplo, I / O, memória, ALU). 16.10 Realização de computadores. Emulação. Suporte ao sistema operacional) Realização de dispositivos para fins especiais. Apoio linguagem de alto nível) Microdiagnostics. Usuário Alfaiataria) ANSWERS TO PROBLEMAS 16.1 A instrução de multiplicação é implementado por localizações 27 a 37 da microprograma na Tabela 16.2. Trata-se de adições repetidas. 16,2 Suponha que o microprograma inclui uma rotina de buscar que começa na posição 0 e um macroinstruction BRM que começa na posição 40. 40: IF (AC0 = 1) THEN CAR ← 42; MAIS CARRO ← (CAR) + 1 41: CAR ← 43; PC ← (PC) + 1 42: PC ← (IR (endereço)) 43: CAR ← 0 16,3a) Estas bandeiras representam variáveis booleanas que são a entrada para a lógica da unidade de controlo. Juntamente com o tempo de entrada e de outros sinalizadores, eles determinam unidade de controlo saída) b) A fase do ciclo de instrução está implícita na organização do microprograma) Certos locais na memória de microprograma correspondem aos cada uma das quatro fases. 16,4a) Três bits são necessários para especificar uma das oito bandeiras. b) 24-13 - 3 = 8 c) 28 = 256 palavras × 24 bits / palavra = 6144 bits. 16,5 Dois dos códigos no campo de seleção de endereço deve ser dedicado a esse fim) Por exemplo, um valor de 000 podem corresponder a qualquer ramo, um valor de 111 poderia corresponder a ramo incondicional) 16,6Um endereço de memória de controle requer 10 bits (210 = 1,024). Um muito simples mapeamento seria esta: opcodeXXXXX endereço de controle00XXXXX000 Isto permite oito palavras entre endereços sucessivos. 16,7 Um campo de 5 bits gera dois5 - 1 = 31 combinações diferentes de sinais de controlo. Um campo de 4 bits proporciona 24 - 1 = 15 combinações diferentes, para um total de 46. -107 - 16,8 Um formato de 20 bits que consiste nos seguintes campos: A1 (4 bits): especificar se registrar para atuar como uma das entradas para ALU A2 (4 bits): especifica outra entrada ALU A3 (4 bits): especifica se registrar para armazenar ALU AF resultado (5 bits): especifica função ALU SH (3 bits): especifica função de mudança Além disso, um campo de endereço para a sequenciação é necessária) -108 - arquivos e elementos de dados os níveis. Além disso. o sistema pode continuar a funcionar com desempenho reduzido. Sincronização: Com vários processos ativos com possibilidade de acesso a espaços de endereços compartilhados ou recursos de I/Ocomuns. Agendamento: Qualquer processador pode realizar o agendamento.CAPÍTULO 17 PARALLEL PROCESSAMENTO RESPOSTAS PARA PERGUNTAS 17. para que cada instrução é executada em um conjunto diferente de dados pelos diferentes processadores. tarefas. tal como as memórias de . Único instrução. Gerenciamento de memória: Gerenciamento de memória em um multiprocessador deve lidar com todos os problemas encontrados em máquinas com um único processador. para que os conflitos devem ser evitada) O programador deve atribuir processos prontos para processadores disponíveis. 3. de tal forma que o tempo de acesso à memória é aproximadamente o mesmo para cada processador. Instrução múltiplo. Todo o acesso processadores ação para I/O dispositivos. a falha de um único processador de não interromper a máquina) Em vez disso. ou através dos mesmos canais ou através de diferentes canais que fornecem caminhos para o mesmo dispositivo. 17. 4.3 Desempenho: Se o trabalho a ser feito por um computador pode ser organizado de modo a que alguns porções do trabalho pode ser feita em paralelo.Estas processadores compartilham a mesma memória principal e instalações de I/Oe são interligadas por um ônibus ou outro esquema de conexão interna. como é discutido no Capítulo 8. 17. Disponibilidade: Em um multiprocessador simétrico. devem ser tomados cuidados para fornecer sincronização eficaz. Existem duas ou mais processadores similares de capacidade comparável) 2. um sistema com múltiplos processadores trará maior desempenho do que um com um único processador do mesmo tipo. O sistema é controlado por um sistema operativo integrado sistema que proporciona a interação entre os processadores e sIs programas de trabalho. de dados (MIMD) stream: Um conjunto de processadores executar simultaneamente sequências de instruções diferentes sobre diferentes conjuntos de dados. em seguida. Todos os processadores podem executar as mesmas funções (daí o termo simétrico). o sistema operativo tem de explorar o paralelismo do hardware disponível. Com múltiplos processadores executando as mesmas ou diferentes partes do OS. A sincronização é um mecanismo que impõe a exclusão mútua e -109 - ordenação evento. OS tabelas e estruturas de gestão deve ser gerida de forma adequada para evitar um conflito ou inválido operações.4Processos concorrentes simultâneos: Rotinas OS precisa ser reentrante para permitir vários processadores para executar o mesmo código ao mesmo tempo. Crescimento incremental: Um utilizador pode melhorar o desempenho de um sistema de adição de um processador adicional) Escala: Os fornecedores podem oferecer uma gama de produtos com diferentes características de preço e desempenho com base no número de processadores configurado no sistema) 17. os dados individuais (SISD) stream: Um único processador executa uma única fluxo de instruções para operar nos dados armazenados na memória de um único.2 1. vários dados (SIMD) stream: Um único controles de instrução máquina a execução simultânea de um número de elementos de processamento numa base sincronia) Cada elemento de processamento tem uma memória de dados associada. 5.1 Single Instruction. porque todos os processadores podem executar as mesmas funções. 6 Modificado: A linha no cache foi modificada (diferente de memória principal) e está disponível apenas neste cache) Exclusiva: A linha no cache é o mesmo que o da memória principal e não está presente em nenhum outro cache) Compartilhada: A linha no cache é o mesmo que o da memória principal e pode estar presente em outro cache) Inválido: A linha no cache não contém dados válidos. Assim. No melhor dos casos. na maioria 20/4 = 5 processos podem estar ativos simultaneamente) Porque uma das unidades atribuídas a cada processo pode ser ocioso a maior parte do tempo.3 Processador A tem um bloco de memória em sI cache) Quando um escreve para o bloco do . O mínimo número de unidades ociosas é 0 eo número máximo é 2. baseando-se no sistema operacional e compilador para lidar com o problema) Em esquemas de hardware.α + 1) x b) α = 0. em a maioria 20/3 6 processos podem estar ativas ao mesmo tempo. com a quarta unidade alocada sob demanda) Com esta política. uma vez que tenha sido fixada. ANSWERS TO PROBLEMAS -110 - 17. é possível montar um cluster com poder de computação igual ou maior do que uma única grande máquina.α)] X = (nα . 17. a falha de um nó não significa perda de serviço.5 Esquemas de coerência de cache Software tentar evitar a necessidade de adicional circuito de hardware e lógica. Preço Superior / desempenho: Usando blocos de construção de commodities. Fonte: [HWAN93] 17. Acesso à memória não uniforme (NUMA): Todos os processadores têm acesso a todas as partes da memória principal usando cargas e lojas.8 A função de comutação um aplicativos e dados sobre os recursos a partir de uma falha sistema para um sistema alternativo no cluster é chamado de failover. Os tempos de acesso vivida por diferentes processadores são os mesmos. no máximo.6 17. a um custo muito menor. o que é referido como o retorno de falha) 17. um usuário pode começar com um sistema modesto e expandi-lo conforme as necessidades crescer. O tempo de acesso à memória de um processador para todas as regiões de memória é o mesmo.7 Escalabilidade absoluta: É possível criar grandes aglomerados que superam o poder do mesmo os maiores máquinas autônomas. Os mecanismos de paginação em diferentes processadores devem ser coordenados para garantir a consistência quando vários processadores compartilham uma página ou segmento e decidir sobre substituição de página) Confiabilidade e tolerância a falhas: O sistema operacional deve fornecer degradação graciosa em face de falha no processador. no entanto. cada processo pode ser inicialmente alocado com três unidades de fita. que são regiões de memória mais lento e que são mais rápidos diferem) Cachecoherent NUMA (CC-NUMA): Um sistema NUMA em que a coerência de cache é mantida entre as caches dos vários processadores. a lógica de coerência de cache é implementado em hardware) 17. Alta disponibilidade: Porque cada nó de um cluster é um computador autônomo.2 a) Se esta política conservadora é usado.1a) Taxa MIPS = [nα + (1 . para conseguir o melhor desempenho. sem ter que passar por uma grande atualização em que um pequeno sistema existente é substituído por um sistema mais amplo.portas múltiplas. O programador e outras partes do sistema operacional deve reconhecer a perda de um processador e reestruturar as tabelas de gerenciamento de conformidade) 17. 17. dependendo de qual região da memória principal é acessada) A última afirmação é verdadeira para todos os processadores. b) Para melhorar a utilização da unidade. nenhuma das unidades será ocioso. cinco unidades ficarão ociosas de cada vez. para diferentes processadores. Um relacionado função é o restabelecimento das aplicações e fontes de dados para o sistema original. Escalabilidade elementar: aglomerado está configurado de tal maneira que é possível adicionar novos sistemas para a agrupar em pequenos incrementos. O tempo de acesso à memória de um processador diferente.9 Acesso à memória uniforme (UMA): Todos os processadores têm acesso a todas as partes da principal memória usando cargas e lojas. fI) FinvIFonte: [HWAN93] 17.03) + (32 × 0.11 a) A1B1 A2B2 A3B3 A4B4 A5 .11) = 4. como é feito no S/390 descrito no Seção 17.06.41 = 0. em seguida. e pena média normalizada é 2. ou seja. que cache deve bloquear a leitura uté a linha é atualizado de volta para a memória principal.10[UNGE03] refere-se a estes como perdas horizontais e perdas verticais.7 Se apenas o cache L1 é usado. as cópias da linha em caches remotos são invalidados. -113 - 17. ele deve de alguma forma marcar esse bloco na memória principal como sendo inválido.57.69. Assim.57 parece justificar a inclusão do cache L3.69-0. Quando um de cache carrega primeira linha.89) + (5 × 0.4 17. Se ambos L1 e L2 estão presentes. 17. Se a linha já está no estado modificado em outro cache. a pena média é de (1 × 0. com a a adição do cache L2.03) = 2. ele deve solicitar que um escrever a versão mais recente de sI cache para a memória principal) Tudo isto requer circuitos complexos. a pena média é (1 × 0.9 a) chip de multiprocessador b) intercalado superescalar multithreading c) bloqueadas superescalar multithreading d) multithreading simultâneo 17. em seguida. Isto normaliza a 3. 89% dos acessos são para L1 e os restantes 11% dos acessos são para a memória principal) Portanto.05) + (32 × 0.05) + (14 × 0.primeira vez. em seguida.52.06/4. ele atualiza a memória principal) Este é um sinal para outros processadores para invalidar sua própria cópia (se tiver) de que o bloco de memória principal) Escritas subseqüentes de A a esse bloco só afetam o cache do A) Se outro processador tenta ler o bloco da memória principal. a penalidade médio é reduzido a 69% do que com apenas uma memória cache) Se todos os três caches estão presentes.HI) (B + c) + (1 .2.fI) (Hdc) + (1 . em seguida.52/4.6 Se o cache L1 usa uma política de write-through. Esta abordagem é fácil de implementar.41. Solução: Se um faz uma segunda atualização. mas requer mais ônibus e tráfego de memória por causa da política de write-through) b) Este protocolo faz uma distinção entre os estados compartilhados e exclusivos. menos instruções são despachados do que o hardware permita) Comuma perda vertical.fd) + (2b + c) fd)] b)tuma = Tuma + (1 . semelhante ao protocolo MESI) A diferença entre os dois é que o estado compartilhado é dividido em o compartilhado e exclusivo estados para MESI) Isto reduz o número de operações de escrita-Invalidate na ônibus. o mecanismo despachando está parado porque não novas instruções podem ser acomodados devido a problemas de latência) 17.Hd) ((B + c) (1 . Se outro processador quer que o bloco. A redução da pena média 0. a pena média é de (1 × 0. 17.89) + (32 × 0.06) = 3. o bloco é inválido.5 a) Este é o protocolo de coerência de cache mais simples possível) Ela exige que todas processadores usam uma política de write-through) Se uma escrita é feita para um local em cache no caches remotos. respectivamente) Com uma perda horizontal.41 = 0. coloca-o no estado compartilhado. o cache L1 não precisa saber o estado M. o paralelismo total não éalcançado. Se o cache L1 usa uma política de write-back.89) + (5 × 0. é necessário um protocolo MESI total entre L1 umª L2.8 a) tuma = FI[HIc + (1 . 17. -114 - CO A1A2A1 B1B2B1 A3A4A3 B3B4B3 A5A5 B5B6B5 B7B7 A15 A16 A15 instrução questão diagrama d) CO A1A2A1 A3A4A3 A5A5 B1B2B1 B3B4B3 A15 A16 A15 B5B6B5 B7B7 instrução questão diagrama e) . Portanto. e assumimos que a intercalação mecanismo é capaz de utilizar o mesmo fio em dois ciclos de relógio sucessivos se necessário. os diagramas da figura 17.25 e parte (a) do presente solução aplicar. c) Assumimos que o segmento A requer uma latência de dois ciclos de relógio antes que seja capaz de executar A15 instrução.B5 A15B6 A16B7 b) Os dois oleodutos estão operando de forma independente em dois processadores separados em o mesmo chip. F0EI WO COF0EIWO A2 A1B2A2 B1A1A4B2A2 A3B1A1B4A4B2A2 B3A3B1B4A4B2 A5B3A3B6B4A4 B5A5B3B6B4 B7B5A5 A16B6 A15 B7B5A16B6 A15 B7A16 A15A16 diagrama de execução gasoduto F0EIWO COF0EIWO A2 A1A4A2 A3A1A4A2 A5A3A1A4A2 A5A3B2A4 B1A5B4B2 B3B1B4B2 B3B1A16B4B2 A15B3B6A16B4 B5A15B6A16 B7B5A15B6A16 B7B5B6 B7 diagrama de execução gasoduto -115 - COF0EIWOCOF0EIWOCOF0EIWOCOF0EI WO A1A2B1B2A1A2B1B2 A3A4B3B4A3A1A4A2B3B1B4B2 A5A5A3A1A4A2B3B1B4B2 A5A3A1A4A2B3B1B4B2 B5B6B7B5A5A3B6A4B7B3B4 A15A16A15B5A5A16B6B7 instrução questão diagrama A15 B5 A15 B5 A15 . 14 a) Um computador executa por um tempo T. b) Novo aumento de velocidade = 3. tal como o laço J) Com a declaração de L4. Fonte: [HWAN93] 17. 1) = 0 (I = 1. Portanto. Fonte: [HWAN93] 17. o tempo total necessário num único computador é 3T. c) Execução seqüencial do programa original tem 2n = 221 ciclos. M) 20B CONTINUAR D (i) = E (I0 + A (I)(I = 1. b) Tempo de execução SIMD = 26 ciclos. 1) = 0 20A CONTINUAR FAZER 20B I = 1.13 Para começar.43 -116 - 17.12 a) Tempo de execução sequencial = 1664 ciclos de processador. Paralelo execução exige dois13 + 1608 = 9800 ciclos.6% é conseguida) . α = 0. d) O aumento de velocidade ideal de 32 é alcançado. Aceleração eficaz = 3. podemos distribuir o laço externo sem afetar o cálculo. N D (i) = E (I) + A (I) 20C CONTINUAR Usando instruções vetorizadas: B (I. N A (I) = A (I) + B (i. c) Fator de aceleração = 64. b) O ciclo segmentado I pode ser feito em ciclos L) O loop J seccionado produz M somas parciais em ciclos L) Total = 2L + l (k + 1). N) FAZER 20B I = 1.A16 B6 A16 B6 A16 B7 B7 diagrama de execução gasoduto 17. Este é um fator de aumento de velocidade cerca de 214 (221/ 9800). DO 20A I = 1. uma eficiência de 214/256 = 83. o que levaria a 2T tempo em um único computador.15 a) Tempo de execução sequencial = 1.28 c) Cada computador é atribuído 32 iterações equilibradas entre o início eo fim do I-circuito. N) 17.051.16 a) O circuito que requer ciclos de N. j) * C (I. j) * C (I.75. o total é 2N + 1. Assim. M A (I) = A (I) + B (i. Oito computadores executar por um tempo T / 4. N FAZER 10 J = 1. J)(J = 1.628 ciclos b) Speedup = 16. N B (I. J) 10CONTINUAR 20B CONTINUAR FAZER 20C I = 1. • aplicações multi-processo: aplicações multi-processo são caracterizados pela presença de muitos processos single-threaded) Exemplos de aplicações multi-processo incluem o banco de dados Oracle. outra instrução está sendo executada em outro estágio do pipeline) • Superscalar: Vários dutos são construídos por meio da replicação de execução recursos. Eventualmente. e mais sinais de controle) Com organização superescalar. mais interconexões. • aplicações Java: aplicações Java abraçar enfiar de uma maneira fundamental) Não só a linguagem Java facilitar muito aplicações multithread. enquanto uma instrução está sendo executada em um estágio do pipeline. Novamente. Há um limite prático para o quão longe esta tendência pode ser tomado. Isso permite a execução paralela de instruções em tubulações paralelas. desde que os riscos sejam evitados. há a necessidade de mais lógica. existem retornos decrescentes como o número de dutos aumenta) Mais lógica é necessário para gerenciar os riscos e para a fase de recursos de instrução.-117 - CAPÍTULO 18 MULTICORE COmputers RESPOSTAS PARA PERGUNTAS 18. Este mesmo ponto de retornos decrescentes é atingido com SMT. Exemplos de aplicações threads incluem Lotus Domino ou Siebel CRM (Customer Gerente de Relacionamento). simples dutos de 3 estágios foram substituídos por tubulações com 5 estágios. pois com mais estágios. como a complexidade do gerenciamento de vários tópicos sobre um conjunto de dutos limita o número de linhas e número de pipelines que podem ser utilizada de forma eficaz. com algumas implementações de ter mais de uma dúzia de etapas. SAP e PeopleSoft. e depois muitos mais etapas.1 • Canalização: instruções individuais são executados através de um gasoduto de estágios assim que. aumentos de desempenho pode ser alcançado através do aumento do número de pipelines paralelos. mas a máquina virtual Java é um processo multi-threaded que fornece agendamento e gerenciamento de memória para aplicativos Java) Aplicativos Java que podem se beneficiar diretamente de recursos multicore incluem servidores de aplicativos como Java Application Server da Sun. eo servidor de aplicativos Tomcat open-source) Todos os aplicativos que usam a 2 plataforma Java Enterprise -118 - Edition (plataforma J2EE) servidor de aplicativos podem se beneficiar imediatamente da tecnologia multicore) • aplicações de várias instâncias: Mesmo que uma aplicação individual não escala para tirar proveito de um .2 No caso da canalização. 18.4 • aplicações nativas multi-threaded: aplicações multi-threaded são caracterizado por ter um pequeno número de processos altamente roscados. • multithreading simultânea (SMT): Registro bancos são replicadas para que vários segmentos podem compartilhar o uso dos recursos de dutos.3 A memória cache usa menos energia do que a lógica) 18. Websphere da IBM. 18. da BEA Weblogic. um único segmento de execução atinge o ponto onde os perigos e dependências de recursos impede a plena utilização das múltiplas condutas disponíveis. Se um thread em outro núcleo logo depois acessa o mesmo bloco de memória.2 ocorre com 36 núcleos de 7. as posições de memória já estará disponível no cache compartilhado on-chip.6 1.. ainda é possível ganhar com a arquitetura de múltiplos núcleos.1 núcleo equivalentes de cada um) -119 - . 3.975. Se várias instâncias de aplicações requerem algum grau de isolamento. O uso de um cache L2 compartilhado limita o problema coerência de cache para o nível de cache L1. Uma vantagem relacionada é que os dados compartilhados por vários núcleos énão replicado no nível de cache compartilhado.9.5 • O número de processadores de núcleo no chip • O número de níveis de memória cache • A quantidade de memória cache que é compartilhado 18. Interferência construtiva pode reduzir as taxas gerais de perder. ANSWERS TO PROBLEMAS 18. Isto é.1 a) O aumento de velocidade é devido a dois fatores: o perf ganho de desempenho (r) em cada núcleo eo ganho de desempenho Amdahl de usar múltiplos núcleos. Da mesma forma. Os valores são a partir de "A lei de Amdahl no Multicore Era. a aceleração máxima de 51.. Computador. de modo que os tópicos que têm uma menor localidade pode empregar mais cache) 4.5. Com adequados algoritmos de substituição de quadros. . a segunda figura ilustra como compensações mudar quando A lei de Moore permite n = 256 núcleos por chip. enquanto um valor de r = 16 usa todos os recursos para um único núcleo. se um segmento em um núcleo acessa um endereço de memória principal. O eixo y dá do chip multicore simétrica aumento de velocidade em relação ao sI funcionamento em um núcleo. Comunicação Interprocessor é fácil de implementar. julho de 2008. por exemplo. Com f = 0. O artigo apresenta as seguintes conclusões: Um valor r = 1 diz que o chip tem 16 núcleos de base. Linhas assumir valores diferentes para a fracção paralelo (f = 0." por Hill e Marty. é de 6. por exemplo. 18. c)As conclusões são as mesmas para ambas as figuras. 0. 0.999).7 usando oito núcleos.9. Assim: Speedup perf r × 11 perf r × f f×r 1-f 1-f 1 1-f f×r knperf r perf r × n b. este traz o quadro que contém o local referenciado para o cache compartilhado. O aumento de velocidade máxima para f = 0.. a quantidade de cache compartilhado alocado para cada núcleo é dinâmica. o que pode proporcionar alguma vantagem adicional de desempenho.grande número de tópicos. através de posições de memória compartilhada) 5. executando várias instâncias do aplicativo em paralelo. 2. a tecnologia de virtualização (para o hardware do sistema operacional) pode ser usado para fornecer a cada um deles com sI próprio ambiente separado e seguro. 24.5 19.5 UMA FACHADA ADOBE BAD DESVANECIDA (Fonte: [KNUT98]) 19. 33.3a) 1000000 b) 1100100 c) 1101111 d) 10010001 e) 11111111 19. 15. 31. 22. mas os núcleos mais poderosos ajudar em n = 256. 23.184.4a) 100. A lei de Amdahl aplica aos chips multicore porque alcançar os melhores speedups requer fs que estão perto de 1. Implicação 3.975.4 Multicore costup é o custo do sistema multicore. 11.7 a) 15. mesmo a um custo elevado. 101. Implicação 2. 21.Resultado 1. no entanto. melhorias do modelo de programação. 10. mesmo quando o desempenho cresce por apenas r. Resultado 3. 3. que um sistema é rentável se aumento de velocidade é superior à sua costup. 16.75 19. Os investigadores devem procurar métodos de aumentar o desempenho do núcleo. 11. 17. 13. ou com um número intermédio de núcleos middlesized) Lembre-se que para n = 256 e f = 0. 23. 11. 3. 2. 10. pode ser o ideal. 200. 10. 32. Usando mais equivalentes do núcleo por núcleo.f b) 35. 11.9 a) CC)2 b) FF)Ec) 277. 4. 121.64c) A7. 34.13 a)1. 22.59375 c) 682. 20.EC 19. 31. o aumento de velocidade máxima pode ocorrer em um grande núcleo. 5. 23. 20. 4. 2. 12. 12. 120. a aceleração máxima ocorre usando 7. Todos os dígitos de p em .710.1a) 12-B) 3 c) 28 d) 60 e) 42 19.001.25 b) 211. 20. 30. 2. núcleos de base mínimas são ideais em tamanho do chip n = 16.0011 19. 22.01 19. 21.15 Dada a representação de um número x em base de n e base np.875c) 4369. 112. -120 - CAPÍTULO 19 NUMBER SISTEMAS ANSWERS TO PROBLEMAS 19.770.375b) 51.10 a) 1110b) 11100c) 101001100100d) 11111. 14. 12.14 a)134b)105c)363d)185 19. técnicas de compilador. 22. 15. 4.99. 13.6 a) 12b) 159 c) 3410d) 1662e) 43981 19. 100. n núcleos de base.010.11 b) 11. Pesquisadores devem visar o aumento f através de arquitetura apoio. os pesquisadores devem procurar maneiras de projetar núcleos mais poderosos. 2. 122.1 equivalentes de núcleo por núcleo. 32 c)1.2a) 28. 111. 5.5e) 3. 3. 20. 30. e assim por diante) Esta implicação é a mais óbvia e importante) Lembre-se. 21.01 c) 11011. dividido pelo custo do sistema single-core) Porque este costup é muitas vezes muito menos do que n. 12. 13. aumentos de velocidade menor que n pode ser rentável) Resultado 2. Assim.11 a) 9.121/2k = 5k/ 10k 19.11 e) 1000111001.0625 d) 2. 202 19. Para um dado f. Como a lei de Moore leva aos chips multicore maiores. 24. 6. 10. 110. 40 d)1. 102. Movendo-se para batatas fritas mais densos aumenta a probabilidade de que os núcleos serão nonminimal) Mesmo em f = 0. 24 b)1. 25.4d) 2. r> 1. encontrando paralelismo é crítica) Implicação 1.8 a) 10b) 50 c) A00 d) BB8 e) F424 19. 7. 201. 14. 21.01 19. 14. 1 A B Cumabcd 0001100 0010000 0100000 0110001 1000101 1010011 1100010 1111100 20.4 a) A = ST + VW b) A = TUV + Y c) A = F d) A = ST e) A = D + E f) A = YZ (W + X + YZ) = YZ g) A = C 20.5A XOR B = A B + A B . e é facilmente provado. A + B = B + A 20. uma generalização do Teorema de DeMorgan) 20. Em outros casos. a representação de base 3 de 7710 é 2212 ea representação de base 9 é 85.2Lembre-se da lei comutativa: a)AB + CDE + C DE b) AB + AC c)(LMN) (AB) (CDE) d) F (K + R) + SV + W X AB = BA. sem a etapa intermediária de conversão para base 10.3a) F V A L) Esta é apenas uma generalização do teorema de DeMorgan. b) F ABCD) Mais uma vez. Assim é fácil converter uma representação de base n e uma base np representação. Por exemplo.a representação de base n pode ser convertido a uma base única np dígito. o passo intermediário facilita a conversão. -121 - CAPÍTULO 20 DIgital LOGIC ANSWERS TO PROBLEMAS 20. .. .10 Adicionar uma linha de entrada de dados e conectá-lo ao lado da entrada de cada porta AND) -123 - . o POS lista todas as combinações que produzem uma saída de 0.20. C) 20.7Y = NAND (A. S1 F = I0+ I1S0S1S2 + I2 S0 S1 S2+ I3 S0 S1 S2 + I4 S0S1S2 + I5 S0S1 S2 + I6 S0S1S2 + I7 S0 S1 S2 20. . S2. Z3= (X1 X2 X3 X4)(X1 X2X3 X4) = (X1 X2 X3 X4) (X1 X2 X3 X4) 20. D) = ABCD -122 - 20.8a) X1X2X3X4Z1Z2Z3Z4Z5Z6Z7 00001110111 00010010010 00101011101 00111011011 01000111010 01011101011 01100101111 01111010010 10001111111 10011111010 10100000000 10110000000 11000000000 11010000000 11100000000 11110000000 b) Todos os termos têm a forma ilustrada como se segue: Z5 = X1X2X3X4+ X1X2 X3 X4+ X1 X4 X2X3+ X1 X2X3X4 c) Considerando que as listas formam SOP todas as combinações que produzem uma saída de 1. B. B. I7 e as linhas selecione S0. C. Por exemplo. S1.6ABC = NOR (A.9Rotular as 8 entradas I0. Portanto. Há um total de 32 saídas a partir destes quatro 3 × 8 decodificadores.15a) Mesa CaracterísticaSimplificado mesa característica AtualAtualPróxima estadoSRQn +1 entradaestadoQn +1 SRQn 000-00- 001-011 0101100 011111Qn 1000 1010 1100 1111 b) t0123456789 S0111110101 R1101011100 Qn00111100-1 -124 - 20.12 A entrada é um4A3A2A1A0. T = 3× 20 + 30 = 90 ns 20. Use A4A3 como entrada para um 2 × 4 decodificador e ter as quatro saídas de ir para as pistas permitem dos quatro 3 × 8 decodificadores.17 CB A .14 a) A transição para a segunda fase está disponível depois de 20 ns. depois disso. Depois G2 = B2 G1 B2B1 B2B1 G0 B1B0 B1B0 20. 20. B0 e o produto leva como L2. O resultado é que uma e apenas uma das 32 saídas terão um valor de 1.13SUM= A ⊕ B ⊕ C CARRY = AB ⊕ CA ⊕ BC 20. L0.11Definir a condutores de entrada como B2. e assim por diante) Quando o transporte atinge o estágio 32. B1. Use A2A1A0 como a entrada para cada um dos três × 8 decodificadores.16 DadosDQ RelógioCk RQ 20. mais 30 ns são necessários para produzir a soma final) Assim T = 31 × 20 + 30 = 650 ns b) Cada somador de 8 bits produz uma soma de 30 ns e um carry em 20 ns.20. L1. o transporte para o terceiro fase está disponível 20 ns. 21.2O campo de modelo contém informações que indicam que as instruções podem ser executado em paralelo.3Uma paragem indica para o hardware que uma ou mais instruções antes da parada pode têm certos tipos de dependências de recursos com um ou mais instruções após a parada) 21. os ramos de instrução chk)s para uma rotina de tratamento de exceção. 21. uma carga é movido antes de uma instrução de loja que podem alterar a localização de memória que é a fonte da carga) Uma verificação posterior é feito para assegurar que a carga recebe o valor de memória adequada) 21. se a carga produz uma exceção. Se um ld)s detecta uma exceção. Com a execução predicado. comparar e inteiro instruções multimídia) M-unidade: Carregar e armazenar entre registro e memória mais algumas operações ALU inteiros.O3O2O1O0 20.9 Pipelining Software é uma técnica na qual as instruções de várias iterações de um ciclo estão habilitados para executar em paralelo. todas as instruções IA-64 inclui uma referência a um registo predicado de 1 bit. onde apenas 96 dos 4096 locais são realmente utilizados. shift-e-adicionar. lógico. O paralelismo é obtido agrupando instruções de diferentes iterações.8 Com a especulação de dados. ele define o bit NaT associado ao alvo registo. CAPÍTULO 21 THE IA-64 ARquitectura RESPOSTAS PARA PERGUNTAS 21.1 I-unidade: Para aritmética inteira. Se a instrução chk)s correspondente é executado. a exceção não é ativado até que a verificação instrução determina se a carga deveria ter sido tomada) 21. uma instrução de carga é movida no início do programa e sua posição original substituída por uma instrução de verificação. como um endereço para o PLA) O conteúdo desse endereço é o código ASCII necessárias. A carga precoce salva o tempo de ciclo. 21. b) Sim) Isso exigiria um 4K × 8 ROM.10 registros rotativos são usados para pipelining software) Durante cada iteração de um .4 A predicação é uma técnica em que o compilador determina que instruções pode executar em paralelo. Pipelining hardware refere-se à utilização de uma conduta física como parte do hardware -126 - 21. F-unit: floatingpoint instruções.7 Associado a cada registo é um pouco NaT usado para rastrear especulativo adiada exceções.18 a) Use uma PLA com endereços de 12 bits e 96 locais de 8 bits. Cada um dos 96 locais é definido para um código ASCII.5 Predicados permitir que o processador para executar especulativamente ambos os ramos de uma se declaração e somente depois de cometer a condição é determinada) 21. o código de 12 bits original. B-unit: As instruções de desvio. e só é executado caso o valor do predicado é 1 (verdadeiro). 21. e um personagem é convertido simplesmente usando a sua.6 Com o controle de especulação. e se o bit NAT é definido. Fonte: [EVAN03] -127 - 21. Registros empilhados implementar uma pilha) ANSWERS TO PROBLEMAS 21. e o predicado de controle 6. Em um IA-64 com dois FPUs. os comentários não são imprecisos. e (7) na terceira instrução. R6. B.6 Sim) Em IA-64s com menos unidades de ponto flutuante.1 Oito. 4 . Fonte: [MARK00] 21. (5) e (6) na segunda instrução. 38 bits da sílaba 41-bit são comprometidos. ou dois feixes com moldes 00 e 01 não pode ser emparelhado porque eles necessitam de 4 unidades-i) Fonte: [EVAN03] 21.4a) Seis ciclos. Um grande opcode é especificado por 4 bits. R2. 1 JUMPL3 L2: adicionarR6. dois feixes. mais ciclos são necessários para envio cada grupo. 21. I. deixando 3 bits para especificar um suboperação. 21. e apenas se. Os operandos e resultado requerem 7 bits cada.loop-gasoduto software. L. Uma combinação óbvia seria (1). mem (r3 + r2) BGEr4.10 a) movr1.5 A dupla não deve exceder a soma de dois M ou dois I slots com os dois pacotes. M. ambos com molde 00. um dos oito bytes de registrar r16 contém um código ASCII não-dígito.316 21. e o restante de instruções no seguinte) Fonte: [MARK00] 21. (5) e (6) b) O campo de modelo de IA-64 dá uma grande flexibilidade. R1. 1 L3: adicionarR1. 0 movr2. 0 ldr3. mas não são tão úteis quanto poderiam ser. referências de registo dentro dessas faixas são automaticamente incrementado.3 revela que qualquer código de operação pode ser interpretada como referindo-se em 6 de diferentes unidades de execução (M. R5. o número máximo de diferentes principais opcodes é 24 × 6 = 96. (2) e (3) na primeira instrução. Assim.8 a) (3) e (4). 1 adicionarR2. 21. Por exemplo.9 Ramificação para rotular erro deve ocorrer se. Uma máquina com três FPUs enviará os três primeiros de ponto flutuante instruções dentro de umgrupo de um ciclo.7p1comparaçãop2p3 não está presente001 não está presente110 0000 0100 1001 1110 21.2 Tabela 21. cada grupo requer dois ciclos para expedição. pelo menos. X). 50. de modo que muitos combinações são possíveis. L2 adicionarR5. A única unidade de ponto flutuante é o fator limitante) b) Três ciclos. Assim. addr (A) L1: ldr4. (4). / / Executa somente se ri = rj Se a carga avançado sucedido.. e c podem ser usados na sequência de instruções. A latência eficaz da instrução ldf)a foi reduzida pela latência da multiplicação de ponto flutuante) O STF e ldf)c não podem estar no mesmo grupo de instruções. r6 adicionarR1 = 1./ / Valor de loja em ponto flutuante registro t em localização / / Especificado pelo endereço no registo ri / / assume pontos do RI para a [i] ldf)c c = [rj].. (P8)ldfc = [rj]. 0 ldr3. mem (r3 + r2) cmp. 50 (P2)adicionar r5 = 1.12a)O número de registros de saída é SOO = SOF .nep8. q cmp.. dois registros predicado são obrigatórios../ / Avançado de carga de ponto flutuante / / Valor da carga armazenada no local especificado pelo endereço / / no registo rj.bltr1. então c = t (P9)movc = t. o ldf)c irá terminar em um ciclo. p2 = r4. r2 bltr1. a carga começa um ciclo mais tarde do que com o carga avançada) Além disso. p9 = ri. o registro local e de saída se registar grupos consistem em: Grupo registo Local: r32 por R47 Grupo registo de saída: R48 através de R63 Fonte: [TRIE01] APÊNDICE B ASsembly LIDIOMA E .11 a) fmpy t = p.. pois pode haver uma gravação de leitura depois de- dependência) b) fmpyt = p. L1 b) movr1. 0 movr2. 100. Fonte: [MARK00] -128 - 21. rj.SOL = 48-16 = 32 b) Como o grupo registo empilhados começa em r32./ / Se ri = rj./ / P8 ⇒ nenhum conflito stf[Ri] = t. L1 21. 100. r1 adicionarr2 = 4. addr (A) L1: ldr4. q/ / Multiplique ponto flutuante ldf)a c = [rj]. c) Na versão predicado... R5 (P1)adicionar r6 = 1.gep1. valor lugar em ponto flutuante registo c / / assumir pontos rj a um [j] stf[Ri] = t. Olhando para o código assembly gerado pelo compilador ou o janela de desmontagem em um depurador é útil para encontrar erros e para verificar o quão bem um compilador otimiza uma determinada peça de código. Código do sistema pode utilizar as funções intrínsecas em vez de montagem) A melhor moderno Compiladores de C + + têm funções intrínsecas de acesso aos registos de controlo do sistema e outras instruções do sistema) Código Assembléia não é mais necessário para os drivers de dispositivo e outros códigos do sistema quando funções intrínsecas estão disponíveis. dando-lhes uma idéia melhor do alvo linguagem que a HLL deve ser traduzida em) B)2 A linguagem assembly é uma linguagem de programação que é um passo de linguagem de máquina) Linguagem Assembly inclui nomes simbólicos para os locais. Esclarece a execução de instruções. B)31. A documentação completa e de um estilo de programação consistente são necessários. Confiabilidade e segurança) É fácil cometer erros no código de montagem) O assembler não está verificando se as convenções de chamada e registrar salvar convenções são obedecidas. 5. 3. 2. Compiladores foram melhorou muito nos últimos anos. B)4 1. Depuração e verificação. Escrever código em linguagem assembly leva muito mais tempo do que em uma linguagem de alto nível) 2. O tempo de desenvolvimento. a menos que você tem uma abordagem muito sistemática de testes e verificação. Ele mostra como um programa interage com o sistema operativo.REXALTADA TOPICS RESPOSTAS PARA PERGUNTAS B)1 1. Ele mostra como os dados são representados na memória) 3. Portabilidade) Código Assembly é muito específico da plataforma) Portando para uma plataforma diferente é difícil) 6. Há tantas possibilidades de erros escondidos em código assembly que afeta a confiabilidade e segurança do projeto. 4. o processador. Código Assembly é mais difícil para depurar e verificar porque há mais possibilidades de erros do que no código de alto nível) 4. Ninguém está verificando para você. Ele também inclui diretrizes e macros. Código de montagem é mais difícil de modificar e manter porque a linguagem permite que o código espaguete desestruturado e todos os tipos de truques sujos que são difíceis para os outros a entender. Manutenção. 5. Ele esclarece como um programa acessa externodispositivos. Compreender programadores assembly torna os alunos mais alta linguagem de nível (HLL) programadores. Os melhores compiladores são agora muito bom) É preciso uma grande quantidade de conhecimentos e experiência para otimizar melhor que o melhor compilador C + +. O código do aplicativo pode usar funções intrínsecas ou classes de vetores em vez de montagem) Os melhores compiladores modernos C + + têm funções intrínsecas para vetor -130 - operações e outras instruções especiais que anteriormente exigiam programação de montagem) 8. . se o número de push e pop instruções é a mesma em todos os ramos e os caminhos possíveis. Depuração e verificação. 7. e o Sistema I / O. ele substitui a chamada de macro com o próprio macro. O espaço de armazenamento e memória é tão barato hoje em dia que não vale a pena o esforço para usar a linguagem de montagem para reduzir o tamanho do código. 3. e depois pode usar muitas vezes. Comentário: Uma declaração que consiste inteiramente de um comentário. B)7 Um montador de dois passos leva uma primeira passagem através do programa de montagem para construir uma tabela de símbolos que contém uma lista de todos os rótulos e os sIs valores do contador de localização associados. Automodificável código. Um montador de uma passagem combina ambas as operações em uma única passagem. controle de sistema registradores etc podem às vezes ser difícil ou impossível com o código de alto nível) 5. geralmente não é rentável porque interfere com código eficiente de cache) Ele pode. mnemônico. e resolve avançar referências na mosca) ANSWERS TO PROBLEMAS B)1 a) Quando se executa. Sistemas embarcados pequenas têm menos recursos do que os PCs e mainframes. 4. Bibliotecas de funções. ser vantajoso para exemplo. de modo a ajustá-lo para o cache de código. Otimização de código para a velocidade) Compiladores modernos C + + geralmente otimizar o código muito bem na maioria dos casos. Em seguida.2. o tamanho do cache ainda é um recurso crítico tal que ele pode ser útil em alguns casos para optimizar uma peça crítica de código de tamanho. contudo. e acabando com qualquer programa rival) b) "Bombas" Anões do núcleo em regularmente espaçados locais com datas. depuradores e outras ferramentas de desenvolvimento. que é o local DATA) Portanto. O benefício total de otimização de código é maior em bibliotecas de funções que são usados por muitos programadores. operando e comentário B)6 Instruções: representações simbólicas de instruções em linguagem de máquina Directivas: instrução para o assembler para executar ações específicas que fazem o processo de montagem Definições de macro: A definição de macro é uma seção do código que o programador escreve uma vez. É possível fazer as funções de biblioteca com várias entradas que são compatíveis com diferentes compiladores e sistemas operacionais diferentes. Mas há ainda muitos casos em que os compiladores executam mal e onde um aumento dramático na velocidade pode ser alcançada pelo cuidado programação de montagem) 9. 8. esta instrução se copia para o próximo local e os contador de programa é incrementado. para a instrução acabou de copiar. enquanto ter certeza que ele não vai bater-se) A instrução ADD adiciona o valor imediato para 4 o conteúdo da localização 3 locais para baixo. assim. 10. Imp marcha em toda a memória. Quando o montador encontra uma chamada macro. Programação Assembly pode ser necessário para otimizar o código de velocidade ou tamanho em pequenos sistemas embarcados. Assim. Fazendo compiladores. leva uma segunda passagem para traduzir o programa de montagem em objeto -131 - código. a localização DATA agora tem o valor 4. Otimização de código para o tamanho. Fazendo função bibliotecas compatível com vários compiladores e sistemas operacionais. Compreender técnicas de codificação de montagem é necessário para fazer compiladores. para o endereço contido nesse local. Sistemas embarcados. No entanto. . que é o local de dados. as cópias de instrução copiar o local 2 locais para baixo. Acessando instruções que não são acessíveis a partir da linguagem de alto nível) Certas instruções de montagem não têm linguagem de alto nível equivalente) 6. apontando. Código de auto-modificação. Drivers de hardware e código do sistema) Acessando hardware. Em seguida. para incluir um pequeno compilador em programas de matemática onde definidas pelo usuário um função tem de ser calculado muitas vezes. colocando uma cópia de si mesmo em cada localidade. 7. Este requer programação de montagem) B)5 rótulo. 0. e agora é a vez de Imp para executar. Quando as transferências JUMP -2 instrução do anão execução voltar duas etapas.1. ramo para thenblock mov ebx. P executa a instrução Imp a Loop. Imp tenta executar no local Loop . 2. i3 IDIV média. a instrução encontrado haverá de Imp COPY 0. elevando o valor para 8. Imp copia para localização Loop . então a cópia vai para o parente localização 4 palavras para baixo a partir da localização de dados. Assim. 4. mas existe apenas uma instrução não nulo. No entanto. sobrescrevendo localização Loop - 1.que é um 4. Imp foi exterminada) B)5a) CF = 0 b) CF = 1 B)6 Se não houver um excesso. a diferença não terá o valor correto (e. 1. Média inteiro i1: dd20. Como um anão resultado será subvertida e tornar-se um segundo Imp infinitamente perseguindo o primeiro em torno da matriz. Depois de saltar de volta para a ADD instrução. Em segundo lugar no número médio i3: dd82. Assim. que adiciona 4 para o local DADOS. Parte ELSE da instrução IF . Temos a seguinte seqüência: 1. Imp se copia para o local loop. temos a seguinte seqüência: 1. Quando a memória envolve. de modo que anão pode continuar indefinidamente) Nós supomos que a memória tamanho é divisível por 4. em seguida.) B)3LaçoCOPY # 0. Primeiro númeroa média i2: dd13. MemoryPtr CÓPIA 2.2 e P acaba executado a instrução JUMP. -132 - 5. P executa a instrução COPY. MemoryPtr SALTAR loop MemoryPtr DADOS 0 B)4 Este programa (chamemos-lhe P) tem a intenção de frustrar Imp.2. se houver um excesso. P executa a instrução COPY. colocando um 0 no Loop . o momento é crítico. Imp copia para localização Loop . Se agora é a vez de P para executar.1. i2 adicionar avg. B)7jmp próximo B)8avg: RESD 1. definir o sI contador de programa local para Loop. mas não implica necessariamente que anão tem a vantagem) A pergunta é: Será que anão batI Imp mesmo que a barragem não pegar? Se Imp atinge anão primeiro. colocando um 0 no Loop . 3. P executa a instrução JUMP. Primeiro número domédia principal: mov avg. Define ZF se eax = 0 je thenblock: Se ZF set.1. @ MemoryPtr ADD # 1. 3. Este processo continua.obter média inteiro B)9cmp eax. P acaba executado a JUMP. O programa de P foi exterminada) Por outro lado. de facto. SF = OF = 1. 3. as gravações de dados vai perder as três primeiras linhas de anão. i1 adicionar avg. 2. Imp com toda a probabilidade arar direito por meio de código de anão. suponha que Imp está atualmente localizada em Loop . Suponha Imp está atualmente localizada em Loop . terminando assim a marcha do Imp de níveis menores de memória) No entanto. Segundo as regras da Guerra Núcleo da batalha é um empate) (Note-se que este é o resultado de se esperar "com toda a probabilidade)" Os alunos são convidados a analisar outros possibilidades e talvez descobrir o resultado bizarro de um deles.1. será negativo). a diferença terá o valor correcto e deve ser não negativo. SF = OF = 0. c) LaçoADD # 4.1. de modo que os dados são gravados em cada quatro localização. @ MemoryPtr JUMP loop MemoryPtr DADOS 0 B)2 A barragem de dados previsto por movimentos anão através da matriz de memória mais rápida de Imp move. 2. Além disso. b = 0. Senão movimento V1 de cortar. parte do IF em seguida: B)10 msglen é atribuído a constante 12 B)11 V1:resw 1 V2: resw 1 V3: 1 resw mov ax. V2 L1: machado cmp. se ax <= V2 então. ebx. O efeito desta -133 - instrução é para copiar a flag zero para o flag de carry. Os valores devem ser atribuídos . Ou seja. Bit a bit E para definir bits CC JNEL1. eax moveax. se tanto a e b são 0. JUMP sobre ENTÃO parte do IF thenblock: mov ebx. B)13 a) empurrãomachado empurrãobx estouromachado estourobx b) xorax. V1: main cmp ax. V3 L2: . que só define os sinalizadores de status. JUMP se ebx não é igual a 0 testeEDX. se ax <= V2 então. então o gcd é 1. Senão movimento V1 de cortar B)12 O comparar instrução subtrai o segundo argumento do primeiro argumento. Antes do início do programa . 1E. bx B)14 Se X = A e Y = B THEN {Fazer algo} MAIS {Fazer outra coisa} END IF B)15 a) O algoritmo faz uso repetido da equação GCD (a. mas não armazena o resultado. saltar para L2 . ax xorax. bx xorbx. um mod b) e começa por assumir um ≥ b) Por definição. V1 carga para testes. depois. então mdc = a) O restante do programa C implementa a aplicação repetida do operador mod) b) GCD:movebx. saltar para L1 . edx testeebx.jmp próximo. EDX . b) = gcd (b. V2 jbe L1 mov ax. o valor de CF após a instrução cmp é igual ao valor de ZF antes da instrução. V3 jbe L2 mov ax. por definição. JUMP se ebx acima / igual eax submarinoeax. Tomar pares complemento de eax . edx L2:submarinoeax. seguido por uma outra passagem para montar instruções. 1 macerar. são executadas na passagem 1. não é uma solução geral. eax jeL5. eax jmpL3 L5:macerar b)mdc: negeax jeL3 L1:negeax xchgeax. B é encontrada e é armazenado na tabela de símbolos. ebx jeL5. Na segunda passagem Uma etiqueta pode ser definido. no entanto. e na terceira passagem. uma vez que etiqueta B ainda não está na tabela de símbolo. mais tarde. uma vez que é possível para aninhar símbolos futuras muito profundas. b) A maneira mais simples é adicionar outra passagem) A directiva 'A EQU B +1' pode ser tratadas de três passes. edx JNEL4 inceax L4:macerar . JUMP se eax maior do que edx. o programa pode ser montado. no mesmo passo. JUMP se ebx igual a 0 L3.cmpebx. onde todos os símbolos já estão na tabela de símbolos. Saltar se ebx = eax jaeL4. um rótulo não pode ser definida. Conteúdo taxas de eax e edx . Valor de retorno em eax L1:testeeax. No entanto. JUMP se eax não é igual a edx - B)16 a) A razão é que as instruções são montados em passe de 2. Na primeira passagem. ebx macerar L2:testeebx. ebx jmpL3 L4:submarinoebx. Imaginar algo como: AEQU B - BEQU C - CEQU D - - D- Tal programa requer quatro passes apenas para recolher todas as definições de símbolos. eax JNEL2 moveax. Isto. JUMP se eax igual a 0 .JNEL1 moveax. é claro. certas directivas. onde os símbolos futuros não foi encontrado ainda) Assim passar um directivas não pode usar símbolos futuras. edx jgL2 JNEL1 L3:adicionareax. Geralmente pode-se projetar . um montador percolativo que iria realizar como muitos passes. até que não haja mais símbolos futuros permanecem) Este pode ser um conceito teórico bom. B)17 Ele é executado em uma passagem. mas o sI valor prático é nulo. Casos como 'A EQU B'. . uma vez que afeta a tabela de símbolos. onde B é um símbolo futuro. Isso é executado por meio da avaliação e comparando a expressão do campo operando. se necessário. não são importantes e podem ser considerados inválidos.
Report "Respostas Do Livro Em Portugus William Stallings 5 Edio"