ilovepdf_merged (1).pdf
Document Details
Uploaded by Deleted User
Universidade Federal de Itajubá
Tags
Related
- Computer Organization and Architecture PDF
- Computer Organization and Architecture PDF
- Computer Organization and Architecture PDF
- (The Morgan Kaufmann Series in Computer Architecture and Design) David A. Patterson, John L. Hennessy - Computer Organization and Design RISC-V Edition_ The Hardware Software Interface-Morgan Kaufmann-24-101-24-27.pdf
- Bic10503 Computer Architecture Chapter 3 PDF
- Digital Systems and Computer Architecture PDF
Full Transcript
Memória Interna ECOI2208 - Arquitetura de Computadores Prof. Dr. Wendell F. S. Diniz Universidade Federal de Itajubá - Campus Itabira Objetivos de aprendizagem Após ler este capítulo, você será capaz de: Apresentar uma visão geral dos tipos fundamentais de memória principal semicondutora. En...
Memória Interna ECOI2208 - Arquitetura de Computadores Prof. Dr. Wendell F. S. Diniz Universidade Federal de Itajubá - Campus Itabira Objetivos de aprendizagem Após ler este capítulo, você será capaz de: Apresentar uma visão geral dos tipos fundamentais de memória principal semicondutora. Entender a operação de um código básico que pode detectar e corrigir erros de bit único em palavras de 8 bits. Resumir propriedades das organizações modernas DDR-DRAM. Entender a diferença entre memória fash NOR e NAND. Apresentar uma visão geral das novas tecnologias de memórias de estado sólido não volátil. 2 Memória principal semicondutora O elemento básico de uma memória semicondutora é a célula de memória. Todas as células de memória semicondutora compartilham certas propriedades: 1. Apresentam dois estados estáveis (ou semiestáveis), que podem ser usados para representar o binário 1 e 0. 2. São capazes de serem gravadas (pelo menos uma vez), para definir o estado. 3. São capazes de serem lidas, para verificar o estado. 3 Memória principal semicondutora Operação de uma célula de memória: 4 Memória de núcleos ferromagnéticos Memória de acesso aleatório dos primeiros computadores 5 DRAM e SRAM Tipos de memória semicondutora: 6 DRAM e SRAM A mais comum é conhecida como memória de acesso aleatório (RAM — do inglês, Random Access Memory). Uma característica distinta da memória que é designada como RAM é a possibilidade tanto de ler dados como escrever novos dados na memória de um modo fácil e rápido. Outra característica distinta da RAM é que ela é volátil. A tecnologia RAM é dividida em duas tecnologias: 1. dinâmica e 2. estática. 7 DRAM e SRAM Uma RAM dinâmica (DRAM — do inglês, Dynamic RAM) é feita com células que armazenam dados como carga em capacitores. 8 DRAM e SRAM Uma RAM estática (SRAM) é um dispositivo que usa os mesmos elementos lógicos usados no processador. 9 Tipos de ROM Uma memória somente de leitura (ROM — do inglês, Read-Only Memory) contém um padrão permanente de dados, que não pode ser mudado. Uma ROM é não volátil, ou seja, nenhuma fonte de energia é necessária para manter os valores dos bits na memória. A ROM programável (PROM) é não volátil e pode ser gravada apenas uma vez. A memória somente de leitura programável e apagável (EPROM) é apagada opticamente e é lida e gravada eletricamente, assim como a PROM. 10 Tipos de ROM Uma forma mais atraente de memória principalmente de leitura é a memória somente de leitura programável e apagável eletricamente (EEPROM). Essa é uma memória principalmente de leitura que pode ser gravada a qualquer momento sem apagar o conteúdo anterior; somente o byte ou os bytes endereçados são atualizados. Outra forma de memória de semicondutor é a memória flash. É intermediária entre a EPROM e a EEPROM tanto no custo quanto na funcionalidade. 11 Lógica do chip Assim como outros produtos de circuito integrado, a memória semicondutora vem em chips encapsulados. Cada chip contém um array de células de memória. Por exemplo, um chip de 16 Mbits poderia ser organizado como 1 M palavras de 16 bits. No outro extremo está a chamada organização de 1 bit por chip, em que os dados são lidos/escritos 1 bit de cada vez. A figura a seguir mostra uma organização típica de uma DRAM de 16 Mbits. 12 Lógica do chip 13 Encapsulamento do chip Um circuito integrado é montado em uma cápsula que contém pinos para conexão com o mundo exterior: 14 Organização do módulo Organização de memória de 256 kB: 15 Organização do módulo Organização de memória de 1 MB: 16 Correção de erro A falha permanente é um defeito físico permanente, de modo que a célula ou células de memória afetadas não podem armazenar dados de modo confiável, mas ficam presas em 0 ou 1, ou alternam erroneamente entre 0 e 1. Um erro não permanente é um evento aleatório, não destrutivo, que altera o conteúdo de uma ou mais células de memória sem danificar a memória. Erros permanentes e não permanentes certamente são indesejáveis, e a maioria dos sistemas de memória modernos inclui lógica para detectar e corrigir erros. 17 Correção de erro Função do código de correção de erro: 18 Correção de erro Os códigos que operam nesse padrão são conhecidos como códigos de correção de erros. Um código é caracterizado pelo número de erros de bit em uma palavra que pode ser corrigido e detectado. O mais simples dos códigos de correção de erro é o código de Hamming, idealizado por Richard Hamming, no Bell Laboratories. A figura a seguir usa diagramas de Venn para ilustrar o uso desse código em palavras de 4 bits (M = 4). 19 Correção de erro 20 Correção de erro Aumento no tamanho da palavra com correção de erro: 21 Correção de erro Cálculo do bit de verificação: 22 Correção de erro Código SEC-DEC de Hamming: 23 DDR-DRAM Uma das formas mais utilizadas de DRAM é a DRAM síncrona (SDRAM — do inglês, Synchronous DRAM). A SDRAM troca dados com o processador sincronizado com um sinal de clock externo e executando na velocidade plena do barramento do processador/memória, sem imposição de estados de espera. Com o acesso síncrono, a DRAM move dados para dentro e para fora sob o controle do clock do sistema. A figura a seguir mostra a lógica interna da SDRAM de 256 Mb. 24 DDR-DRAM 25 DDR-DRAM Atribuições dos pinos da SDRAM: 26 DDR-DRAM A figura abaixo mostra um exemplo de operação da SDRAM. Nesse caso, o tamanho de rajada é 4 e a latência é 2. O comando de leitura de rajada é iniciado com CS e CAS baixos, enquanto se mantêm RAS e WE altos na transição de subida do clock. 27 DDR-SDRAM Uma nova versão da SDRAM, referida como Double-Data-Rate DRAM (DDR-DRAM), proporciona características que aumentam a taxa de dados. A DDR alcança taxas mais altas de dados de três maneiras: 1. a transferência de dados é sincronizada tanto na borda de subida como na de descida do clock; 2. a DDR usa frequência de clock mais alta no barramento para aumentar a taxa de transferência e 3. Um esquema de buffering é usado. 28 DDR-SDRAM Assim, a JEDEC definiu quatro gerações da tecnologia da DDR: Embora cada nova geração da SDRAM resulte em muito mais capacidade, a velocidade do core da SDRAM não mudou de modo significativo de uma geração para a outra. A figura a seguir mostra uma configuração com dois grupos de banco. 29 DDR-SDRAM 30 Memória flash Outra forma de memória semicondutora é a memória flash. Ela é usada nas aplicações tanto como memória interna como externa. A figura a seguir ilustra a operação básica de uma memória flash. Uma característica importante da memória flash é que ela é uma memória permanente, o que significa que ela retém dados quando não há energia aplicada à memória. 31 Memória flash 32 Memória flash NOR e NAND Na memória flash NOR, a unidade básica de acesso é um bit, referido como uma célula de memória. 33 Memória flash NOR e NAND A memória flash NAND é organizada em arrays de transistor com 16 ou 32 transistores em séries. 34 Memória flash NOR e NAND Gráficos de Kiviat para a memória flash: 35 Novas tecnologias de memória de estado sólido não-voláteis RAM não volátil dentro da hierarquia da memória: 36 Novas tecnologias de memória de estado sólido não-voláteis Nessa miscelânea, como temos visto, a memória flash tem sido adicionada. Ela tem a vantagem sobre a memória tradicional, que é não volátil. A flash NOR é mais adequada ao armazenamento de programas e dados estáticos de aplicações em sistemas embarcados. Ao passo que a flash NAND tem características intermediárias entre a DRAM e os discos rígidos. 37 STT-RAM A STT-RAM é um novo tipo de RAM magnética (MRAM), que caracteriza não volatilidade, velocidade rápida de leitura/escrita (< 10 ns), bem como programação de alta durabilidade (> 1015 ciclos) e energia em standby em 0 (KULTURSAY, 2013). Na STT-RAM, um novo mecanismo de gravação, chamado de comutação da magnetização induzida pela polarização da corrente, é introduzido. A figura a seguir ilustra a configuração geral. A STT-RAM é uma boa candidata tanto para a cache como para a memória principal. 38 STT-RAM 39 PCRAM A tecnologia PCRAM é baseada em um material de liga de calcogeneto, que é similar aos usados em geral nos meios de armazenamento óptico. A capacidade de armazenamento de dados é alcançada a partir das diferenças de resistência entre uma fase amorfa (alta resistência) e uma fase cristalina (baixa resistência) do material baseado em calcogeneto. A figura a seguir ilustra a configuração geral. A PCRAM é uma boa candidata para substituir ou suplementar a DRAM para a memória principal. 40 PCRAM 41 ReRAM A ReRAM (também conhecida como RRAM) trabalha criando resistência em vez de carga direta de armazenamento. Uma corrente elétrica é aplicada a um material, mudando a resistência desse material. O estado de resistência pode então ser mensurado, e 1 ou 0 é lido como resultado. A figura a seguir mostra uma configuração ReRam. A ReRAM é uma boa candidata para substituir ou suplementar tanto o armazenamento secundário como a memória principal. 42 ReRAM 43 Memória cache ECOI2208 - Arquitetura de Computadores Prof. Dr. Wendell F. S. Diniz Universidade Federal de Itajubá - Campus Itabira Objetivos de aprendizagem Após ler este capítulo, você será capaz de: Apresentar uma visão geral das características dos sistemas de memória do computador e do uso da hierarquia da memória. Descrever os conceitos básicos e o objetivo da memória cache. Discutir os elementos-chave do projeto da cache. Fazer distinção entre mapeamento direto, mapeamento associativo e mapeamento associativo por conjunto. Compreender as implicações do desempenho dos diversos níveis de memória. 2 Visão geral do sistema de memória do computador 3 Visão geral do sistema de memória do computador O termo localização indica se a memória é interna ou externa ao computador. Uma característica óbvia da memória é a sua capacidade. Um conceito relacionado é a unidade de transferência. ○ Para a memória interna, a unidade de transferência é igual ao número de linhas elétricas que chegam e que saem do módulo de memória. ○ Pode ser igual ao tamanho da palavra, mas geralmente é maior, possibilitando transferência de várias palavras por ciclo. 4 Visão geral do sistema de memória do computador O método de acesso das unidades de dados inclui: Acesso sequencial: a memória é organizada em unidades de dados chamadas registros. Acesso direto: envolve um mecanismo compartilhado de leitura-escrita. Acesso aleatório: cada local endereçável na memória tem um mecanismo de endereçamento exclusivo, fisicamente interligado. Associativo: permite fazer uma comparação de um certo número de bits com uma combinação específica, fazendo isso com todas as palavras simultaneamente. 5 Visão geral do sistema de memória do computador Comparação Geral: ○ Acesso Sequencial: lento, precisa percorrer dados anteriores. ○ Acesso Direto: intermediário, pode ir direto a setores específicos. ○ Acesso Aleatório: rápido, acesso direto a qualquer dado sem passar por outros. ○ Acesso Associativo: busca baseada em conteúdo, eficiente, mas complexo. 6 Visão geral do sistema de memória do computador Do ponto de vista do usuário, as duas características mais importantes da memória são capacidade e desempenho. Três parâmetros de desempenho são usados: 1. Tempo de acesso (latência) 2. Tempo de ciclo de memória 3. Taxa de transferência Uma variedade de tipos físicos da memória tem sido empregada. As mais comuns hoje em dia são memória semicondutora, memória de superfície magnética, usada para disco e fita, e óptica e magneto-óptica. 7 A hierarquia de memória As restrições de projeto podem ser resumidas por três questões: 1. Quanto? 2. Com que velocidade? 3. A que custo? A questão da quantidade é, de certa forma, livre. Para conseguir maior desempenho, a memória deve ser capaz de acompanhar a velocidade do processador. O custo da memória deve ser razoável em relação a outros componentes. 8 A hierarquia de memória Diversas tecnologias são usadas para implementar sistemas de memória e, por meio desse espectro de tecnologias, existem as seguintes relações: 1. Tempo de acesso mais rápido, maior custo por bit. 2. Maior capacidade, menor custo por bit. 3. Maior capacidade, tempo de acesso mais lento. O dilema que o projetista enfrenta é claro. 9 A hierarquia de memória Para sair desse dilema, é preciso não contar com um único componente ou tecnologia de memória, mas empregar uma hierarquia de memória. Conforme descemos na hierarquia, ocorre o seguinte: 1. Diminuição do custo por bit. 2. Aumento da capacidade. 3. Aumento do tempo de acesso. 4. Diminuição da frequência de acesso à memória pelo processador. Uma hierarquia típica é ilustrada na figura a seguir. 10 A hierarquia de memória 11 Princípios da memória cache A memória cache é desenvolvida para combinar o tempo de acesso de memórias de alto custo e alta velocidade com as memórias de menor velocidade, maior tamanho e mais baixo custo. 12 Princípios da memória cache A figura abaixo representa o uso de múltiplos níveis de cache: 13 Princípios da memória cache Estrutura de cache/memória principal: 14 Princípios da memória cache Operação de leitura de cache: 15 Princípios da memória cache Organização típica da memória cache: 16 Elementos de projeto da cache 17 Endereços da cache Uma cache lógica, também conhecida como cache virtual, armazena dados usando endereços virtuais. Uma cache física armazena dados usando endereços físicos da memória principal. Uma vantagem da cache lógica é que a velocidade de acesso a ela é maior do que para uma cache física, pois a cache pode responder antes que a MMU realize uma tradução de endereço. A desvantagem é que a maioria dos sistemas de memória virtual fornece, a cada aplicação, o mesmo espaço de endereços de memória virtual. 18 Endereços da cache Cache lógica: 19 Endereços da cache Cache física: 20 Tamanho da memória cache Quanto maior a cache, maior o número de portas envolvidos no endereçamento da cache. O resultado é que caches grandes tendem a ser ligeiramente mais lentas que as pequenas — mesmo quando construídas com a mesma tecnologia de circuito integrado e colocadas no mesmo lugar no chip e na placa de circuito. A área disponível do chip e da placa limita o tamanho da cache. Como o desempenho da cache é muito sensível à natureza da carga de trabalho, é impossível chegar a um único tamanho ideal de cache. 21 Função de mapeamento É necessário haver um algoritmo para mapear os blocos da memória principal às linhas de cache. É preciso haver um meio para determinar qual bloco da memória principal atualmente ocupa uma linha da cache. A escolha da função de mapeamento dita como a cache é organizada. Três técnicas podem ser utilizadas: 1. direta, 2. associativa e 3. associativa por conjunto. 22 Função de mapeamento Mapeamento direto é a técnica que mapeia cada bloco da memória principal a apenas uma linha de cache possível. O mapeamento é expresso como: ○ i = j módulo m em que ○ i = número da linha da cache ○ j = número do bloco da memória principal ○ m = número de linhas da cache 23 Função de mapeamento Mapeamento da memória principal para a cache - direto: 24 Função de mapeamento Organização de cache com mapeamento direto: 25 Função de mapeamento O mapeamento associativo compensa a desvantagem do mapeamento direto, permitindo que cada bloco da memória principal seja carregado em qualquer linha da cache: 26 Função de mapeamento Organização da memória cache totalmente associativa: 27 Função de mapeamento O mapeamento associativo por conjunto é um meio-termo que realça os pontos fortes das técnicas direta e associativa, enquanto reduz suas desvantagens. Neste caso, a cache é uma série de conjuntos, cada um consistindo em uma série de linhas. As relações são: m = v×k i = j módulo v Isso é conhecido como mapeamento associativo em conjunto com k-linhas. 28 Função de mapeamento Mapeamento da memória principal na cache - associativa em conjunto com k linhas (k-way): 29 Função de mapeamento Também é possível implementar a cache associativa em conjunto como k caches de mapeamento direto: 30 Função de mapeamento Associatividade variável pelo tamanho da cache: 31 Algoritmos de substituição Uma vez que a cache esteja cheia, e um novo bloco seja trazido para a cache, um dos blocos existentes precisa ser substituído. Para as técnicas associativa e associativa em conjunto, um algoritmo de substituição é necessário. O mais eficaz é o usado menos recentemente (LRU). Outra possibilidade é “primeiro a entrar, primeiro a sair” (FIFO). Outra possibilidade de algoritmo, ainda, é o usado menos frequentemente (LFU). 32 Política de escrita Quando um bloco que está residente na cache estiver para ser substituído, existem dois casos a serem considerados. 1. Se o bloco antigo na cache não tiver sido alterado, ele pode ser substituído por novo bloco sem primeiro atualizar o bloco antigo. 2. Se pelo menos uma operação de escrita tiver sido realizada em uma palavra nessa linha da cache, então a memória principal precisa ser atualizada escrevendo a linha de cache no bloco de memória antes de trazer o novo bloco. Diversas políticas de escrita são possíveis, com escolhas econômicas e de desempenho. 33 Política de escrita A técnica mais simples é denominada write through. Usando esta técnica, todas as operações de escrita são feitas na memória principal e também na cache, garantindo que a memória principal sempre seja válida. Numa técnica alternativa, conhecida como write back, as atualizações são feitas apenas na cache. Em uma organização de barramento em que mais de um dispositivo (em geral, um processador) tem uma cache e a memória principal é compartilhada, um novo problema é introduzido. 34 Política de escrita Se os dados em uma cache forem alterados, isso invalida não apenas a palavra correspondente na memória principal, mas também essa mesma palavra em outras caches (se qualquer outra cache tiver essa mesma palavra). Mesmo que uma política write through seja usada, as outras caches podem conter dados inválidos. Diz-se que um sistema que impede esse problema mantém coerência de cache. Algumas das técnicas possíveis para a coerência de cache são: 35 Política de escrita Observação do barramento com write through: cada controlador de cache monitora as linhas de endereço para detectar as operações de escrita para a memória por outros mestres de barramento. Transparência do hardware: um hardware adicional é usado para garantir que todas as atualizações na memória principal por meio da cache sejam refletidas em todas as caches. Memória não cacheável: somente uma parte da memória principal é compartilhada por mais de um processador, e esta é designada como não cacheável. 36 Tamanho da linha À medida que o tamanho do bloco aumenta, a razão de acerto a princípio aumentará por causa do princípio da localidade, que diz que os dados nas vizinhanças de uma palavra referenciada provavelmente serão referenciados no futuro próximo. À medida que o tamanho do bloco aumenta, dados mais úteis são trazidos para a cache. Contudo, a razão de acerto começará a diminuir enquanto o bloco se torna ainda maior e a probabilidade de uso da informação recém-trazida se torna menor que a probabilidade de reutilizar as informações que foram substituídas. 37 Número de caches Caches multinível À medida que a densidade lógica aumenta, torna-se possível ter uma cache no mesmo chip que o processador: a cache no chip. A cache no chip reduz a atividade do barramento externo do processador e, portanto, agiliza o tempo de execução e aumenta o desempenho geral do sistema. A organização mais simples desse tipo é conhecida como uma cache de dois níveis, com a cache interna designada como nível 1 (L1) e a cache externa designada como nível 2 (L2). 38 Número de caches Caches multinível Razão de acerto total (L1 e L2) para L1 de 8 kB e 16 kB: 39 Número de caches Caches unificadas versus separadas Mais recentemente, tornou-se comum dividir a cache em duas: uma dedicada a instruções e uma dedicada a dados. Essas duas caches existem no mesmo nível, normalmente como duas caches L1. Quando o processador tenta buscar uma instrução da memória principal, ele primeiro consulta a cache L1 de instruções. Quando o processador tenta buscar dados da memória principal, ele primeiro consulta a cache L1 de dados. 40 Organização da cache do pentium 4 A evolução da organização da memória cache é vista claramente na evolução dos microprocessadores Intel: 41 Organização da cache do pentium 4 Visão simplificada da organização do Pentium 4, destacando o posicionamento das três caches: 42 Organização da cache do pentium 4 Modos de operação da cache do Pentium 4: 43 Visão de alto nível e interconexões ECOI2208 - Arquitetura de Computadores Prof. Dr. Wendell F. S. Diniz Universidade Federal de Itajubá - Campus Itabira Objetivos de aprendizagem Após ler este capítulo, você será capaz de: Entender os elementos básicos de um ciclo de instrução e o papel das interrupções. Descrever o conceito de interconexão dentro de um sistema computacional. Avaliar as vantagens relativas da interconexão ponto a ponto em comparação com a interconexão de barramento. Apresentar uma visão geral da QPI. Apresentar uma visão geral da PCIe. 2 Componentes do computador Abordagens de hardware e software - programação no hardware: 3 Componentes do computador Abordagens de hardware e software - programação no software: 4 Componentes do computador Componentes do computador - vista de nível superior: 5 Função do computador A função básica realizada por um computador é a execução de um programa, que consiste em um conjunto de instruções armazenadas na memória. O processamento exigido para uma única instrução é chamado de ciclo de instrução. Usando a descrição simplificada em duas etapas dada anteriormente, o ciclo de instrução é representado na figura a seguir. As duas etapas são conhecidas como ciclo de busca (fetch) e ciclo de execução. 6 Função do computador Ciclo de instrução básico: 7 Busca e execução de instruções No início de cada ciclo de instrução, o processador busca uma instrução da memória. Em um processador típico, um registrador chamado contador de programa (PC) mantém o endereço da instrução a ser buscada em seguida. A menos que seja solicitado de outra maneira, o processador sempre incrementa o PC após cada busca de instrução, de modo que buscará a próxima instrução em sequência (ou seja, a instrução localizada no próximo endereço de memória mais alto). 8 Busca e execução de instruções O processador interpreta a instrução e realiza a ação solicitada. Em geral, essas ações estão em uma destas quatro categorias: 1. Processador-memória: os dados podem ser transferidos do processador para a memória ou da memória para o processador. 2. Processador-E/S: os dados podem ser transferidos de ou para um dispositivo periférico, transferindo entre o processador e um módulo de E/S. 9 Busca e execução de instruções 3. Processamento de dados: o processador pode realizar alguma operação aritmética ou lógica sobre os dados. 4. Controle: uma instrução pode especificar que a sequência de execução seja alterada. Além disso, em vez de referências à memória, uma instrução pode especificar uma operação de E/S. A figura a seguir oferece uma visão mais detalhada do ciclo de instrução básico. 10 Busca e execução de instruções Diagrama de estado de ciclo de instrução: 11 Interrupções Praticamente todos os computadores oferecem um mecanismo por meio do qual outros módulos (E/S, memória) podem interromper o processamento normal do processador. A tabela abaixo lista as classes mais comuns de interrupções: 12 Interrupções As interrupções são fornecidas em primeiro lugar como um modo de melhorar a eficiência do processamento. Com as interrupções, o processador pode estar engajado na execução de outras instruções enquanto uma operação de E/S está em andamento. Depois que essas poucas instruções tiverem sido executadas, o controle retorna ao programa do usuário. Enquanto isso, o dispositivo externo está ocupado aceitando e imprimindo dados vindos da memória do computador. 13 Interrupções Essa operação de E/S é realizada simultaneamente com a execução de instruções no programa do usuário. Quando o dispositivo externo está pronto para ser atendido — ou seja, quando estiver pronto para aceitar mais dados do processador —, o módulo de E/S para o dispositivo externo envia um sinal de requisição de interrupção ao processador. O processador responde suspendendo a operação do programa atual, desviando para um programa para atender a esse dispositivo de E/S em particular, conhecido como tratador de interrupção, e retomando a execução original depois que o dispositivo for atendido. 14 Interrupções Fluxo de controle de um programa sem e com interrupções: 15 Interrupções Ciclo de instruções com interrupção: 16 Interrupções Diagrama do estado de ciclo de instruções, com interrupções: 17 Interrupções múltiplas Duas técnicas podem ser utilizadas para lidar com múltiplas interrupções: Desativar as interrupções enquanto uma interrupção estiver sendo processada. Uma interrupção desabilitada significa simplesmente que o processador pode ignorar e ignorará esse sinal de requisição de interrupção. Definir prioridades para interrupções e permitir que uma interrupção de maior prioridade faça com que um tratamento de interrupção com menor prioridade seja interrompido. 18 Interrupções múltiplas Transferência de controle com múltiplas interrupções - processamento de interrupção sequencial: 19 Interrupções múltiplas Transferência de controle com múltiplas interrupções - processamento de interrupção aninhado: 20 Interrupções múltiplas Exemplo de sequência de tempo de múltiplas interrupções: 21 Estruturas de interconexão O conjunto de caminhos conectando os diversos módulos é chamado de estrutura de interconexão. O projeto dessa estrutura depende das trocas que precisam ser feitas entre os módulos. A figura a seguir sugere os tipos de trocas que são necessárias, indicando as principais formas de entrada e saída para cada tipo de módulo: 1. Memória 2. Módulo de E/S 3. Processador 22 Estruturas de interconexão Módulos do computador: 23 Estruturas de interconexão Módulos do computador: 24 Estruturas de interconexão Módulos do computador: 25 Estruturas de interconexão A estrutura de interconexão deve admitir os seguintes tipos de transferências: Memória para processador Processador para memória E/S para processador Processador para E/S E/S de ou para a memória 26 Interconexão de barramento Um barramento é um caminho de comunicação que conecta dois ou mais dispositivos. Uma característica-chave é que ele é um meio de transmissão compartilhado. Cada linha é capaz de transmitir sinais representando o binário 1 e o binário 0. Com o tempo, uma sequência de dígitos binários pode ser transmitida por uma única linha. Juntas, várias linhas de um barramento podem ser usadas para transmitir dígitos binários simultaneamente (em paralelo). 27 Interconexão de barramento Um barramento que conecta os principais componentes do computador (processador, memória, E/S) é chamado de barramento do sistema. Um barramento do sistema consiste, normalmente, em cerca de 50 a centenas de linhas separadas. As linhas de dados oferecem um caminho para movimentação de dados entre os módulos do sistema. Essas linhas, coletivamente, são chamadas de barramento de dados. 28 Interconexão de barramento As linhas de endereço são usadas para designar a origem ou o destino dos dados no barramento de dados. As linhas de controle são usadas para controlar o acesso e o uso das linhas de dados e endereço. As linhas de controle típicas incluem: Escrita de memória Leitura de memória Escrita de E/S 29 Interconexão de barramento Leitura de E/S ACK de transferência Solicitação de barramento (bus request) Concessão de barramento (bus grant) Requisição de interrupção (interrupt request) ACK de interrupção (interrupt acknowledge) Clock Reset 30 Interconexão de barramento Esquema de interconexão de barramento: 31 Interconexão ponto a ponto Em comparação com o barramento compartilhado, a interconexão ponto a ponto tem menor latência, maior taxa de dados e melhor escalabilidade. Analisamos um exemplo importante e representativo da técnica de interconexão ponto a ponto: QuickPath Interconnect (QPI), da Intel, que foi apresentada em 2008. Características significativas da QPI: Conexões diretas múltiplas Arquitetura de protocolo em camadas Transferência de dados em pacotes 32 Interconexão ponto a ponto Configuração multicore usando QPI: 33 Interconexão ponto a ponto Define-se QPI como uma arquitetura de protocolo de quatro camadas, que abrange as seguintes camadas: 1. Física 2. Ligação (considere que o nome correto é ENLACE) 3. Roteamento 4. Protocolo A figura a seguir mostra camadas de QPI. 34 Interconexão ponto a ponto 35 QPI – Camada física Interface física da interconexão da Intel QPI: 36 QPI – Camada física Distribuição multivia da QPI: 37 QPI – Camada de ligação A camada de ligação QPI desempenha duas funções-chave: controle de fluxo e controle de erro. A função de controle de fluxo é necessária para assegurar que a entidade de QPI de envio não sobrecarregue uma entidade de QPI de recebimento ao enviar dados mais rápido do que o receptor pode processar e para limpar os buffers para receberem mais dados. A função de controle de erro em uma camada de ligação detecta e recupera a partir desses erros de bits, e então isola camadas mais altas a partir da experiência de erros de bits. 38 QPI – Camada de roteamento A camada de roteamento é usada para determinar o caminho que um pacote vai trafegar através de interconexões disponíveis do sistema. Em pequenas configurações as opções de roteamento são limitadas e as tabelas de roteamento são bastante simples. Para sistemas maiores, as opções de tabela de roteamento são mais complexas, dependendo de como (1) dispositivos são alocados na plataforma, (2) recursos do sistema são divididos e (3) eventos de confiabilidade resultam no mapeamento em torno de um recurso de falha. 39 QPI – Camada de protocolo Na camada, o pacote é definido como uma unidade de transferência. A definição de conteúdo de pacote é padronizada com alguma flexibilidade permitida ao atender pedidos diferentes de segmentos de mercado. Uma função-chave desempenhada é um protocolo de coerência de cache, que age se certificando de que os valores da memória principal mantidos em diversas caches são consistentes. Uma carga útil de pacote de dados comum é um bloco de dados enviados para e a partir de uma cache. 40 PCI Express O barramento PCI (do inglês, Peripheral Component Interconnect) é um barramento de grande largura de banda, independente de processador, que pode funcionar como uma unidade intermediária ou barramento de periféricos. A PCI oferece melhor desempenho de sistema para subsistemas de E/S de alta velocidade. Uma nova versão, conhecida como PCI Express (PCIe) foi desenvolvida. A PCIe é um esquema de interconexão ponto a ponto que visa substituir os esquemas baseados em barramento, como a PCI. 41 PCI – Arquitetura física e lógica Configuração comum usando PCIe: 42 PCI – Arquitetura física e lógica Camadas de protocolo de PCIe: 43 PCIe – Camada física Técnica de distribuição multivia do PCIe: 44 PCIe – Camada física Uma técnica comum, e a única usada na PCIe 3.0, para superar o problema de uma longa cadeia de bits de um valor é a cifragem. A cifragem é uma técnica de mapeamento que tende a fazer os dados aparecerem de modo mais aleatório. Outra técnica que pode auxiliar na sincronização é a codificação, em que bits adicionais são inseridos no stream de bits para forçar transições. A figura a seguir ilustra o uso da cifragem e da codificação. 45 PCIe – Camada física 46 PCIe – Camada de transação A camada de transação (TL) recebe pedidos de leitura e escrita a partir do software acima da TL e cria pacotes de solicitação de transmissão para um destino por meio da camada de ligação. A TL suporta quatro espaços endereçados: Memória E/S Configuração Mensagem 47 Tipos de transação PCIe TLP 48 PCIe – Camada de ligação de dados O propósito da camada de ligação de dados PCIe é assegurar a entrega confiável pela ligação de PCIe. Os pacotes de camada de ligação de dados originam-se na camada de ligação de dados de um dispositivo de transmissão e terminam na DLL do dispositivo no outro final da ligação. Há três grupos importantes de DLLPs usados para gerenciar a ligação: pacotes de controle de fluxo, pacotes de gerenciamento de potência e pacotes TLP ACK e NAK. 49 Desempenho de processadores ECOI2208 - Arquitetura de Computadores Prof. Dr. Wendell F. S. Diniz Universidade Federal de Itajubá - Campus Itabira Objetivos de aprendizagem Após ler este capítulo, você será capaz de: Compreender as principais questões de desempenho que se relacionam com o projeto do computador. Explicar as razões de mudar para a organização multicore e entender a relação entre recursos de cache e de processador em um chip único. Fazer distinção entre organizações multi-core, MIC e GPGPU. 2 Objetivos de aprendizagem Após ler este capítulo, você será capaz de: Resumir algumas das questões relacionadas à avaliação do desempenho do computador. Discutir os benchmarks do SPEC. Explicar as diferenças entre as médias aritmética, harmônica e geométrica. 3 Elaboração do projeto visando o desempenho O custo dos sistemas informáticos continua a ○ Videoconferência diminuir drasticamente, enquanto o ○ Criação multimídia desempenho e a capacidade desses sistemas ○ Anotação de voz e vídeo de arquivos continuam a aumentar igualmente dramaticamente. ○ Modelagem de simulação Os laptops de hoje têm o poder de As empresas estão confiando em computação de um mainframe IBM de 10 ou servidores cada vez mais poderosos para 15 anos atrás lidar com o processamento de transações e Os processadores são tão baratos que agora bancos de dados e para suportar redes de temos microprocessadores que jogamos fora clientes / servidores maciças que substituíram os enormes centros de Os aplicativos de desktop que exigem o computadores mainframe do passado. grande poder dos sistemas baseados em microprocessadores de hoje incluem: Os provedores de serviços em nuvem usam ○ Processamento de imagens enormes bancos de servidores de alto ○ Renderização tridimensional desempenho para satisfazer aplicativos de ○ Reconhecimento de fala alto volume e alta taxa de transação para um amplo espectro de clientes 4 Elaboração do projeto visando o desempenho O que dá aos processadores Intel x86/x64 ou computadores mainframe da IBM uma potência incrível é a busca implacável de velocidade pelos fabricantes de chip de processador. Consequentemente, os projetistas de processadores deverão aparecer com técnicas ainda mais elaboradas para alimentar o monstro. Por exemplo: Realização de pipeline Predição de desvio Execução superescalar Análise de fluxo de dados Execução especulativa 5 Balanço do desempenho Embora a capacidade de processamento do processador tenha crescido em uma velocidade espantosa, outros componentes críticos do computador não a acompanharam. O resultado é a necessidade de procurar o balanço do desempenho. É um ajuste da organização e da arquitetura para compensar a diferença entre as capacidades dos diversos componentes. O problema criado por essas diferenças é particularmente importante na interface entre o processador e a memória principal. 6 Balanço do desempenho Outra área de foco de projeto é o tratamento dos dispositivos de E/S. À medida que os computadores se tornam mais rápidos e mais capazes, aplicações sofisticadas são desenvolvidas para dar suporte ao uso de periféricos com demandas intensas de E/S. A chave em tudo isso é o equilíbrio. Os projetistas constantemente lutam para equilibrar as demandas de fluxo e processamento dos componentes do processador, memória principal, dispositivos de E/S e estruturas de interconexão. 7 Equilíbrio de desempenho Aumentar o número de Ajustar a organização e bits recuperados de uma só vez, tornando as arquitetura para compensar DRAMs "mais amplas" em vez de "mais profundas" e usando pelo descompasso entre as caminhos de dados de barramento largos capacidades dos vários Componentes Reduzir a frequência de acesso à memória Exemplos de arquitetura incorporando estruturas de cache cada vez mais incluem: complexas e eficientes entre o processador e a Aumentar a largura de Alterar a interface memória principal banda de interconexão DRAM para torná-la entre processadores e mais eficiente, incluindo memória usando um cache ou outro barramentos de velocidade esquema de buffer no mais alta e uma hierarquia chip DRAM de barramentos para armazenar em buffer e estruturar o fluxo de dados 8 Figure 2.1 9 Melhorias na organização e na arquitetura do chip Permanece a necessidade de aumentar a velocidade do processador e para isso, existem três técnicas: ○ Aumentar a velocidade de hardware do processador. ○ Aumentar o tamanho e a velocidade das caches interpostas entre o processador e a memória principal. ○ Fazer mudanças na organização e na arquitetura do processador, que aumentam a velocidade efetiva da execução da instrução. 10 Melhorias na organização e na arquitetura do chip À medida que a velocidade do clock e a densidade lógica aumentam, diversos obstáculos tornam-se mais significativos: ○ Potência: à medida que a densidade da lógica e a velocidade do clock em um chip aumentam, também aumenta a densidade de potência (Watts/cm²). ○ Atraso de RC: o atraso aumenta à medida que o produto RC aumenta (a velocidade do fluxo de elétrons é limitada pela resistência e capacitância dos fios de metal os conectando) Fios mais finos 🡺 aumento da resistência Fios mais próximos 🡺 aumento da capacitância ○ Latência e taxa de transferência da memória: a velocidade de acesso à memória (latência) e a taxa de transferência (vazão) limitam as velocidades do processador. 11 Tendências dos processadores: Melhorias na organização e na arquitetura do chip 12 13 Multicore, MICs e GPGPUs O uso de diversos processadores em um único chip, também chamado de múltiplos cores ou multicore, proporciona o potencial para aumentar o desempenho sem aumentar a frequência do clock. A estratégia é usar dois processadores simplificados no chip em vez de um processador mais complexo. Os chips de dois cores foram rapidamente seguidos por chips de quatro cores, oito, dezesseis e assim por diante. Os fabricantes de chip estão agora no processo de dar um enorme salto, com mais de 50 cores por cada um. 14 Multicore, MICs e GPGPUs O salto no desempenho têm levado ao surgimento de um novo termo: muitos núcleos integrados (MIC — do inglês, Many Integrated Cores). A estratégia do multicore e do MIC envolve uma coleção homogênea de processadores de uso geral em um único chip. Ao mesmo tempo, os fabricantes de chip estão buscando outra opção de desenvolvimento: Um chip com múltiplos processadores de uso geral mais unidades de processamento gráfico (GPUs — do inglês, Graphics Processing Units). 15 Multicore, MICs e GPGPUs Em termos gerais, uma GPU é um core desenvolvido para desempenhar operações paralelas em dados gráficos. Tradicionalmente encontrada em uma placa plug-in (adaptador de vídeo), ela é usada para codificar e renderizar gráficos 2D e 3D, bem como para processar vídeos. Quando uma grande gama de aplicações é suportada por um processador, o termo GPUs de computação de uso geral (GPGPUs — em inglês, General-Purpose computing on GPUs) é usado. 16 Lei de Amdahl A lei de Amdahl foi proposta primeiro por Gene Amdahl em 1967 (AMDAHL, 1967, 2013) e lida com o potencial speedup de um programa usando múltiplos processadores em comparação com um único processador. Considere um programa sendo executado em um único processador de modo que uma fração (1 - f) do tempo de execução envolve o código, que é inerentemente sequencial, e uma fração f que envolve o código que é infinitamente paralelizável sem sobrecarga no escalonamento. Considere que T é o tempo de execução total do programa que usa um único processador. 17 Lei de Amdahl Então, o speedup mediante o uso de um processador paralelo com N processadores que exploram completamente a parte paralela do programa se dá da seguinte forma: 18 Lei de Amdahl Ilustração da lei de Amdahl: 19 Lei de Amdahl Lei de Amdahl para multiprocessadores: 20 Lei de Amdahl A lei de Amdahl pode ser generalizada para avaliar um desenvolvimento ou uma melhoria de técnica em um sistema computacional. Considere qualquer aumento em uma característica de um sistema que resulta em um speedup. O speedup pode ser expresso como: 21 Lei de Little A lei de Little relaciona esses três fatores como L = λW. Para entender a fórmula de Little, considere o seguinte argumento, que foca na experiência de um único item. Quando o item chega, ele encontra uma média de L itens à frente dele, um sendo servido e o restante em uma fila. Quando o item deixar o sistema antes de ser servido, ele deixará para trás em média o mesmo número de itens no sistema, nomeadamente L, porque L é definido como número médio de itens em espera. 22 Lei de Little Além disso, o tempo médio que o item esteve no sistema foi W. Desde que os itens chegaram a uma taxa de l, podemos dizer que no tempo W um total de λW itens deve ter chegado. Assim, L = λW. Para resumir, sob condições estáveis, o número médio de itens em um sistema de enfileiramento é igual à taxa média em que os itens chegam multiplicados pelo tempo médio que um item gasta no sistema. 23 Medidas básicas de desempenho do computador Velocidade de clock A velocidade de um processador é ditada pela frequência de pulso produzida pelo clock, medida em ciclos por segundo, ou Hertz (Hz). A taxa de pulsos é conhecida como frequência do clock ou velocidade de clock. Um incremento (ou pulso) do clock é conhecido como um ciclo de clock ou um período do clock. O tempo entre os pulsos é o tempo de ciclo. 24 Medidas básicas de desempenho do computador Velocidade de clock Clock de sistema: 25 Medidas básicas de desempenho do computador Taxa de execução de instrução Um parâmetro importante é a média de ciclos por instrução (CPI — do inglês, Cycles Per Instruction) para um programa. Podemos calcular um CPI geral como a seguir: O tempo T do processador necessário para executar determinado programa pode ser expresso como 26 Medidas básicas de desempenho do computador Taxa de execução de instrução Fatores de desempenho e atributos de sistema: Podemos expressar a taxa MIPS em termos da frequência do clock e do CPI da seguinte maneira: 27 Cálculo da média Dado um conjunto de números reais n (x1, x2, …, xn), as três médias são definidas da seguinte maneira: 28 Média aritmética Uma MA é uma medida apropriada se a soma de todas as medidas for um valor significativo e interessante. A MA de todas as execuções é uma boa medida dos desempenhos de sistemas em simulações e um bom número para uso em comparação entre sistemas. A MA usada como uma variável baseada em tempo (por exemplo, segundos), como tempo de execução de programa, tem uma propriedade importante que é diretamente proporcional ao tempo total. Se o tempo total dobra, o valor médio segue o mesmo caminho. 29 Média harmônica Para algumas situações, a taxa de execução de um sistema pode ser vista como uma medida útil do valor do sistema. Pode ser a taxa de execução de instruções, medida em MIPS ou MFLOPS, ou uma taxa de execução de programa, que mede a taxa na qual um dado tipo de programa pode ser executado. Considere como gostaríamos que a média calculada se comportasse. Não faz sentido dizer que gostaríamos que a taxa média fosse proporcional à taxa total, onde a taxa total é definida como a soma das taxas individuais. 30 Média harmônica A soma das taxas pode ser uma estatística sem significado. De preferência, gostaríamos que a média fosse inversamente proporcional ao tempo total de execução. Vamos considerar um exemplo básico e vamos primeiro examinar como a MA se comporta. Suponha que tenhamos um conjunto de n programas de benchmark e gravamos os tempos de execução de cada programa em um dado sistema como t1, t2, …, tn. 31 Média harmônica Para simplificar, suponhamos que cada programa execute o mesmo número de operações Z. A taxa de execução para cada programa individual é Ri = Z/ti. Usamos a MA para calcular a taxa de execução média: 32 Média harmônica Vemos que a taxa de execução de MA é proporcional à soma dos inversos dos tempos de execução, que não é a mesma conforme for inversamente proporcional à soma de tempos de execução. Assim, a MA não tem a propriedade desejada. A MH produz o seguinte resultado: 33 Média geométrica Com relação às mudanças nos valores, a MG confere peso igual para todos os valores no conjunto de dados. Para a MG de uma razão, a MG das razões iguala a razão das MGs: Pode haver casos em que a MA de um conjunto de dados é maior que aquela do outro conjunto, mas a MG é menor. 34 Média geométrica Uma propriedade da MG que tem tido apelo na análise de benchmark é que ela proporciona resultados consistentes quando mede o desempenho relativo das máquinas. De fato isso é para o que os benchmarks são usados em primeiro lugar. Os resultados, como temos visto, são expressos em termos de valores que são normalizados para a máquina de referência. É seguro dizer que nenhum número único pode proporcionar todas as informações necessárias para comparar resultados entre sistemas. 35 Benchmarks e SPEC Os benchmarks proporcionam orientações para os clientes que tentam decidir qual sistema comprar. Pode ser útil para vendedores e desenvolvedores na determinação de como desenvolver sistemas para atingir as metas de benchmark. Weicker (1990) lista as características desejadas de um programa de benchmark: 1. É escrito em uma linguagem de alto nível, tornando-o portável entre diferentes máquinas. 36 Benchmarks e SPEC 2. Representa um tipo particular de estilo de programação, como programação de sistemas, programação numérica ou programação comercial. 3. Pode ser medido com facilidade. 4. Tem ampla distribuição. Um pacote de benchmark é uma coleção de programas, definidos em uma linguagem de alto nível, que, juntos, tentam oferecer um teste representativo de um computador em determinada área de aplicação ou de programação de sistema. 37 Benchmarks e SPEC O mais conhecido conjunto de pacotes de benchmark é definido e mantido pela Standard Performance Evaluation Corporation (SPEC), um consórcio da indústria. O pacote de benchmark mais conhecido da SPEC é o SPEC CPU2006. ○ Deprecado em 2018 em favor do SPEC 2017 Trata-se do pacote padrão da indústria para aplicações com uso intensivo do processador. Ou seja, o SPEC CPU2006 (2017) é apropriado para medir o desempenho de aplicações que gastam a maior parte de seu tempo realizando cálculos, em vez de E/S. 38 Benchmarks e SPEC Outros pacotes SPEC são os seguintes: SPECviewperf SPECwpc SPECjvm2008 SPECjbb2013 (Java Business Benchmark) SPECsfs2008 SPECvirt_sc2013 39 Benchmarks e SPEC Para entender melhor os resultados publicados de um sistema usando CPU2006, definimos os seguintes termos usados na documentação da SPEC: Benchmark: um programa escrito em uma linguagem de alto nível que pode ser compilado e executado em qualquer computador que implemente o compilador. Sistema em teste: é o sistema a ser avaliado. Máquina de referência: cada benchmark é executado e medido em sua máquina para estabelecer o tempo de referência para tal benchmark. 40 Benchmarks e SPEC Métrica de base: o compilador padrão com mais ou menos configurações padrão deve ser usado em cada sistema em teste para atingir resultados comparativos. Métrica de pico: possibilita aos usuários tentar otimizar o desempenho do sistema ao otimizar a saída do compilador. Métrica de velocidade: é simplesmente uma medida do tempo que leva para a execução de um benchmark compilado. Métrica de taxa: é uma medida de quantas tarefas um computador pode cumprir em certa quantidade de tempo. 41 Dedicatória Essa aula é dedicada a Frances "Betty" Holberton, Kathleen "Kay" McNulty, Marlyn Wescoff, Ruth Lichterman, Frances "Fran" Bilas e Jean Jenningsz, e às dezenas de outras mulheres que o programaram até 1955, pela contribuição histórica à arquitetura de computadores ao atuarem na programação do ENIAC (e outras contribuições) mas não tiveram seus nomes estampados nos livros. https://www.bbc.com/portuguese/articles/c2q9x9qx2geo 42 Referências Atualizações sobre as tecnologias da Moore’s law: ○ https://en.wikipedia.org/wiki/Moore%27s_law Sim, é wikipedia, mas esse verbete especificamente é embasado em muitos artigos científicos e está sempre sendo atualizado! Sugestões de aprofundamento: FinFET e GAAFET 43 Organização e Arquitetura de computadores ECOI2208 - Arquitetura de Computadores Prof. Dr. Wendell F. S. Diniz Universidade Federal de Itajubá - Campus Itabira Conceitos básicos e evolução do computador 2 Objetivos de aprendizagem Após ler este capítulo, você será capaz de: Explicar as funções gerais e a estrutura de um computador digital. Apresentar uma visão geral da evolução da tecnologia dos computadores desde os primeiros computadores digitais até os últimos microprocessadores. Apresentar uma visão geral da arquitetura x86/x64 e ARM. Definir sistemas embarcados e listar alguns dos requisitos e das restrições que vários sistemas embarcados podem encontrar. 3 Arquitetura de Computadores - Organização de Computadores Atributos de um Sistema Conjunto de instruções, visíveis ao programador quantidade de bits usados Causam impacto direto à para representar vários execução lógica de um tipos de dados, programa mecanismos de E/S, técnicas de endereçamento de memória Atributos de Arquitetura de Arquitetura Computadores incluem: Atributos de Organização de Organização Computadores Detalhes de hardware incluem: As unidades transparentes ao operacionais e suas programador, sinais de interconexões que controle, interfaces realizam entre o computador e especificações da periféricos, tecnologia de arquitetura memória usada 4 Arquitetura IBM System 370 Foi introduzida em 1970 Incluía um número de modelos Poderia atualizar para um modelo mais caro e mais rápido sem ter que abandonar o software original Novos modelos são introduzidos com tecnologia aprimorada, mas mantêm a mesma arquitetura para que o investimento em software do cliente seja protegido A arquitetura sobreviveu até hoje como a arquitetura da linha de produtos de mainframe da IBM Pequeno histórico do IBM System 370 5 Estrutura e função Em cada nível, o projetista está interessado em: ○ Estrutura: o modo como os componentes são inter-relacionados. ○ Função: a operação individual de cada componente como parte da estrutura. Em termos de descrição, temos duas escolhas: ○ Bottom-up: começar de baixo e subir até uma descrição completa, ou ○ Top-down: começar com uma visão de cima e decompor o sistema em suas subpartes. 6 Função Existem quatro funções básicas que um computador pode executar: ○ Processamento de dados Os dados podem assumir uma ampla variedade de formas e a gama de requisitos de processamento é ampla ○ Armazenamento de dados A curto prazo A longo prazo ○ Movimentação de dados Entrada-saída (E/S) - quando os dados são recebidos ou entregues a um dispositivo (periférico) que está diretamente conectado ao computador Comunicações de dados – quando os dados são movidos por distâncias mais longas, de ou para um dispositivo remoto ○ Controle Uma unidade de controle gerencia os recursos do computador e orquestra o desempenho de suas partes funcionais em resposta às instruções 7 Estrutura 8 Estrutura Quando os processadores todos residem em um único chip, usa-se o termo computador multi-core (multi-núcleos). Cada unidade de processamento é chamada de core (núcleo). Outra característica proeminente de computadores contemporâneos é o uso de múltiplas camadas de memória, chamada de memória cache, entre o processador e a memória principal. A figura a seguir é uma visão simplificada dos componentes principais de um computador multi-core típico. 9 Estrutura 10 11 12 Estrutura Uma placa de circuito impresso (PCB — do inglês, Printed Circuit Board) é uma placa rígida e plana que mantém e interconecta chips e outros componentes eletrônicos. A placa de circuito impresso principal em um computador é chamada de placa de sistema ou placa-mãe. Um chip é um pedaço único de material semicondutor, em geral de silício, no qual os circuitos eletrônicos e portas lógicas são fabricados. O produto resultante é referido como um circuito integrado. 13 Estrutura Em linhas gerais, os elementos funcionais de um core são: Lógica de instrução: inclui as tarefas envolvidas em buscar instruções, e decodificar cada instrução a fim de determinar a operação de instrução e os locais de memória dos operandos. Unidade lógica e aritmética (ALU): executa a operação especificada por uma instrução. Lógica de load/store: gerencia a transferência de dados para e de uma memória principal através da cache. 14 Uma breve história dos computadores O tubo de vidro na ilustração possui um terminal positivo e um negativo (o cátodo e o ânodo) separados por uma grade de fios. Os elétrons do cátodo são atraídos pelo ânodo e fazem uma corrente de elétrons passar através da válvula. O fluxo natural dos elétrons negativos para o terminal positivo é intensificado de duas maneiras: o cátodo se aquece até a incandescência e sua superfície é tratada com um produto químico especial. A grade de controle está situada entre o cátodo e o ânodo e geralmente não interfere no movimento dos elétrons. Mas, quando uma carga negativa é aplicada à grade, os elétrons são repelidos e não atingem o ânodo. A força repulsora da grade supera a força de atração do ânodo e o fluxo dos elétrons cessa. A corrente é interrompida e o interruptor se desliga. 15 Evolução dos Computadores Enigma “O orgulho alemão” Principal estímulo: Segunda Guerra Mundial. 1932 - Marian Rejewski Codebreaker polonês desvenda o segredo dos rotores. 1939 – Ingleses aprendem a decodificar as mensagens. Problema – dificuldade de decodificação. Solução - COLOSSUS 16 Evolução dos Computadores Colossus (Alan Turing, operacional em 1943) ○ Retratado no filme “O jogo da imitação”. Não segue fielmente a história (principalmente pessoal do Turing), mas dá pra ter uma boa ideia. Propósito ESPECÍFICO: decifrar a cifra da Lorenz SZ42. 17 Evolução dos Computadores Outra consequência da guerra ○ Cientistas americanos trabalham no desenvolvimento de máquinas de computação. ○ Objetivo – calcular tabelas de direção de tiro para auxiliar na pontaria da artilharia americana. ○ Solução – ENIAC (Eletronic Numerical Integrator And Computer) 18 Evolução dos Computadores - Colossus Considerado o primeiro computador eletrônico digital construído no mundo. Características: ○ Desenvolvido com a tecnologia de válvulas. ○ Capaz de processar cerca de 5 mil caracteres por segundo. ○ Capaz de quebrar o código da segunda geração de máquinas ENIGMA. ○ No final da guerra, dez Colossus em operação constante permitiam que os ingleses soubessem melhor que o comando alemão onde se encontravam seus submarinos. 19 ENIAC – Contexto Electronic Numerical Integrator And Computer Eckert e Mauchly (apenas hardware) University of Pennsylvania Tabela de trajetórias balísticas ○ A calculadora adquiriu essa função após a programação feita por várias programadoras, veja último slide para referência! Início da construção 1943 Finalizado em 1946 ○ Muito tarde para esforço de guerra Usado até 1955 - Censo Americano 20 ENIAC - Detalhes Usava base decimal (não binário) 20 acumuladores de 10 dígitos Programado manualmente por switches 18.000 válvulas 30 toneladas 4.600 m² 140 kW/h consumo 5.000 adições por segundo 21 ENIAC - Imagens 22 ENIAC - Imagens 23 Evolução dos Computadores Computador IAS ○ A abordagem fundamental do projeto foi o conceito de programa armazenado Atribuído ao matemático John von Neumann A primeira publicação da ideia foi em 1945 para o EDVAC ○ O design começou no Instituto de Estudos Avançados de Princeton ○ Concluído em 1952 Protótipo de todos os computadores de uso geral subsequentes 24 Modelo de von Neumann/Turing Conceito de Programa Armazenado Uma memória principal para armazenar dados e código ULA operando com dados binários Unidade de Controle interpretando as instruções na memória e executando Entrada e saída dos equipamentos operados pela unidade de controle Princeton Institute for Advanced Studies ○ IAS Concluído em 1952 25 Estrutura da máquina de von Neumann 26 27 Uma breve história dos computadores A primeira geração: válvulas Formatos de memória do IAS: 28 Registradores Memory buffer register Contém uma palavra a ser armazenada na memória ou enviada para a unidade de E/S (MBR) Ou é usado para receber uma palavra da memória ou da unidade de E/S Memory address register Especifica o endereço na memória da palavra a ser escrita ou lida no MBR (MAR) Instruction register (IR) Contém a instrução opcode de 8 bits que está sendo executada Instruction buffer register Empregado para manter temporariamente a instrução da mão direita de uma (IBR) palavra na memória Program counter (PC) Contém o endereço do próximo par de instruções a ser buscado na memória Accumulator (AC) e Usados para manter temporariamente operandos e resultados de operações multiplier quotient (MQ) de ALU 29 30 Tabela 1.1 O conjunto de instruções do IAS Symbolic Instruction Type Opcode Description Representation 00001010 LOAD MQ Transfer contents of register MQ to the accumulator AC 00001001 LOAD MQ,M(X) Transfer contents of memory location X to MQ 00100001 STOR M(X) Transfer contents of accumulator to memory location X Data transfer 00000001 LOAD M(X) Transfer M(X) to the accumulator 00000010 LOAD –M(X) Transfer –M(X) to the accumulator 00000011 LOAD |M(X)| Transfer absolute value of M(X) to the accumulator 00000100 LOAD –|M(X)| Transfer –|M(X)| to the accumulator 00001101 JUMP M(X,0:19) Take next instruction from left half of M(X) Unconditional branch 00001110 JUMP M(X,20:39) Take next instruction from right half of M(X) 00001111 JUMP + M(X,0:19) Take next instruction from right half of M(X) Conditional Branch 00010000 JUMP + M(X,20:39) If number in the accumulator is nonnegative, take next instruction from right half of M(X) 00000101 ADD M(X) Add M(X) to AC; put the result in AC 00000111 ADD |M(X)| Add |M(X)| to AC; put the result in AC 00000110 SUB M(X) Subtract M(X) from AC; put the result in AC 00001000 SUB |M(X)| Subtract |M(X)| from AC; put the remainder in AC Arithmetic 00001011 MUL M(X) Multiply M(X) by MQ; put most significant bits of result in AC, put least significant bits in MQ 00001100 DIV M(X) Divide AC by M(X); put the quotient in MQ and the remainder in AC 00010100 LSH Multiply accumulator by 2; that is, shift left one bit position 00010101 RSH Divide accumulator by 2; that is, shift right one position 00010010 STOR M(X,8:19) Replace left address field at M(X) by 12 rightmost bits of AC Address modify 00010011 STOR M(X,28:39) Replace right address field at M(X) by 12 rightmost bits of AC (Tabela pode ser encontrada na página 16 do livro texto.) 31 Uma breve história dos computadores A segunda geração: transistores A primeira mudança principal no computador eletrônico vem com a substituição das válvulas pelo transistor. O transistor, que é menor, mais barato e gera menos calor do que a válvula, pode ser usado da mesma maneira que uma válvula para construir computadores. Ao contrário da válvula, que requer fios, placas de metal e cápsula de vidro, além de vácuo, o transistor é um dispositivo de estado sólido, feito de silício. 32 Uma breve história dos computadores A segunda geração: transistores A segunda geração viu uma introdução de unidades aritméticas e lógicas e unidades de controle, o uso de linguagem de programação de alto nível e a disponibilização dos softwares de sistema com o computador. Tornou-se amplamente aceito classificar os computadores em gerações com base na tecnologia nos fundamentos de hardware empregados. Veja figura a seguir. 33 Uma breve história dos computadores A terceira geração: circuitos integrados Em 1958, chegou a realização que revolucionou a eletrônica e iniciou a era da microeletrônica: a invenção do circuito integrado. A figura a seguir representa os conceitos-chave de um circuito integrado. Os primeiros circuitos integrados são conhecidos como integração em pequena escala (SSI — do inglês, Small-Scale Integration). 34 Uma breve história dos computadores A terceira geração: circuitos integrados Por volta de 1964, a IBM anunciou o System/360, uma nova família de produtos de computador. O conceito de uma família de computadores compatíveis foi moderno e extremamente bem-sucedido. As características de uma família são as seguintes: ○ Conjunto de instruções semelhante ou idêntico ○ Sistema operacional semelhante ou idêntico 35 Uma breve história dos computadores A terceira geração: circuitos integrados Maior velocidade. Número cada vez maior de portas de E/S. Aumento do tamanho de memória. Maior custo. Como esse conceito de família poderia ser implementado? 36 Uma breve história dos computadores A terceira geração: circuitos integrados As diferenças foram conseguidas com base em três fatores: ○ velocidade básica, ○ tamanho e ○ grau de simultaneidade O System/360 não apenas ditou o curso futuro da IBM, mas também teve um impacto profundo sobre a indústria inteira. Muitos de seus recursos tornaram-se padrão de outros computadores grandes. 37 Uma breve história dos computadores 38 Uma breve história dos computadores 39 Uma breve história dos computadores Gerações posteriores ○ Com a introdução da integração em grande escala (LSI), mais de mil componentes podem ser colocados em um único chip de circuito integrado. ○ A integração em escala muito grande (VLSI — do inglês, Very-Large-Scale Integration) alcançou mais de cem milhões de componentes por chip, enquanto os chips com integração em escala ultra grande (ULSI — do inglês, Ultra-Large-Scale Integration) podem conter mais de um bilhão de componentes. 40 A evolução da arquitetura Intel x86 As propostas dos x86 atuais representam os resultados de décadas de esforço de projeto em computadores com conjunto complexo de instruções (CISC — do inglês, Complex Instruction Set Computers). Uma técnica alternativa para o projeto do processador é o computador com conjunto de instruções reduzido (RISC — do inglês, Reduced Instruction Set Computers). A arquitetura ARM é usada em uma grande variedade de sistemas embarcados e é um dos sistemas baseados em RISC mais poderosos e bem projetados no mercado. 41 Figure 1.10 42 Figure 1.11 43 Moore’sGordon 1965; Law Moore – co-fundador da Intel O número observado de transistores que poderiam ser colocados em um único chip estava dobrando a cada ano. O ritmo diminuiu para Consequências da lei de Moore: uma duplicação a cada O comprimento 18 meses na década de O custo da lógica O computador do caminho 1970, mas tem computacional e torna-se menor e é Redução nos elétrico é Menos conexões dos circuitos de mais conveniente requisitos de sustentado essa taxa memória caiu a encurtado, de usar em uma energia e interchip desde então. aumentando a variedade de uma taxa refrigeração velocidade de ambientes dramática operação 44 Figure 1.12 45 A evolução da arquitetura Intel x86 Evolução dos microprocessadores Intel: 46 47 A evolução da arquitetura Intel x86 Evolução dos microprocessadores Intel: 48 A evolução da arquitetura Intel x86 Evolução dos microprocessadores Intel: 49 A evolução da arquitetura Intel x86 Evolução dos microprocessadores Intel: Highlights of the Evolution of the Intel Product Line: (1 of 2) 8080 8086 80286 80386 80486 World’s first A more powerful Extension of the Intel’s first 32-bit Introduced the general-purpose 16-bit machine 8086 enabling machine use of much microprocessor Has an instruction addressing a First Intel more cache, or queue, 16-MB memory sophisticated 8-bit machine, that prefetches a processor to 8-bit data path instead of just support and powerful few instructions to memory before they are 1MB multitasking cache Was used in the executed technology and first personal The first sophisticated computer (Altair) appearance of the instruction x86 architecture pipelining The 8088 was a Also offered a variant of this built-in math processor and used coprocessor in IBM’s first personal computer (securing the success of Intel 50 Evolução do Pentium Intel 4004 Intel 8008 51 Evolução do Pentium Intel 8086 Intel 80286 52 Evolução do Pentium Intel 486DX Intel Pentium III 53 Highlights of the Evolution of the Intel Pentium Intel introduced the use of superscalar techniques, which allow multiple instructions to execute in parallel Pentium Pro Continued the move into superscalar org anization with aggressive use of register renaming, branch prediction, data flow analysis, and speculative execution Pentium II Incorporated Intel MMX technology, which is designed specifically to process video, audio, and graphics data efficiently Pentium III Incorporated additional floating-point instructions Streaming SIMD Extensions (SSE) Pentium 4 Includes additional floating-point and other enhancements for multimedia Core First Intel x86 micro-core Core 2 Extends the Core architecture to 64 bits Core 2 Quad provides four cores on a single chip More recent Core offerings have up to 10 cores per chip 54 Sistemas embarcados O termo sistema embarcado refere-se ao uso de eletrônica e software dentro de um produto, ao contrário de um computador de uso geral, como um sistema de laptop ou desktop. Hoje em dia, alguns, ou a maioria, dos dispositivos que usam energia elétrica têm um sistema computacional embarcado. A figura a seguir mostra em termos gerais uma organização de sistema embarcado. Além do processador e da memória, existem diversos elementos que diferem do desktop ou laptop típico. 55 Sistemas embarcados 56 A Internet das Coisas A Internet das Coisas (IoT — do inglês, Internet of Things) é um termo que se refere à interconexão expansiva dos dispositivos inteligentes, indo de aplicações a minúsculos sensores. Com referência aos sistemas terminais suportados, a internet passou por cerca de quatro gerações de implantação: ○ Tecnologia da informação (TI) ○ Tecnologia operacional (TO) ○ Tecnologia pessoal ○ Tecnologia de sensor/atuador 57 Sistemas operacionais embarcados Há duas técnicas gerais para desenvolver o sistema operacional (SO) embarcado: A primeira técnica é pegar um SO existente e adaptar para a aplicação embarcada. Por exemplo, há versões embarcadas de Linux, Windows e Mac, bem como outros sistemas operacionais comerciais e particulares especializados para sistemas embarcados. A outra técnica é desenvolver e implementar um SO direcionado unicamente para o uso embarcado. Um exemplo é o TinyOS, amplamente usado em redes de sensor sem fio. Outro é o FreeRTOS. 58 Processadores para aplicações versus processadores dedicados de aplicações são definidos pela capacidade do Processadores processador de executar sistemas operacionais complexos, como Linux, Android e Chrome. O processador de aplicações é naturalmente de uso geral. Um processador dedicado é dedicado a uma ou a algumas poucas tarefas específicas exigidas pelo dispositivo hospedeiro. Por conta de tal sistema embarcado ser dedicado a uma tarefa ou a tarefas específicas, o processador e os componentes associados podem ser construídos para reduzir o tamanho e o custo. 59 Microprocessadores versus microcontroladores Os primeiros chips de microprocessadores incluíam registradores, uma ALU e algum tipo de unidade de controle ou de lógica de processamento de instrução. Chips de microprocessadores atuais incluem diversos cores e uma quantidade substancial de memória cache. Um chip microcontrolador faz uso substancialmente diferente do espaço de lógica. A figura a seguir mostra em termos gerais os elementos tipicamente encontrados em um chip microcontrolador. 60 Microprocessadores versus microcontroladores 61 Arquitetura ARM A arquitetura ARM refere-se a uma arquitetura de processador que evoluiu dos princípios de desenvolvimento do RISC e é usada em sistemas embarcados. Os chips ARM são processadores de alta velocidade que são conhecidos pelo pequeno tamanho do die e pelo baixo consumo de energia. Os chips ARM são os processadores dos populares dispositivos Apple, o iPod e o iPhone, e são usados em praticamente todos os smartphones Android. O conjunto de instruções ARM é altamente regular. 62 Arquitetura ARM A ARM Holdings licencia um número de microprocessadores especializados e relacionados às tecnologias, mas a maior parte de sua linha de produtos é a família das arquiteturas de microprocessadores Cortex. Há três arquiteturas Cortex, convenientemente denominadas pelas iniciais A, R e M: ○ Cortex-A e Cortex-A50 ○ Cortex-R ○ Cortex-M 63 ARM Products Cortex-M Cortex-M0 Cortex-R Cortex-M0+ Cortex-M3 Cortex-A Cortex-M4 Cortex-M7 Cortex-M23 Cortex-M33 64 ARM Cortex M7 65 Figure 1.15 66 Computação em nuvem A NIST define a computação em nuvem, em NIST SP-800-145: Computação em nuvem ○ Um modelo para possibilitar acesso onipresente, conveniente e sob demanda a um grupo compartilhado de recursos de computação configuráveis que pode ser rapidamente fornecido e liberado com um esforço mínimo de gerenciamento ou interação do provedor de serviço. ○ A rede em nuvem refere-se às redes e funcionalidades de gerenciamento de rede que devem estar em ordem para possibilitar a computação em nuvem. 67 Computação em nuvem O armazenamento em nuvem consiste em um armazenamento de base de dados e aplicações de base de dados hospedadas nos servidores da nuvem. O provedor de serviço de nuvem (CSP — do inglês, Cloud Service Provider) mantém os recursos de computação e armazenamento de dados que estão disponíveis na internet ou em redes privadas. Praticamente todos os serviços de nuvem são providos pelo uso de um dos três modelos (apresentados na figura a seguir): SaaS, PaaS e IaaS. 68 Computação em nuvem 69 70 Dedicatória Essa aula é dedicada a Frances "Betty" Holberton, Kathleen "Kay" McNulty, Marlyn Wescoff, Ruth Lichterman, Frances "Fran" Bilas e Jean Jenningsz, e às dezenas de outras mulheres que o programaram até 1955, pela contribuição histórica à arquitetura de computadores ao atuarem na programação do ENIAC (e outras contribuições) mas não tiveram seus nomes estampados nos livros. https://www.bbc.com/portuguese/articles/c2q9x9qx2geo 71 Algumas referências usadas Além do documentário da BBC, ótimas matérias como a do tecmundo: ○ https://www.tecmundo.com.br/historia/40576-colossus-heroi-de-guerra-e-um-dos-p rimeiros-computadores-do-mundo.htm (disponível em 21/03/2023) Stallings, William – Computer Architecture, 11th edition, Pearson, 2022.