Instituto Superior Técnico Departamento de Engenharia Electrotécnica e de Computadores Arquitectura de Computadores º sem. / // º Teste Duração:, horas Grupo I Superpilining [ valores] Admita que tem um pipeline com emissão simples, execução em ordem, andar de fetch, andar de descodificação, múltiplos andares de execução (que incluem o acesso à memória de dados), e andar de write-back. Admita ainda as seguintes latências: MUL.D = ciclos, ADD.D = ciclos, DIV.D = ciclos, operações sobre inteiros = ciclo. Admita bypassing total e que necessita de ciclos para acessos à memória de dados, isto é, os loads e stores precisam de ciclos (incluindo o cálculo dos endereços). Finalmente, as condições dos branches são calculadas no primeiro andar de execução (unidade de execução de inteiros). [ val] a) Admita que este pipeline é formado por uma sequência linear de andares, em que andares posteriores servem de nops para instruções mais curtas. Desenhe cada andar do pipeline como uma caixa (sem pormenores internos), e dê-lhe uma designação apropriada. Descreva as operações efectuadas em cada um dos andares e mostre todos os caminhos de bypass (com setas entre andares). O seu objectivo consiste em construir um pipeline que nunca faz stalls, a menos que um operando não esteja pronto. Identifique cada uma das setas com o tipo de instruções que fazem o forward dos seus resultados ao longo do caminho correspondente à seta. [ val] b) Quantos branch delay slots são necessários com esta arquitectura? Porquê? [ val] c) Uma predição dinâmica de saltos poderia melhorar o desempenho do pipeline? Porquê? [ val] d) No pipeline de andares que se conhece da teórica, um LW seguido de um SW que usa o registo carregado no LW para escrever na memória de dados não produz stalls. Por exemplo: LW SW R, (R) R, (R) Isto ainda é verdade com o pipeline da alínea a)? Porquê? Grupo II Caches [ valores] Para este problema, use a seguinte informação: cache com bytes de capacidade total; palavra = bytes; política de substituição de blocos do tipo LRU; e a cache está inicialmente vazia. de
[ val] a) Considere a hipótese de desenhar uma cache associativa de vias com blocos de palavras. Preencha a tabela que se segue, admitindo a sequência de endereços decimais nela indicada (de cima para baixo). Os endereços são de bytes. No caso de existir um miss, coloque um X na coluna adequada. No caso de haver um hit, indique o tipo de localidade usada para justificar o hit (temporal ou espacial). Se achar preferível, preencha em primeiro lugar a tabela da alínea c) deste problema. Ender. de leitura (byte) Tipo de miss Localidade no hit Decimal Binário Obrigat. Conflito Capacidade Temporal Espacial [ val] b) Qual é o miss rate no acesso a esta cache? E qual é o tempo médio de acesso ao sistema de memória em que a cache se inesere (apenas existe esta cache no nível, e não existem níveis superiores de caches), se o hit time no acesso à cache for de ciclos de relógio e se o acesso à memória levar ciclos de relógio? [ val] c) Mostre o estado final da cache, indicando na tabela que se segue os endereços dos bytes de início de cada palavra em cada bloco da cache. Endereço de memória do byte de início das palavras guardadas am cada bloco Índice Palavra Palavra de
Grupo III Escalonamento estático e dinâmico [ valores] O código MIPS que se segue calcula a expressão E = A*B + C*D em vírgula flutuante (FP), tendo os endereços de A, B, C D e E sido previamente guardados nos registos R, R, R, R e R, respectivamente. L.D F, (R) L.D F, (R) MUL.D F, F, F L.D F, (R) L.D F, (R) MUL.D F, F, F ADD.D F, F, F S.D F, (R) [val] a) Calcule o número de ciclos de relógio necessários à execução deste código (mais exactamente, o número de ciclos entre a emissão da primeira instrução e a emissão da última, inclusivé) admitindo um pipeline simples com execução em ordem e sem bypass (forwarding), e com emissão simples. O caminho de dados (datapath) inclui uma unidade de load/store, um somador FP e um multiplicador FP. Admita as seguintes latências, em ciclos de relógio: load =, multiplicação FP = e adição FP =. O Write-back (WB) para os registos FP demora ciclo. Admita que todas as unidades funcionais são completamente pipelined, e que não existem conflitos no WB. Admita ainda que todas as instruções antes do primeiro Load já terminaram as suas execuções, e que existe uma FIFO com capacidade infinita para guardar as instruções no andar de emissão. Use a tabela que se segue. Ciclo Instrução descodificada L.D F,(R) de
[val] b) Reordene as instruções dadas (escalonamento estático) por forma a minimizar o tempo de execução no mesmo pipeline anterior. Mostre a nova sequência e o número de ciclos de relógio de execução das instruções reordenadas. Use a tabela que se segue. Ciclo Instrução descodificada [val] c) Admita agora que o pipeline anterior foi aumentado com um dispositivo de escalonamento dinâmico especulativo. A emissão continua a ser simples. Ignore conflitos estruturais, com excepção da descodificação, que continua a exigir um ciclo por instrução. Mostre como é agora feita a execução do código original da alínea a), e quantos ciclos são necessários para a sua execução. Compare com os resultados obtidos por optimização com o escalonamento estático da alínea b). Será que o código optimizado com escalonamento estático executaria mais rapidamente nesta máquina, que possui escalonamento dinâmico? Porquê? de
Use a tabela que se segue. Ciclo Instrução descodificada Grupo IV Memória virtual [ valores] Admita o seguinte esquema de memória virtual: (i) endereços virtuais de bits (ii) páginas com kbytes (iii) memória física com Mbytes (iv) TLB com mapeamentro directo e entradas, com uma página física por entrada (v) Cada TLB possui um bit de Validade e um bit Dirty. [val] Determine o tamanho de cada entrada (PTE) do TLB em número de bits, se usar o número mínimo de bits de endereço físico. Desenhe esquematicamente a estrutura do TLB. de