Você está na página 1de 3

Nome: Carlos Eduardo de Santana

Matéria: 1ORG
Prof. Paulo Massillon
Turno: Manhã

Resenha do Capítulo 5 do livro: Organização e Projeto de Computadores: A interface


hardware/software
Autores: David A. Patterson e John L. Hennessy
Tradução: Daniel Vieira
Editora: Elsevier
Edição: 4. edição

O capítulo 5 intitulado de Grande e Rápida: Explorando a Hierarquia de Memória,


fala sobre hierarquias de memória e principalmente sobre memória cache. Os autores
explicam os conceitos utilizando-se de analogias e imagens, o que facilita no
entendimento do assunto. O capítulo se divide em 14 seções, e os 3 últimos contam com
comentários, leituras adicionais e muitos exercícios para fixar o conhecimento.
O autor começa por introduzir o tema com a analogia do livro na estante para ilustrar os
princípios e mecanismos-chaves utilizados para criar a ilusão de quantidades ilimitadas de
memória rápida. Ele explica, por exemplo, o porquê da memória ser uma hierarquia de
níveis, pontuando os motivos dessa escolha e falando sobre o princípio da localidade, que
é o um dos motivos da memória ser uma hierarquia. Ele também explica as tecnologias
principais utilizadas nas hierarquias de memória. Em momentos oportunos o autor utiliza
imagens com uma pequena explicação abaixo para sustentar suas falas.
Na explicação de o que é um bloco, o autor mencionou que a menor unidade de
informação que pode estar presente ou ausente na hierarquia de dois níveis é
denominada um bloco ou uma linha, porém, ele não disse que entre a cache e o
processador, existe somente a troca de palavras e não de blocos, e isso poderia confundir
pessoas leigas no assunto no decorrer da leitura. Utilizando-se de analogias, explicou
sobre as métricas utilizadas para medir a performance da hierarquia, e demonstrou a
importância dos sistemas de memória para o desempenho do processador.
Na parte de princípios básicos da cache, o autor conta a história da memória cache e
insere, como objeto de estudo, uma cache simples na qual cada requisição do
processador é uma palavra, mas, novamente, o autor não consolidou que o processador
só requisita uma palavra por vez, dando a ideia de que possa existir processadores que
requisitam mais de uma palavra. Ele começa a explicar sobre uma das formas de verificar
e alocar uma palavra na cache, o mapeamento direto. O autor descreveu esse método
muito bem, mostrando como cada local da memória é mapeado exatamente para um local
na cache, com exemplos de cálculos e esclarecendo cada particularidade deste método
com figuras ilustrativas.
No que se refere a blocos, o autor explica detalhadamente a relação entre o tamanho do
bloco e a taxa de falhas, justificando que, as vezes, um bloco maior não significa ter uma
taxa de falhas menor, e que isso pode aumentar, também, o custo de uma falha. Mostrou
como a unidade de controle lida com falhas de cache, expondo as consequências e as
etapas para que os dados requisitados entrem na cache. No tratamento de escritas, o
autor pontua as características das duas políticas de escrita, write-through e write-back,
expondo as vantagens e desvantagens de cada uma. Porém, na parte do write-back, o
autor não especifica que, para indicar que um bloco na memória cache foi modificado, é
empregado um bit de estado, conhecido como "dirty bit", uma particularidade importante
nos esquemas write-back.
Para demonstrar o funcionamento real de uma cache, o autor usa como exemplo o
Intrinsity FastMATH, um mircroprocessador embutido veloz que usa uma implementação
de cache simples. Ele explica as características e o funcionamento desta cache,
abordando com detalhes as dimensões, as falhas, e as requisições de leitura e escrita.
O autor discute sobre como projetar o sistema de memória para suportar caches,
revelando como o aumento da largura de banda da memória pode reduzir a penalidade de
falha. Ele demonstrou 3 opções para projetar o sistema de memória, com imagens e a
descrição das diferenças e benefícios de cada opção. O autor esclareceu muito bem esta
parte e ainda colocou um resumo sobre a cache diretamente mapeada e as explicações
para tirar vantagem da localidade espacial.
Na próxima seção, é abordado o cálculo para medir o desempenho da cache e
alternativas para melhora-lo. O autor mostra como medir o tempo de CPU, descrevendo
cada etapa dos cálculos precisamente, com exemplos de exercícios e de como resolve-
lôs passo a passo, considerando uma cache diretamente mapeada. Após isso, é
apresentado dois esquemas de posicionamento de blocos mais flexível para reduzir as
falhas de cache: o esquema totalmente associativo, e o esquema associativo por
conjunto. O autor mostra 3 imagens que ilustram os 3 tipos de posicionamento abordados
e revela que cada tipo é uma variação da associatividade por conjunto. A diferença entre
as 3 estratégias de posicionamento, é constatada otimamente com um exemplo que
simula a requisição de 5 endereços e compara a taxa de falhas de cada estratégia.
O autor explica como localizar um bloco em uma cache que é associativa por conjunto,
mostrando os procedimentos realizados para selecionar tal bloco. Ele discute como as
pesquisas na cache funcionam, em relação ao tipo de pesquisa e a associatividade; e
comenta rapidamente os fatores que influenciam na escolha entre as três estratégias de
posicionamento. Com uma imagem, o autor ilustra a implementação de uma cache
associativa por conjunto, explicando os detalhes de funcionamento da mesma. Quando
ocorre uma falha em uma cache associativa, é necessário um algoritmo de subtituição
para escolher onde o bloco será colocado. O autor cita, até o momento, apenas o
esquema LRU (Least Recently Used), que é o mais comum e eficiente, porém existem
outros esquemas de substituição como o FIFO (First In, First Out), o LFU (Least
Frequently Used), o Random (Aleatório), e alguns outros menos utilizados.
O autor evidencia que os computadores modernos utilizam caches multiníveis,
explicando as razões e mostrando um exemplo que demonstra o quanto há de melhora no
desempenho pelo uso de uma cache secundária. Adiciono que, normalmente, os
processadores têm até três níveis de memória cache: L1, L2 e L3. Os níveis de número
menor costumam ser menores e caros, porém mais rápidos. Atualmente, em
processadores com mais de um núcleo de processamento, cada núcleo possui seu
próprio cache L1 e L2. Isso permite que o núcleo leia e grave na cache sem se preocupar
em interferir com outros núcleos. Os núcleos precisam de armazenamento compartilhado,
para que possam trocar certas informações facilmente. O cache L3 é compartilhado por
todos os núcleos, por isso é usado como uma espécie de espaço de armazenamento
comum, onde as informações estão disponíveis para todos os segmentos. Portanto, os
processadores têm caches de vários níveis para aumentar a capacidade do cache do
processador sem aumentar drasticamente o preço do processador. Essa mistura
cuidadosa permite processadores mais rápidos e baratos.
Na seção de Memória Virtual, o autor explicou em detalhes como funciona essa
memória, a importância dela para o sistema, abordando minuciosamente cada aspecto e
as diferenças entre ela e a memória cache. Falou sobre as páginas, o endereço virtual e
endereço físico, e explicou como funciona a tradução de endereço. Disse também sobre a
falta de página, que é um problema custoso na memória virtual, e mostrou como o
sistema operacional lida com esse obstáculo. Explicou sobre a tabela de páginas que
contém as traduções de endereço virtual para físico em um sistema de memória virtual. O
autor apresentou detalhadamente, uma forma que os computadores modernos utilizam
para tornar a tradução de endereços rápida, que é uma cache especial chamada de TLB.
Depois de mostrar os tipos de hierarquias de memória, o autor demonstra aspectos
comuns entre elas e responde perguntas relacionadas ao que foi exposto desde o início
do capítulo. As respostas formam um apanhado do que foi visto e faz com que o leitor
efetivamente compreenda as desigualdades e semelhanças entre as hierarquias e os
esquemas de posicionamento. O autor também acrescenta um modelo intuitivo para
entender o comportamento das hierarquias de memória, conhecido como Os Três Cs.
Esse modelo explora as origens das falhas em uma hierarquia, como as falhas serão
afetadas por mudanças na hierarquia e classifica as falhas em três categorias: falhas
compulsórias, falhas de capacidade e falhas de conflito.
O autor apresenta o conceito de Máquina virtual, explicando os motivos delas ganharem
popularidade recentemente, como elas funcionam e os benefícios da sua utilização. É
muito bem abordado o monitor de máquina de virtual, que é o software que dá suporte às
VMs. O autor também discute sobre a falta de suporte da arquitetura do conjunto de
instruções para máquinas virtuais, falando sobre os problemas de compatibilidade das
VMs. Alem disso, é relatado uma complicação que os arquitetos tiveram que resolver para
acomodar as máquinas virtuais.
O autor mostra como projetar um controlador para uma cache simples que utiliza
máquinas de estados finitos para alterar os estados. É exemplificado claramente cada
estado do controlador de cache em questão com uma imagem e explicações de cada
uma.
O autor expõe sobre os problemas de coerência de cache dos multiprocessadores
multicore. Ele explica de forma fácil, com exemplos, sobre o problema e depois fala a
respeito dos esquemas básicos pra impor a coerência. O autor descreve como o protocolo
de invalidação de escrita garante a coerência, por meio de um exemplo esclarecedor.
É apresentado as hierarquias de memória de dois processadores modernos: o
processador AMD Opteron X4 e o Intel Nehalem. É exposto com detalhes as
características da hierarquia de memória de cada microprocessador e também algumas
técnicas para reduzir as penalidades de falha. O autor desenvolve muito bem como
funcionam essas técnicas, tratando das propriedades dos processadores e algumas
explicações pertinentes.
O autor conta algumas falácias e armadilhas que são propagadas sobre a hierarquia de
memória, e desmente elas com explicações esclarecedoras. Em conclusão, o autor deixa
uma seção para comentários finais sobre os assuntos abordados no capítulo, e uma série
de exercícios para fixar o conhecimento.
Este capítulo é apropriado tanto para estudantes que queiram aprender sobre hierarquia
de memória, quanto para profissionais que queiram apenas revisar algum conceito. Ele
conta com explicações execelentes, boa didática e ótimos exemplos ilustrativos.

Bibliografia:
PATTERSON, D.A; HENNESSY, J.L. [tradução Daniel Vieira]. Organização e Projeto de
Computadores. 4. ed. Rio de janeiro: Elsevier, 2014.

Você também pode gostar