Oi Oi pessoal tudo bem com vocês na última hora a gente falou sobre as memórias de creche e a gente viu os 7 elementos que influenciam no design dessas memórias e um desses elementos a gente comentou era as funções de mapeamento então nessa aula a gente vai estar tocando e vendo mais detalhes quais são os tipos de funções de mapeamento a gente é normalmente utilizada na construção de memórias Quentes então Relembrando a motivação de ter funções de mapeamento a gente sabe que é memória Cash ela vai ter um espaço de armazenamento bem menor do que
a memória principal então em determinado momento ela só vai conter uma pequena porção dos dados que estão na memória principal tem uma linha da creche ela vai poder armazenar mais um endereço da memória principal ou seja vai poder armazenar diferentes de dados localizados em diferentes endereços da Memória principal daí por isso pra gente conseguir saber em qual linha de Cash um determinado dado na memória vai ser é alocado vai ser copiado a gente precisa o sonho de mapeamento que vai fazer essa relação para gente e aí a gente falou sobre três funções de mapeamento O
primeiro é uma pianinha tu direto ou um de cada elemento da memória principal só pode ser mapeado em uma única linha de cash ou seja você tem esse essa forma direta né você não tem escolha dele é Somente em uma determinada linha e os outros tipos de mapeamento gente falou sobre os movimentos associativos que eles podem ser totalmente associativos ou associativos o conjunto que seria o set associative encontram nessas festas associativa a gente vai ver que um determinado dado na memória principal ele pode ser mapeado em um grupo de Nerdcast daí a gente vai poder
selecionado entre as minhas desse grupo usando algum algoritmo de substituição EA gente começou a de na aula passada Então vamos começar vendo a primeira condição de mapeamento que seria um mapeamento direto então a gente pode observar nessa figura que aquele mostra um exemplo da memória principal além de vários elementos que vão ser mapeado na memória Cash representada que acima então a nossa memória Cash ela vai ter um total de oito and Cash a gente percebe que a quantidade de endereço da memórias é bem maior do que oito então Como é que é o mapeamento direto
ele basicamente ele vai pegar a cada um dos endereços iniciais ele vai estar associando consecutivamente todas esses endereços de na igreja de caixas consecutivo está aqui por exemplo esse primeiro endereço ele vai ser mapeado a primeira grande Cash esse aqui que é o bloquinhos aquele vai ser mapeado na hora que segunda grande que acha e assim sucessivamente e o que a gente pode perceber todos os endereços dessa região Que eu marquei eles vão ser armazenado consecutivamente e nessa 18 dias de cachos da memória Cash E aí os próximos bloco nas próximos oito elementos eles vão
se matado também na mesma posição tá e assim sucessivamente de 8 em 8 eles vão preenchendo a marca neutro direto Então reparem pessoal que aqui nessa região de Cinza essa esse segundo endereço ele vai ser mapeado na segunda menina que a gente não vou marcar daqui ó dá isso aqui Seria o endereço um eu ou endereço9 ele também vai ser mapeado na mesma região então repare para cada endereço a gente só tem uma relação um para um né o endereço Ele só pode ser armazenada em uma grande cast e uma Nerdcast ele pode ser copiado
diferentes informações a gente pode ver por essas coisas então todos esses endereços marcado em cinza só pode ser copiado para essa minha um da mesma forma esses endereços marcado em azul Ele só pode ser copiado para mim A cinco Essa é a forma do mapeamento direto e aí pra gente conseguir identificar de cada endereço qual que é a minha correspondente a gente vai estar utilizando a operação de módulo a gente vai calcular o resto da divisão do endereço a rádio total de Nerdcast então pra gente calcular Qual que é a linha aí ontem a gente
vai porque é um dado da memória principal para creche pessoal utilizar seguinte forma a gente vai Pegar o endereço desse dado tá o endereço do bloco lá na memória principal visto que a gente está sempre fazendo transferência de blocos de byte então uma pode ser um bloco ou pode ser um mau old vai depender da especificação da memória a gente vai pegar esse endereço e vamos obter o módulo considerando a quantidade de Nerdcast disponíveis Então a partir dessa forma a gente vai estar determinando Qual que é a linha de creche então repare por Exemplo que
aqui no endereço um né a gente vai fazer o módulo com o total de linhas de kessya que a gente vai ter oito meses então um módulo 8 ou sente vai ser zero e o resto vai ser um na mesma forma correta de pegar esse endereço 9 não vai fazer a mesma fórmula 9 módulo Porto a gente vai ter que o quociente é um e o resto é um também então repare na se tu tiver o resto um pano considerar o módulo oito ele vai ser armazenado em essa minha de creche Essa vai ser a
fórmula eu dou uma pagamento direto e aí como é que a gente vai estar identificando Qual que é o endereço correto corrente fizer o acesso na memória Cash at viu que a linha de Cash ela pode tá armazenando diferentes endereços da memória principal diferente dados da memória principal tenho que a gente saber qual desses dados de fato está sendo armazenado a gente vai ter um campo né uma informação tem sempre vai salvar na memória quer que isso que é o Campo de tag até o campo de rótulo a gente vai tá obter nesse campo de
tag analisando os Beatles que vão ser utilizados no endereçamento fica por exemplo se não tiver uma arquitetura onde o endereço da memória tem 32 vezes a gente vai utilizar o dividir menos significativos prata selecionando qualquer a linha de Cash e os vídeos mais significativo eles vão formar o campo tédio E aí assim a gente vai estar sempre quando acessar uma linha da que a Gente vai ler esse campo tag m e com o campo Ted que está vindo do endereço em que será necessário se esses computeres ele forem iguais da significa que o dado eu
está armazenada em uma caixa caso contrário ele não está armazenado E além disso a gente vai ter uma outra informação e cada nem de Cash que é o que a gente chama de 20 válido que é para saber se a informação que tá na minha é válido ou não se ela está atualizada ou não então se o bit for Igual a 1 significa que o Davi está presente está atualizado se for zero ele não está atualizado eu vamos ver um exemplo de como funcionaria o mapeamento direto na nossa memória quer será que nesse exemplo a
gente vai ter uma memória caixa com 18 linhas de Cash a gente vê que para cada Neide vai ter três colunas a gente vai ter uma coluna por 20 válido que a gente tá representando sim ou não então aqui se ele significar não significa que não Está presente você já não tem nenhum valor armazenado nessas linhas aqui ao lado a gente vai ter o campo de tarde que vai ser utilizado para verificar se houve um teste Hit ou não e ao lado a gente vai ter a coluna de dente aqui o marginal dado de fato
Então se a gente tiver transferir um bloco de informações esse bloco de informações no bloco de baixo ele vai ser armazenado todo nessa coluna de w caso contrário que o armazenar somente o a Word ou somente o Bairro aí vai depender dessa unidade de transferência entre a memória principal EA memória Cash tá aqui no nosso exemplo vai ser uma old por linha então ele vai armazenar aí é normalmente o quarto byte Então como é que seria então o acesso Então vamos estar dando alguns exemplos é o primeiro a gente vai querer executar uma instrução de
Lourde por exemplo acessando o w que está no endereço 22 então utilizando a nossa forma de um mapeamento direto qual que seria Nerdcast que a gente verificaria a informação então aqui no total a gente vai ter oito dias de Cash aqui então a gente conseguir saber qual que é a aliança missionária que a gente vai fazer a gente vai pegar o número 22 e calcular o módulo com a quantidade de linhas ou seja um módulo com oito tão 22 dividido por 8 ele um dois e o resto vai ser sexta a gente calcular a 22
- 16 A gente vai ver que o resto é seis então a linha de creche onde vai ser mapeado o Endereço 22 vai ser a aliás Então a gente vai olhar aqui na minha seis pra gente pode ver aqui a minha seis com a sua representação binária ele que vai acontecer como a gente estava com a creche vazia vai acontecer o teste Nice E aí a gente vai estar lendo e formação da memória principal e vai copiar para dentro da caixa e a gente vai armazenar esse endereço 22 na linha seis aí o que o
recheio atualizar né da que a gente vai atualizar o bicho aqui no caso ele Vai mudar de novo pra isso então agora tem um dado o presente a gente vai copiar o campo tag que vai ser os vídeos mais significativo do endereço é que já vai ver como é que é formado e aqui no campo e dali a gente vai pegar exatamente o w que tá na memória então aqui a nossa memória vai ser um Array de Words e Vamos acessar esse word com o endereço 22 aqui representado em vinagre então a gente pode ver
aqui nessa nossa representa o que o número 22 ele vai ter Essa representação binária para empinar e para representar essa insurgente que a gente precisa de três meses então ele perceba aqui olha que diz 00 até uma está representando 8 valores também numerando 8 valores a gente vier pela forma né que encontrei 20 da gente consegue enumerar até 2 elevado a 3 elementos ou seja oito elementos então analisando aqui o binária a gente pode estar considerando que esses três primeiros Beats ele vai ser utilizado Prata selecionando qualquer a linha de que a gente vai estar
acessando e o Smith restante ou seja o bit mais significativo esqueçam de binárias queira que seria esse 10 ele vai ser o campo tag então esses três primeiros vídeos eles vão ser utilizados para selecionar a linha os outros vídeos mais à esquerda vai ser o campo geotérmico da que a gente tem informando que teve a situação de mês porque a creche estava vazia eu feito isso a gente vai ter essa Atualização na minha seja Então vamos continuar o nosso exemplo agora a gente vai tá querendo acessar o endereço 26 então a gente pegar o módulo
da divisão por 8 A gente vai ver que vende seis ele já era por cento e três e o resto vai ser e o resto vai ser dois seria 26 - 24 então repare que aqui a gente vai estar acessando a linha 2 que correspondem esses três vintes mais à direita e aí qual a informação que a gente vai copiar no campo de tag vai ser o valor 11 então Esse 11 vai ser armazenado aqui no campo de tag E aí a gente vai estar obtendo dados na memória e salvando na coluna direita novamente obrigado
e claro ele também vai ser atualizado então agora a gente fosse essa novamente esses endereço de 22 e 26 a gente vai ter as situação dia a gente porque agora a gente vai estar encontrando esses valores dentro da memória caixa e aí como é que é feita essa comparação tá A primeira coisa a gente vai fazer é Primeiro Identificar qual que é a linha de carne endereço tá aqui no caso de 22 a gente vai olhar que os três vídeos nem me significativo a gente vai estar checando essa linha Então a primeira coisa que vai
ser vistas o grupo do 20 bares então é que a gente especiais do que ele está marcado com i.a. eles estão tem algum dado presente e depois disso a gente vai estar olhando o campo Ted Então esse campo tag 10 ele vai ser comparado com esses dois bichos mais Significativo se for postar eles forem iguais Então significa que esse dado armazenado Valente quer ele pertence ao endereço 22 aí vai occasional Crash 20 da mesma forma a gente vai bem isso também com o endereço 26 vai ser acessados a linha 2 e vai verificar se o
campo tag também é esse valor 11 então a gente pode perceber que nem a 2 o campo tag também vai ser 11 aí vai dar o cachê hit a gente vai estar lendo esse w na memória Cash e não da memória principal Como foi feito no primeiro acesso É continuando então com nosso exemplo a gente vai ter agora e mais existe de três acesso então primeiro Vamos acessar o endereço 16 então olhando aqui no binário de 16 a gente vê que a linha de cashmere ele vai ser mapeada vai ser na minha zero Então não
teve nada na minha zero vai acontecer Oi gente vai pegar esses dois bichos aqui esses 10 e vamos salvar no campo técnico tá bom então a gente inteira só atualização aqui e Salvou o valor da memória para dentro da coluna de brita da mesma forma a gente vai ter agora o endereço três que ele vai estar olhando a linha três também a minha três não tinha nada vai ocasionar que assumir a gente vai salvar o Tag 00 na minha três então aqui a gente pode ver que foi atualizado E aí o último acesso vai ser
novamente o endereço 16 tenho como dizer se a gente acabou de colocar a gente vai ter o teste irritou a gente vai olhar a primeira linha a Gente percebe aqui que ela vai ter o tempo tá igual a 10 a gente vai comparar com os bits mais significativos e a gente vai dar um teste a gente também o nosso próximo exemplo a gente vai querer acessar o endereço 18 então endereço 18 e se a gente for fazer um módulo por 8 a gente vê que ele vai ser mapeado também na minha dois então repare aqui
hoje bit menos significativo na ele vai mapear na linha 2 então a gente vai estar olhando a minha dois a gente vai ver que o campo Ted que tá vão ter Oi gente voltar aqui nos relógios eu tive que a minha dois ela tinha o campo tag = 11 enquanto agora o computed do número 18 ele vai ser o valor 10 então a gente vai verificar se alinhando hoje vai ver que o bicho é válido mas só que o campo tag 11 vai ser diferente do valor 10 E aí vai ocasionar o teste mesmo e
esse valor que era o endereço anterior e vai ser descartado E aí o que que vai ser feito a gente vai copiar o valor no endereço 18 copiar na linha de Cash e vai atualizar o campo tag agora para o valor de 10 que é correspondente ao endereço 18 então sempre vai ter essas verificações por a gente por acessar um dado utilizando o mapeamento direto aí que a gente tem um esquema de como a gente vai estar compondo essas informações através do endereço de memória então aqui ensina a gente vai ter o nosso endereço de
memória que a gente vai estar considerando que ele vai Ser o endereço de é proibido onde a gente começa aqui com 101 até 31 então basicamente a gente vai estar dividindo esse endereço da memória principal em três Campos o primeiro campo é o campo tag que é armazenado lá na linha de caixa um segundo Campo vai ser um campo de índice ou linha que ele vai estar selecionando qualquer a linha de Cash onde dado vai tá armazenando e o último Campo ele vai ser o campo de ofisset né para saber qual que é o baixo
que Precisa ser acessado dentro da coluna direita então lembrem lá PSOL que a gente está comprando sempre um bloco de informações para dentro da coluna de deita então um determinado momento um processador só precisa acessar um desses elementos do bloco então para a gente saber qual que é elemento do bloco ele precisa acessar a gente vai estar utilizando esse campo aqui de off-set e para que nesse exemplo vai ter 20 blitz utilizada para o Campori tag 10 Beats Utilizado para o campo de índice e os dois bichos aqui o oficial Então como é que seria
a lógica e pegar os bichos correspondente a essa área vai selecionar essa minha né meu post selecione a Sarinha que a gente vai fazer a gente vai estar obtendo as informações do bicho bed tá então perceba aqui que esse bicho tiver ele vai ser enviado por uma porta de índio tá a gente vai estar obtendo a informação do campo tédio E aí o campo Ted repare que ele vai ser enviado para esse circuito aqui que ele vai fazer uma operação de igualdade Então esse campo tag a gente vai comparar com o campo tag que vem
aqui do endereço da memória principal a gente vai comparar esses dois valores e aí sim aqui porém iguais se ele for dar o valor verdadeiro Então esse resultado de verdadeiro da Igualdade vai ser a segunda entrada nessa porta índio Por que que vai acontecer né se o bit for válido e os Campos tags forem iguais Então resultado da porta and vai ser um valor verdadeiro Isso aqui vai indicar para gente que houve um ritmo ou seja esse dado de real a mapear então houve um vídeo então quando a gente vai fazer quando ocorrer um gente
a gente vai ler os dados da gente Cash e vai já encaminhar lá para os barramentos do processador que a gente sempre vai ter essa verificação quando for acessar o mapeamento direto agora a gente vai dar um exemplo que a Gente vai considerar aquele lá na coluna de deita a gente vai ter mais do que um baixo a gente vai ter mais do que uma hoje sendo armazenado E aí aquele terceiro Campo o campo de ouvir 7 ele vai ser utilizado para selecionar qualquer ao o rádio que está realmente sendo acessada pelo processador e tá
aqui no nosso exemplo a gente vai ter uma caixa com 64 blocos tá então aqui é uma caixa com 64 linhas sendo que cada a linha a gente vai armazenar um bloco E Aí Quantos bytes a gente vai ter para o bloco A gente vai ter 16 bytes em cada bloco Então primeiramente pra gente tá indo endereçando na memória que a gente precisa obter nesse caso Qual que é o endereço do bloco então aqui considerando endereço mim e qual que seria o endereço do bloco Então esse 1200 aqui pessoal é o endereço da memória principal
seria o endereço do baixo uma principal ela é mapeada é endereçada em baixo então pra gente Saber qual que é o bloco correspondente ao endereço 1200 que a gente vai fazer é tipo basta dividir pela quantidade do bloco A gente vai dividir 1200 por 16 então fazendo isso a gente vai ter o valor 75 então o endereço 1200 a gente está apontando para o bloco 75 Então esse endereço 75 É ele que vai ser agora mapeado pela memória que a gente então esse endereço 75 a gente vai estar colocando ele em binário E aí qual
que vai ser a linha de crédito que a gente Vai estar utilizando Então a gente vai usar forma efetiva anteriormente a gente vai pegar o valor 75 módulo a quantidade de dentro de Cash e partir desse exemplo a gente tem 64 linhas a gente vai pegar 75 módulo 64 e o resto a gente vai obter vai ser o resto 11 então esse valor 11 ele vai ser a linha de crédito que vai ser acessada para salvar esse bloco 75 o que tem o endereço 1200 Então vamos reparar como é que é formado o endereço da
memória principal como é que ele é Dividido como a gente viu que cada bloco ele vai ter 16 bytes a gente vai precisar de quanto e vídeos para endereçar esse 16 bate a gente vai precisar de quatro vídeos porque 2 elevado a 4 = 16 então o campo de oficiaç ele vai ter quatro bilhetes que é para selecionar um desses 16 baixo que vai ser acessado pelo processador Então esse oficial que vai ser mencionar isso depois vai ter o campo de índice que ele vai ser utilizado para selecionar a Linha de caixa aqui nesse exemplo
a gente vai ter conta a gente que a gente vai ter 64 milhões de caixas então para endereçar 64 valores a gente precisa de quantos vídeos vamos precisar de 6 vídeos porque 2 elevado a 6 = 64 então esses seus vídeos é que vai ser utilizado por quê Oi e o campo de tag ele vai ser o restante até completar os trinta e dois meses Então como é que a gente vai calcular a quantidade de vídeo que o campo de tarde vai ser 32 hoje Menos seis bichos do índices -4 vídeos de off-set em sair
Vai resultar Na quantidade 22 tá bom é dessa forma que a gente vai estar determinando como é que é formado o campo como é que é dividido o endereço na memória principal nesses três Campos generalizando como é que é esse mapeamento direto a gente vai ter o endereço da memória dividida em três pontos onde o primeiro é o campo tag segundo seria o indiciou a linha que vai ser acessada na memória que acha esse Último aqui que é a palavra então reparou como é que vai ser feito aqui a gente vai ter a nossa memória
cash ou de cada dia a gente vai ter o bicho velho e o que que não tá mostrando vamos ter a coluna tag e aqui a coluna de deita né a coluna de dados ela vai ter várias informações a ter vários golos de vários baixos então e aqui seria todos os baixos que são armazenados nessa coluna de dados como é que vai ser perito acesso o primeiro a gente vai pegar esse Trecho de bichat que é para selecionar a linha ser avaliada então selecionando a minha que que vai acontecer o bicho verde e o campo
tag eles vão ser utilizados para fazer aquela comparação que eu tive anteriormente então aqui ó mostrando o que que acontece com o campo de terra e compositora e ele vai se enviar o comentada para esse comparador que ele vai receber também o campo tag do endereço na memória principal aí vai ser feita a comparação de igualdade Então se eles forem iguais Então o que significa que houve aqui um teste ritmo houve um acerto da Caixa se for diferente então vai ser o valor zero e aí teve uma falha na creche teve um teste mesmo então
na situação de falha que que vai acontecer ele vai lá para a memória principal que está representado aqui meu lado então reparem que a nossa memória principal ela vai ser endereçada por baixo ela vai ser endereçada tumor a gente pode perceber né que a gente vai Ter hoje zero por de um dois e três representadas por 190 um dois e três e a gente pode perceber que a gente também vai ter blocos de gordo então esse bloco B zero ele contém quatro mor diz que vai download 0 até hoje três que a gente vai ter
vários blocos dessa forma e aí no momento que tiver o teste meio acho que vai ser copiado em vai pegar um bloco de 4 Words e vai copiar exatamente para essa coluna de dados na Nerdcast selecionada aí Se tiver agora o teste Gente que que vai acontecer então teve o que a gente entende vai querer saber qual dessas Sword vai ser selecionada para ser acessada pelo processador para ser lida para o registrador então aqui para a gente saber isso a gente vai estar utilizando o terceiro Campo que o campo de morrer né o campo de
palavra E aí ele vai determinar nesse nosso exemplo que a urna é selecionada vai ser essa terceira hoje E aí essa terceira onde vai ser encaminhada lá para o Registrador do processador então basicamente é a forma que a gente vai ter para fazer o mapeamento direto Então aqui tem algumas considerações gente precisa anotar quando a gente aumenta a quantidade da coluna de idade quando a gente armazena de fato um bloco de informações então a gente pode perceber quando a gente aumenta o espaço do bloco A gente vai reduzir a taxa de mim porque a gente
vai ter mais dados copiados na linha de creche então provavelmente você Vai ter copiado mais vizinhos quando você fosse essa um determinado elemento então lembrem lá que isso aí favorece a localidade espacial nós vai acessar o elemento e vai copiar ele e os vizinho dele vai cortar esse bloco de informações então quanto mais vizinho e você copiar menor vai ser a taxa de mim você vai reduzir a taxa de lixo para processando elementos Vizinho ao determinar não dá mas quando a gente tem maquete de tamanho fixo a gente tem Também algumas desvantagens quando o bloco
é muito grande então se a gente tiver um bloco muito grande isso vai diminuir a quantidade de vir detesto então e considere uma caixa com 128 bytes então seu tamanho do bloco por 64 bytes a gente vai ter somente duas irei de caixa com de cada uma dessas vai ter de 64 bytes Agora sim o tamanho do bloco for 32 bytes Então a gente vai ter nessa situação quatro linhas de queixo então perceba né que aumentando o tamanho do Bloco você diminui a quantidade de vez de caixa e aí você tem o número de linha
você vai encher a creche mais vezes e aí se você encher creche você vai ter que executar aquele algoritmo de substituição vai acontecer mais que a ti mesmo e aí acaba que esse benefício de de reduzir a taxa de emissão não vai adiantar Então seja você vai acabar aumentando a quantidade de mim E além disso se você tiver um bloco muito grande você vai começar a pegar dado Poluído Ou seja você tem um bloco tão grande que a lembro de vizinhos você vai pegar informação de outro processo por exemplo Então essa informação que você nunca
vai utilizar porque ele pertence a muito programa ou ele pertence a um outro modo é quase não acessa então blocos maior aí você acaba tendo dados poluídos também então existe aí uma troca de custo-benefício em relação ao tamanho do bloco EA quantidade de dias de caixa e também se você tiver avó com Os maiores isso também vai aumentar penalidade por mês penalidade por mim é o tempo que você gasta para copiar um dado na memória mais lenta para memória mais rápida então se você tiver um mês você vai ter esse tempo de copiar mais informações
na memória principal para dentro da caixa então se você tiver mais nem é mais dados ou mais de idade que você vai copiar isso aí vai aumentar o tempo dessa transferência vai aumentar a penalidade por mim e a gente tem algumas Otimizações gente pode fazer para tentar reduzir isso isso aí é utilizar uma técnica de reims participado e palavra criticar primeiro mas isso aí a gente não vai estar então militares não só últimos a gente pode adotar em Marrakech a gente não vai estar entrando em detalhe no nosso. Então Relembrando o que que acontece quando
ocorre um teste mesmo é o primeiro se a Rita acertou ela vai continuar normalmente porque ele vai tomar um símbolo de coque para acessar a Memória Cash é nenhum e vai ler esse dado registrado ele vai partir para a próxima instrução agora é se tiver um cashmere isso vai parar o pai pela ign da CPU ou seja ele vai parar na etapa que ele está executando a instrução ele vai parar e ele vai esperar o dado ser copiado para memória cast aí que que ele vai fazer se tiver o que este mês ele vai verificar
mas ele era as três abaixo até nem com salgado E aí vai ocorrer essa cópia do W para memória Cash é Nenhum aí depois essa inconsistência por resolvida aí a instrução ela vai executar novamente Então se foi um teste Miss lá na Esquece as instruções bairro Executar a bucha da instrução caso contrário se for lá na creche de dados ele vai acessar novamente o d'ale Zidane vai ter mais um circo para repetir o circo né etapa para fazer isso acesso ao dar Eu normalmente o que que acontece e corre o teste mesmo sistema operacional e
vai colocar um outro processo para Executar encontro tá fazendo essa cópia para dentro da memória quer é isso que acontece nos sistemas mais modernos então resumindo Como funciona o mapeamento direto isso é que a gente vai ter algumas formas para a gente tá obter algumas informações Então a primeira aqui é o comprimento do endereço que seria o endereço da memória principal interesse da memória principal e foi dividido nesses dois Campos como a gente vê na imagem anterior e depois dividido No campo O S E no campo da água então vamos voltar aqui só pra gente
visualizar isso novamente então repare que aqui é o endereço da memória principal como no nosso exemplo aquele endereço de 32 vídeos E aí vai ser dividido em dois Campos esses campos que tem o Tag a linha ele é o que representa o s tá em vai ser a quantidade de essa evite O que representa a palavra ele é a quantidade de w Beach então com s vídeos ele vai ser formado pela linha e pelo Ted a quantidade de 20 somente para linha vai ser esse E aí como é que ele vai calcular o campo de
tarde vai ser o s - r Tá bom então aqui utilizando essa notação essa terminologia como é que a gente vai calcular informações então o endereço ele vai ser esse mas wbt ele vai ser o endereço completo da memória principal lá e quantas unidades interessavam a gente vai ter na memória principal vai ser dois elevado a quantidade de bicho do endereço que é 2 Elevado a s.mag da processo tiver uma memória com 32bitis quanto e de espaço a gente vai conseguir alocar vai ser dois elevado a 32 dois levaram 32 A gente vai chegar aí
a quatro gigabits então a gente consegue endereçar uma memória de 32 bits até aí aproximadamente 4GB ou 4 gigabytes para facilitar o entendimento e aí agora a gente for olhar em cada bloco né a gente sabe que a quantidade de bits para endereçar o bloco é esse campo de w né então pediu Mordida que tem um Palco é o tamanho do bloco ponto de base e vai ter um bloco A gente vai determinar isso com 2 elevado a w tá ele vai dar quantidade de a quantidade de Lourdes por Doc e aí a gente quer
saber agora quantos blocos a gente vai ter na memória principal Então a gente vai utilizar forma que a gente viu no exemplo anterior né quando a gente já o endereço 1200 é que dividiu lá por 16 rádios que era o tamanho do bloco A gente teve o valor 75 Qual é a Sua forma que ele vai estar utilizando para saber quantos blocos tem uma memória principal a gente vai pegar a quantidade de unidades interessavam a memória principal que é 2 elevado a essa e nós dado e vai dividir pelo tamanho do bloco e vai ser
dois elevado a data então esses dois elevado a esse ele vai dar para gente a quantidade de blocos gente vai ter a nossa memória que a gente vai conseguir endereçar blocos de 0 até 2 elevado a esse em -1 E aí agora Continuando aqui ó como que vai obter a quantidade de energia que a gente vai obter observando aquele campo de índice né o campo linha que a gente viu na imagem anterior que ele representa RBD então para saber a quantidade linha ele pega 2 elevado a r que vai a imagem de valores enumerados com
R é frente obter agora o campo tagbar gente fazer aquela situação que eu tive na imagem que é se menos é assim gente vai calcular o campo tédio pensa aqui é só um resumo Mostrando como é que a gente obteria de informações como mapeamento direto então vamos para ficar dentro de um exemplo de como funcionaria Então atende quer saber quantos bits tem no total serão necessários para uma caixa com mapeamento direto com 128k byte de dados e tamanho de bloco com uma ordem Considerando o endereço de 32 bits que tá aqui pessoal está considerando tem
uma arquitetura de 32 bits porque o endereço tem 32 dentes então com o mal Onde ele vai ter 32 dentes ou 4 baixo Então a primeira coisa que a gente vai ter que saber na questão é quantas Words de 4 bytes a gente consegue ter representado com 128k baixo aí para gente fazer isso a gente vai começar a transformar tudo em potência de dois então o 128k baixo sente for transformado potência de 12 você vai ver que 128 = 2 elevado a 7 horas e esse kabaite ele é um múltiplo de baixo então a gente
vê lá que acabasse deve Representar 2 elevado a 10 né megabyte é 2 elevado a 20 jogo abaixo do elevado a 30 que era abaixo dos elevado a 40 e assim sucessivamente então aqui a gente pode estar imaginando que a gente tá fazendo uma multiplicação a está multiplicando 128 por um cabbage q = 2 elevado a 10 e pra gente tá fazendo uma multiplicação onde a base é a mesma é a base dois então basta a gente somar os expoentes então aqui é 2 elevado a 7 vezes 2 elevado a 10 então o total vai
Ser dois elevado a 17 baixo então a gente sabe que com 128 acabar gente consegue representar essa quantidade de baixo então sabendo que essa quantidade de baixo e agora a gente vai ter que determinar quantas ruas a gente vai tempo tem como é que a gente vai definir isso a gente vai dividir pelo tamanho de cada hoje tá que tá Ah então tá namorando tem 4 baixo Então a gente vai pegar esse valor de 2 elevado a 17 horas e dividir por quatro quadro também Potência de dois então aqui a gente pode fazer o seguinte
cálculo vai ser dois elevado a 17 dividido por 2 elevado a 2 mesmo a base basta subtrair nos expoente tá vai ser 17 - 2 e sua rede está em 2 elevado a 15 o repare que essa é a quantidade de Words a gente tem aqui somente que o bloco ele tem somente o valor então essa quantidade de voando e consecutivamente é a quantidade de blocos também tá aqui no plantão gente vai ter dois elevado a 15 blocos agora a Gente precisa saber como é que ele vai formar o nosso endereço né Desse 32bitis quantos
bilhetes a gente vai precisar para endereçar todos esses blocos aí vai precisar de 15 20 então 15 20 vão ser utilizado pela tá endereçando todos esses dois e levaram a 15 blocos E aí sabendo disso para gente saber quantos Beats é necessário para Catcher a gente vai ter que saber qual que é o tamanho de cada dia de creche Então a gente vai calcular o tamanho de cada além de Cash E aí sabendo a quantidade de cada lente Multiplica pelo total de linhas isso vai dar a quantidade de 20 total da caixa com mapeamento direto
então para calcular informação de cada linha de que a gente vai ter que lembrar a os campos a gente tem então o primeiro campo vai ser o campo de dados Então a gente vai ter que pegar o ponto a gente vai armazenar naquela coluna de dados que aqui na questão Vai ser 4 bytes ou trinta e dois meses depois a gente vai Ter que em contabilizar conta Evidente vão ser armazenado uma coluna de tag a gente vai calcular já já e também Vamos considerar o Beach bege que também é utilizado em cada lista primeira coisa
determine a conta de dados vão ser armazenado na coluna de dados então a questão já dá esse presente então são 32 países que vão ser armazenado mas aí a gente vai calcular o campo de tédio e tem um campo de tag aqui a gente precisa fazer a gente vai pegar é o estudo dos Dentes a gente sabe que 15 de se ver a ser utilizado para endereçar esses blocos tá como a gente viu aqui são dois elevado a 15 blocos então 15 vídeos vai ser utilizada naquele campo de índice para endereçar o bloco o campo
the word a gente precisa ter a quantidade de bits para endereçar esses quatro baixos de uma ordem então o pai dele essa quatro bate a gente precisa de dois Beach então dois bilhete vai ser o corpo onde 15 20 vai ser o campo índice Então qual vai Ser a quantidade de 20 do campo tag a gente vai fazer o seguinte cálculos vai pegar o valor 3220 + subtrair a quantidade de bicho do campo Diniz e quer que Rebite e vai subtrair a quantidade de vídeo do campo the world que é dois bits para endereçar os
quatro baixos então isso aqui vai dar a quantidade de hibisco do campo de tag é que a gente vai ter o vi tiver descendo contábil então somando isso cada Nerdcast a gente vai estar mais andando 48 bits Então para mim saber a quantidade total para memória que a gente agora a gente vai ter que entregar esse valor de cada linha e multiplicado pela quantidade de linha tão quantas o tema memória que a gente vai ter dois elevado a 15 estão fazendo isso a gente vai estar contabilizando da seguinte forma a gente vai pegar a quantidade
de 21 cada dia de Cash e Vai Multiplicar pela quantidade de linhas quero dois e levar aqui então fazendo isso que que a Gente vai ter terça 48 a gente consegue se lembrar como 1,5 vezes 32 como esse 32 a potência de 12 de consegue simplesmente somar que os expoente tem um como resultado mas ser 2 elevado a 1532 é 2 elevado a 5 vai ser 1,5 vezes 2 elevado a 20 que a gente vai ter esse resultado E aí 2 elevado a 20 ele representa Mega abaixo ou megabit como é que a gente tá
usando o bit diretamente esses dois elevado a 20 ele vai liberar esse n e a gente vai contabilizar 1,5 Megabit para ele se quiser se contabilizar como byte a gente teria que dividir esse valor por hoje então reparem pessoal nós informação importante é que quando o Bea que ele tá em minúsculo a considerando Beats megabit podem se dele é maiúsculo agitar contabilizando byte seria megabytes pensam pequeno detalhe para vocês estarem percebendo sempre quando eu tá maiúsculo ou minúsculo Quando é megabits quando é megabytes e a gente tem que no Total dessa memória Cash a gente
vai ter o tamanho de 1,5 em megabite Então a gente vai ter um outro exemplo que a gente vai ter algum mesmo cenário anterior só que agora dentro lá da coluna de dados a gente vai ter um bloco que ele vai ter quatro mortos tão cada uma dessas the word e também vai ter 32-bit vai ter quatro bate Então como é que ficar em mapeamento nesse cenário mas vai fazer da mesma forma primeiro a gente tem que saber quantas goodies vão Caber em 128 cavalos pra gente vai tá utilizando a mesma forma que eu 128
acabar Z = 2 elevado a 17 baixo e aí agora a gente vai dividir por quatro que é o tamanho de cada Hoje a gente vai ter o resultado de 2 elevado a 15 World tu viu o anterior mente para que agora um bloco ele possui quatro Words a gente precisa saber agora quantidade de bloco gente vai ter na memória dá pra gente fazer isso a gente vai ter que dividir agora pelo tamanho do bloco Então como Um bloco tem quatro hoje a gente vídeo novamente por quatro então 2 elevado a 15 dividido por 2
elevado a 2 baixo essa detalhes expoente Então vai dar resultado de 2 elevado a 13 blocos Então esse aqui vai ser a quantidade de blocos a gente vai precisar mapear para queixo tá como uma pimento direto cada bloco de vai ser maquiado em uma única linha de teste tão quantos bem gente vai precisar para endereçar esse blog vai precisar de três e vídeos para conseguir endereçar Todas as mesas de Cash por quantas vezes o que a gente vai ter a gente vai ter dois elevado a 13 dias de Castro e aí agora a gente precisa
calcular Qual que é o valor de cada linha então agora a gente vai ter que o dado que vai ser copiado para cada linha mas sem informação do bloco tudo que você quatro Word Oi gente tem contabilizado quanto os bichos vão ser armazenado no campo de idade vai ser 32 x24 contabilizando essas partes hoje dando aqui 128 de aí Depois a gente vai calcular novamente o campo de tem então como é que a gente vai colocar um detalhe vai ser uns 30 dos bichos - os demais Campos Então vai ser 32 bits - 1320 bom
ser utilizado no campo de índice menos dois bichos que é pra selecionar qualquer amor di do bloco que a gente vai querer acessar - 2 bikes que vai ser o baixo download que a gente quer acessar Lembrando que uma Hoje vai ter quatro baixo então repare aqui pessoal que se dois bichos aqui ele Representa o campo de olho na verdade seria quatro vídeo aqui foi dividido em dois para ficar mais fácil de perceber o povo que está sendo utilizado nesses dois bichos vão ser para selecionar longe do bloco e os últimos dois bichos vai ser
para selecionar o byte dentro da rua é que a gente vai chamar um 20 correspondente a coluna do Velho Chico Oi Total cada linha vai ter 144 vídeo E aí para mim saber o tamanho Total baixa me explicar com a quantidade de lixo que Agora vai ser dois elevado a 13 eu fazendo essa conta a gente vai conseguir simplificar 144 com 1,25 vezes 2 elevado a 128 128 é uma potência de 2 então é 2 elevado a 7 a gente vai somar aqui com 2 elevado a 13 também vai dar 2 elevado a 20 aí
no final a gente vai ter que a quantidade de dessa Cash necessária seria 1,25 Mega 20 agora vamos falar sobre as funções de mapeamento os associativas que podem ser totalmente associativas ou Fúria se ative ou Associativa tipo conjunto ou sete essas ativos então o primeiro vamos entender qualquer diferença em relação ao mapeamento direto então gente viu que no mapeamento direto um determinado dado da memória principal Ele só pode ser copiado para uma única né de cash no mapeamento associativo ou determinado o principal ele pode ser copiada por mais de uma linha de creche Então a
gente vai ter alguns candidatos para selecionar em qual dessas linhas possíveis esse dado Pode ser copiado então no furo e associativo no mapeamento totalmente associativo um determinado dado ele pode ser copiado em qualquer ele é de caixa então se a gente tiver sem Nerdcast a gente pode pegar esse dado de selecionar qualquer uma dessas sem linhas esse uma pena que você me mata alimento ideal porque ele só vai eu vou dar aqueles algoritmos de substituição quando de fato a memória caixa estiver cheia ou seja todas as linhas de queixas foram Ocupados já que um determinado
elemento que pode ser mapeado em qualquer linha Então você vai uma pianos elementos até você preencher todas a gente fecha e aí você vai estar executando os algoritmos de substituição então isso aqui seria o melhor cenário possível mas só que isso acaba sendo muito gostoso porque a gente precisa comparar todos aqueles Campos que a gente viu o campo do bicho velho o campo que a gente vai ter que comprar todos esses campos de todas as linhas Simultaneamente então quanto mais linha a gente tiver na Cash mais rara a gente vai ter que gastar para fazer
essas comparações simultaneamente Kalil acaba se tornando muito caro quando a teste aumenta de tamanho e aí para a gente tentar melhorar isso para ter um balanceamento nisso foi criado que a gente chama de mapeamento 7 associativo ou associativo por conjuntos pai dela dos seus objetivo é tentar flexibilizar um pouco a ideia quem te viu no Totalmente associativo então numa Pimenta associativa pouco conjunto determinado dado da memória ele pode ser mapeado em um conjunto que é formado por uma quantidade fixa de Mr Dash Então dessa forma você tá diminuindo a quantidade de ninguém onde você pode
mapear um determinado dado diferente dos totalmente associativo onde você poderia mapear ele em qualquer dia de Cash então isso aqui é uma forma de tentar reduzir o custo que se tempo julgamentos Totalmente associativo o cenário como é que vai funcionar Não esquece associativo a gente vai ter que contabilizar Identificar qual que é o sete né porque o conjunto ou da gente vai matar um determinado dado e a forma a gente vai utilizar vai ser parecida com a fórmula do mapeamento direto então gente vai pegar o endereço do bloco o endereço lá da memória principal que
a gente vai pegar agora um módulo considerando a quantidade de conjuntos Na que a gente selecionando esse conjunto A gente vai poder map agora esse w vídeo da memória em qualquer linha desse conjunto aí para gente a especificar quantas linhas vou ter em cada conjunto lá no marquetti a gente costuma peça anotação aqui esse ano Reis set associative Então esse n aqui ele vai representar quantas linhas cada conjunto na memória vai ter e utilizando dessa forma a gente vai ter uma solução mais barata do que o totalmente Associativo e tá aqui a gente tem um
exemplo mostrando todos os tipos de funções de mapeamento então aqui mas acho e ele é um mapeamento direto aqui acima a gente vai ter os dados menino da memória principal e aqui abaixo Você deu os dados mapeados na memória cash no mapeamento direto um determinado dado da memória principal eles só podem ser mapeado em uma única linha de queixo aqui representado dessa forma e a gente sempre vai estar buscando uma única né De caixa para tá verificando se vai dar um teste Hit ou me olhando agora o movimento foi associativo que a gente vai ter
a gente vai ter que um determinado dado da memória principal ele pode ser mapeado em qualquer uma das Nerdcast então perceba aqui que nesse exemplo a gente tem o último gente que a gente então esse dado ele pode estar armazenado em qualquer uma dessas muito dias então com leite eu vou tentar se essa ele a gente vai ter que acessar Essa 18 linhas simultaneamente e verificar se houve um Hit ou não né então a gente vai Tá acessando o campo tag e vai utilizar naqueles comparadores de igualdade como a gente viu no mapeamento direto e
aí Se algum desses compostelle foi igual ao campo Ted do Ender e agora principal do endereço do bloco Então vai estar ocorrendo o test-ride não perceba aqui que a gente vai ter vários acessos simultânea E aí ele não mapeamento certo associativa a Gente vai ter uma forma mais simplificada do totalmente associativa Então a gente vai ter um valor aqui ele vai poder ser armazenado em um conjunto a gente vai ter nesse exemplo que cada conjunto de lembrar Cash ele armazena duas linha da memória Cash porque o primeiro vai ser determinado qual que é o conjunto
Qual que é o set para armazenar um dado e aí a gente vai verificar todas as minhas do conjunto todas as minhas do certo então aqui Nesse caso vai ter dois acessos simultaneamente verificando-se um campo tag armazenado é igual ao campo tag fornecido pelo endereço na memória principal Então a gente vai ter essa de variações essas diferenças com as funções de matemática e a gente pode até notar quando a gente falou de algoritmo de substituição que existe somente o quando a gente tem mapeamento associativo então por exemplo quando a memória estiver cheia e vai rodar
o Algoritmo de substituição para selecionar um desses dois elementos nenhuma dessas duas linhas passei descartada em substituída da mesma forma a gente vai ter com uma pergunta por esse ativo que a gente vai escolher uma das linhas de que acha para ser selecionada como a linha vítima e também ser descartada no caso do mapeamento direto não faz muito sentido porque a gente só tem sempre uma opção então só podem descartar uma linha de creche Mesmo então aqui não tem algoritmo de substituição sendo utilizado aqui uma outra em uma situação pra gente identificar se a diferença
do mapeamento direto como a pena associativo então nessa parte aqui de cima da ilustração a gente ver a esquerda os dados da memória principal cada data da memória principal Ele só pode ser mapeado em uma única linha de crédito a repare que essa aqui é a nossa Cash aqui seria o campo de tag e aqui seria o campo de deita já no Mapeamento associativo a gente tem que um determinado dado da memória principal ele pode ser mapeado em várias Oi tá aqui nesse exemplo seria o mapeamento totalmente associativa um determinado o w ele pode ser
marcado em qualquer uma das Nerdcast disponível então tem essa diferença bicho isso como é que seria a organização do endereço da memória principal que a gente pode vir aqui que a gente vai ter esse endereço e agora a gente vai dividir ele somente dois Campos como um determinado dar ele pode ser mapeado em qualquer linha na no cash a gente não precisa ter um campo para selecionar a lenda que a gente sabe que ele pode ser em qualquer um então repare aqui que a gente sempre ficou um pouco né a gente descartou aquele Campo que
ficava no meio o campo de índice tem o que que a gente vai precisar mais e mais vai ter o campo tag e o campo Word o campo disse não é necessário porque a gente vai estar sempre lendo todas as Minhas durante um acesso a memória quer e aí como é que funciona o acesso a gente vai estar acessando todas as memórias e aí como é que funcionaria o acesso a gente vai tá lendo todas as redes de Cash então repare né que todas as minhas elas vão ter um barramento o palco tag com esse
comparador Então esse comparador ele vai ter uma quantidade de entrada que é igual a quantidade de linhas daí vai ser feita uma comparação de todas as minhas para saber se o campo Tag de cada linha ele vai ser igual a esse campo Ted Binho do endereço da memória principal E aí se algum foi igual então um resultado dessa comparação de Vai resultar no valor de verdadeiro Vai resultar aquele valor um E aí vai ocasionar situação de creche hip Então Deus te achei gente a gente vai precisar selecionar qualquer a Word para ser acessada de fato
então aqui no nosso exemplo cada dado ele consiste em Patos Word para a gente a selecionar o Morro de para ser acessada vai ser utilizado aquele campo de palavra no campo de olho vai selecionar aqui no nosso exemplo essa terceira Word para ser acessado E aí Se tiver agora um Cash mês então vai vim aqui por baixo esse resultado a gente vai pegar todo um bloco da memória principal e vai salvar em alguma né de teste em qual o Nerdcast agora que vai ser salvo aí para selecionar aonde que a gente vai ser salvo vai
ser utilizado algoritmo de Substituição então normalmente hoje a gente pode estar salvando ele na minha 0 na última linha depende aí do algoritmo então normalmente a gente costuma salvar seguindo a ordem crescente e pra gente vai colocando o primeiro milagre ao e depois a linha 263 até a gente preenchem isso depois que tiver cheia que vai estar utilizando algum daqueles algoritmos de substituição para tá arremate anos dados na memória quer Resumindo promete a gente calcular e as Informações que o mapeamento totalmente associativo a gente vai ter algumas relações semelhantes com o acabamento de dentro Então
um endereço Total também é formado pelos Campos SW só que agora o campo é esse princesa um pessoal que agora o campo essa ele só é formado pelo campo tédio que vai ter essa diferença aí e aí quantas unidades de sabe a gente vai conseguir ter vai ser a mesma fórmula não é dois elevado ao tamanho do endereço é ser mais dado qual que vai Ser o tamanho do bloco é calculado da mesma forma a gente vai tá usando dois ^ w que seria o campo para endereçar o amor de ou baixo pertencente a um
bloco Lu é e pra calcular quantidade de blocos também a mesma coisa né Vamos pegar dois elevado ao tamanho da memória dividida pelo o tamanho de cada bloco E aí a quantidade de crédito a gente vai ter ele vai ser aqui em determinar você gente nova conseguir obter a quantidade de quests utilizando o endereço da Memória principal então a gente sabe que sempre todas as mãos de quem a levou ser acessado e simultaneamente a gente não tem essa informação exposta como tinha no atendimento direto ele plantar obtendo qualquer um que o tamanho do campo até
ele vai ser o tamanho aí de Esse vídeo é porque a gente vai ver o mapeamento 7 associativa então ele teve ali um compromisso de tentar pegar os pontos fortes do movimento direto e ponto forte do mapeamento totalmente Associativo e tentar fazer um equilíbrio Entre esses dois mapeamento e Reforma que você consiga baratear bom então aqui a gente vai dividir as minhas de creches em conjunto a dividir em vários sete e a gente vai estar mapeando o determinado da memória principal e alguns at E aí é cidade ele pode ser copiado com qualquer uma das
linhas que compõem esse sete selecionar tô aqui o exemplo se a gente tiver 17 não é um conjunto com duas linhas a gente costuma nome a memória Cash como mapeamento two-way associative Então esse valor aqui perto do e significa a quantidade de linhas por conjunto gente vai ver duas formas que podem ser utilizadas para implementar o mapeamento processo associativo a primeira forma é considerar que a nossa memória caixa ela é composta por várias memórias totalmente associativo então aqui nesse nosso exemplo a gente vai ter a memória principal onde um determinado dado ele vai ser vinculado
a uma Determinada memória totalmente associativa aí qualquer visão que a gente vai ter então ele vai poder ser mapeado em todas as minhas dessa memória ele tá gente vai ter essa visão então cada é como se fosse uma memória totalmente associativa aí selecione assim conjunto você pode salvar o dado em qualquer uma dessas E aí a memória que acha ela vai ter vários com isso aqui seria o conjunto é raro vai ter o conjunto um nesse último aqui seria um Conjunto B - 18 a gente vai ter ver conjuntos de 0 até vê menos um
E aí cada dado é como se a gente selecionar se uma memória totalmente associativa e A nomenclatura desse tipo de design para as memórias essas iniciativa é dita como bcash mapeadas associativas Ou seja a gente eu sempre vai estar informando a quantidade de conjuntos a gente vai ter então aqui ele vai ter B conjuntos que vão ser utilizado da mesma forma a gente consegue ter abordagem utilizando Memórias cast em uma piada indiretamente Então nesse sentido aqui a gente vai ter que cada bloco K w da memória principal ele vai ser mapeado em e memórias maquiadas
de vir então aqui na beiradinha e vai ter que a memória é como se a gente tivesse de cá memórias mapeadas diretamente e aí um determinado dado ele vai ser mapeado em cá memórias em cada memória ele vai ter esse mapeamento direto então nessa primeira memória ele vai estar acessando essa Primeira linha na segunda a memória ele vai estar também na primeira linha terceira a memória também na primeira linha e assim por diante Então essa abordagem e só mostra como que a gente poderia implementar acho que esse site da associativa com base nas outras funções
de mapeamento daí utilizando essa abordagem a gente acostuma amoníaco como Kakashi maquiadas diretamente ou seja se cá é a quantidade de dias pouco conjunto então repare que se a gente for E a minha de todas as memórias matérias diretamente a gente vai ter a quantidade de linhas por cole junto então essa forma aqui gente tá vendo É até mais utilizado é o que é menos custosa para ser implementada e essa forma é o que tem aquela nomenclatura de lei e tá aqui dnv sentiu significa que a memória set associative ela é considerado nesse esquema é
como se a gente tivesse várias memórias uma piada Ah tá então aqui a gente vai ter o nosso endereço também Com 32 bits e ele vai ser dividido também três Campos então um primeiro campo vai ser o campo tag que tem a mesma função da gente demais com sonhos que a gente vê anteriormente o segundo Campo ele vai ser um índice que ele vai dar informando qual que é o conjunto que a gente vai querer copiar esse dado que está sendo acessado porque o repare que ele vai ter a mesma função no mapeamento direto só
que ao invés da gente é selecionar uma linha a gente vai Selecionar um conjunto que ele é formado por um grupo de linhas é o terceiro Campo ele vai ser também utilizado para o outro e sete né para saber qual que é a Word que vai ser selecionado dentro lá da coluna de dados pra que nesse nosso exemplo utilizando aquela terminologia que tem vale a memória marcaram diretamente a gente pode ter essa visão então o campo índice ele vai ser utilizada para selecionar um conjunto então um conjunto de vão ter quantas Linhas e tal nesse
nosso exemplo um conjunto ele vai ter quatro linhas de Casting e aí nesse acesso 14 gente que achas elas vão ser livre simultaneamente tem a gente vai começar a fazer aquela comparação para saber se existe algum dado armazenado na Caixa ou não então perceba aqui ó aqui oberried ele vai ser lido vai ser encaminhado por uma porta e o campo perde ele vai ser comparado com Campo tag vindo do endereço da memória principal E aí a comparação é enviada Por essa porta ainda assim como a gente viu no mapeamento direto e aí de todos os
resultados dessas portas em diz de cada uma dessas linha de caixa eles vão ser enviado por essa porta ó Então se o resultado for verdadeiro para alguma dessas linhas então ele vai dar uma situação dele e aí ele também para recuperar o dado a ser lido utilizando esse multiplexador e demultiplexador é um circuito digital onde ele recebe em entradas ele vai selecionar uma nessa Fazer a parada então aqui ele vai ter quatro entradas vinculadas lá ao campo de dados ele vai selecionar somente um desses dados aquele que deu um Flash Hits e aqui a gente
tem uma outra visão o tratamento certo associativa tá aqui ó ou nosso endereço e dividindo os grupos Ted o índice o conjunto é o campo hoje então a gente vai ter Beats para representar a quantidade de conjuntos S menos de ser o campo tag e w seria um campo hoje Lembrando aqui que o s ele é O campo de um tag mas esse campo de índice que agora ele vai selecionar o conjunto a ser acessado então eu como é que funciona aí aqui no nosso esquema a gente vai ter que todas as mesas pão de
cada linha ele vai armazenar um bloco no campo de dados Tem o quê que vai ser selecionado com esse campo de conjunto ele vai selecionar várias vezes ao mesmo tempo ele vai selecionar um conjunto tá aqui nesse exemplo conjunto ele vai ter essas Nerdcast Então vai ser selecionado Essas Nerdcast E aí vai ser feita a comparação com grupos de tag então todas essas mencionadas do conjunto A gente vai pegar o campo de tag e vai ser enviado esse o comparador que vai comparar com o Teddy vindo lá e da memória principal Então se eles forem
iguais a gente vai ter a situação de risco e aí a gente vai acessar o Davi da mesma forma Qual o Hoje a gente vai escolher na coluna de idade a gente vai utilizar esse campo de Word para Selecionar o olho correspondente e se tiver o que é que meio da mesma forma que vai ter um bloco na memória principal e selecionar em alguma dessas linhas utilizando aí algum algoritmo de substituição a gente normalmente começa também utilizando a ordem crescente então determinado conjunto A gente começa a preencher na minha zero depois da minha um minha
12 e assim sucessivamente na gente começa preenchendo o conjunto na ordem Crescente até a gente tem um exemplo considerando uma caixa com 8 linhas e tá gente percebe que a gente pode ter várias configurações usando os SS ativo nessa primeira configuração a gente tá utilizando o Whey 7 associative ou seja as vai ter que cada conjunto ele vai ter somente uma linha então pontos conjunto A gente vai ter no total como cada conjunto Oi gente vai ter oito conjunto é como se a gente tivesse a mesma situação do mapeamento direto porque um Determinado w perder
vai ser matéria no conjunto só que esse conjunto de sua tem uma linha então repare a equipe E se onlay ele é o caso do mapeamento direto o dado Ele só pode ser mapeado em uma única linha de que a gente pode ter outras configurações aumentando a quantidade de dias por conjunto Então se a gente considerar agora que o conjunto vai ter duas grande Caixa quando os convido a gente vai ter ele vai ter então cortou / Hoje vai ter quatro Conjuntos onde cada um desses conjuntos eles vão ter duas dentro de festa então repare
né que para cada conjunto A gente vai ter dois Campos tag e dois Campos dentistas para serem avaliar e a gente consegue também aumentava mente estão considerando agora quatro linhas por conjunto quantos conjunto A gente vai ter então gente vai ter dois conjunto ou de cada conjunto vai ter quatro and cast a gente vai ter essa situação cada a t-4 gente quer trabalhar quatro Campos de Ted e quatro Campos juntei não reparem pessoal que o podem gente aumenta a quantidade de vez por conjunto A gente diminui a quantidade de sete disponíveis tá e continuando com
essa analogia tenha se tiver esse entrei certo associative então repare né que a gente vai ter um conjunto com 18 linhas Ou seja a gente vai ter um cenário do totalmente associativa totalmente associativo a gente mapper um dado em qualquer linha da cast então a gente entrou um conjunto A gente vai pegar esse dado vai lá pede também porque ainda quer então você repare pessoal que o certo é sociative ele generaliza as outras funções de mapeamento então se tiver esse one-way ele vai ser o caso do mapeamento direto se tiver o máximo Ei né seria
que a quantidade de mesmo aí ele vai ser o caso do totalmente associativa e o que normalmente as fabricantes buscam é o meio termo onde e ele tem uma quantidade de linhas considerável em cada conjunto De forma que você não deixe muito caro essas abordagem eu tô aqui só pra gente resumir as informações do mapeamento certo associativo então ele vai ser bem similar com as outras funções então o tamanho do endereço é dado pelo sulfite s mais w a quantidade de elementos interessados também é dois elevado essa mais w o tamanho de cada bloco é
dado lá pelo Canto w né vai ser dois ^ w a quantidade de blocos na memória vai ser feita da mesma forma né 2 elevado a um Endereço de memória dividido por 2 elevado ao tamanho né a quantidade de vídeo para endereçar um bloco A gente vai ter a informação agora do número de linhas dos 7 que vai ser aquele carro que vem junto lá com a terminologia do aí né então isso aqui vai dizer quanta gente vai ter o conjunto A gente vai estar obter a quantidade de conjuntos através de um campo de estar
aquele campo de índice ele vai identificar para gente o quanto os conjuntos a gente vai Ter na memória Cash pede para digitar obtendo o número o Sérgio como é que a gente vai fazer isso mas vai pegar a quantidade de conjuntos ver e Vai Multiplicar pela quantidade de linhas por conjunto k q = k vezes 2 elevado a de é isso aqui está multiplicando a quantidade de linhas de 17 vezes a quantidade de sete no total isso vai dar quantidade de linhas de crédito continuando a gente vai obter o tamanho de creche usando a mesma
loja gente vai Pegar a quantidade de dias por sete e vai calcular o tamanho de baixo de cada sete eu tenho sete desmembrar esses dois elevado a demais w em 2 elevado a de vezes 2 elevado a gente percebe que essa primeira parcela ela é igual a quantidade de desde que a gente então poderia de que a gente vai ter vai ser cabeça de 2 elevado a então aqui vai ter cá vezes 2 elevado a dentro até a quantidade de linhas qual é o tamanho de cada vez mais de cálculo o tamanho de Cada vai
ser aqui ó 2 elevado tamanho de cada ali então o que a gente vai fazer a gente vai pegar o tamanho de cada linha e Vai Multiplicar pela quantidade de mim a gente Total eu Isso aqui vai dar essa a atacar vezes 2 elevado a de mais nada E aí o campo tag ele vai ser obtido da mesma forma do mapeamento direto vai ser esse menos de onde desse daquela quantidade de 20 para selecionar o set onde vai armazenar o dado então agora vamos ver um exemplo onde a gente vai Estar utilizando todas essas três
funções de mapeamento então no nosso exemplo a gente vai fazer essa sequência de bloco gente vai acessar esse endereço 080618 e a gente vai estar acessando a nossa memória Cash O que vai ter somente 4 desde cast seu comédia funcionaria utilizando o mapeamento direto então a gente Começando aqui com a creche vazia né primeiro a gente vai estar acessando o endereço certo então gente vai ter que identificar qualquer a minha Correspondente ao endereço dela como a gente vai ter quatro me ajuda que acha como é que a fórmula mas fizeram módulo pato tem 10 módulo
4 ele vai dar igual ao resto zero Então a gente vai lá na minha zero vai verificar os campos de tag a gente vai ver que ocorreu o sétimo Oi e a gente vai copiar o dado na memória principal e vai salvar na linhas ela depois continuando com nosso acesso agora a gente vai querer acessar o endereço 8 Qual que é a minha que a Gente vai utilizar então ele vai pegar o oito módulo 48 modo 14 também vai dar o resto zero Então a gente vai olhar a nem a zero a gente vai ver
que o campo Ted que está lá armazenado é do endereço 0 E aí vai dar o teste mesmo que a gente vai pegar o valor endereço 8 e copiar novamente para linha zero depois de novamente Vamos acessar o endereço 10 que a gente já viu que a minha zero vai ocorrer o teste mesmo novamente porque agora a minha zero ela tem informação no Endereço oito ele dá um cashmere novamente e copiou de novo o dado o endereço 10 dentro da 600 aí o próximo endereço acesso e sábado vai ser o endereço ou seja qual que
é a Nerdcast que ele vai ser vai ser 6 módulo 4 que vai dar o valor dos está gente vai tá olhando na minha dois como não tinha nada preenchido na minha dois vai dar o teste Quem vai salvar o valor endereço seis na linha 2 e depois disso a gente vai ter novamente o acesso ao endereço 8 Onde a gente vai olhar nem a 0 e a gente vê que a minha zero tá com endereço fizeram né então vai dar o teste me realmente a gente vai finalizar copiando o valor do endereço 8 para
dentro da 60 então é para o pessoal que nesse a sequência de acesso a gente resultou tudo em teste mês agora vamos ver como é que seria com mapeamento associativo então Começando aqui em cima a gente vai ter considerando uma Cash Way 7 associativa ou seja vai ser maquete onde Cada conjunto vai ter duas linhas então quantos conjuntos a gente vai ter utilizando quatro nem de Cash a gente vai ter dois conjuntos né Vai ser 4 / 2 está gente vai ter no total 2 conjuntos que vão estar aqui disponibilizados dessa forma Então a gente
vai ter um conjunto 1070 com duas linhas de fecha e aqui vai ter o conjunto um com as outras duas desde o queixo Então vou é a mesma coisa que a gente viu anteriormente tem um Primeiro o endereço 0 a gente precisa saber qual que é o conjunto que a gente vai estar analisando então começa a gente vai calcular a fórmula vai ser pegar o endereço módulo a quantidade de conjunto então quantos conjuntos a gente vai ter nesse tablet vai ter dois conjunto tão conjunto a ser selecionado vai ser aquele zero módulo 2 que Vai
resultar e o resto zero Então a gente vai estar olhando o conjunto 10 e a gente vai tá olhando todas aí do Conjunto zero como eu tava vazio guardar o xixi e aí agora a gente vai copiar esse valor do endereço zero para alguma nessas linhas então repare que a gente pode ter duas opções eu coloca nessa primeira linha ou coloca na segunda pegar aqui nesse exemplo a gente colocou nessa primeira linha a gente tá seguindo a ordem crescente aí seguindo com nosso acesso agora a gente vai acessar o endereço oito Então qual que é
o set que a gente vai tá olhando vai ser o 78 Módulo 2 estão 8 módulo 2 também vai dar os 70 e a gente vai e vai verificar se as minhas possui ele não possui endereço oito vai dar o cashmere E aí agora a gente vai copiar para o 70 Então como ainda tem uma linha disponível a gente vai colocar eles endereço oito na minha disponível que tinha no 70 então repare que a gente não substitui o valor que estava no endereço 0 a memória principal então continuando com nosso acesso o terceiro acesso a
novamente com o Endereço 10 então a gente vai estar olhando todas as nele o endereço 10 então olhando essas duas minhas a gente vê lá que o endereço 0 né o dado que o endereço zero ele tá mapeado no 70 E aí vai ao morrer o que achei a gente vai ler esse dado do 70 e vai passar lá para o registrador nela copiar para o registrador do processador aí o próximo endereço que a gente vai acessar é o endereço seis Qual que é o sete a ser selecionado Vai ser 6 módulo 2 tão seja
Mal dois vai dar também os 70 e aí nesse caso a gente vai dar um teste mesmo porque a gente não é uma piada E aí agora a gente vai estar escrevendo o valor dos Seis em algum lugar então repare que agora a gente vai mudar o algoritmo de substituição qual vai ser o valor ser utilizado né Qual faz-se o balanço de substituído vai ser da primeira linha ou da segunda linha ensaio vai depender do algoritmo de substituição aqui no nosso Exemplo foi Escolhido a segunda linha então a área que tinha o endereço oito agora
foi copiado o endereço seis e o endereço então ele foi descartável aí o próximo acesso vai ser o endereço oito então a gente já vê que vai ocorrer o que achei mim que a gente vai estar vendo todas as minhas dos 70 ou a gente acabou de descartar o endereço oito a gente vai tá dando até chinês e vai comprar isso em algum lugar agora Então qual que vai ser a minha vítima que a gente selecionou aí Você descendo aquela linha que armazenavam dado com o endereço 0 E aí eu descarto endereço Zero completo endereço
oito então repare que aqui no final né a gente teve no total um rio o que a gente o clima piado os endereços seis e oito na memória certa associativa e aqui o último tipo de mapeamento eu fugi associativa então aqui nesse mapeamento a gente pode estar copiando dado para qualquer dia de teste para qualquer uma das quatro gente fecha Então o primeiro endereço né como é que está vazia ele vai dar um teste nisso e aonde a gente vai salvar a gente pode salvar em qualquer uma dessas quatro linha Tá bom então aqui normalmente
a gente vai seguir a ordem crescente dá um salve aqui na minha depois a gente vai ter o acesso à 8 cashmere novamente porque a primeira vez que a gente tá vendo esse endereço e salva ele paga seguintes ao aqui na linha uma aí depois a gente vai ter agora um acesso endereço Zero Então a gente vai estar verificando que os verdinhos se 10 ele já foi salvo Então como a gente já a sua blusa era aqui na minha zero ele vai dar um cachê Hit aí continuando a gente vai ter o acesso ao endereço
seis vai dar um teste me salva aí daqui a terceira E aí o último acesso é verificando em é para gente vai olhar todas as quatro gente Cash a gente vai ver que aqui na linha um vai ter o endereço oito uma piada ele vai dar um que achei gente então é essa Aqui é a lógica e essa que é diferença dessas três funções de mapeamento que aqui a gente tem um gráfico bem interessante que ele mostra uma relação do tamanho da caixa com a taxa de gente quando a gente varia essa quantidade de mapeamento
então aqui no eixo X a gente vai ter a quantidade de Cash trabalhando de um com a baixa até um megabyte e aqui no eixo Y A gente vai ter a taxa de acerto então isso aqui vai variar de zero a cem porcento de 0 a 1 e aqui para Cada tamanho a gente vai ter todos os mapeamentos Então esse primeiro aqui é Considerando o atendimento direto considerando uma linha por conjunto aí a gente vai incrementando isso vai dobrando a quantidade de minhas por conjunto como a gente pode ver nas legendas mas tem aqui duas
lentes conjunto 4 dias 8 meses até 16 MS bom então a gente consegue reparar que para as creches com tamanho pequeno o mapeamento direto ele é pior do que os Outros não aterramento né de conforme a gente vai aumentando o tamanho da que a gente vai também aumentando a taxa de acerto né então repare que aqui com o trabalho chegar de no máximo 50 por cento e aqui o Corinthians chega com 16 e 32 cá baixos a gente já consegue passar ali a parte de noventa porcento em torno de 93 a 95 por cento de
acerto e aí o que que a gente pode anotar que a partir de 32k bytes né até o mega a gente não tem uma avaliação muito grande Então não adianta você aumentar o tamanho da creche aqui não vai mudar muita coisa taxa de acerto vai ter se lembrado a gente percebe que é diferença dos matéria eles também vão ser aqui lembrando né então aqui ó aumentando a gente já percebe que não tem nenhuma diferença você ter duas a gente para o conjunto 4 linhas 8 16 metros do conjunto E é uma pena é só um
pouquinho menos eficiente do que os outros mapeamento E se a gente for olhar agora No Mega considerando aqui essa última coluna numera A gente vê que todos os mapeamentos eles alcançam a mesma taxa de acerto ou seja aí você não tem nenhum cenário a gente consegue pensei em por cento de acertos é esperado porque a primeira vez que a gente vai ser a um determinado dado a gente sempre tem que o primeiro acesso vai ocorrer o teste mesmo né a partir do segundo acesso que a gente vai começar a ler sempre da memória fecha a
gente ter uma melhor Eficiência na sala a gente estudou com mais detalhes como é que são as pulsões e o mapeamento na memória Cash Na próxima a gente vai vir de forma geral como é que é a implementação do conjunto de instruções de um processador a gente vai estar dando uma visão geral começa a implementação da técnica de Park line e a primeira técnica de paralelismo em nível de instruções utilizado na construção de processadores Então pessoal para finalizar só vou por aqui Até a próxima