Experimentos com o Cache

Tamanho: px
Começar a partir da página:

Download "Experimentos com o Cache"

Transcrição

1 IME-USP Departamento de Ciência da Computação Experimentos com o Cache Diogo de Jesus Pina (diogojpina@gmail.com) Disciplina: Organização de Computadores Ministrada por: Prof. Dr. Alfredo Goldman Setembro/2010

2 Índice Resumo...3 Abstract Introdução Testes Percorrendo Matrizes Somando Vetores Memória Compartilhada entre Cores Acesso Aleatório a um Vetor Conclusão Referências Bibliográficas Anexos...25

3 Resumo Neste artigo iremos realizar experimentos com o cache para comprovar a sua importância na eficiência computacional, e como o mau uso pelos programadores pode acarretar em perda de desempenho. Palavras-chaves: cache, processador, eficiência, linguagem c.

4 Abstract In this article we ll experiment with the cache to prove their importance in computational efficiency, and how the misuse by developers can result in loss of performance. Keywords: cache, processor, efficiency, c language.

5 1. Introdução A memória cache surgiu quando percebeu-se que as memórias RAM não eram mais capazes de acompanhar a velocidade de processamento, evitando com que o processador ficasse esperando por dados. Apesar de ser uma memória muito menor se comparada a memória RAM, esta memória faz com que os programas possam ser processados mais rápidos, isso acontece pois o cache é mais rápido e o sistema operacional tenta sempre manter uma cópia do que é o mais provável de ser usado nele. O processador pode ter vários níveis de cache, os processadores comerciais atuais utilizam três camadas de cache, a primeira camada é a L1, este cache é muito rápido e capaz de acompanhar a velocidade do processador, porém ele é muito caro, por este motivo seu tamanho é pequeno; o L2, em geral, é compartilhado entre os cores e também ficam dentro do processador, esta camada é um pouco maior que a camada anterior; e o L3, em geral, fica externo ao chip e também é compartilhada entre os cores, esta camada costuma ser maior que a as demais. Existem diferentes técnicas para se utilizar a memória cache, algumas delas são: Write-Back Cache: o processador escreve dados diretamente no cache, ficando o sistema operacional responsável de escrever os dados na memória principal. Write-Throgh Cache: o sistema operacional escreve os dados tanto na memória quanto no cache, esta tecnica tem um desempenho menor, porém ela é mais simples que a anterior. Para o tratamento de Write Miss são usadas duas tecnicas: Write Allocate: O bloco de endereço é carregado seguindo-se uma ação de write hits No Write Allocate: o bloco de endereço é modificado diretamente na memória principal, não sendo carregado no cache. O cache é muito importante para o desempenho do computador, pois ele agiliza o acesso aos dados, porém se os programas forem criados de modo errado, podem causar falhas no cache, fazendo com que o programa perca desempenho; e é este desempenho que analisaremos neste trabalho.

6 2. Testes Neste trabalho utilizaremos um computador com o seguinte processador: Intel Core 2 Duo Processor T5750 (2M Cache, 2.00 GHz, 667 MHz FSB) SPECIFICATIONS Essentials Status Launched Launch Date Q1'08 Processor Number T5750 # of Cores 2 # of Threads 2 Clock Speed 2 Ghz L1 Cache 2 x 32 KB instruction caches 2 x 32 KB write-back data caches L2 Cache 2 MB Bus/Core Ratio 12 FSB Speed 667 MHz FSB Parity No Instruction Set 64-bit Embedded Options No Available Supplemental SKU No Lithography 65 nm Max TDP 35 W VID Voltage Range 1.075V-1.175V Package Specifications TJUNCTION 85 C Package Size 35mm x 35mm Processing Die Size 143 mm 2 # of Processing Die Transistors Halogen Free Options Available 291 million No

7 Advanced Technologies Intel Turbo Boost Technology Intel Hyper-Threading Technology No No Intel Virtualization Technology (VTx) No Intel Trusted Execution Technology No Intel 64 Enhanced Intel SpeedStep Technology Intel Demand Based Switching Execute Disable Bit Yes Yes No Yes Sistema Operacional: Ubuntu Linux LTS (32 bits).

8 2.1. Percorrendo Matrizes Neste teste iremos percorrer uma matriz grande de duas maneiras: primeiro percorremos linha a linha e, em seguida, percorreremos coluna a coluna. Linha a Linha time./teste1 real 0m0.641s user 0m0.116s sys 0m0.448s /usr/bin/time -v./teste1 Command being timed: "./teste1" User time (seconds): 0.12 System time (seconds): 0.44 Percent of CPU this job got: 88% Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.63 Average shared text size (kbytes): 0 Average unshared data size (kbytes): 0 Average stack size (kbytes): 0 Average total size (kbytes): 0 Maximum resident set size (kbytes): Average resident set size (kbytes): 0 Major (requiring I/O) page faults: 0 Minor (reclaiming a frame) page faults: Voluntary context switches: 1 Involuntary context switches: 141 Swaps: 0 File system inputs: 0 File system outputs: 0 Socket messages sent: 0 Socket messages received: 0 Signals delivered: 0 Page size (bytes): 4096 Exit status: 0

9 valgrind --tool=cachegrind./teste1 ==3714== Cachegrind, a cache and branch-prediction profiler ==3714== Copyright (C) , and GNU GPL'd, by Nicholas Nethercote et al. ==3714== Using Valgrind SVN-Debian and LibVEX; rerun with -h for copyright info ==3714== Command:./teste1 ==3714== ==3714== ==3714== I refs: 406,062,661 ==3714== I1 misses: 841 ==3714== L2i misses: 831 ==3714== I1 miss rate: 0.00% ==3714== L2i miss rate: 0.00% ==3714== ==3714== D refs: 102,915,842 (1,986,944 rd + 100,928,898 wr) ==3714== D1 misses: 6,292,110 ( 28,821 rd + 6,263,289 wr) ==3714== L2d misses: 6,279,771 ( 16,610 rd + 6,263,161 wr) ==3714== D1 miss rate: 6.1% ( 1.4% + 6.2% ) ==3714== L2d miss rate: 6.1% ( 0.8% + 6.2% ) ==3714== ==3714== L2 refs: 6,292,951 ( 29,662 rd + 6,263,289 wr) ==3714== L2 misses: 6,280,602 ( 17,441 rd + 6,263,161 wr) ==3714== L2 miss rate: 1.2% ( 0.0% + 6.2% ) Com estes testes podemos perceber que houve poucas falhas relativas de cache, permitindo que o programa executasse em menos de um segundo. Percebemos que o processador realizou menos de 150 trocas de contexto, este número é pequeno se comparado ao número de operações. Coluna a Coluna time./teste1 a real 0m2.738s user 0m1.580s sys 0m0.612s

10 /usr/bin/time -v./teste1 a Command being timed: "./teste1 a" User time (seconds): 1.65 System time (seconds): 0.62 Percent of CPU this job got: 91% Elapsed (wall clock) time (h:mm:ss or m:ss): 0:02.49 Average shared text size (kbytes): 0 Average unshared data size (kbytes): 0 Average stack size (kbytes): 0 Average total size (kbytes): 0 Maximum resident set size (kbytes): Average resident set size (kbytes): 0 Major (requiring I/O) page faults: 0 Minor (reclaiming a frame) page faults: Voluntary context switches: 1 Involuntary context switches: 619 Swaps: 0 File system inputs: 0 File system outputs: 0 Socket messages sent: 0 Socket messages received: 0 Signals delivered: 0 Page size (bytes): 4096 Exit status: 0 valgrind --tool=cachegrind./teste1 ==3717== Cachegrind, a cache and branch-prediction profiler ==3717== Copyright (C) , and GNU GPL'd, by Nicholas Nethercote et ==3717== Using Valgrind SVN-Debian and LibVEX; rerun with -h for cop ==3717== Command:./teste1 a ==3717== ==3717== ==3717== I refs: 506,042,647 ==3717== I1 misses: 841 ==3717== L2i misses: 831 ==3717== I1 miss rate: 0.00% ==3717== L2i miss rate: 0.00% ==3717== ==3717== D refs: 202,905,840 (101,976,942 rd + 100,928,898 wr) ==3717== D1 misses: 106,290,566 ( 6,278,821 rd + 100,011,745 wr) ==3717== L2d misses: 98,498,405 ( 95,510 rd + 98,402,895 wr) ==3717== D1 miss rate: 52.3% ( 6.1% % ) ==3717== L2d miss rate: 48.5% ( 0.0% % ) ==3717== ==3717== L2 refs: 106,291,407 ( 6,279,662 rd + 100,011,745 wr) ==3717== L2 misses: 98,499,236 ( 96,341 rd + 98,402,895 wr) ==3717== L2 miss rate: 13.8% ( 0.0% % ) Com estes testes podemos perceber que houveram muitas falhas relativas de cache, fazendo que o programa demorasse mais de quatro vezes para executar. Percebemos, também, que o processador realizou mais de 600 trocas de contexto, este número indica que o processador teve que muitas vezes esperar os dados virem da memória RAM.

11 Quando a constante SIZE é ajustada para um valor próximo a 350 o tempo para percorrer o vetor, tanto linha a linha como coluna a coluna se aproximam muito. time./teste1 ou time./teste2 real 0m0.002s user 0m0.000s sys 0m0.002s Este fato ocorre pois, todos os dados pertinentes as matrizes estão sendo armazenados no cache e, portanto, em nenhum dos dois métodos é necessário ficar buscando os dados na memória. Em uma matriz de inteiros cada célula ocupa um byte, portanto uma matiz de 350 linhas e 350 colunas ocupa um espaço de bytes que é aproximadamente igual a 120 kbytes. Como o tamanho do cache L1, ao todo é de 128 kbytes, logo a grande maioria dos dados procurados pelo programa tanto percorrendo em linha a linha como coluna a coluna estavam no cache L1. Se o programa time tivesse uma precisão melhor, talvez esse valor de 350 tivesse que ser menor, pois além da matriz precisamos guardar o programa em si no cache, além disso, poderia acontecer de entrar outro processo de sistema junto com o programa, compartilhando assim o cache. Com estes testes podemos concluir que percorrer uma matriz grande linha a linha é muito mais eficiente do que percorrê-la coluna a coluna. Isto ocorre, pois na linguagem c, as matrizes são armazenadas na memória como sendo um vetor de vetores, ou seja, existe um vetor principal A que para cada índice dele existe um outro vetor B. Portanto, o vetor A armazena as linhas em quanto que os vetores B, armazenam as colunas. Quando acessamos um índice do vetor linha, o sistema operacional leva para o cache todos os valores dos endereços próximos, logo, quando acessamos o segundo índice este já estará no cache, economizando. Em alguns momentos, o programa necessite acessar a memória novamente para recarregar o cache, mas estes acessos são pequenos se comparados aos acessos ao cache. Com isso, podemos perceber que este tipo de acesso nos permite um grande desempenho e a economia de vários ciclos para realizar as operações. Quando acessamos o índice da primeira linha e primeira coluna, o sistema operacional também leva para o cache todos os valores dos endereços próximos, porém, estes valores para uma matriz grande são os da linha, ou de poucas próximas, colunas, logo, conforme formos acessando as colunas, o processador terá que esperar os dados virem da memória, pois os dados que estarão no cache não serão os desejados. Com isso, o processador ficará mais tempo ocioso esperando os dados da memória do que realizando as instruções, e com isso fazendo que este programa demore mais para executar, piorando assim seu desempenho. Obs.: Em outras linguagens de programação, os resultados poderiam ser ao contrário, pois elas podem tratar as matrizes sendo um vetor de linha que armazena colunas. Com estes testes podemos comprovar a importância do cache para evitar o acesso a dados na memória RAM, fazendo com que o programa não fique esperando por vários ciclos, melhorando assim sua eficiência.

12 2.2. Somando Vetores /usr/bin/time -v./teste2 1 Command being timed: "./teste2 1" User time (seconds): 0.53 System time (seconds): 0.13 Percent of CPU this job got: 85% Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.77 Average shared text size (kbytes): 0 Average unshared data size (kbytes): 0 Average stack size (kbytes): 0 Average total size (kbytes): 0 Maximum resident set size (kbytes): Average resident set size (kbytes): 0 Major (requiring I/O) page faults: 0 Minor (reclaiming a frame) page faults: Voluntary context switches: 1 Involuntary context switches: 171 Swaps: 0 File system inputs: 0 File system outputs: 0 Signals delivered: 0 Page size (bytes): 4096 Exit status: 0 /usr/bin/time -v./teste2 50 Command being timed: "./teste2 50" User time (seconds): 1.96 System time (seconds): 0.11 Percent of CPU this job got: 92% Elapsed (wall clock) time (h:mm:ss or m:ss): 0:02.24 Average shared text size (kbytes): 0 Average unshared data size (kbytes): 0 Average stack size (kbytes): 0 Average total size (kbytes): 0 Maximum resident set size (kbytes): Average resident set size (kbytes): 0 Major (requiring I/O) page faults: 0 Minor (reclaiming a frame) page faults: Voluntary context switches: 1 Involuntary context switches: 512 Swaps: 0 File system inputs: 0 File system outputs: 0 Signals delivered: 0 Page size (bytes): 4096 Exit status: 0

13 valgrind --tool=cachegrind./teste2 1 ==2751== Cachegrind, a cache and branch-prediction profiler ==2751== Copyright (C) , and GNU GPL'd, by Nicholas Nethercote et al. ==2751== Using Valgrind SVN-Debian and LibVEX; rerun with -h for copyright info ==2751== Command:./teste2 1 ==2751== ==2751== ==2751== I refs: 2,101,455,128 ==2751== I1 misses: 821 ==2751== L2i misses: 811 ==2751== I1 miss rate: 0.00% ==2751== L2i miss rate: 0.00% ==2751== ==2751== D refs: 1,259,955,891 (789,801,744 rd + 470,154,147 wr) ==2751== D1 misses: 3,132,842 ( 1,257,466 rd + 1,875,376 wr) ==2751== L2d misses: 3,129,896 ( 1,254,619 rd + 1,875,277 wr) ==2751== D1 miss rate: 0.2% ( 0.1% + 0.3% ) ==2751== L2d miss rate: 0.2% ( 0.1% + 0.3% ) ==2751== ==2751== L2 refs: 3,133,663 ( 1,258,287 rd + 1,875,376 wr) ==2751== L2 misses: 3,130,707 ( 1,255,430 rd + 1,875,277 wr) ==2751== L2 miss rate: 0.0% ( 0.0% + 0.3% ) valgrind --tool=cachegrind./teste2 50 ==2759== Cachegrind, a cache and branch-prediction profiler ==2759== Copyright (C) , and GNU GPL'd, by Nicholas Nethercote et al. ==2759== Using Valgrind SVN-Debian and LibVEX; rerun with -h for copyright info ==2759== Command:./teste2 50 ==2759== ==2759== ==2759== I refs: 2,101,455,689 ==2759== I1 misses: 821 ==2759== L2i misses: 811 ==2759== I1 miss rate: 0.00% ==2759== L2i miss rate: 0.00% ==2759== ==2759== D refs: 1,259,956,247 (789,802,099 rd + 470,154,148 wr) ==2759== D1 misses: 31,257,837 ( 20,007,462 rd + 11,250,375 wr) ==2759== L2d misses: 31,254,892 ( 20,004,616 rd + 11,250,276 wr) ==2759== D1 miss rate: 2.4% ( 2.5% + 2.3% ) ==2759== L2d miss rate: 2.4% ( 2.5% + 2.3% ) ==2759== ==2759== L2 refs: 31,258,658 ( 20,008,283 rd + 11,250,375 wr) ==2759== L2 misses: 31,255,703 ( 20,005,427 rd + 11,250,276 wr) ==2759== L2 miss rate: 0.9% ( 0.6% + 2.3% )

14 time./teste2 1 real 0m0.749s user 0m0.560s sys 0m0.140s time./teste2 3 real 0m0.903s user 0m0.708s sys 0m0.136s time./teste2 10 real 0m1.500s user 0m1.196s sys 0m0.152s time./teste2 30 real 0m2.445s user 0m2.156s sys 0m0.140s time./teste2 50 real 0m2.292s user 0m1.896s sys 0m0.180s 3 Gráfico de Tempo por Pulos 2,5 2 Tempo(s) 1,5 1 0, Com este gráfico podemos observar que quanto maior o deslocamento, mais tempo demora para executar o programa, até que por volta de 30 pulos o tempo estabiliza. Isso acontece devido ao fato de que quando pulamos espaços maiores, temos que acessar mais vezes a memória RAM, pois os próximos dados a serem acessados, devido a distância de armazenamento, podem não estarem no cache, com isso, o processador é obrigado a esperar alguns ciclos até que os dados venham da memória RAM. Pulo

15 Quando passa de um determinando valor de deslocamento a curva deve ficar continua, pois poucos dados estarão no cache, sendo assim, toda vez que for acessar o próximo índice do vetor, o processador precisará esperar os dados virem da memória RAM, ou do cache L2, caso o vetor caiba nele. Podemos perceber também que o tempo de execução cresce quase que linearmente até 30 pulos, e que após esse valor esse mantem constante, este tempo pode aumentar em mais de três vezes conforme o deslocamento vai aumentando. 3 Gráfico de Tempo por Pulos 2,5 2 Tempo(s) 1,5 1 0, Com este gráfico podemos observar que quanto maior o deslocamento, mais tempo demora para executar o programa, até que por volta de 30 pulos o tempo estabiliza. Isso acontece devido ao fato de que quando pulamos espaços maiores, temos que acessar mais vezes a memória RAM, pois os próximos dados a serem acessados, devido a distância de armazenamento, podem não estarem no cache, com isso, o processador é obrigado a esperar alguns ciclos até que os dados venham da memória RAM. Quando passa de um determinando valor de deslocamento a curva deve ficar continua, pois poucos dados estarão no cache, sendo assim, toda vez que for acessar o próximo índice do vetor, o processador precisará esperar os dados virem da memória RAM, ou do cache L2, caso o vetor caiba nele. Podemos perceber também que o tempo de execução cresce quase que linearmente até 30 pulos, e que após esse valor esse mantem constante, este tempo pode aumentar em mais de três vezes conforme o deslocamento vai aumentando. Pulo

16 2.3. Memória Compartilhada entre Cores time./teste3 real 0m2.160s user 0m0.636s sys 0m0.004s /usr/bin/time -v./teste3 Command being timed: "./teste3" User time (seconds): 0.62 System time (seconds): 0.00 Percent of CPU this job got: 23% Elapsed (wall clock) time (h:mm:ss or m:ss): 0:02.60 Average shared text size (kbytes): 0 Average unshared data size (kbytes): 0 Average stack size (kbytes): 0 Average total size (kbytes): 0 Maximum resident set size (kbytes): 1376 Average resident set size (kbytes): 0 Major (requiring I/O) page faults: 0 Minor (reclaiming a frame) page faults: 129 Voluntary context switches: 1 Involuntary context switches: 280 Swaps: 0 File system inputs: 0 File system outputs: 0 Socket messages sent: 0 Socket messages received: 0 Signals delivered: 0 Page size (bytes): 4096 Exit status: 0 opreport -l./teste3 CPU: CPU with timer interrupt, speed 0 MHz (estimated) Profiling through timer interrupt samples % symbol name inc_second main Como estes testes podemos perceber que o processador fica boa parte do tempo ocioso, isso ocorre devido ao fato de os o programa rodar dois processos que utilizam o mesmo espaço de memória. O problema de usar o mesmo espaço de memória é que uma instrução só pode ser processada, quando a outra não estiver sendo processada, pois assim cada processo poderá usar o espaço de memória. O programa perde desempenho, pois o processador não pode usar o pipeline para processos, ou seja, os processos não podem entrar juntos no processador para não darem conflitos de memória. Como consequência dessa espera para poder usar o espaço de memória podemos perceber nos testes muitas trocas de contexto, chegando quase a 300 trocas. Estas trocas são feitas para que ambos os processos possam ser processados sem que um tenha que esperar o outro terminar.

17 Utilizando o OProfile foi possível identificar que o processador praticamente dividiu-se entre as duas funções do programa, explicando também a frequente troca de contexto. Uma solução para este problema seria linearizar a execução, pois com isso a memória seria utilizada em instantes diferentes. Outra forma seria não compartilhar o mesmo espaço de memória, assim os processos poderiam rodar simultaneamente, resultando em um excelente desempenho. Ainda outra forma, seria definir um tempo ou quantidade de instruções que poderiam ser executadas por cada processo antes que o contexto fosse alterado, assim não perderíamos muito tempo com trocas de contexto. Esquema de Compartilhamento de um espaço de memória por um processo e por um dado.

18 2.4. Acesso Aleatório a um Vetor Os testes abaixo se referem a execução do Anexo 1. time./teste4 real 0m0.294s user 0m0.236s sys 0m0.056s time./teste4 a real 0m0.986s user 0m0.900s sys 0m0.064s /usr/bin/time -v./teste4 Command being timed: "./teste4" User time (seconds): 0.24 System time (seconds): 0.05 Percent of CPU this job got: 97% Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.30 Average shared text size (kbytes): 0 Average unshared data size (kbytes): 0 Average stack size (kbytes): 0 Average total size (kbytes): 0 Maximum resident set size (kbytes): Average resident set size (kbytes): 0 Major (requiring I/O) page faults: 0 Minor (reclaiming a frame) page faults: 9997 Voluntary context switches: 1 Involuntary context switches: 42 Swaps: 0 File system inputs: 0 File system outputs: 0 Socket messages sent: 0 Socket messages received: 0 Signals delivered: 0 Page size (bytes): 4096 Exit status: 0

19 /usr/bin/time -v./teste4 a Command being timed: "./teste4 a" User time (seconds): 0.87 System time (seconds): 0.06 Percent of CPU this job got: 100% Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.93 Average shared text size (kbytes): 0 Average unshared data size (kbytes): 0 Average stack size (kbytes): 0 Average total size (kbytes): 0 Maximum resident set size (kbytes): Average resident set size (kbytes): 0 Major (requiring I/O) page faults: 0 Minor (reclaiming a frame) page faults: 9999 Voluntary context switches: 1 Involuntary context switches: 82 Swaps: 0 File system inputs: 0 File system outputs: 0 Socket messages sent: 0 Socket messages received: 0 Signals delivered: 0 Page size (bytes): 4096 Exit status: 0 valgrind --tool=cachegrind./teste4 a ==3173== Cachegrind, a cache and branch-prediction profiler ==3173== Copyright (C) , and GNU GPL'd, by Nicholas Nethercote et al. ==3173== Using Valgrind SVN-Debian and LibVEX; rerun with -h for copyright info ==3173== Command:./teste4 a ==3173== ==3173== ==3173== I refs: 10,301,472,422 ==3173== I1 misses: 812 ==3173== L2i misses: 802 ==3173== I1 miss rate: 0.00% ==3173== L2i miss rate: 0.00% ==3173== ==3173== D refs: 5,897,386,359 (3,497,227,708 rd + 2,400,158,651 wr) ==3173== D1 misses: 106,249,591 ( 7,479 rd + 106,242,112 wr) ==3173== L2d misses: 105,729,456 ( 4,675 rd + 105,724,781 wr) ==3173== D1 miss rate: 1.8% ( 0.0% + 4.4% ) ==3173== L2d miss rate: 1.7% ( 0.0% + 4.4% ) ==3173== ==3173== L2 refs: 106,250,403 ( 8,291 rd + 106,242,112 wr) ==3173== L2 misses: 105,730,258 ( 5,477 rd + 105,724,781 wr) ==3173== L2 miss rate: 0.6% ( 0.0% + 4.4% )

20 valgrind --tool=cachegrind./teste4 ==3266== Cachegrind, a cache and branch-prediction profiler ==3266== Copyright (C) , and GNU GPL'd, by Nicholas Nethercote et al. ==3266== Using Valgrind SVN-Debian and LibVEX; rerun with -h for copyright info ==3266== Command:./teste4 ==3266== ==3266== ==3266== I refs: 951,472,452 ==3266== I1 misses: 812 ==3266== L2i misses: 802 ==3266== I1 miss rate: 0.00% ==3266== L2i miss rate: 0.00% ==3266== ==3266== D refs: 590,289,590 (350,130,939 rd + 240,158,651 wr) ==3266== D1 misses: 1,257,853 ( 7,475 rd + 1,250,378 wr) ==3266== L2d misses: 1,254,959 ( 4,673 rd + 1,250,286 wr) ==3266== D1 miss rate: 0.2% ( 0.0% + 0.5% ) ==3266== L2d miss rate: 0.2% ( 0.0% + 0.5% ) ==3266== ==3266== L2 refs: 1,258,665 ( 8,287 rd + 1,250,378 wr) ==3266== L2 misses: 1,255,761 ( 5,475 rd + 1,250,286 wr) ==3266== L2 miss rate: 0.0% ( 0.0% + 0.5% ) valgrind --tool=cachegrind./teste4 a ==3607== Cachegrind, a cache and branch-prediction profiler ==3607== Copyright (C) , and GNU GPL'd, by Nicholas Nethercote et al. ==3607== Using Valgrind SVN-Debian and LibVEX; rerun with -h for copyright info ==3607== Command:./teste4 a ==3607== ==3607== ==3607== I refs: 1,031,472,422 ==3607== I1 misses: 812 ==3607== L2i misses: 802 ==3607== I1 miss rate: 0.00% ==3607== L2i miss rate: 0.00% ==3607== ==3607== D refs: 590,289,585 (350,130,934 rd + 240,158,651 wr) ==3607== D1 misses: 10,624,841 ( 7,479 rd + 10,617,362 wr) ==3607== L2d misses: 10,105,335 ( 4,675 rd + 10,100,660 wr) ==3607== D1 miss rate: 1.7% ( 0.0% + 4.4% ) ==3607== L2d miss rate: 1.7% ( 0.0% + 4.2% ) ==3607== ==3607== L2 refs: 10,625,653 ( 8,291 rd + 10,617,362 wr) ==3607== L2 misses: 10,106,137 ( 5,477 rd + 10,100,660 wr) ==3607== L2 miss rate: 0.6% ( 0.0% + 4.2% )

21 Este programa consiste em fazer acessos aleatórios a um vetor de de elementos caso seja passado algum parâmetro, caso contrário percorre o vetor linearmente. Quando sorteamos um índice de um vetor, em questão de desempenho podemos, ter duas situações: o dado procurado esta no cache ou o dado procurado não esta no cache. Quando ocorre o primeiro caso, o desempenho é melhor, pois o processador não precisa ficar esperando vários ciclos até que os dados venham da memória, no segundo caso, a espera é inevitável. Podemos perceber que quando fazemos acessos aleatórios, quase dobra a troca de contextos, isso ocorre, pois para um vetor de de elementos com o processador utilizado a chance de o dado procurado esta no cache é de aproximadamente 0,01%. As muitas trocas de contextos e o processador precisa ficar esperando mais tempo para conseguir acessar os dados do cache fazem com que o desempenho do acesso aleatório seja muito pior, chegando a triplicar o tempo de execução. time./teste5 a real 0m0.918s user 0m0.868s sys 0m0.048s time./teste5 a real 0m0.917s user 0m0.848s sys 0m0.056s time./teste5 a real 0m0.918s user 0m0.856s sys 0m0.052s time./teste5 a real 0m0.929s user 0m0.856s sys 0m0.056s time./teste5 a real 0m0.948s user 0m0.884s sys 0m0.056s

22 Tempo por Execução 0,96 0,95 0,94 Tempo (s) 0,93 0,92 0,91 0, É interessante observar que o tempo de execução quase não varia, este fato ocorre porque a probabilidade de o dado procurado estar no cache é muito pequena, portante é provável que o processador tenha que esperar todos os dados virem direto da memória RAM.

23 3. Conclusão Com este trabalho pudemos conhecer um pouco sobre o funcionamento da memória cache e entender a sua importância para a eficiência do processamento, pudemos perceber, também, que sem a memória cache, os computadores modernos iriam ser muito mais lentos, pois sempre que precisassem de dados para alimentar o processamento teriam que buscar na memória e isso poderia ser muito custoso em relação a tempo. Os testes nos permitiram ver que quando conseguimos fazer códigos que fazem menos acessos a memória RAM em comparação com a memória cache estes executam em tempos menores. Pudemos perceber que o cache começa a perder sua utilidade quando trabalhamos com grandes quantidade de dados que estão armazenados longe, distância de endereçamento, um dos outros. Outro problema com o cache é quando dois processos precisam utilizar o mesmo espaço de memória, não podendo permitir alterações nesses endereços, para alterar é necessário trocar o contexto, fazendo assim com que o tempo de processamento aumente.

24 4. Referências Bibliográficas %20T5750%20LF80537GF0412M.html

25 5. Anexos Anexo 1: Acesso aleatório a um vetor #include <stdio.h> #include <stdlib.h> #include <time.h> #define SIZE int main (int argc, char *argv[]) { int i, j, *array1; srand(time(null)); array1 = (int *) malloc (SIZE*sizeof(int)); for (i = 0; i < SIZE; i++) { array1[i] = 1; } if (argc == 1) { for (i = 0; i < SIZE; i++) { j = rand() % SIZE; array1[i] = 2; } } else { for (i = 0; i < SIZE; i++) { j = rand() % SIZE; array1[j] = 2; } } free(array1); return 0; }

Experimentos com a memória cache do CPU

Experimentos com a memória cache do CPU Experimentos com a memória cache do CPU Alberto Bueno Júnior & Andre Henrique Serafim Casimiro Setembro de 2010 1 Contents 1 Introdução 3 2 Desvendando o cache 3 2.1 Para que serve o cache?.....................

Leia mais

Sistemas Operacionais. Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com

Sistemas Operacionais. Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com Sistemas Operacionais Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com Estruturas de Sistemas de Computação O sistema operacional precisa garantir a operação correta do sistema de computação. Operação

Leia mais

O hardware é a parte física do computador, como o processador, memória, placamãe, entre outras. Figura 2.1 Sistema Computacional Hardware

O hardware é a parte física do computador, como o processador, memória, placamãe, entre outras. Figura 2.1 Sistema Computacional Hardware 1 2 Revisão de Hardware 2.1 Hardware O hardware é a parte física do computador, como o processador, memória, placamãe, entre outras. Figura 2.1 Sistema Computacional Hardware 2.1.1 Processador O Processador

Leia mais

A memória é um recurso fundamental e de extrema importância para a operação de qualquer Sistema Computacional; A memória trata-se de uma grande

A memória é um recurso fundamental e de extrema importância para a operação de qualquer Sistema Computacional; A memória trata-se de uma grande A memória é um recurso fundamental e de extrema importância para a operação de qualquer Sistema Computacional; A memória trata-se de uma grande região de armazenamento formada por bytes ou palavras, cada

Leia mais

Memória cache. Prof. Francisco Adelton

Memória cache. Prof. Francisco Adelton Memória cache Prof. Francisco Adelton Memória Cache Seu uso visa obter uma velocidade de acesso à memória próxima da velocidade das memórias mais rápidas e, ao mesmo tempo, disponibilizar no sistema uma

Leia mais

Ministério da Educação Secretaria de Educação Profissional e Tecnológica Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Sul

Ministério da Educação Secretaria de Educação Profissional e Tecnológica Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Sul QUESTÃO: 29 Além da alternativa a estar correta a alternativa e também pode ser compreendida como correta. Segundo a definição de diversos autores, a gerência de falhas, detecta, isola, notifica e corrige

Leia mais

Programação de Sistemas

Programação de Sistemas Programação de Sistemas Introdução à gestão de memória Programação de Sistemas Gestão de memória : 1/16 Introdução (1) A memória central de um computador é escassa. [1981] IBM PC lançado com 64KB na motherboard,

Leia mais

Capacidade = 512 x 300 x 20000 x 2 x 5 = 30.720.000.000 30,72 GB

Capacidade = 512 x 300 x 20000 x 2 x 5 = 30.720.000.000 30,72 GB Calculando a capacidade de disco: Capacidade = (# bytes/setor) x (méd. # setores/trilha) x (# trilhas/superfície) x (# superfícies/prato) x (# pratos/disco) Exemplo 01: 512 bytes/setor 300 setores/trilha

Leia mais

CENTRAL PRCESSING UNIT

CENTRAL PRCESSING UNIT Processador O processador, também chamado de CPU ( CENTRAL PRCESSING UNIT) é o componente de hardware responsável por processar dados e transformar em informação. Ele também transmite estas informações

Leia mais

ORGANIZAÇÃO DE COMPUTADORES MÓDULO 10

ORGANIZAÇÃO DE COMPUTADORES MÓDULO 10 ORGANIZAÇÃO DE COMPUTADORES MÓDULO 10 Índice 1. A Organização do Computador - Continuação...3 1.1. Memória Primária - II... 3 1.1.1. Memória cache... 3 1.2. Memória Secundária... 3 1.2.1. Hierarquias de

Leia mais

ORGANIZAÇÃO DE COMPUTADORES MÓDULO 8

ORGANIZAÇÃO DE COMPUTADORES MÓDULO 8 ORGANIZAÇÃO DE COMPUTADORES MÓDULO 8 Índice 1. A Organização do Computador - Continuação...3 1.1. Processadores - II... 3 1.1.1. Princípios de projeto para computadores modernos... 3 1.1.2. Paralelismo...

Leia mais

BACHARELADO EM SISTEMAS DE INFORMAÇÃO EaD UAB/UFSCar Sistemas de Informação - prof. Dr. Hélio Crestana Guardia

BACHARELADO EM SISTEMAS DE INFORMAÇÃO EaD UAB/UFSCar Sistemas de Informação - prof. Dr. Hélio Crestana Guardia O Sistema Operacional que você usa é multitasking? Por multitasking, entende-se a capacidade do SO de ter mais de um processos em execução ao mesmo tempo. É claro que, num dado instante, o número de processos

Leia mais

FACULDADE PITÁGORAS DISCIPLINA: ARQUITETURA DE COMPUTADORES

FACULDADE PITÁGORAS DISCIPLINA: ARQUITETURA DE COMPUTADORES FACULDADE PITÁGORAS DISCIPLINA: ARQUITETURA DE COMPUTADORES Prof. Ms. Carlos José Giudice dos Santos cpgcarlos@yahoo.com.br www.oficinadapesquisa.com.br Conceito de Computador Um computador digital é

Leia mais

Sistemas Computacionais II Professor Frederico Sauer

Sistemas Computacionais II Professor Frederico Sauer Sistemas Computacionais II Professor Frederico Sauer Livro-texto: Introdução à Organização de Computadores 4ª edição Mário A. Monteiro Livros Técnicos e Científicos Editora. Atenção: Este material não

Leia mais

Técnicas de Manutenção de Computadores

Técnicas de Manutenção de Computadores Técnicas de Manutenção de Computadores Professor: Luiz Claudio Ferreira de Souza Processadores É indispensável em qualquer computador, tem a função de gerenciamento, controlando todas as informações de

Leia mais

AULA4: PROCESSADORES. Figura 1 Processadores Intel e AMD.

AULA4: PROCESSADORES. Figura 1 Processadores Intel e AMD. AULA4: PROCESSADORES 1. OBJETIVO Figura 1 Processadores Intel e AMD. Conhecer as funcionalidades dos processadores nos computadores trabalhando suas principais características e aplicações. 2. INTRODUÇÃO

Leia mais

Escalonamento no Linux e no Windows NT/2000/XP

Escalonamento no Linux e no Windows NT/2000/XP Escalonamento no Linux e no Windows NT/2000/XP 1 Escalonamento no Linux Os requisitos do escalonador do Linux eram: Apresentar boa performance em programas interativos, mesmo com carga elevada; Distribuir

Leia mais

Memória Cache. Prof. Leonardo Barreto Campos 1

Memória Cache. Prof. Leonardo Barreto Campos 1 Memória Cache Prof. Leonardo Barreto Campos 1 Sumário Introdução; Projeto de Memórias Cache; Tamanho; Função de Mapeamento; Política de Escrita; Tamanho da Linha; Número de Memórias Cache; Bibliografia.

Leia mais

Tais operações podem utilizar um (operações unárias) ou dois (operações binárias) valores.

Tais operações podem utilizar um (operações unárias) ou dois (operações binárias) valores. Tais operações podem utilizar um (operações unárias) ou dois (operações binárias) valores. 7.3.1.2 Registradores: São pequenas unidades de memória, implementadas na CPU, com as seguintes características:

Leia mais

ULA Sinais de Controle enviados pela UC

ULA Sinais de Controle enviados pela UC Solução - Exercícios Processadores 1- Qual as funções da Unidade Aritmética e Lógica (ULA)? A ULA é o dispositivo da CPU que executa operações tais como: Adição Subtração Multiplicação Divisão Incremento

Leia mais

Exercícios de revisão V2. FAT: 300 GB / 2KB = 150MB X 8 bytes (64 bits / 8) = 1.2GB

Exercícios de revisão V2. FAT: 300 GB / 2KB = 150MB X 8 bytes (64 bits / 8) = 1.2GB Exercícios de revisão V2 1 Uma empresa que possui partições FAT em seus servidores, estava impressionada com um processo em específico na memória, onde o mesmo ocupava um espaço grande. Este servidor dedicado

Leia mais

ARQUITETURA DE COMPUTADORES - 1866

ARQUITETURA DE COMPUTADORES - 1866 7 Unidade Central de Processamento (UCP): O processador é o componente vital do sistema de computação, responsável pela realização das operações de processamento e de controle, durante a execução de um

Leia mais

CISC RISC Introdução A CISC (em inglês: Complex Instruction Set Computing, Computador com um Conjunto Complexo de Instruções), usada em processadores Intel e AMD; suporta mais instruções no entanto, com

Leia mais

Introdução a Informática. Prof.: Roberto Franciscatto

Introdução a Informática. Prof.: Roberto Franciscatto Introdução a Informática Prof.: Roberto Franciscatto 3.1 EXECUÇÃO DAS INSTRUÇÕES A UCP tem duas seções: Unidade de Controle Unidade Lógica e Aritmética Um programa se caracteriza por: uma série de instruções

Leia mais

UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA INFORMÁTICA APLICADA

UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA INFORMÁTICA APLICADA Responda 1) Quem desenvolveu a linguagem C? Quando? 2) Existe alguma norma sobre a sintaxe da linguagem C? 3) Quais são os tipos básicos de dados disponíveis na linguagem C? 4) Quais são as principais

Leia mais

Evolução dos Processadores

Evolução dos Processadores Evolução dos Processadores Arquitetura Intel Arquitetura x86 Micro Arquitetura P5 P6 NetBurst Core Processador Pentium Pentium Pro Pentium II Pentium III Pentium 4 Pentium D Xeon Xeon Sequence Core 2 Duo

Leia mais

Bits internos e bits externos. Barramentos. Processadores Atuais. Conceitos Básicos Microprocessadores. Sumário. Introdução.

Bits internos e bits externos. Barramentos. Processadores Atuais. Conceitos Básicos Microprocessadores. Sumário. Introdução. Processadores Atuais Eduardo Amaral Sumário Introdução Conceitos Básicos Microprocessadores Barramentos Bits internos e bits externos Clock interno e clock externo Memória cache Co-processador aritmético

Leia mais

AULA 1. Informática Básica. Gustavo Leitão. gustavo.leitao@ifrn.edu.br. Disciplina: Professor: Email:

AULA 1. Informática Básica. Gustavo Leitão. gustavo.leitao@ifrn.edu.br. Disciplina: Professor: Email: AULA 1 Disciplina: Informática Básica Professor: Gustavo Leitão Email: gustavo.leitao@ifrn.edu.br Estudo de caso Empresa do ramo de seguros Presidência RH Financeiro Vendas e Marketing TI CRM Riscos Introdução

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Aula 13 Gerência de Memória Prof.: Edilberto M. Silva http://www.edilms.eti.br Baseado no material disponibilizado por: SO - Prof. Edilberto Silva Prof. José Juan Espantoso Sumário

Leia mais

O quê um Processador e qual a sua função?

O quê um Processador e qual a sua função? O quê um Processador e qual a sua função? O processador é um chip de silício responsável pela execução das tarefas atribuídas ao computador. Os processadores (ou CPUs, de Central Processing Unit) são responsáveis

Leia mais

Memórias Prof. Galvez Gonçalves

Memórias Prof. Galvez Gonçalves Arquitetura e Organização de Computadores 1 s Prof. Galvez Gonçalves Objetivo: Compreender os tipos de memória e como elas são acionadas nos sistemas computacionais modernos. INTRODUÇÃO Nas aulas anteriores

Leia mais

Organização e Arquitetura de Computadores I

Organização e Arquitetura de Computadores I Organização e Arquitetura de Computadores I Pipeline Slide 1 Pipeline Pipeline Hazards: Hazards Estruturais Hazards de Dados Hazards de Controle Organização e Arquitetura de Computadores I Caminho de Dados

Leia mais

O Hardware Dentro da Unidade do Sistema

O Hardware Dentro da Unidade do Sistema Memória RAM Random Access Memory Memória de Acesso Aleatório Armazena: programas em execução dados dos programas em execução alguns programas do sistema operacional O objetivo é tornar mais rápido o acesso

Leia mais

AULA 5 Sistemas Operacionais

AULA 5 Sistemas Operacionais AULA 5 Sistemas Operacionais Disciplina: Introdução à Informática Professora: Gustavo Leitão Email: gustavo.leitao@ifrn.edu.br Sistemas Operacionais Conteúdo: Partições Formatação Fragmentação Gerenciamento

Leia mais

Manutenção de Computadores Montagem de microcomputadores: Entendendo melhor os processadores. Professor: Francisco Ary

Manutenção de Computadores Montagem de microcomputadores: Entendendo melhor os processadores. Professor: Francisco Ary Manutenção de Computadores Montagem de microcomputadores: Entendendo melhor os processadores Professor: Francisco Ary Introdução O processador é um dos componentes mais importantes (e geralmente o mais

Leia mais

CPU - Significado CPU. Central Processing Unit. Unidade Central de Processamento

CPU - Significado CPU. Central Processing Unit. Unidade Central de Processamento CPU - Significado CPU Central Processing Unit Unidade Central de Processamento CPU - Função Na CPU são executadas as instruções Instrução: comando que define integralmente uma operação a ser executada

Leia mais

Tecnologias de Construção de Memórias e Memórias RAM, entrelaçada e Virtual

Tecnologias de Construção de Memórias e Memórias RAM, entrelaçada e Virtual Tecnologias de Construção de Memórias e Memórias RAM, entrelaçada e Virtual Arquiteturas para Alto Desmpenho Prof. pauloac@ita.br Sala 110 Prédio da Computação www.comp.ita.br/~pauloac Tempos de Acesso

Leia mais

Diminui o gargalo existente entre processador e memória principal; 5 a 10 vezes mais rápidas que a memória principal; Ligada diretamente à MP;

Diminui o gargalo existente entre processador e memória principal; 5 a 10 vezes mais rápidas que a memória principal; Ligada diretamente à MP; Diminui o gargalo existente entre processador e memória principal; Diferença de velocidade 5 a 10 vezes mais rápidas que a memória principal; Ligada diretamente à MP; Tecnologia semelhante à da CPU e,

Leia mais

R S Q 0 0 1 0 1 0 1 0 0 1 1 0 Tabela 17 - Tabela verdade NOR

R S Q 0 0 1 0 1 0 1 0 0 1 1 0 Tabela 17 - Tabela verdade NOR 19 Aula 4 Flip-Flop Flip-flops são circuitos que possuem a característica de manter os bits de saída independente de energia, podem ser considerados os princípios das memórias. Um dos circuitos sequenciais

Leia mais

Infraestrutura de Hardware. Memória Virtual

Infraestrutura de Hardware. Memória Virtual Infraestrutura de Hardware Memória Virtual Perguntas que Devem ser Respondidas ao Final do Curso Como um programa escrito em uma linguagem de alto nível é entendido e executado pelo HW? Qual é a interface

Leia mais

Processadores clock, bits, memória cachê e múltiplos núcleos

Processadores clock, bits, memória cachê e múltiplos núcleos Processadores clock, bits, memória cachê e múltiplos núcleos Introdução Os processadores (ou CPUs, de Central Processing Unit) são chips responsáveis pela execução de cálculos, decisões lógicas e instruções

Leia mais

Dispositivos de Memória

Dispositivos de Memória Chipset Conjunto de chips que fazem a comunicação entre a e os demais dispositivos do computador. Todas as informações que trafegam pela placa mãe passam necessariamente pelo Chipset, que tem dois chips:

Leia mais

INSTITUTO DE EMPREGO E FORMAÇÃO PROFISSIONAL, I.P.

INSTITUTO DE EMPREGO E FORMAÇÃO PROFISSIONAL, I.P. INSTITUTO DE EMPREGO E FORMAÇÃO PROFISSIONAL, I.P. Centro de Emprego e Formação Profissional da Guarda Curso: Técnico de Informática Sistemas (EFA-S4A)-NS Trabalho Realizado Por: Igor_Saraiva nº 7 Com

Leia mais

Hardware Avançado. Laércio Vasconcelos Rio Branco, mar/2007 www.laercio.com.br

Hardware Avançado. Laércio Vasconcelos Rio Branco, mar/2007 www.laercio.com.br Hardware Avançado Laércio Vasconcelos Rio Branco, mar/2007 www.laercio.com.br Avanços recentes em Processadores Chipsets Memórias Discos rígidos Microeletrônica Um processador moderno é formado por mais

Leia mais

Processamento de Dados

Processamento de Dados Processamento de Dados Execução de Programas Os computadores não entendem nada além de comandos, dados e endereços escritos em linguagem binária, também chamada de linguagem de baixo nível. Ela utiliza

Leia mais

Sistema de Computação

Sistema de Computação Sistema de Computação Máquinas multinível Nível 0 verdadeiro hardware da máquina, executando os programas em linguagem de máquina de nível 1 (portas lógicas); Nível 1 Composto por registrados e pela ALU

Leia mais

IFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira

IFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira IFPE Disciplina: Sistemas Operacionais Prof. Anderson Luiz Moreira SERVIÇOS OFERECIDOS PELOS SOS 1 Introdução O SO é formado por um conjunto de rotinas (procedimentos) que oferecem serviços aos usuários

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Aula 5 Estrutura de Sistemas de Computação Prof.: Edilberto M. Silva http://www.edilms.eti.br Baseado no material disponibilizado por: SO - Prof. Edilberto Silva Prof. José Juan Espantoso

Leia mais

3. O NIVEL DA LINGUAGEM DE MONTAGEM

3. O NIVEL DA LINGUAGEM DE MONTAGEM 3. O NIVEL DA LINGUAGEM DE MONTAGEM Nas aulas anteriores tivemos a oportunidade de discutir dois diferentes níveis presentes na maioria dos computadores atuais. Nesta aula dedica-se a outro nível que também

Leia mais

Hardware - Microprocessador

Hardware - Microprocessador Introdução Um microprocessador é um circuito integrado encarregue de executar as instruções de todos os programas armazenados na memória. É o motor que põe tudo a trabalhar desde o momento em que se liga

Leia mais

Estruturas do Sistema de Computação

Estruturas do Sistema de Computação Estruturas do Sistema de Computação Prof. Dr. José Luís Zem Prof. Dr. Renato Kraide Soffner Prof. Ms. Rossano Pablo Pinto Faculdade de Tecnologia de Americana Centro Paula Souza Estruturas do Sistema de

Leia mais

Processadores. Guilherme Pontes

Processadores. Guilherme Pontes Processadores Guilherme Pontes Já sabemos o básico! Como já sabemos, o processador exerce uma das mais importantes funções do computador. Vamos agora nos aprofundar em especificações mais técnicas sobre

Leia mais

FUNDAMENTOS DE HARDWARE PROCESSADORES. Professor Carlos Muniz

FUNDAMENTOS DE HARDWARE PROCESSADORES. Professor Carlos Muniz FUNDAMENTOS DE HARDWARE Processadores Apesar de ser o componente principal de um microcomputador, o processador depende da ajuda dos demais componentes. Caso apenas um componente apresente baixo desempenho,

Leia mais

Unidade 14: Arquiteturas CISC e RISC Prof. Daniel Caetano

Unidade 14: Arquiteturas CISC e RISC Prof. Daniel Caetano Arquitetura e Organização de Computadores 1 Unidade 14: Arquiteturas CISC e RISC Prof. Daniel Caetano Objetivo: Apresentar os conceitos das arquiteturas CISC e RISC, confrontando seus desempenhos. Bibliografia:

Leia mais

Arquitetura de Rede de Computadores

Arquitetura de Rede de Computadores TCP/IP Roteamento Arquitetura de Rede de Prof. Pedro Neto Aracaju Sergipe - 2011 Ementa da Disciplina 4. Roteamento i. Máscara de Rede ii. Sub-Redes iii. Números Binários e Máscara de Sub-Rede iv. O Roteador

Leia mais

Introdução a Informática. Prof.: Roberto Franciscatto

Introdução a Informática. Prof.: Roberto Franciscatto Introdução a Informática Prof.: Roberto Franciscatto 2.1 CONCEITO DE BIT O computador só pode identificar a informação através de sua elementar e restrita capacidade de distinguir entre dois estados: 0

Leia mais

Curso de Instalação e Gestão de Redes Informáticas

Curso de Instalação e Gestão de Redes Informáticas ESCOLA PROFISSIONAL VASCONCELLOS LEBRE Curso de Instalação e Gestão de Redes Informáticas PROCESSADORES DE 64 BITS X PROCESSADORES DE 32 BITS José Vitor Nogueira Santos FT2-0749 Mealhada, 2009 Introdução

Leia mais

discos impressora CPU memória AULA 04 - Estruturas de Sistemas Computacionais Operação dos sistemas de computação Controlador de disco

discos impressora CPU memória AULA 04 - Estruturas de Sistemas Computacionais Operação dos sistemas de computação Controlador de disco AULA 04 - Estruturas Sistemas Computacionais Nosso objetivo é apenas revisar conceitos relacionados a estrutura geral um sistema computacional para pois explicarmos os talhes operação do sistema e como

Leia mais

Memória RAM. A memória RAM evolui constantemente. Qual a diferença entre elas? No clock (velocidade de comunicação com o processador)

Memória RAM. A memória RAM evolui constantemente. Qual a diferença entre elas? No clock (velocidade de comunicação com o processador) Memória RAM Introdução As memórias são as responsáveis pelo armazenamento de dados e instruções em forma de sinais digitais em computadores. Para que o processador possa executar suas tarefas, ele busca

Leia mais

Contil Informática. Curso Técnico em Informática Processadores Core

Contil Informática. Curso Técnico em Informática Processadores Core Contil Informática Curso Técnico em Informática Processadores Core Quais as diferenças entre os processadores Intel Core i3, i5 e i7? A tecnologia avançada na área de hardware possibilita um avanço desenfreado

Leia mais

Tipos de Dados, Tipos Abstratos de Dados Estruturas de Dados

Tipos de Dados, Tipos Abstratos de Dados Estruturas de Dados Tipos de Dados, Tipos Abstratos de Dados Estruturas de Dados Tipo de dados, tipo abstrato de dados, estruturas de dados Termos parecidos, mas com significados diferentes Tipo de dado Em linguagens de programação

Leia mais

Gerenciamento de memória virtual no Kernel Linux conceitos básicos

Gerenciamento de memória virtual no Kernel Linux conceitos básicos Gerenciamento de memória virtual no Kernel Linux conceitos básicos João Eriberto Mota Filho Rio de Janeiro, Eriberto RJ, 03 dez. dez. 2011 2011 Sumário Modelo von Neumann Causas de esgotamento da memória

Leia mais

LÓGICA DE PROGRAMAÇÃO

LÓGICA DE PROGRAMAÇÃO Todos direitos reservados. Proibida a reprodução, mesmo parcial, por qualquer processo mecânico, eletrônico, reprográfico, etc., sem a autorização, por escrito, do(s) autor(es) e da editora. LÓGICA DE

Leia mais

Montagem e Manutenção. Luís Guilherme A. Pontes

Montagem e Manutenção. Luís Guilherme A. Pontes Montagem e Manutenção Luís Guilherme A. Pontes Introdução Qual é a importância da Montagem e Manutenção de Computadores? Sistema Binário Sistema Binário Existem duas maneiras de se trabalhar e armazenar

Leia mais

ARQUITETURA DE COMPUTADORES - 1866

ARQUITETURA DE COMPUTADORES - 1866 6.7 Operações com as Memórias: Já sabemos, conforme anteriormente citado, que é possível realizar duas operações em uma memória: Escrita (write) armazenar informações na memória; Leitura (read) recuperar

Leia mais

Introdução à Organização de Computadores Memória Principal

Introdução à Organização de Computadores Memória Principal Introdução à Organização de Computadores Memória Principal Sistemas da Computação Prof. Rossano Pablo Pinto, Msc. rossano at gmail com 2 semestre 2007 Tópicos Processadores Memória Principal (seção 2.2)

Leia mais

Gerenciamento de Memória

Gerenciamento de Memória Gerenciamento de Memória Prof. Dr. José Luís Zem Prof. Dr. Renato Kraide Soffner Prof. Ms. Rossano Pablo Pinto Faculdade de Tecnologia de Americana Centro Paula Souza Tópicos Introdução Alocação Contígua

Leia mais

Sistemas Operacionais. Prof. M.Sc. Sérgio Teixeira. Aula 03 Conceitos de Hardware e Software parte 01. Cursos de Computação

Sistemas Operacionais. Prof. M.Sc. Sérgio Teixeira. Aula 03 Conceitos de Hardware e Software parte 01. Cursos de Computação Cursos de Computação Sistemas Operacionais Prof. M.Sc. Sérgio Teixeira Aula 03 Conceitos de Hardware e Software parte 01 Referência: MACHADO, F.B. ; MAIA, L.P. Arquitetura de Sistemas Operacionais. 4.ed.

Leia mais

Algoritmos e Programação Estruturada

Algoritmos e Programação Estruturada Algoritmos e Programação Estruturada Virgínia M. Cardoso Linguagem C Criada por Dennis M. Ritchie e Ken Thompson no Laboratório Bell em 1972. A Linguagem C foi baseada na Linguagem B criada por Thompson.

Leia mais

Microprocessadores. Prof. Leonardo Barreto Campos 1

Microprocessadores. Prof. Leonardo Barreto Campos 1 Microprocessadores Prof. Leonardo Barreto Campos 1 Sumário Introdução; Arquitetura de Microprocessadores; Unidade de Controle UC; Unidade Lógica Aritméticas ULA; Arquitetura de von Neumann; Execução de

Leia mais

Fundamentos de Hardware

Fundamentos de Hardware Fundamentos de Hardware Curso Técnico em Informática SUMÁRIO PROCESSADOR... 3 CLOCK... 4 PROCESSADORES COM 2 OU MAIS NÚCLEOS... 5 NÚCLEOS FÍSICOS E LÓGICOS... 6 PRINCIPAIS FABRICANTES E MODELOS... 6 PROCESSADORES

Leia mais

Gerência de processos Estudos de caso - BSD Unix

Gerência de processos Estudos de caso - BSD Unix Gerência de processos Estudos de caso - BSD Unix Escalonamento preemptivo com prioridades dinâmicas Prioridades entre 0 e 127 0 a 49 kernel 50 a 127 usuário 32 filas de pronto Processos executando em modo

Leia mais

Unidade 13: Paralelismo:

Unidade 13: Paralelismo: Arquitetura e Organização de Computadores 1 Unidade 13: Paralelismo: SMP e Processamento Vetorial Prof. Daniel Caetano Objetivo: Apresentar os conceitos fundamentais da arquitetura SMP e alguns detalhes

Leia mais

Arquitetura de Computadores. Tipos de Instruções

Arquitetura de Computadores. Tipos de Instruções Arquitetura de Computadores Tipos de Instruções Tipos de instruções Instruções de movimento de dados Operações diádicas Operações monádicas Instruções de comparação e desvio condicional Instruções de chamada

Leia mais

OPERADORES E ESTRUTURAS DE CONTROLE

OPERADORES E ESTRUTURAS DE CONTROLE OPERADORES E ESTRUTURAS DE CONTROLE 3.1 Operadores Os operadores indicam o tipo de operação matemática que será executada gerando novos valores a partir de um ou mais operadores. São muito utilizados em

Leia mais

PROCESSADORES INTEL E AMD TABELAS E PARÂMETROS DE CONFIGURAÇÃO VCORE CLOCK FSB PINAGEM - TEMPERATURA

PROCESSADORES INTEL E AMD TABELAS E PARÂMETROS DE CONFIGURAÇÃO VCORE CLOCK FSB PINAGEM - TEMPERATURA PROCESSADORES INTEL E AMD TABELAS E PARÂMETROS DE CONFIGURAÇÃO VCORE CLOCK FSB PINAGEM - TEMPERATURA Freqüência do Processador Freqüência da placa mãe (barramento) Multiplicador 486DX-2 50 MHz 25 MHz 2x

Leia mais

Algoritmos de Busca em Tabelas

Algoritmos de Busca em Tabelas Dentre os vários algoritmos fundamentais, os algoritmos de busca em tabelas estão entre os mais usados. Considere por exemplo um sistema de banco de dados. As operações de busca e recuperação dos dados

Leia mais

29/3/2011. Primeira unidade de execução (pipe U): unidade de processamento completa, capaz de processar qualquer instrução;

29/3/2011. Primeira unidade de execução (pipe U): unidade de processamento completa, capaz de processar qualquer instrução; Em 1993, foi lançada a primeira versão do processador Pentium, que operava a 60 MHz Além do uso otimizado da memória cache (tecnologia já amadurecida) e da multiplicação do clock, o Pentium passou a utilizar

Leia mais

Introdução aos Computadores

Introdução aos Computadores Os Computadores revolucionaram as formas de processamento de Informação pela sua capacidade de tratar grandes quantidades de dados em curto espaço de tempo. Nos anos 60-80 os computadores eram máquinas

Leia mais

Backup. Permitir a recuperação de sistemas de arquivo inteiros de uma só vez. Backup é somente uma cópia idêntica de todos os dados do computador?

Backup. Permitir a recuperação de sistemas de arquivo inteiros de uma só vez. Backup é somente uma cópia idêntica de todos os dados do computador? Backup O backup tem dois objetivos principais: Permitir a recuperação de arquivos individuais é a base do típico pedido de recuperação de arquivo: Um usuário apaga acidentalmente um arquivo e pede que

Leia mais

Sistemas Operacionais Processos e Threads

Sistemas Operacionais Processos e Threads Sistemas Operacionais Processos e Threads Prof. Marcos Monteiro, MBA http://www.marcosmonteiro.com.br contato@marcosmonteiro.com.br 1 Estrutura de um Sistema Operacional 2 GERÊNCIA DE PROCESSOS Um processo

Leia mais

armazenamento (escrita ou gravação (write)) recuperação (leitura (read))

armazenamento (escrita ou gravação (write)) recuperação (leitura (read)) Memória Em um sistema de computação temos a UCP se comunicando com a memória e os dispositivos de E/S. Podemos fazer um paralelo do acesso à memória com um carteiro entregando cartas ou um acesso à biblioteca.

Leia mais

Sistema de Memórias de Computadores

Sistema de Memórias de Computadores Sistema de Memórias de Computadores Uma memória é um dispositivo que permite um computador armazenar dados temporariamente ou permanentemente. Sabemos que todos os computadores possuem memória. Mas quando

Leia mais

Desempenho DESEMPENHO DE COMPUTADORES

Desempenho DESEMPENHO DE COMPUTADORES Desempenho Ch2-1 DESEMPENHO DE COMPUTADORES Desempenho -> Como medir o desempenho? AVIÃO PASSAGEIRO S AUTOMIA (milhas) VELOCIDAD E (mph) THROUGHPUT (passag.xveloc) Boeing 777 375 4630 610 228.750 Boeing

Leia mais

Curso de Instalação e Gestão de Redes Informáticas

Curso de Instalação e Gestão de Redes Informáticas ESCOLA PROFISSIONAL VASCONCELLOS LEBRE Curso de Instalação e Gestão de Redes Informáticas MEMÓRIA DDR (DOUBLE DATA RATING) José Vitor Nogueira Santos FT2-0749 Mealhada, 2009 Introdução A memória DDR (Double

Leia mais

Memória Virtual. Prof. Dr. José Luís Zem Prof. Dr. Renato Kraide Soffner Prof. Ms. Rossano Pablo Pinto

Memória Virtual. Prof. Dr. José Luís Zem Prof. Dr. Renato Kraide Soffner Prof. Ms. Rossano Pablo Pinto Memória Virtual Prof Dr José Luís Zem Prof Dr Renato Kraide Soffner Prof Ms Rossano Pablo Pinto Faculdade de Tecnologia de Americana Centro Paula Souza Tópicos Introdução Espaço de Endereçamento Virtual

Leia mais

Hardware de Computadores

Hardware de Computadores Placa Mãe Hardware de Computadores Introdução Placa-mãe, também denominada mainboard ou motherboard, é uma placa de circuito impresso eletrônico. É considerado o elemento mais importante de um computador,

Leia mais

CPU Fundamentos de Arquitetura de Computadores. Prof. Pedro Neto

CPU Fundamentos de Arquitetura de Computadores. Prof. Pedro Neto Fundamentos de Arquitetura de Computadores Prof. Pedro Neto Aracaju Sergipe - 2011 Conteúdo 4. i. Introdução ii. O Trabalho de um Processador iii. Barramentos iv. Clock Interno e Externo v. Bits do Processador

Leia mais

MEMÓRIA. 0 e 1 únicos elementos do sistema de numeração de base 2

MEMÓRIA. 0 e 1 únicos elementos do sistema de numeração de base 2 MEMÓRIA CONCEITO Bit- 0 1 Essência de um sistema chamado BIESTÁVEL Ex: Lâmpada 0 apagada 1 acesa 0 e 1 únicos elementos do sistema de numeração de base 2 A que se destina a memória: Armazenamento das instruções

Leia mais

RISC - Reduced Instruction Set Computer

RISC - Reduced Instruction Set Computer Arquietura MAC 412- Organizãção de Computadores - Siang W. Song Baseado no livro de Tanenbaum - Structured Computer Organization Arquietura Índice 1 Avaliação da arquitetura CISC (microprogramada) Críticas

Leia mais

O processador é composto por: Unidade de controlo - Interpreta as instruções armazenadas; - Dá comandos a todos os elementos do sistema.

O processador é composto por: Unidade de controlo - Interpreta as instruções armazenadas; - Dá comandos a todos os elementos do sistema. O processador é composto por: Unidade de controlo - Interpreta as instruções armazenadas; - Dá comandos a todos os elementos do sistema. Unidade aritmética e lógica - Executa operações aritméticas (cálculos);

Leia mais

Capítulo 4. MARIE (Machine Architecture Really Intuitive and Easy)

Capítulo 4. MARIE (Machine Architecture Really Intuitive and Easy) Capítulo 4 João Lourenço Joao.Lourenco@di.fct.unl.pt Faculdade de Ciências e Tecnologia Universidade Nova de Lisboa 2007-2008 MARIE (Machine Architecture Really Intuitive and Easy) Adaptado dos transparentes

Leia mais

Análises Geração RI (representação intermediária) Código Intermediário

Análises Geração RI (representação intermediária) Código Intermediário Front-end Análises Geração RI (representação intermediária) Código Intermediário Back-End Geração de código de máquina Sistema Operacional? Conjunto de Instruções do processador? Ambiente de Execução O

Leia mais

ARQUITETURA DE COMPUTADORES

ARQUITETURA DE COMPUTADORES 01001111 01110010 01100111 01100001 01101110 01101001 01111010 01100001 11100111 11100011 01101111 00100000 01100100 01100101 00100000 01000011 01101111 01101101 01110000 01110101 01110100 01100001 01100100

Leia mais

Informática Aplicada

Informática Aplicada Informática Aplicada Conceitos Aula 2 Prof. Walteno Martins Parreira Jr www.waltenomartins.com.br waltenomartins@yahoo.com 2013 Esquema Geral do Computador HARDWARE; SOFTWARE. Prof. Walteno Martins Parreira

Leia mais

Arquitetura e Organização de Computadores

Arquitetura e Organização de Computadores UNIVERSIDADE FEDERAL RURAL DO DO SEMI-ÁRIDO DEPARTAMENTO DEPARTAMENTO DE DE CIÊNCIAS CIÊNCIAS EXATAS EXATAS E E NATURAIS NATURAIS CURSO DE CIÊNCIA DA COMPUTAÇÃO CURSO DE CIÊNCIA DA COMPUTAÇÃO Arquitetura

Leia mais