CI064, 2019-1 © Roberto André Hexsel, 2015-2019
Como computeiros gastam tempo
Na aula passada vimos comandos e programas que nos permitem utilizar
eficientemente algumas das abstrações providas pelo Unix. Nesta aula você
deve resolver quatro problemas usando as ferramentas de computeiro para
trabalhar eficientemente.
Antes de mais nada, crie um prompt vazio, copiando a linha abaixo
no seu terminal
alias prompt:=""
Três clicks no botão esquerdo para copiar, um click no meio para colar
Copie o arquivo abaixo para a sua área e expanda-o:
prompt: wget http://www.inf.ufpr.br/roberto/ci064/dados_064.tgz .
prompt: tar xzvf dados_064.tgz
O diretório dados_064 contem 2520 arquivos com os resultados de simulações
de memórias cache. Os detalhes que não vem ao caso agora serão explicados
em CI212. O nome de cada arquivo descreve os parâmetros da simulação; os
espaços mostrados não fazem parte do nome, mas devem simplificar o
entendimento, ou assim espero:
programa _ capacidade A associatividade B tamanhoDeBloco W escrita A alocação
Programa é um dentre frag jpegE rtr zipD zipE
Capacidade é uma dentre 1k 2k 4k 8k 16k 32k 64k 128k 256k
Associatividade é uma dentre 1 2 4 8
TamanhoDeBloco é um dentre 4 8 16 32 64 128 256
Escrita é uma de 2 combinações WcAw WwAn
o arquivo rtr_32kA1B32WwAn
é o resultado para o programa rtr,
com cache de 32k,
com associatividade A=1,
com tamanho de bloco B=32, e
com escrita WwAn.
Em cada arquivo, o valor de interesse é a quinta coluna da linha
com din_dmm (Read Demand Misses), mostrada em azul. As colunas são
separadas por TABs.
...
Demand Misses 476224 0 476224 58700 417524
din_dmmTAB0.0154TAB0.0000TAB0.0154TAB0.0030TAB0.0375TAB0.0000
Words From Memory 469600
...
Em alguns arquivos os parâmetros resultam numa cache irrealizável e o
arquivo de simulação é vazio. Por exemplo, arquivos vazios resultam da
combinação de capacidade pequena com associatividade alta com bloco grande.
Sua tarefa, e que vale 5% da média, é resolver os quatro problemas abaixo.
Suas respostas devem ser enviadas por e-mail para rhexsel@gmail.com, até
as 15:25, como arquivos texto executáveis (scripts), ou com a lista
de comandos (em texto simples) usada para resolver o problema. Se me
custar mais do que uns poucos minutos para executar seus programas, eles
não receberão crédito.
Não farei nada de remotamente parecido com cut-and-paste de um arquivo .DOC
Além do programa que efetua a consulta aos arquivos de dados, cada resposta
deve conter a saída da consulta, como uma tabela com os resultados pedidos.
As tabelas devem ter os cabeçalhos (nomes das colunas) e na coluna da
esquerda os nomes/valores dos parâmetros de cada linha.
As soluções serão executadas e só receberão crédito caso produzam os
resultados corretos e compatíveis com as tabelas formatadas com a saída
especificada.
O trabalho pode ser efetuado em duplas.
As faixas de valores nos enunciados são sempre inclusivas -- os limites das
faixas são aqueles do enunciado.
Problema 1
Para cada um dos programas, para capacidades de 1k a 64k, associatividade
1, tamanho de bloco 16, e escrita WwAn, escreva uma tabela com uma linha
para cada programa e uma coluna para cada capacidade. Os campos da tabela
devem ser preenchidos com o valor din_dmm (mostrado acima em azul), um para
cada arquivo de dados do conjunto de entrada.
1k 2k 4k 8k 16k 32k 64k
prog1 a b c d e f g
prog2 p q r s t u v
prog3 x y z w k i j
... . . . . . . .
No exemplo acima, os valores de Read Demand Misses são mostrados
como letras, para cada programa e configuração. Note que cada valor no
arquivo é mostrado com 6 colunas (0.0030); sua tabela deve ser formatada
para mostrar os valores lidos em 6 colunas, mais algum espaço para separar
as colunas.
Problema 2
Para cada um dentre frag e rtr, para capacidades de 2k a 8k,
associatividade 1 a 4, tamanho de bloco 64, e escrita WwAn,
escreva uma tabela com
(a) um grupo de linhas para cada programa;
(b) dentro de cada grupo uma linha para cada associatividade; e
(c) uma coluna para cada capacidade.
prog1 2k 4k 8k
1 z y z
2 p q r
4 a b c
prog2 2k 4k 8k
1 r s t
2 x w y
4 j k l
Veja a observação sobre os valores mostrados em 6 colunas.
Problema 3
Para todos os programas, para a capacidade 16k, associatividade 1 a 8,
tamanho de bloco 4, e escrita WwAn e WcAw, escreva uma tabela com
(a) um grupo de linhas para cada programa;
(b) para cada grupo (programa), quatro subgrupos, um por associatividade; e
(c) uma linha para cada forma de escrita.
prog1 16k
1 WwAn r
1 WcAw p
2 WwAn x
2 WCAw y
4 WwAn r
4 WcAw p
8 WwAn x
8 WCAw y
prog2 16k
1 WwAn r
1 WcAw p
2 WwAn x
2 WCAw y
4 WwAn r
4 WcAw p
8 WwAn x
8 WCAw y
...
Veja a observação sobre os valores mostrados em 6 colunas.
Problema 4
Para todos os programas, para capacidades de 2k a 8k, associatividade 4,
tamanhos de bloco 16 a 64, e escrita WwAn, escreva uma tabela com
(a) um grupo de linhas para cada programa;
(b) dentro de cada grupo, 3 subgrupos, uma para cada capacidade; e
(c) uma coluna para cada cada tamanho de bloco.
prog1 16 32 64
2k x y z
4k a b c
8k p q r
prog2 16 32 64
2k i j k
4k d e f
8k s t u
...
Veja a observação sobre os valores mostrados em 6 colunas.
Pistas
Metacaracteres podem ser úteis para selecionar os arquivos de interesse.
cut pode ser conveniente para selecionar o valor de interesse nos
arquivos.
Não é proibido saber que Bash suporta laços for.
--fim da aula--