- Aula 2 - O NÍVEL DA MICROARQUITETURA 1. INTRODUÇÃO Este é o nível cuja função é implementar a camada ISA (Instruction Set Architeture). O seu projeto depende da arquitetura do conjunto das instruções a serem implementadas, bem como dos objetivos de custo e performance. Em relação as ISA, a maioria das máquinas RISC, tem instruções muito simples podendo ser executadas em um único ciclo de clock 1 ; por outro lado as máquinas Pentium podem precisar de vários ciclos para executar uma instruções, visto que podem requerer a localização de operandos, leitura e armazenamento de resultados. Assim sendo, é necessário uma nova metodologia para geração de sinais de controle diferente das existentes nas instruções mais simples. 2. MICROARQUITETURA Figura 1 - Níveis A microarquitetura é a descrição de um circuito elétrico de um computador, uma unidade central de processamento ou um processador digital de sinais, que é suficiente para descrever completamente a operação de hardware. 1 Ciclo de Clock são intervalos básicos de tempo nos quais são executadas as operações elementares de uma instrução. 1
Desde 1950 muitos computadores utilizam multiprogramação para implementar seus controles lógicos que decodificam as instruções que executam. O termo microarquitetura foi usado para descrever as unidades que eram controladas pelo microprograma. A microarquitetura está relacionada com a arquitetura do set de instruções (ISA), porém não é a mesma coisa. A microarquitetura de uma máquina é usualmente representada como diagramas que descrevem as interconexões dos diversos elementos da microarquitetura da máquina. Uma microarquitetura é dividida em duas partes: - Operativa - Controle A microarquitetura consiste de uma unidade de controle e de registradores visíveis pelo programador, unidades funcionais como a unidade lógica e Aritmética e quaisquer registradores adicionais necessários à unidade de controle. Uma microarquitetura simples, especialmente se ela incluir microcódigo, pode ser usada para implementar muitos diferentes sets de instruções através da troca do controle de armazenamento. Duas máquinas podem ter a mesma microarquitetura. 2.1. Performance Decisões de projeto a nível de sistema (por exemplo, decidir se periféricos como controladores de memória devem ou não ser incluídos), podem ser consideradas parte do processo de projeto da microarquitetura. Estas decisões envolvem níveis de performance e conectividade destes periféricos. Diferentemente de projeto de arquitetura, onde obter um nível de performance específico é o principal objetivo, o projeto de microarquiteturas se concentra mais em outras restrições. Uma vez que as decisões de projeto da microarquitetura afeta o que vai no sistema, toda atenção se volta para aspectos como: - Área/custo do chip - Consumo de energia - Complexidade da lógica - Aspectos construtivos - Conectividade - Facilidade para debugar - Testabilidade Dada a importância que a microarquitetura têm na performance da máquina, muitos esforços são dispensados no sentido de se obter novas e mais eficientes microarquiteturas. 2.2. Exemplo de Microarquitetura Um exemplo de microarquitetura é a JVM (Máquina Virtual do Java). Para este estudo consideraremos apenas um subconjunto de instruções inteiras da JVM, o IJVM. 2
2.2.1. CARACTERÍSTICAS O microprograma deve ser pequeno, devendo alimentar direta e eficientemente as portas lógicas do hardware. Pode-se considerar que cada instrução do nível ISA é uma função a ser chamada pelo programa principal. O microprograma tem um conjunto de variáveis que pode ser acessadas por todas as funções do computador, conhecidas como estado do computador. Considerações sobre as instruções da IJVM: As instruções são pequenas e muito simples de serem executadas Cada instrução tem poucos campos, em geral 1 ou 2, que têm propósitos específicos O primeiro campo de todas as instruções IJVM é o código de operação (opcode) Muitas instruções têm um campo adicional, que especifica o operando Cada microinstrução segue o modelo de execução conhecido como ciclo de busca/execução. 2.3. Controle da Microarquitetura A maioria das ISAs modernas, em particular os projetos RISC, tem instruções simples que podem ser executadas em um único ciclo de clock As ISAs mais complexas, como a do Pentium, precisam de mais ciclos para executar uma única instrução. Neste caso, faz-se necessário metodologias de sequenciamento de instruções mais otimizados para melhorar a performance da máquina em termos de tempo. 2.4. Caminho dos dados Figura 2 - Barramento Cabe ressaltar que o Microprograma 2 da CPU reside na Unidade de Controle. 2 Programa que executa apenas as instruções definidas pela microarquitetura da máquina. Possui um MPC (PC para o micro-programa e um MIR (IR para o micro-programa) 3
O caminho de dados é a parte do processador que contém a UAL (Unidade Lógica e Aritmética) e todas as suas entradas e saídas: Figura 3 - Caminho dos Dados O caminho de dados contém: Um conjunto de registradores de 32 bits, (PC, SP, MDR...), que só podem ser acessados pelo microprograma; Um barramento B, onde os registradores podem colocar suas informações; Uma UAL, cujas entradas estão ligadas aos barramentos A e B; Um Deslocador alimentado pela saída da UAL e que alimenta o barramento C; O primeiro ciclo (explicito, do caminho de dados, apresentado na figura), pode ser visto como um conjunto de subciclos implícitos. O início do primeiro subciclo é marcado pela transição negativa do clock. 4
Figura 4 - Temporização do caminho dos dados As atividades, junto com sua duração (entre parênteses), que ocorrem durante os subciclos são: - Os sinais de controle são ativados (dw - leia delta w); - O barramento B é carregado a partir dos registradores (dx); - A UAL e o deslocador operam (dy); - O resultado da operação da UAL e do deslocador se propaga através do barramento C em direção aos registradores (dz). O resultado é armazenado nos registradores na transição positiva do próximo clock. É de responsabilidade dos engenheiros de projeto assegurar que essa transição positiva ocorra somente depois de passado o tempo dw+dx+dy+dz. Caso contrário a carga dos registradores não é realizada. 2.5. Microinstruções Para controlar um caminho de dados, como o da figura acima, precisamos de um conjunto de sinais de controle que atuam sobre os componentes do nível da lógica digital. Os valores desses sinais de controle especificam as operações a serem executadas em um ciclo do caminho de dados. A figura abaixo mostra um possível formato para agrupar os bits de controle da arquitetura em 6 grupos, e 36 sinais. 5
Endereço:- contém o endereço da próxima instrução a ser potencialmente ativada; Desvio: determina como a próxima instrução será selecionada; UAL: especifica as funções da UAL e do deslocador; Barramento C: seleciona qual ou quais registradores serão carregados com o valor que estiver no barramento C; Memória: especifica as funções da memória (escrita, leitura ou busca); Barramento B: seleciona a entrada do barramento B. Os 4 bits são suficientes para selecionar um dos 9 registradores que disponibilizará seus dados no barramento B. 2.6. Controle Microprogramado: MIC-1 Para decidir quais dos sinais de controle devem ser habilitados em cada ciclo faz-se necessário a inclusão de um sequenciador em nossa arquitetura. O seqüenciador é responsável pela execução de todos os passos necessários a execução de uma única instrução do nível ISA, que produz dois tipos de informações a cada ciclo: - O estado de cada sinal de controle do sistema. - O endereço da microinstrução que será executada em seguida. A figura 5 mostra o diagrama de blocos detalhado da microarquitetura Mic. O diagrama de blocos tem duas partes: - O caminho de dados, à esquerda; - Seção de controle, à direita. 6
Figura 5 - MIC-1 2.7. Memória de Controle É o item maior e mais importante da parte de controle da máquina Não deve ser confundida com a memória principal (RAM), acessível via MBR e MDR. Não precisa de sinais de leitura/escrita pois é uma memória ROM (só de leitura). Guarda microinstruções, ao invés de instruções do nível ISA. Tem 512 palavras, cada palavra contendo uma instrução de 36 bits. As microinstruções não são executadas seqüencialmente, como as instruções da memória principal. Cada microinstrução especifica explicitamente sua sucessora. O endereço da próxima microinstrução é guardado no registrador MPC (Microprogram Counter). O registrador de dados da memória de controle é chamado MIR (MicroInstruction Register). Sua função é armazenar a microinstrução corrente cujos bits alimentam os sinais de controle que operam o caminho de dados. 2.7.1. OPERAÇÃO No início de cada ciclo (na descida do clock da figura 5) o MIR é carregado com o conteúdo do endereço armazenado no MPC. O tempo de carga do MIR é dw (Lê-se delta w). Os sinais do MIR se propagam pelo caminho de dados, causando, no tempo dx: - o carregamento de 1 dos registradores no barramento B - o carregamento do registrador H 7
- a determinação da função a ser executada pela UAL - estabilização dos dados de entrada da UAL A UAL e o deslocador operam os dados de entrada, durante o tempo dy. As saídas da UAL e do deslocador são propagadas, durante o tempo dz: - a saída do deslocador torna-se disponível e estável no barramento C - os valores de N e Z são salvos em 1 par de flip-flops de 1 bit Na transição positiva do sinal de clock: - os registradores são carregados com o conteúdo do barramento C - os flip-flops N e Z são carregados pela UAL - os registradores MBR e MDR recebem resultados da memória O valor de MPC é atualizado (veja detalhes abaixo) no tempo de nível alto do clock. Volta ao passo 1 e o ciclo se repete até que alguém desligue a máquina. 8