- O documento discute diferentes tipos de caches de memória, incluindo caches com mapeamento direto, caches totalmente associativas e caches associativas por conjunto.
- Problemas como conflitos de mapeamento em caches com mapeamento direto podem ser resolvidos com caches mais flexíveis que permitem mapeamento de qualquer bloco para qualquer posição.
- Caches associativas permitem maior taxa de acertos, mas são mais complexas; caches associativas por conjunto oferecem um compromisso entre complexidade e desempenho.
O documento apresenta um resumo da Unidade 1 do curso de Programação de Computadores I. A unidade introduz os conceitos de lógica de programação, algoritmos e fluxos de controle. Inclui exemplos de algoritmos para troca de lâmpadas e discussão sobre representação de algoritmos em forma textual e gráfica. Por fim, apresenta exercícios sobre problemas lógicos como atravessar um rio com itens específicos e Torre de Hanói.
O documento resume a história dos computadores desde os primeiros dispositivos mecânicos até os microprocessadores modernos. Ele descreve os principais marcos no desenvolvimento dos computadores mecânicos, elétricos e eletrônicos e fornece detalhes sobre a evolução dos microprocessadores desde os anos 1970.
Este documento apresenta as seguintes informações sobre a linguagem G-Portugol:
1) Discute as características gerais da linguagem, incluindo seus tipos de dados primitivos como inteiro e literal, e estruturas de controle como condicionais e repetição.
2) Explica que o objetivo do manual é servir como referência para a linguagem G-Portugol e suas ferramentas, assumindo que o leitor tenha conhecimento prévio de programação.
3) Fornece um resumo dos tópicos ab
SQL é uma linguagem usada para criar, manipular e extrair dados de bancos de dados. Primeiro, cria-se um diagrama de entidade-relacionamento (DER) para estruturar o banco de dados e mapear as tabelas e relações. Isso é transformado em um modelo entidade-relacionamento (MER) para criar as tabelas no banco de dados. SQL permite executar operações como criar, alterar, excluir e consultar dados no banco de dados.
Algoritmos gulosos são aqueles que fazem escolhas locais ótimas a cada decisão sem reconsiderar opções, como o algoritmo de Dijkstra. Geralmente são usados em problemas de otimização para encontrar subconjuntos com menor ou maior custo que satisfaçam certas propriedades, como no problema do troco que busca a menor quantidade de moedas para um valor dado.
Exercicios Pilhas (Stacks) - Estruturas de dados e algoritmos com JavaLoiane Groner
O documento apresenta 8 exercícios envolvendo pilhas e algoritmos. Os exercícios 1 e 2 pedem para ler números e empilhar/desempilhar em pilhas de acordo com regras. Os exercícios 3 e 4 pedem para implementar métodos de pilha usando classes Pilha e Stack. Os exercícios 5-7 são desafios envolvendo palíndromos, símbolos balanceados e conversão decimal-binário usando pilhas. O exercício 8 pede para implementar o quebra-cabeça Torre de Hanoi usando pilhas.
O documento introduz conceitos básicos sobre análise e complexidade de algoritmos. Aborda o que é um algoritmo, tipos importantes de problemas, estratégias de projeto de algoritmos e como calcular a complexidade temporal e espacial de um algoritmo, analisando os casos de melhor, pior e médio caso. Também apresenta a notação assintótica O, Ω e θ para definir limites do crescimento de funções.
Complexidade de algoritmos insertion, selection e bubble sort.Júlio Rocha
O documento analisa a complexidade de tempo dos algoritmos de ordenação Bubble Sort, Selection Sort e Insertion Sort, mostrando que todos possuem complexidade quadrática no pior caso (O(n2)). O Bubble Sort realiza aproximadamente n2 trocas no pior caso. O Selection Sort faz (n-1) trocas no pior caso. O Insertion Sort faz n2/2 comparações no pior caso.
O documento apresenta um resumo da Unidade 1 do curso de Programação de Computadores I. A unidade introduz os conceitos de lógica de programação, algoritmos e fluxos de controle. Inclui exemplos de algoritmos para troca de lâmpadas e discussão sobre representação de algoritmos em forma textual e gráfica. Por fim, apresenta exercícios sobre problemas lógicos como atravessar um rio com itens específicos e Torre de Hanói.
O documento resume a história dos computadores desde os primeiros dispositivos mecânicos até os microprocessadores modernos. Ele descreve os principais marcos no desenvolvimento dos computadores mecânicos, elétricos e eletrônicos e fornece detalhes sobre a evolução dos microprocessadores desde os anos 1970.
Este documento apresenta as seguintes informações sobre a linguagem G-Portugol:
1) Discute as características gerais da linguagem, incluindo seus tipos de dados primitivos como inteiro e literal, e estruturas de controle como condicionais e repetição.
2) Explica que o objetivo do manual é servir como referência para a linguagem G-Portugol e suas ferramentas, assumindo que o leitor tenha conhecimento prévio de programação.
3) Fornece um resumo dos tópicos ab
SQL é uma linguagem usada para criar, manipular e extrair dados de bancos de dados. Primeiro, cria-se um diagrama de entidade-relacionamento (DER) para estruturar o banco de dados e mapear as tabelas e relações. Isso é transformado em um modelo entidade-relacionamento (MER) para criar as tabelas no banco de dados. SQL permite executar operações como criar, alterar, excluir e consultar dados no banco de dados.
Algoritmos gulosos são aqueles que fazem escolhas locais ótimas a cada decisão sem reconsiderar opções, como o algoritmo de Dijkstra. Geralmente são usados em problemas de otimização para encontrar subconjuntos com menor ou maior custo que satisfaçam certas propriedades, como no problema do troco que busca a menor quantidade de moedas para um valor dado.
Exercicios Pilhas (Stacks) - Estruturas de dados e algoritmos com JavaLoiane Groner
O documento apresenta 8 exercícios envolvendo pilhas e algoritmos. Os exercícios 1 e 2 pedem para ler números e empilhar/desempilhar em pilhas de acordo com regras. Os exercícios 3 e 4 pedem para implementar métodos de pilha usando classes Pilha e Stack. Os exercícios 5-7 são desafios envolvendo palíndromos, símbolos balanceados e conversão decimal-binário usando pilhas. O exercício 8 pede para implementar o quebra-cabeça Torre de Hanoi usando pilhas.
O documento introduz conceitos básicos sobre análise e complexidade de algoritmos. Aborda o que é um algoritmo, tipos importantes de problemas, estratégias de projeto de algoritmos e como calcular a complexidade temporal e espacial de um algoritmo, analisando os casos de melhor, pior e médio caso. Também apresenta a notação assintótica O, Ω e θ para definir limites do crescimento de funções.
Complexidade de algoritmos insertion, selection e bubble sort.Júlio Rocha
O documento analisa a complexidade de tempo dos algoritmos de ordenação Bubble Sort, Selection Sort e Insertion Sort, mostrando que todos possuem complexidade quadrática no pior caso (O(n2)). O Bubble Sort realiza aproximadamente n2 trocas no pior caso. O Selection Sort faz (n-1) trocas no pior caso. O Insertion Sort faz n2/2 comparações no pior caso.
Inteligência Artificial - Aula2 - Busca em GrafosRafael Pinto
O documento discute problemas e algoritmos de busca em inteligência artificial. Aborda o que são problemas e algoritmos de busca, definindo características de um problema de busca e tipos de algoritmos como busca em profundidade, largura e informada. Explica conceitos como estado inicial, ações possíveis, modelo de transição e objetivo para definir formalmente um problema de busca.
O documento descreve árvores binárias, estruturas de dados hierárquicas onde cada nó tem no máximo dois filhos. Explica que uma árvore binária possui uma raiz e nós internos com duas subárvores esquerda e direita, além de nós folha sem filhos. Também apresenta operações básicas como busca, inserção e remoção em árvores binárias de busca, onde os nós são ordenados.
O documento discute recursividade, definindo-a como um objeto ou processo que se refere a si mesmo. Explica que recursividade divide um problema em subproblemas da mesma natureza e fornece exemplos como fatorial e fibonacci. Também discute vantagens e desvantagens de programação recursiva.
Conceitos Iniciais de Linguagens de ProgramaçãoSidney Roberto
A aula apresenta conceitos iniciais sobre linguagens de programação, incluindo uma breve história desde os primórdios até os dias atuais, níveis de linguagens, tipos como de script, interpretadas e compiladas, e tipagem.
Este documento descreve listas duplamente encadeadas, incluindo sua estrutura de nós com ponteiros para frente e para trás, e como implementar operações como busca, inserção e remoção nestas listas.
[1] A autora apresenta um livro com 51 exercícios resolvidos de modelagem em UML, incluindo questões de concursos públicos. [2] O livro é dividido em capítulos tratando de temas como identificação de classes, atributos, relacionamentos e casos de uso a partir de exemplos reais. [3] A autora espera que o material atenda a professores, alunos e profissionais da área para ajudar no aprendizado prático de modelagem em UML.
Este documento apresenta o plano de ensino da disciplina de Algoritmos e Programação para o curso de Engenharia Agrícola. O professor irá ensinar sobre resolução de problemas, algoritmos e fluxogramas. O objetivo é desenvolver o raciocínio lógico dos alunos através de muita prática resolvendo problemas. A avaliação inclui trabalhos e testes individuais.
Matemática Discreta - Introdução à DisciplinaRanilson Paiva
Este documento apresenta os objetivos, metodologia, avaliação e conteúdo programático de um curso de Matemática Discreta. Os objetivos incluem introduzir sistemas formais, desenvolver habilidades de resolução de problemas e compreender estruturas discretas. A avaliação consiste em provas, listas de exercícios e um possível projeto. O conteúdo inclui conjuntos, relações, funções, teoria dos números e grafos.
Slides da disciplina de Análise de Algoritmos, ministrada pelo Prof. Marcelo H. Carvalho no curso de Pós-Graduação em Ciência da Computação, FACOM - UFMS.
O documento discute algoritmos gulosos e grafos. Apresenta conceitos como árvore espalhada mínima, subestrutura ótima, escolha gulosa e algoritmos como Prim e Kruskal para encontrar a árvore espalhada mínima de um grafo. Também aborda problemas de caminho mínimo e o algoritmo de Dijkstra para resolver o problema da fonte única.
O documento descreve o programa Cisco Packet Tracer, que permite simular redes de computadores com equipamentos como roteadores, switches e estações para ensinar conceitos de rede. Ele pode ser usado em Windows e Linux e oferece ferramentas para visualizar e configurar redes.
Shell Sort é um algoritmo de ordenação eficiente, criado em 1959 por Donald Shell e publicado pela Universidade de Cincinnati. Ele divide o vetor de dados em subvetores menores e ordena esses subvetores, aumentando a eficiência de algoritmos como inserção e seleção para ordenar o vetor final.
O documento discute algoritmos de ordenação. Apresenta os algoritmos Bubble sort, Selection sort e Insertion sort, explicando seus passos e complexidades. Também aborda o método "dividir para conquistar" e apresenta exemplos como o algoritmo de exponenciação e o Merge sort.
Aqui são apresentados conceitos básicos a plataforma Java. Simples e rápido.
/**Depois que entrei no mundo Java, começei a procurar por conteúdo na internet para estudar, então me deparei com um ótimo site, http://www.argonavis.com.br, de um grande cara chamado Helder Rocha, que disponibiliza este mesmo conteúdo em seu site também. Obrigado pela ajuda a comunidade.*/
O documento apresenta os principais conceitos e comandos da linguagem SQL, incluindo consultas, manipulação de tabelas, junções, subconsultas, views, triggers e stored procedures.
O documento descreve as máquinas de Post, que têm o mesmo poder de expressão que as máquinas de Turing. Uma máquina de Post usa uma variável X para armazenar a entrada, saída e memória de trabalho na forma de uma fila. Ela consiste em um alfabeto, um diagrama de fluxo e um símbolo auxiliar. O diagrama de fluxo contém instruções de partida, parada, atribuição e desvio condicional.
O documento discute estruturas de controle de decisão e repetição em Java, incluindo if/else, switch/case, while, for e declarações de interrupção. Ele também fornece exemplos de como usar essas estruturas para direcionar o fluxo de um programa.
O documento discute conceitos fundamentais de endereçamento IP, incluindo o que é IP, tipos de atribuição de IP, regras para definir IPs fixos, conceitos de sub-rede, host, máscara de sub-rede, classes de IP, gateway padrão e DNS.
O documento descreve as funções, conceitos e tipos de memória em sistemas de computação. Explica que as memórias armazenam informações temporariamente para uso pelo processador e que existem diferentes tipos com velocidades e capacidades variadas, formando uma hierarquia de memória no computador.
O documento discute a hierarquia de memória em sistemas de computadores. Explica que a hierarquia de memória visa dar a ilusão de memória ilimitada e rápida ao programador ao usar diferentes níveis de memória, com capacidade e velocidade variando entre os níveis. Define termos como acerto, falta e taxa de acertos para descrever o funcionamento da hierarquia.
Inteligência Artificial - Aula2 - Busca em GrafosRafael Pinto
O documento discute problemas e algoritmos de busca em inteligência artificial. Aborda o que são problemas e algoritmos de busca, definindo características de um problema de busca e tipos de algoritmos como busca em profundidade, largura e informada. Explica conceitos como estado inicial, ações possíveis, modelo de transição e objetivo para definir formalmente um problema de busca.
O documento descreve árvores binárias, estruturas de dados hierárquicas onde cada nó tem no máximo dois filhos. Explica que uma árvore binária possui uma raiz e nós internos com duas subárvores esquerda e direita, além de nós folha sem filhos. Também apresenta operações básicas como busca, inserção e remoção em árvores binárias de busca, onde os nós são ordenados.
O documento discute recursividade, definindo-a como um objeto ou processo que se refere a si mesmo. Explica que recursividade divide um problema em subproblemas da mesma natureza e fornece exemplos como fatorial e fibonacci. Também discute vantagens e desvantagens de programação recursiva.
Conceitos Iniciais de Linguagens de ProgramaçãoSidney Roberto
A aula apresenta conceitos iniciais sobre linguagens de programação, incluindo uma breve história desde os primórdios até os dias atuais, níveis de linguagens, tipos como de script, interpretadas e compiladas, e tipagem.
Este documento descreve listas duplamente encadeadas, incluindo sua estrutura de nós com ponteiros para frente e para trás, e como implementar operações como busca, inserção e remoção nestas listas.
[1] A autora apresenta um livro com 51 exercícios resolvidos de modelagem em UML, incluindo questões de concursos públicos. [2] O livro é dividido em capítulos tratando de temas como identificação de classes, atributos, relacionamentos e casos de uso a partir de exemplos reais. [3] A autora espera que o material atenda a professores, alunos e profissionais da área para ajudar no aprendizado prático de modelagem em UML.
Este documento apresenta o plano de ensino da disciplina de Algoritmos e Programação para o curso de Engenharia Agrícola. O professor irá ensinar sobre resolução de problemas, algoritmos e fluxogramas. O objetivo é desenvolver o raciocínio lógico dos alunos através de muita prática resolvendo problemas. A avaliação inclui trabalhos e testes individuais.
Matemática Discreta - Introdução à DisciplinaRanilson Paiva
Este documento apresenta os objetivos, metodologia, avaliação e conteúdo programático de um curso de Matemática Discreta. Os objetivos incluem introduzir sistemas formais, desenvolver habilidades de resolução de problemas e compreender estruturas discretas. A avaliação consiste em provas, listas de exercícios e um possível projeto. O conteúdo inclui conjuntos, relações, funções, teoria dos números e grafos.
Slides da disciplina de Análise de Algoritmos, ministrada pelo Prof. Marcelo H. Carvalho no curso de Pós-Graduação em Ciência da Computação, FACOM - UFMS.
O documento discute algoritmos gulosos e grafos. Apresenta conceitos como árvore espalhada mínima, subestrutura ótima, escolha gulosa e algoritmos como Prim e Kruskal para encontrar a árvore espalhada mínima de um grafo. Também aborda problemas de caminho mínimo e o algoritmo de Dijkstra para resolver o problema da fonte única.
O documento descreve o programa Cisco Packet Tracer, que permite simular redes de computadores com equipamentos como roteadores, switches e estações para ensinar conceitos de rede. Ele pode ser usado em Windows e Linux e oferece ferramentas para visualizar e configurar redes.
Shell Sort é um algoritmo de ordenação eficiente, criado em 1959 por Donald Shell e publicado pela Universidade de Cincinnati. Ele divide o vetor de dados em subvetores menores e ordena esses subvetores, aumentando a eficiência de algoritmos como inserção e seleção para ordenar o vetor final.
O documento discute algoritmos de ordenação. Apresenta os algoritmos Bubble sort, Selection sort e Insertion sort, explicando seus passos e complexidades. Também aborda o método "dividir para conquistar" e apresenta exemplos como o algoritmo de exponenciação e o Merge sort.
Aqui são apresentados conceitos básicos a plataforma Java. Simples e rápido.
/**Depois que entrei no mundo Java, começei a procurar por conteúdo na internet para estudar, então me deparei com um ótimo site, http://www.argonavis.com.br, de um grande cara chamado Helder Rocha, que disponibiliza este mesmo conteúdo em seu site também. Obrigado pela ajuda a comunidade.*/
O documento apresenta os principais conceitos e comandos da linguagem SQL, incluindo consultas, manipulação de tabelas, junções, subconsultas, views, triggers e stored procedures.
O documento descreve as máquinas de Post, que têm o mesmo poder de expressão que as máquinas de Turing. Uma máquina de Post usa uma variável X para armazenar a entrada, saída e memória de trabalho na forma de uma fila. Ela consiste em um alfabeto, um diagrama de fluxo e um símbolo auxiliar. O diagrama de fluxo contém instruções de partida, parada, atribuição e desvio condicional.
O documento discute estruturas de controle de decisão e repetição em Java, incluindo if/else, switch/case, while, for e declarações de interrupção. Ele também fornece exemplos de como usar essas estruturas para direcionar o fluxo de um programa.
O documento discute conceitos fundamentais de endereçamento IP, incluindo o que é IP, tipos de atribuição de IP, regras para definir IPs fixos, conceitos de sub-rede, host, máscara de sub-rede, classes de IP, gateway padrão e DNS.
O documento descreve as funções, conceitos e tipos de memória em sistemas de computação. Explica que as memórias armazenam informações temporariamente para uso pelo processador e que existem diferentes tipos com velocidades e capacidades variadas, formando uma hierarquia de memória no computador.
O documento discute a hierarquia de memória em sistemas de computadores. Explica que a hierarquia de memória visa dar a ilusão de memória ilimitada e rápida ao programador ao usar diferentes níveis de memória, com capacidade e velocidade variando entre os níveis. Define termos como acerto, falta e taxa de acertos para descrever o funcionamento da hierarquia.
O documento discute os conceitos fundamentais de gerenciamento de memória em sistemas operacionais. Em três frases:
1) A memória precisa ser gerenciada de forma eficiente pelo sistema operacional para permitir a execução de vários processos simultaneamente na memória principal limitada.
2) Existem diferentes técnicas de alocação de memória como particionamento estático e dinâmico e algoritmos como first-fit e best-fit para alocar processos na memória de forma otimizada.
3) A memória virtual utiliza paginação para mapear
O documento descreve como a memória cache foi desenvolvida para minimizar o tempo de espera do processador pela memória principal, armazenando temporariamente blocos de dados frequentemente acessados. Também explica como a memória cache funciona de acordo com os princípios de localidade temporal e espacial e os diferentes níveis de cache.
O documento fornece um resumo histórico do desenvolvimento dos processadores, desde os primeiros computadores mecânicos e elétricos até os processadores modernos de 64 bits. Explica como as partes fundamentais de um processador, como a unidade lógica e aritmética e a unidade de controle, evoluíram ao longo do tempo para permitir o funcionamento dos computadores atuais.
O documento discute os conceitos básicos de sistemas operacionais, incluindo suas funções, classificações e exemplos. Aborda tópicos como o que é um sistema operacional, seus principais objetivos, tipos como batch, interativo, multiprogramado e em tempo real.
Este documento discute o Software Livre, incluindo o que é Software Livre, por que é importante e exemplos de softwares livres. Também aborda as oportunidades geradas pelo Software Livre para governos, empresas e pessoas, além de dicas de por onde começar a usar Software Livre.
El documento presenta información sobre las tarjetas madres o motherboards, incluyendo sus principales componentes como puertos SATA y zócalos, los diferentes tipos como las multiprocesador, y los fabricantes más importantes. Finaliza agradeciendo al lector por su tiempo.
O documento descreve as principais características técnicas de processadores, incluindo: FSB, que é a comunicação entre o processador e a memória RAM através de um chipset; frequência do processador, que afeta sua capacidade de cálculos; e cache L1, L2 e L3, que armazenam arquivos frequentemente acessados para melhorar o desempenho. Também discute a arquitetura e o socket do processador, que determina a compatibilidade com placas-mãe.
1. O documento descreve as principais interfaces e conectores encontrados em placas-mãe modernas, incluindo PCI Express, memória RAM, processadores e discos rígidos.
2. As ranhuras PCIe x16 são usadas para placas gráficas, enquanto PCIe x1 e PCI servem para outros periféricos.
3. Outros conectores importantes incluem SATA para discos, memória RAM, socket do processador e fonte de alimentação ATX.
FLISOL Porque usar Software Livre Bruno Alexandre Barbosa ChuckyBruno Alexandre
O documento discute os principais motivos para usar software livre, incluindo maior segurança, evitar dependência de tecnologias proprietárias e direito ao acesso à informação. Também lista diversos softwares livres populares para Linux e Windows e explica onde encontrar mais informações sobre software livre.
O documento discute técnicas de detecção de falhas em computadores. Ele divide os problemas em 5 categorias e identifica dispositivos como a CPU, motherboard, fonte de alimentação e memória RAM que podem forçar reinícios. A BIOS armazena configurações na memória CMOS, que pode ser alterada fazendo um reset ou removendo a pilha. Um curto-circuito na fonte de alimentação pode testar seu funcionamento. Condensadores eletrolíticos levantados indicam níveis de tensão elevados na motherboard.
1) O documento discute os princípios de hardware e software relacionados a sistemas de entrada e saída (E/S).
2) É destacada a importância de estruturar a interface E/S em camadas para esconder detalhes dos dispositivos e prover uma interface simples.
3) São descritos conceitos como dispositivos de blocos versus caracteres, mapeamento de memória, interrupções, acesso direto à memória e drivers de dispositivo.
1) O documento discute conceitos de hardware e software, incluindo componentes de hardware como processadores, memória e dispositivos de entrada/saída.
2) Sistemas operacionais gerenciam recursos de hardware e software. Eles usam drivers para executar operações de E/S específicas a dispositivos.
3) Linguagens de programação incluem linguagem de máquina, montagem e alto nível, que requerem compiladores ou interpretadores.
O documento descreve as especificações técnicas dos processadores Haswell da Intel, incluindo o número de núcleos, caches e GPUs. Também fornece uma breve história dos processadores da AMD, desde o K5 até o Phenom, e links para os produtos atuais de ambas as empresas.
1) O documento discute processos e threads em sistemas operacionais modernos, abordando tópicos como criação e término de processos, estados de processos, comunicação entre processos e uso de threads.
2) É explicado que um processo é uma entidade dinâmica que consiste em um programa em execução e seus recursos, e que threads permitem múltiplas execuções dentro do mesmo processo.
3) Problemas de condição de corrida ocorrem quando processos acessam recursos compartilhados simultaneamente e são evitados por
O processador (CPU) é responsável por executar tarefas e processar dados no computador. Ele pode ter um ou mais núcleos e arquitetura de 32 ou 64 bits, afetando seu desempenho. Existem diferentes tipos de processadores indicados para usuários básicos, profissionais ou hardcore dependendo do nível de desempenho necessário.
O documento descreve os principais tipos de sockets e slots de expansão para placas de vídeo, som e rede em computadores. Existem três tipos principais de sockets - PGA, SLOT e LGA - que servem para encaixar processadores específicos. Os principais tipos de slots de expansão são PCI, AGP e PCI-e, que diferem na velocidade de transmissão de dados para placas como vídeo e rede.
O documento discute portas lógicas e suas funções, incluindo: 1) George Boole desenvolveu um sistema matemático de análise lógica chamado Álgebra de Boole; 2) Circuitos lógicos básicos implementam expressões geradas pela Álgebra de Boole; 3) Portas lógicas assumem dois estados - 0 ou 1 - e são componentes básicos de circuitos digitais que implementam funções lógicas.
Este documento fornece informações sobre problemas comuns em computadores e suas soluções. Ele discute 5 categorias de problemas, causas comuns como alimentação ou BIOS defeituosos, e métodos para resetar a BIOS ou CMOS para contornar esquecimento de senhas.
O documento apresenta a arquitetura de memória do PostgreSQL, discutindo como os dados são alocados e armazenados na memória e como a memória é dividida e configurada entre os subsistemas. É apresentada a hierarquia de memória do sistema e como os dados são carregados da memória secundária para a memória principal.
O documento discute as vantagens de usar memória cache para armazenar instruções executadas frequentemente, evitando acessos lentos à memória principal. Explica como a cache associativa armazena blocos inteiros de instruções de uma vez e como a cache com mapeamento direto mapeia blocos para linhas específicas de forma a evitar substituições desnecessárias.
O documento discute como as memórias cache podem melhorar o desempenho ao armazenar instruções e dados frequentemente acessados, evitando acessos mais lentos à memória principal. Existem dois tipos principais de cache: associativa, que armazena blocos completos e permite acessos simultâneos; e mapeamento direto, que é mais barata ao mapear blocos fixos a linhas específicas. Ambas podem melhorar o desempenho se os blocos armazenados forem acessados sequencialmente.
O documento discute o uso de memória cache para melhorar o desempenho da memória principal. A memória cache armazena instruções e dados recentemente acessados para reduzir o tempo de acesso quando são solicitados novamente. Isso pode ser feito usando uma cache associativa ou com mapeamento direto, que direciona blocos de memória específicos a linhas individuais da cache.
O documento discute o uso de memória cache para melhorar o desempenho da memória principal. A memória cache armazena instruções e dados recentemente acessados para reduzir o tempo de acesso quando são solicitados novamente. Isso pode ser feito usando uma cache associativa ou com mapeamento direto, que direciona blocos de memória específicos a linhas individuais da cache.
O documento discute o uso de memória cache para melhorar o desempenho da memória principal. A memória cache armazena instruções e dados recentemente acessados para reduzir o tempo de acesso quando são solicitados novamente. Isso pode ser feito usando uma cache associativa ou com mapeamento direto, que mapeia blocos de memória para linhas específicas na cache.
O documento discute como as memórias cache melhoram o desempenho ao armazenar instruções e dados recuperados recentemente da memória principal de forma mais rápida. Existem dois tipos principais de cache: associativa, que armazena blocos completos e permite acessos simultâneos, e mapeamento direto, que é mais barata ao mapear blocos fixos a linhas individuais. Ambas melhoram o desempenho ao evitar acessos repetidos à memória principal dentro de um loop de instruções.
Semelhante a Aula 22 caches associativas e associativas por conjunto (8)
Aula 22 caches associativas e associativas por conjunto
1. Prof. Laércio Lima Pilla
laercio.pilla@ufsc.br
INE5607 – Organização e
Arquitetura de Computadores
Hierarquia e Gerência de Memória
Aula 22: Caches associativas e associativas
por conjunto
2. Sumário
• Problemas do mapeamento direto
• Caches associativas
• Caches associativas por conjunto
• Comparação
• Considerações finais
INE5607 - Prof. Laércio Lima Pilla 2
4. Problemas do mapeamento direto
• Rápida revisão
–Mapeamento direto
• Mapeamento = E módulo N
• E: endereço do bloco (não da palavra ou byte)
• N: número de blocos na cache
INE5607 - Prof. Laércio Lima Pilla 4
Bloco 01101?
End. Dado
00 ...
01 ...
10 ...
11 ...
5. Problemas do mapeamento direto
• Exemplo
–Cache com quatro blocos
• Mapeamento direto
• Sequência de acesso a blocos: 0, 8, 0, 6, 8
INE5607 - Prof. Laércio Lima Pilla 5
End. do
bloco
Acerto ou
falha
Conteúdo dos blocos de cache após
referência
0 1 2 3
Bloco 0
Bloco 8
Bloco 0
Bloco 6
Bloco 8
6. Problemas do mapeamento direto
• Exemplo
–Cache com quatro blocos
• Mapeamento direto
• Sequência de acesso a blocos: 0, 8, 0, 6, 8
INE5607 - Prof. Laércio Lima Pilla 6
End. do
bloco
Acerto ou
falha
Conteúdo dos blocos de cache após
referência
0 1 2 3
Bloco 0 Falha Mem[0]
Bloco 8 Falha Mem[8]
Bloco 0 Falha Mem[0]
Bloco 6 Falha Mem[0] Mem[6]
Bloco 8 Falha Mem[8] Mem[6]
7. Problemas do mapeamento direto
• Mas isso nunca aconteceria....
–Cache com dois blocos
–Blocos de duas words
–Item do array: int acc, int val, int x, int y;
for ( i=1 ; i<=N ; i++ )
array.acc[i] = array.val[i] + array.acc[i-1];
INE5607 - Prof. Laércio Lima Pilla 7
8. Problemas do mapeamento direto
• Mas esse caso é um exagero...
–Cache com quatro blocos de uma palavra cada
int matriz[N][N]; //N = 100
for ( j=0 ; j < N ; j++)
for ( i=1 ; i < N ; i++)
matriz[i-1][j] = matriz[i][j];
INE5607 - Prof. Laércio Lima Pilla 8
9. Problemas do mapeamento direto
• Acesso à memória
–matriz[i][j] -> matriz[i*N+j]
–No caso
• matriz[3][4] -> matriz[304]
– Mapeamento: 304 módulo 4 = 0
• matriz[2][4] -> matriz[204]
– Mapeamento: 204 módulo 4 = 0
–Ou seja, falhas e mais falhas....
INE5607 - Prof. Laércio Lima Pilla 9
10. Problemas do mapeamento direto
• Como poderíamos resolver esse problema
de conflito?
–Que tal um mapeamento mais flexível?
INE5607 - Prof. Laércio Lima Pilla 10
End. do
bloco
Acerto ou
falha
Conteúdo dos blocos de cache após
referência
0 1 2 3
Bloco 0 Falha Mem[0]
Bloco 8 Falha Mem[8]
Bloco 0 Falha Mem[0]
Bloco 6 Falha Mem[0] Mem[6]
Bloco 8 Falha Mem[8] Mem[6]
12. Caches associativas
• Extremo oposto a caches com
mapeamento direto
–Mapeamento direto: apenas uma posição
para um endereço de bloco
–Mapeamento associativo: todas as posições
para um endereço de bloco!
INE5607 - Prof. Laércio Lima Pilla 12
13. Caches associativas
• Exemplo
–Cache com quatro blocos
• Cache associativa
• Sequência de acesso a blocos: 0, 8, 0, 6, 8
INE5607 - Prof. Laércio Lima Pilla 13
End. do
bloco
Acerto ou
falha
Conteúdo dos blocos de cache após
referência
0 1 2 3
Bloco 0
Bloco 8
Bloco 0
Bloco 6
Bloco 8
14. Caches associativas
• Exemplo
–Cache com quatro blocos
• Cache associativa
• Sequência de acesso a blocos: 0, 8, 0, 6, 8
INE5607 - Prof. Laércio Lima Pilla 14
End. do
bloco
Acerto ou
falha
Conteúdo dos blocos de cache após
referência
0 1 2 3
Bloco 0 Falha Mem[0]
Bloco 8 Falha Mem[0] Mem[8]
Bloco 0 Acerto Mem[0] Mem[8]
Bloco 6 Falha Mem[6] Mem[0] Mem[8]
Bloco 8 Acerto Mem[6] Mem[0] Mem[8]
15. Caches associativas
• Como calcular o mapeamento?
–É só escolher um slot disponível
• E se não houver slot disponível?
–Políticas de substituição
• Circular
• Aleatório
• Least Recently Used (LRU)
– Substitui bloco que foi acessado menos recentemente
• Como identificar quem está mapeado?
–Tag
INE5607 - Prof. Laércio Lima Pilla 15
16. Caches associativas
• Exemplo
–Memória de 4KB (2¹² bytes)
–Palavras de 32 bits
–Blocos de 2 palavras
–Cache de 16 blocos
–Endereço de memória: 0110 0101 1010
INE5607 - Prof. Laércio Lima Pilla 16
Cache Tag End. bloco
End. Interno
word byte
Map. Direto 01100 1011 0 10
Associativa 011001011 - 0 10
17. Caches associativas
• Cálculo do tamanho da cache e da tag
–Memória de 2m bytes (endereçáveis)
–Cache com 2c blocos
–Blocos de 2p palavras
–Palavras de 2b bytes (2b+3 bits)
–1 bit de validade por bloco
–Tamanho do tag: m - (p+b) bits
–Armazenamento da cache: 2(c+p+b) bytes
–Tamanho efetivo: 2c*(2p+b+3+1+m-(p+b)) bits
INE5607 - Prof. Laércio Lima Pilla 17
18. Caches associativas
• Vantagens (vs mapeamento direto)
–Maior taxa de acertos
• Maior desempenho :D
• Desvantagens
–Circuito mais complexo
• Múltiplas comparações de tag em paralelo
• Muito caro para caches grandes :<
• Reduções
• Pode levar a tempo de acesso maior :~
INE5607 - Prof. Laércio Lima Pilla 18
19. Caches associativas
• Falácia: Caches associativas comparam
tags em sequência
–Circuitos trabalham em paralelo
–N comparadores para N blocos
–Árvore de redução
INE5607 - Prof. Laércio Lima Pilla 19
TAG.... TAGTAGTAG TAG
or or
or
= ? = ? = ? = ?
21. Caches associativas por conjuntos
• Caminho do meio
–Agrupa blocos de cache em conjuntos
–Um endereço só pode ser mapeado para
um conjunto
–Dentro do conjunto, o endereço pode ser
mapeado para qualquer posição
INE5607 - Prof. Laércio Lima Pilla 21
22. Caches associativas por conjuntos
• Vantagens
–Maior grau de associatividade leva a maior
taxa de acertos
• Menos conflitos
–Menor grau de associatividade requer
menos recursos
• Comparações apenas dentro de um conjunto
INE5607 - Prof. Laércio Lima Pilla 22
23. Caches associativas por conjuntos
• Exemplo
–Cache com quatro blocos
• Cache 2-associativa
• Sequência de acesso a blocos: 0, 8, 0, 6, 8
INE5607 - Prof. Laércio Lima Pilla 23
End. do
bloco
Acerto
ou
falha
Conteúdo dos blocos de cache após referência
Conjunto 0 Conjunto 1
Posição 0 Posição 1 Posição 0 Posição 1
Bloco 0
Bloco 8
Bloco 0
Bloco 6
Bloco 8
24. Caches associativas por conjuntos
• Exemplo
–Cache com quatro blocos
• Cache 2-associativa (conjuntos de dois blocos)
• Sequência de acesso a blocos: 0, 8, 0, 6, 8
INE5607 - Prof. Laércio Lima Pilla 24
End. do
bloco
Acerto
ou
falha
Conteúdo dos blocos de cache após referência
Conjunto 0 Conjunto 1
Posição 0 Posição 1 Posição 0 Posição 1
Bloco 0 Falha Mem[0]
Bloco 8 Falha Mem[0] Mem[8]
Bloco 0 Acerto Mem[0] Mem[8]
Bloco 6 Falha Mem[0] Mem[6]
Bloco 8 Falha Mem[0] Mem[8]
25. Caches associativas por conjuntos
• Exemplo
–Memória de 4KB (2¹² bytes)
–Palavras de 32 bits, blocos de 2 palavras
–Cache de 16 blocos
–Endereço de memória: 0110 0101 1010
INE5607 - Prof. Laércio Lima Pilla 25
Cache Tag
End. bloco
ou conj.
End. Interno
word byte
Map. Direto 01100 1011 0 10
Associativa 011001011 - 0 10
2-Associativa 011001 011 0 10
8-Associativa 01100101 1 0 10
26. Caches associativas por conjuntos
• Comparação para cache com oito blocos
INE5607 - Prof. Laércio Lima Pilla 26
TAG D
(0)
(1)
(2)
(3)
(4)
(5)
(6)
(7)
TAG D TAG D
(0) (4)
(1) (5)
(2) (6)
(3) (7)
TAG D TAG D TAG D TAG D
(0) (2) (4) (6)
(1) (3) (5) (7)
TAG D TAG D TAG D TAG D TAG D TAG D TAG D TAG D
(0) (1) (2) (3) (4) (5) (6) (7)
Cache 1-associativa (mapeamento direto) Cache 2-associativa
Cache 4-associativa
Cache 8-associativa (totalmente associativa)
27. Caches associativas por conjuntos
• Maior associatividade
–Mais blocos por conjunto
–Maior número de comparações
–Maiores tags
–Menor índice para escolher conjunto
–Maior taxa de acertos
INE5607 - Prof. Laércio Lima Pilla 27
28. Caches associativas por conjuntos
• Cálculo do tamanho da cache e da tag
–Memória de 2m bytes (endereçáveis)
–Cache com 2n conjuntos
–Conjuntos com 2c blocos
–Blocos de 2p palavras
–Palavras de 2b bytes (2b+3 bits)
–1 bit de validade por bloco
–Tamanho do tag: m - (n+p+b) bits
–Armazenamento da cache: 2(n+c+p+b) bytes
–Tamanho: 2n+c*(2p+b+3+1+m-(n+p+b)) bits
INE5607 - Prof. Laércio Lima Pilla 28
Total de blocos = 2n+c
29. Caches associativas por conjuntos
• Exercício
–Memória de 4GB (232 bytes)
–Palavras de 32 bits
–Blocos de 8 palavras
–Cache de 128 blocos
–Endereço de memória: 0xBEBAC0CA
–Qual o mapeamento do bloco e a tag para
• Cache com mapeamento direto?
• Cache totalmente associativa?
• Cache 4-associativa?
INE5607 - Prof. Laércio Lima Pilla 29
30. Caches associativas por conjuntos
• Exercício
–Memória de 4GB (232 bytes)
–Palavras de 32 bits
–Blocos de 8 palavras
–Cache de 128 blocos
–Qual o tamanho efetivo da cache
• com mapeamento direto?
• totalmente associativa?
• 4-associativa?
INE5607 - Prof. Laércio Lima Pilla 30
32. Considerações finais
• Cache de mapeamento direto
• Cache associativa
• Cache associativa em conjunto
• Tags e tamanhos efetivos
INE5607 - Prof. Laércio Lima Pilla 32
33. Prof. Laércio Lima Pilla
laercio.pilla@ufsc.br
INE5607 – Organização e
Arquitetura de Computadores
Hierarquia e Gerência de Memória
Aula 22: Caches associativas e associativas
por conjunto