ARQUITECTURA DE COMPUTADORES CAPÍTULO IV AULA I Abril 2014 Ricardo Mendão Silva [email protected] Índice • Processadores • • • • Intro Overview Convenção de desenho lógico Construir um datapath Ricardo Mendão Silva [email protected] Processadores Introdução • Como introduzido no capitulo I, a performance de um computador assenta em três factores: • Número de instruções por programa • Tempo do ciclo de relógio • Número de ciclos de relógio por instrução (CPI) • No capítulo II foi demonstrado que os compiladores juntamente com a ISA (Instruction Set Architecture) determinam o número de instruções por programa. Ricardo Mendão Silva [email protected] Processadores Introdução • Porém, o número de ciclos por instrução e o tempo de cada ciclo de relógio continuam a ser definidos pela implementação do processador. • Este capítulo aborda precisamente a construção e modo de funcionamento de um processador, focando-se na arquitetura MIPS. • Iremos construir um datapath e uma unidade de controlo. • Abordar abstracismo, paralelismo e pipelining Ricardo Mendão Silva [email protected] Processadores Overview Ricardo Mendão Silva [email protected] Processadores Overview • Modelo implícito de praticamente todas as ISAs. • PC – Program Counter: instrução. Fetch PC Descodifica • Ordem total: Next PC = PC++, até ordem contrária. Lê os inputs Executa Escreve os output • Ordem e chamadas ao disco definem computação. Next PC Ricardo Mendão Silva [email protected] Processadores Overview • Em geral, todas as ações de execução implícitas no modelo sequencial seguem a mesma formula, sejam. • • • referências de memória, aritmética-lógica, ou condicionais (branches). • Por exemplo, todas as classes de instruções, exceto os jumps utilizam a ALU. • • • cálculos de memória; aritmética; comparações. Ricardo Mendão Silva [email protected] Processadores Overview • Seguidamente à execução, então cada tipo tem um seguimento diferente. • Uma operação de memória pode ter que aceder à memória para ler ou escrever. • Um cálculo aritmético irá escrever o resultado num dos registos. • Uma comparação poderá forçar a alterar o endereço da próxima instrução a ser executada. Ricardo Mendão Silva [email protected] Processadores Overview • Esquema básico de um processador. Ricardo Mendão Silva [email protected] Processadores Overview • Apesar da simplicidade, as ligações entre componentes não podem ser diretamente ligadas. • É necessário um multiplexer para determinar o output com base no selector. • Para além disso, também deverá existir um distinção entre leitura e escrita em memória. Ricardo Mendão Silva [email protected] Processadores Overview • Esquema completo de um processador. MUX: 1- Decide se a próxima instrução é a seguinte ou se existe um branch que força o salto para PC + 4. 1 2 3 2- Decide se guarda num registo o resultado de uma operação aritmética proveniente da ALU ou um valor carregado de memória por um load. 3- Decide se o segundo input da ALU é um operando aritmético ou o offset de uma instrução de load ou store. Ricardo Mendão Silva [email protected] Processadores Convenção de desenho lógico • A figura anterior mostra-nos diferentes componentes de diferentes naturezas, tais como: • Elementos combinacionais – elementos que para cada conjunto de entrada determinam sempre o mesmo valor de saída. Ex: ALU. • Elementos de estado – elementos que mantêm determinado estado guardado num elemento de memória interno. Ex: instruções, registos, memórias. • Por norma os elementos de estado recebem dois parâmetros: • Conteúdo a escrever. • Relógio que determina o momento de escrita. • Retornam o último valor escrito. Ricardo Mendão Silva [email protected] Processadores Convenção de desenho lógico • Todo e qualquer processo deverá ser controlado por uma metodologia de relógio. • Essa metodologia é responsável por determinar quando devem ocorrer escritas e quando devem ocorrer leituras. • Deste modo evita-se que se esteja a ler valores antigos e/ou errados. • Deste modo a metodologia de relógio define a validade e o estado dos dados face a determinado relógio. Ricardo Mendão Silva [email protected] Processadores Convenção de desenho lógico • Em MIPS utiliza-se uma metodologia edgetriggered clocking. • Qualquer passagem de estado ocorre nas passagens entre estados do ciclo de relógio: • Alto para baixo e vice-versa. • Num ciclo é possível ler o elemento, operar sobre o mesmo e reescrever o seu valor. Ricardo Mendão Silva [email protected] Processadores Construir um datapath • Um datapath é constituído por um conjunto de elementos. • Cada elemento do datapath é responsável por conter ou operar sobre dados. • Em MIPS os elementos de datapath são: • • • • • Ricardo Mendão Silva As instruções; Os registos; A ALU; Os componentes de adição; A memória de dados. [email protected] Processadores Construir um datapath 1º Passo: • Obter um elemento que contenha as instruções a serem executadas. • Utilizar um registo que guarde o endereço da instrução em execução (Program Counter). • Utilizar um componente de adição que permita iterar as instruções. Ricardo Mendão Silva [email protected] Processadores Construir um datapath 2º Passo (Considere-se uma instrução aritmética com o formato R-Type: add $t0,$t1,$t2): • Utilizar um quarto elemento, nomeadamente um ficheiro de registos que contenha os 32 registos, acedidos diretamente através do número correspondente. • Utilizar a ALU como um quinto elemento, responsável por receber os dois operandos e devolver o resultado da operação. Ricardo Mendão Silva [email protected] Processadores Construir um datapath 3º Passo (Considere-se uma instrução de load ou store com o formato I-Type: lw $t0,offset($t2) ou sw $t0, offset ($t2): • Como vimos nas aulas práticas, estas instruções somam o offset de 16 bits à base $t2 para obter o endereço de memória desejado. • No load o valor de offset($t2) é escrito no registo $t0, enquanto que no store o valor do registo $t0 é lido e escrito no endereço de offset($t2). • Como tal, necessitamos do ficheiro de registos e da ALU, como no caso anterior. • Para além disso vai ser necessário: • • Ricardo Mendão Silva um conversor de 16 bits para 32 bits, de modo a converter o offset. um elemento de memória com capacidade de leitura e escrita. [email protected] Processadores Construir um datapath 3º Passo (Considere-se uma instrução de load ou store com o formato I-Type: lw $t0,offset($t2) ou sw $t0, offset ($t2): • Para além do ficheiro de registos e da ALU vai ser necessário: • um conversor de 16 bits para 32 bits, de modo a extender o offset. • um elemento de memória com capacidade de leitura e escrita. Ricardo Mendão Silva [email protected] Processadores Construir um datapath 4º Passo (Considere-se uma instrução de branche beq $t0,$t1,loop. • As labels ou etiquetas são identificadores de 16 bits. • As mesmas utilizam-se para calcular o branch target address. • O branch target address é o resultado da soma da label, após convertida para 32 bits e multiplicada por 4, com o PC da instrução seguinte ao branch. Ricardo Mendão Silva [email protected] Processadores Construir um datapath Juntando todos os elementos do datapath: Ricardo Mendão Silva [email protected] Dúvidas e Questões Ricardo Mendão Silva Abril 2014 [email protected] Ricardo Mendão Silva [email protected]