Baixe o app para aproveitar ainda mais
Prévia do material em texto
INSTITUTO FEDERAL DE BRASÍLIA Campus Taguatinga Curso Ciência/Licenciatura em Computação Disciplina Arquitetura de Computadores I Professor Tiago Trindade da Silva Exercícios 1. Descreva os passos que transformam um programa escrito em linguagem de alto nível tal como a linguagem C em uma representação do que é diretamente executado por uma CPU. O programa é compilado para um programa em linguagem assembly, o qual é então montado (assembled) em um programa em linguagem de máquina. 2. Assuma que um display colorido use 8 bits para cada uma das cores (vermelho, verde e azul), por pixel e um frame com tamanho de 1280 x 1024. Qual é o tamanho mínimo, em bytes, para o frame buffer armazenar este frame? número_pixels = 1280 x 1024 = 1.310.720 pixels frame_buffer_sizemin = número_pixels x quantidade_matriz = 1.310.720 x 3 frame_buffer_sizemin = 3.932.160 bytes/frame 3. Considere três processadores diferentes P1, P2 e P3, que executam o mesmo conjunto de instruções (ISA). P1 tem uma taxa de clock de 3 GHz e um CPI de 1,5. P2 tem uma taxa de clock de 2,5 GHz e um CPI de 1,0. P3 tem uma taxa de clock de 4 GHz e um CPI de 2,2. a) Qual processador tem o maior desempenho expressado em instruções por segundo? Desempenho P1 (instruções/segundo) = 3 x 109 / 1,5 = 2 x 109. Desempenho P2 (instruções/segundo) = 2,5 x 109 / 1,0 = 2,5 x 109. Desempenho P3 (instruções/segundo) = 4 x 109 / 2,2 = 1,8 x 109. P2 executa mais instruções por segundo. b) Se cada processador executar um programa diferente onde todos tenham o mesmo tempo de execução igual a 10 segundos, qual o número de ciclos e o número de instruções para cada programa? 1 ciclos P1 = 10 x 3 x 109 = 30 x 109 ciclos P2 = 10 x 2,5 x 109 = 25 x 109 ciclos P3 = 10 x 4 x 109 = 40 x 109 Número de Instruções P1 = 30 x 109 / 1,5 = 20 x 109. Número de Instruções P2 = 25 x 109 / 1,0 = 25 x 109. Número de Instruções P3 = 40 x 109 / 2,2 = 18,18 x 109. c) Estamos tentando reduzir o tempo de execução em 30%, mas isto leva a um incremento de 20% no CPI. Qual a taxa de clock que teremos que obter para reduzir este tempo? (Determine a taxa de clock de cada um dos processadores P1, P2 e P3). CPInovo = CPIvelho x 1,2 CPI1 = 1,5 x 1,2 = 1,8 CPI2 = 1,0 x 1,2 = 1,2 CPI3 = 2,2 x 1,2 = 2,6 frequencia = Número de instruções x CPI / tempo Temponovo = 0,7 x Tempovelho = 0,7 x 10 = 7 segundos frequencia1 = 20 x 109 x 1,8 / 0,7 = 5,14 GHz frequencia2 = 25 x 109 x 1,2 / 0,7 = 4,28 GHz frequencia2 = 18,18 x 109 x 2,6 / 0,7 = 6,75 GHz 4. Considere duas implementações diferentes do mesmo ISA. As instruções podem ser divididas em quatro classes conforme o seu CPI (classes A, B, C e D). P1 com uma taxa de clock de 2,5 GHz e CPIs de 1, 2, 3 e 3, respectivamente para as classes A, B, C e D. P2 com uma taxa de clock de 3 GHz e CPIs de 2, 2, 2 e 2. Dado um programa com uma contagem dinâmica de instruções de 1,0 x 106 instruções divididas nas três classes da seguinte forma: 10% classe A, 20% classe B, 50% classe C e 20% classe D. Qual implementação é mais rápida? a) Qual é o CPI global para cada implementação? Classe A = 0,1 x 1,0 x 106 = 1 x 105 instruções Classe B = 0,2 x 1,0 x 106 = 2 x 105 instruções Classe C = 0,5 x 1,0 x 106 = 5 x 105 instruções Classe D = 0,2 x 1,0 x 106 = 2 x 105 instruções Temp CPU P1 = (1 x 105 x 1 + 2 x 105 x 2 + 5 x 105 x 3 + 2 x 105 x 3)/(2,5 x 109) Temp CPU P1 = 10,4 x 10-4 s Temp CPU P2 = (1 x 105 x 2 + 2 x 105 x 2 + 5 x 105 x 2 + 2 x 105 x 2)/(3,0 x 109) Temp CPU P2 = 6,66 x 10-4 s P2 é mais rápida 2 CPI = tempo CPU x clock / quantidade de instruções CPI(P1) = 10,4 x 10-4 x 2,5 x 109 / 106 = 2,6 CPI(P2) = 6,66 x 10-4 x 3 x 109 / 106 = 2,0 b) Encontre os ciclos de clock necessários todos os casos. Ciclos clock(P1) = 1 x 105 x 1 + 2 x 105 x 2 + 5 x 105 x 3 + 2 x 105 x 3 Ciclos clock(P1) = 26 x 105. Ciclos clock(P2) = 1 x 105 x 2 + 2 x 105 x 2 + 5 x 105 x 2 + 2 x 105 x 2 Ciclos clock(P2) = 20 x 105 5. Compiladores podem ter um profundo impacto no desempenho de uma aplicação. Assume que um programa, compilador A resulta em uma contagem dinâmica de instruções de 1,0 x 109 e tem um tempo de execução de 1,1 segundo, enquanto o compilador B resulta em uma contagem dinâmica de instruções de 1,2 x 109 e um tempo de execução de 1,5 segundos. a) Encontre o CPI médio para cada programa dado que o processador tem um ciclo de clock de 1 ns. frequencia = 1 / tempo de um ciclo de clock = 1 / 1 x 10-9 = 1 x 109 Hz ou 1 GHz CPI = TCPU x frequencia / Número de Instruções CPIComp_A = 1,1 x 1 x 109 / 1,0 x 109 = 1,1 CPIComp_A = 1,5 x 1,0 x 109 / 1,2 x 109 = 1,25 b) Assuma que os programas compilados rodam em dois processadores diferentes. Se os tempos de execução são os mesmos, o quanto mais rápido é o clock do processador rodando o código gerado pelo compilador A do que o processador rodando o código gerado pelo compilador B? freq.(B)/freq.(A) = (Núm. de Instr.(B) x CPI(B))/(Núm. de Instr.(A) x CPI(A)) freq.(B)/freq.(A) = (1,2 x 109 x 1,25) / ( 1,0 x 109 x 1,1) = 1,37 vezes. c) Um novo compilador foi desenvolvido e usa somente 6,0 x 108 instruções e tem um CPI médio de 1,1. Qual é o speedup (“ganho de velocidade”) deste novo compilador em relação aos compiladores A e B no processador original? T= CPI x Número de instruções / clock T = Tnovo = (CPI x Núm. de Inst. / Clock) / (CPInovo x Núm. Instr.novo / Clock) T = Tnovo = (CPI x Núm. de Inst.) / (CPInovo x Núm. Instr.novo) T(A) = T(A)novo = (1,1 x 1,0 x 109)/(1,1 x 6 x 108) = 1,67 T(B) = T(B)novo = (1,25 x 1,2 x 109)/(1,1 x 6 x 108) = 2,27 3 6. O Pentium 4 Prescott, lançado em 2004, tem um taxa de clock de 3,6 GHz e uma tensão de operação de 1,25V. Assuma que, na média, ele consome 10 W de potência estática e 90 W de potência dinâmica. O Core i5 Ivy Bridge, lançado em 2012, tem uma taxa de clock de 3,4 GHz e uma tensão de 0,9 V. Assuma que, na média, ele consome 30 W de potência estática e 40 W de potência dinâmica. a) Encontre para cada processador a carga capacitiva média. C = 2 x DP/(V2 * F) C: Carga capacitiva, DP: Potência Dinâmica, V : tensão de operação, Frequência de Operação C(Pentium4) = 2 x 90 /1,252 x 3,6 x 109 = 3,2 x 10-8 Faraday C(Ivy Bridge) = 2 x 40 / 0,92 x 3,4 x 109 = 2,9 x 10-8 Fraday b) Encontre o percentual da potência total dissipada composta pela potência estática e a taxa da potência dinâmica para cada tecnologia. %Pdissipada = 100 x Potência Estática / (Potência Dinâmica + Potência Estática) %Pdissipada(Pentium 4) = 100 x 10 / ( 90 + 10 ) = 100 x 10 / 100 = 10% %Pdissipada(Ivy Bridge) = 100 x 30 / ( 30 + 40 ) = 100 x 30 / 70 = 42,9% c) Se a potência total é reduzida por 10%, qual deverá ser a tensão de operação para manter a mesma corrente de leakage (“vazamento”). Obs: Potência é o produto da corrente pela tensão. (PEstáticanova + PDinâmicaNova ) / (PEstáticavelha / PDinâmicaVelha) = 0,9 Pdinâmicanova = C x Vnova2 x F PEstáticavelha = Vvelha x I PEstáticanova = Vnovo x I Desta forma: Vnovo = [PDinâmicaNova / (C x F)]1/2 Pdinâmicanova = 0,90 x (PEstáticavelha + PDinâmicaVelha) – Pestáticanova Pestáticanova = Vnovo x (PEstáticavelha / Vvelha) Pentium 4 Pestáticanova = Vnovo x (10 / 1,25) = Vnovo x 8 PDinâmicanova = 0,90 x 100 – Vnovo x 8 = 90 – Vnovo x 8 Vnovo = [90 – Vnovo x 8) / (3,2 x 108 x 3,6 x 109)]1/2 = 0,85 V. Core I5 Ivy Bridge Pestáticanova = Vnovo x (30 / 0,9) = Vnovo x 33,3 4 PDinâmicanova = 0,90 x 70 – Vnovo x 33,3 = 63 – Vnovo x 33,3 Vnovo = [63 – Vnovo x 33,3) / (2,9 x 108 x 3,4 x 109)]1/2 = 0,64 V. 7. Assuma que um processador tem os seguintes CPIs: instruções aritméticas 1, instruçõesde load/store (carga/armazenamento) 12 e instruções de branch (salto) 5. Também assuma que rodando em um único processador um programa executa 2,56 x 109 instruções aritméticas, 1,28 x 109 instruções de load/store e 256 x 106 instruções de branch. Considere que cada processador tem uma taxa de clock de 2 GHz. Considere que o programa é paralelizado para rodar sobre múltiplos cores, a quantidade de instruções aritméticas e de load/store por processador é dividida por 0,7 x p (onde p é a quantidade de processadores), mas o número de instruções de branch por processador continua o mesmo. a) Encontre o tempo total de execução para este programa quando são utilizados 1, 2, 4 e 8 processadores. Também mostre o speedup relativo para 2, 4 e 8 processadores com relação ao resultado de 1 processador. b) Se o CPI das instruções aritméticas foi dobrado, qual o impacto no tempo de execução do programa com 1, 2, 4 e 8 processadores? c) Para quanto o CPI de load/store deve ser reduzido para que um único processador tenha o mesmo desempenho que 4 processadores que utilizam os valores de CPI originais? 8. Assuma que um wafer com 15 cm de diâmetro tenha um custo de 12, contém 84 dies e tem uma taxa de defeitos de 0,020 defeitos/cm2. Assuma que um wafer com diâmetro de 20 cm tenha um custo de 15, contenha 100 dies e uma taxa de defeito de 0,031 defeitos/cm2. a) Qual o yield de cada wafer? área do wafer = 3,1416 x r2 (área do círculo) area die15 = área wafer / dies por wafer = 3,1416 x 7,52 / 84 = 2,10 cm2 area die20 = 3,1416 x 102 / 100 = 3,14 cm2 Yield15 = 1 / (1 + (0,020 * 2,10/2))2 = 0,9593 Yield20 = 1 / (1 + (0,031 * 3,14/2))2 = 0,9093 b) Determine o custo por die para cada wafer. custo por die = custo do wafer / dies * yield custo por die15 = 12 / (84 * 0,9593) = 0,1489 custo por die20 = 15 / (100 * 0,9093) = 0,1650 5 c) Se o número de dies por wafer for incrementado por 10% e os defeitos por unidade de área aumentar 15%, determine a área do die e o yield para cada wafer. área do wafer = 3,1416 x r2 (área do círculo) area die15 = área wafer / dies por wafer = 3,1416 x 7,52 / ( 84 x 1,1) = 1,91 cm2 area die20 = 3,1416 x 102 / (100 x 1,1) = 2,86 cm2 Yield15 = 1 / (1 + (0,020 * 1,15 * 1,91/2))2 = 0,9575 Yield20 = 1 / (1 + (0,031 * 1,15 * 2,86/2))2 = 0,9082 d) Se o processo de fabricação melhorar o yield de 0,92 para 0,95 qual será a taxa de defeitos por área para cada versão da tecnologia dada a área do die de 200 mm2. defeitos_area = (1 – yield1/2) / (yield1/2 * área_die/2) defeitos_area0,92 = (1 – 0,921/2) / (0,921/2 * 2/2) = 0,043 defeitos/cm2 defeitos_area0,95 = (1 – 0,951/2) / (0,951/2 * 2/2) = 0,026 defeitos/cm2 9. O resultado do benchmark bzip2 do SPEC CPU2006 rodando em um AMD Barcelona tem uma quantidade de instruções de 2,389 x 1012, com um tempo de execução de 750 segundos. O tempo da máquina de referência é 9650 segundos. a) Qual o CPI para um tempo de ciclo de clock de 0,333 ns? CPI = taxa de clock x TempoCPU / quantidade de instruções taxa de clock = 1 / perídos = 1 / 0,333 x 10-9 = 3 GHz CPI(bzip2) = 3 x 109 x 750 / (2389 x 109) = 0,94. b) Qual o valor do SPECratio? SPECratio = tempo ref. / tempo CPU SPECratio(bzip2) = 9650 / 750 = 12.86 c) Qual o aumento no tempo da CPU se a quantidade de instruções do benchmark aumentar 10% e o CPI continuar o mesmo? CPI = taxa de clock x TempoCPU / quantidade de instruções Se o CPI e a taxa de clock não aumentam o aumento no tempo de CPU é igual ao aumento no número de instruções, o qual é 10%. d) Qual o aumento no tempo da CPU se a quantidade de instruções do benchmark aumentar 10% e o CPI aumentar 15%? TempoCPUvelho = Quantidade de instruções x CPI / Taxa de clock TempoCPUnovo = 1,1 x Quantidade de instruções x 1,15 CPI / Taxa de clock TempoCPUnovo / TempoCPUvelho =(1,1 x Quantidade de instruções x 1,15 x CPI / 6 Taxa de clock) / (Quantidade de instruções x CPI / Taxa de clock) TempoCPUnovo / TempoCPUvelho = 1,1 x 1,15 = 1,265 O tempoCPU é aumentado em 26,5% e) Qual o valor do SPECratio para o resultado encontrado no item “d” (anterior)? SPECratio = tempo referencia / TempoCPU SPECrationovo / SPECratiovelho = TempoCPUVelho / TempoCPUnovo = 1 / 1,265 = 0,7905. A SPECratio diminui em 21% f) Suponha que estamos desenvolvendo uma nova versão do processador AMD Barcelona com taxa de clock de 4 GHz. Nesta nova versão adicionamos algumas instruções novas ao ISA de forma que a quantidade de instruções para o bzip2 foi reduzida em 15%. O tempo de execução foi reduzido para 700 segundos e o novo SPECratio é de 13,7. Qual o valor do novo CPI? CPI = Tempo CPU x taxa de clock / Quantidade de Instruções CPU = 700 x 4 x 109 /( 0,85 x 2389 x 109) = 1,37 g) O valor do CPI encontrado no item “f” é maior que o encontrado no item “a” tal como a taxa de clock aumento de 3 GHz para 4 GHz. Determine se o aumento do CPI é similar ao aumento da taxa de clock. Se sim, por que? Aumento Clock = Taxa clocknova / Taxa clockvelha = 4 x 109 / 3 x 109 = 1,33 CPI4GHz/CPI3GHz = 1,37 / 0,94 = 1,45. São diferentes porque embora a quantidade de instruções tenha sido reduzida em 15%, o tempo de CPU foi reduzido por uma porcentagem menor. h) Para outro benchmark, libquantum, assuma um tempo de execução de 960 ns, um CPI de 1,61 e uma taxa de clock de 3 GHz. Determine a quantidade de instruções se o tempo de execução for reduzido em 10% sem afetar o CPI e com uma taxa de clock de 4 GHz. Quantidade de instruções = TempoCPU x Taxa de Clock / CPI Quantidade de Instruções = 960 x 0,9 x 4 x 109/ 1,61 = 2146 x 109. i) Determine a taxa de clock necessária para termos uma redução de 10% no tempo de CPU enquanto mantemos o número de instruções e o CPI inalterados. Taxa de clock = Quantidade de Instruções x CPI / TempoCPU Taxa de clocknova = Quantidade de Instruções x CPI / 0,9 x TempoCPU 7 TempoCPU = Quantidade de instruções x CPI / Taxa de clock Taxa de clocknova = (1 / 0,9) x 3 x 109 = 3,33 GHz j) Determine a taxa de clock se o CPI for reduzido em 15% e o tempo de CPU for reduzido em 20%, com a mesma quantidade de instruções. Taxa de clock = Quantidade de Instruções x CPI / TempoCPU Taxa de clocknova = Quantidade de Instruções x 0,85 x CPI / 0,8 x TempoCPU Taxa de clocknova = 0,85 / 0,8 x taxa de clockvelha = 1,0625 x 3 GHz = 3,18 GHz 10. Quando um programa é adaptado para rodar em um multiprocessadores o tempo de execução em cada processador é composto pelo tempo de computação e o tempo de overhead necessário para bloqueio de seções críticas e/ou o envio de mensagens entre os processadores. a) Assuma que um programa tenha um tempo de execução de 100 segundos em um processador. Quando executado em p processadores, cada processador necessita de t/p segundo para execução do programa acrescido de 4 segundos de overhead independente do número de processadores. Determine o tempo de execução por processador para 2, 4, 8, 16, 32, 64 e 128 processadores. Para cada caso, liste o speedup relativo a execução em um único processador e a taxa entre o speedup atual e o speedup ideal (se não existisse o overhead). Lista de Equações Custo por die= Custo por wafer (Dies por Wafer )×(Yield ) Correção na equação abaixo: Yield= 1 (1+(Defeitos por Área×Die por Área2 )) 2 Equação corrigida, trocar Die por área para Área do Die Yield= 1 (1+(Defeitos por Área× Area do Die2 )) 2 8 Desempenho= 1 Tempo deexecução DesempenhoX DesempenhoY = Tempode ExecuçãoY Tempo de ExecuçãoX =n TempodeCPU=Ciclos deClock daCPU×TempodoCiclo daCPU TaxadeClock= 1 TempodociclodaCPU TempodeCPU=Ciclos deClock daCPU TaxadeClock Ciclos deClockdaCPU=Quantidade de Instruções×CPI TempodeCPU=Ciclos deClock daCPU×TempodoCiclo daCPU TempodeCPU=Quantidade de Instruções×CPI×Tempo doCiclodeClock TempodeCPU=Quantidade de Instruções×CPI Taxa deClock Ciclos deClock=∑ i=1 n (CPI i×Quantidadede Instruçõesi) CPIMédio= Ciclos deClock Quantidade de Instruções =∑ i=1 n (CPI i×Quantidade de InstruçõesiQuantidadede Instruções ) PowerDin∝ 1 2 CargaCapacitiva×Tensão2×Frequênciade Chaveamento SPECrate=Tempode Referência Tempode Execução MédiaGeométrica= n√∏i=1 n TaxadoTempode Execução i 9 10
Compartilhar