Apresentação sobre Microarquitetura, desenvolvida por Lincoln, Lívia, Vinícius e Walter para a aula de Arquitetura e Organização de Computadores, Professor Bessa, Centro de Ensino Superior de Juiz de Fora.
2. 1. Introdução
É o nível da linguagem de máquina;
Tem como função implementar o nível ISA;
A função dos microprogramas é, por meio de suas
microinstruções, interpretar e traduzir as instruções
que lhe são submetidas pelo ISA;
Deve acessar e controlar todos os recursos de
hardware como registradores, barramentos, ULAs,
memórias, clocks e outros.
3. 1. Introdução
8 a 32 registradores, formando uma memória local e
um circuito ULA, que executa operações aritméticas
simples;
Consiste em selecionar um ou dois registradores, para
que a ULA realize operações e armazene o resultado
em algum registrador;
Nem todas as máquinas possuem este nível, as
instruções do nível imediatamente superior são
diretamente executadas pelo hardware.
4. 2. Microprograma
Função: buscar, examinar e executar instruções uma por
uma, usando o caminho de dados para fazê-lo.
No caso de uma função ADD (SOME), a instrução seria
buscada, seus operandos localizados e trazidos para dentro
do registrador, a soma seria calculada pela ALU e, por fim, o
resultado seria enviado de volta ao lugar que pertence.
Em máquinas com controle incorporado, ocorreriam etapas
semelhantes, sem um programa explícito armazenado.
5. 3. Microinstruções
Comando que controla o fluxo de dados e o
sequenciamento de instruções de execução em um
processador;
Faz com que o hardware funcione corretamente;
É único para cada computador;
Compostas apenas por sinais de controle;
Executado por um dispositivo chamado sequenciador;
6. 3. Microinstruções
Juntamente com os demais circuitos de hardware, compõe a
microarquitetura;
É geralmente pequeno, em torno de duas a três dezenas, sendo
que a maior parte está relacionada à movimentação de dados de
uma parte da máquina para outra ou a realização de testes
simples.
Projetos do tipo horizontal fazem uso de um número relativamente
pequeno de microinstruções largas;
Já os projetos do tipo vertical, muitas microinstruções estreitas.
7. 4. Notação
MAL (Micro Assembly Language):
SP = SP+1; rd
MDR = SP
MD = H + SP
MDR = SP + MDR
H = H − MDR
SP = SP+1; rw
SP = SP+1; fetch
goto label
Z = TOS
N = TOS
if (Z) goto L1; else goto L2
Z=TOS; if (Z) goto L1; else goto L2
goto (MBR or value) => goto (MBR)
9. 5. Projetos do nível da
microarquitetura
5.1 Características conflitantes:
Velocidade;
Custo;
Facilidade de uso;
Confiabilidade;
Consumo de energia;
Tamanho físico.
10. 5. Projetos do nível da
microarquitetura
5.2 Velocidade X Custo:
Três metodologias básicas para melhorar a velocidade
de execução de instruções:
1. Reduzir o número de ciclos de clock;
2. Simplificar a organização da máquina;
3. Sobrepor à execução das instruções.
11. 5. Projetos do nível da
microarquitetura
5.2 Velocidade X Custo:
O número de ciclos de clock gastos na execução de
um conjunto de operações é conhecido como
comprimento do caminho;
A velocidade é a metade do problema, o custo é a
outra metade;
Um dos fatores fundamentais para a determinação da
velocidade do clock é a quantidade de trabalho a ser
executado em cada ciclo de clock.
12. 5. Projetos do nível da
microarquitetura
5.3 Redução do comprimento do caminho de
execução:
5.3.1 União do loop de interrupção com o microcódigo:
A ideia de sobrepor o início da execução de uma instrução
com a execução de outra pode ser melhorada;
A microinstrução correspondente ao loop principal pode ser
deslocado para o final da sequência de microinstruções
corrente, com o desvio correspondente a decodificação da
instrução replicado por diversos lugares.
13. 5. Projetos do nível da
microarquitetura
5.3 Redução do comprimento do caminho de
execução:
5.3.2 Unidade para busca de instruções:
Se determinada instrução tiver outros campos além do
código de operação, cada um dos campos precisa ser
explicitamente buscado na memória, 1 byte de cada vez.
A busca e montagem do operando ocupam a UAL por, no
mínimo, um ciclo de clock por byte, pois há necessidade de
incrementar o PC a cada novo byte buscado da memória.
14. 5. Projetos do nível da
microarquitetura
5.3 Redução do comprimento do caminho de
execução:
5.3.2 Pipeline:
Três registradores adicionais (latches), um para cada
barramento; São escritos a cada novo ciclo; Eles dividem o
caminho de dados em partes distintas e agora podem
operar independentemente uma das outras.
Objetivos: 1. Aumentar a velocidade do clock; 2. Usar todas
as partes do caminho de dados durante cada ciclo.
15. 6. Estudos de performance
Quatro estudiosos americanos propuseram uma
interface altamente portável para aplicações
embarcadas. Uma das principais dificuldades
encontradas em um sistema deste tipo é o fato de que a
plataforma de hardware é bastante específica e voltada
para a aplicação em questão.
Uma das estratégias para resolver este problema é o
uso de interfaces chamadas de sistema como: POSIX,
WIN32 e MOSI. Outras duas são: máquinas virtuais e
abstração de hardware.
16. 6. Estudos de performance
Máquinas virtuais: oferecem um bom nível de
portabilidade mas acarretam um grande overhead de
processamento e memória, o que restringe o uso em
sistemas embarcados.
Abstração de hardware (ECOS, LINUX, WINDOWS):
apresentam a tendencia de incorporar características
arquiteturais da plataforma na qual foram concebidas,
o que limita a portabilidade.
17. 6. Estudos de performance
Para obterem o desempenho desejado, utilizaram a
programação orientada a aspectos da
metaprogramação estática, em um ambiente orientado
a objeto.
Também foram utilizados mediadores de hardware, o
que permitiu que o mesmo sistema executasse em
plataformas distintas.
18. 6. Estudos de performance
A análise de domínio utilizada pelo grupo permitiu
atingir o nível de portabilidade desejado. Diversas
variações e semelhanças foram identificadas no
domínio de sistemas operacionais para sistemas
embarcados.
Para garantir a portabilidade, é desejável que essas
características sejam configuráveis no sistema
operacional, o que faz com que este seja adaptável ao
hardware e à aplicação.
19. 6. Estudos de performance
A metodologia de AOSD foi utilizado para realizar
análise de domínio. O AOSD propõe o uso de diversas
técnicas de modelagem e programação para atingir um
alto nível de configurabilidade com overhead de
processamento e memória mínimo.
O resultado desta análise foi um sistema operacional
orientado a aplicação chamado EPOS.
20. 6. Estudos de performance
Na estrutura apresentada, todas as unidades de hardware
dependentes da arquitetura foram abstraídas através de
artefatos denominados de mediadores de hardware.
Estes mediadores exportam toda a funcionalidade
necessária para um n;ivel mais alto do sistema
operacional.
Essas abstrações correspondem a serviços tradicionais
como gerenciamento de memória e processos,
comunicação entre processos, etc.
21. 7. Exemplos
Subconjunto da JVM: iJVM, apenas instruções com inteiros
O microprograma (ROM) busca, decodifica e executa as instruções da IJVM.
Cada instrução é uma função a ser chamada pelo programa principal. O
programa principal é um loop simples, onde este determina a próxima função
chamada, executa a função, determina a próxima função, executa a função, e
assim infinitamente.
As instruções IJVM são curtas, normalmente de um ou dois campos. O
primeiro campo sempre é o OPCODE. O microprograma possui um conjunto
de variáveis, acessadas por todas as funções (estados do computador):
22. 7. Exemplos
Subconjunto da JVM: iJVM, apenas instruções
com inteiros
REM (Registrador de Endereços da Memória): porta de
endereçamento de memória (32 bits);
RDM (Registrador de Dados da Memória): porta de dados
da memória (32 bits), faz leitura e escrita na memória;
PC (Program Counter): indica a posição de memória
(endereço) que contém a próxima instrução a ser
executada;
23. 7. Exemplos
Subconjunto da JVM: iJVM, apenas instruções
com inteiros
MBR (Memory Byte Register): porta de dados da
memória (8 bits), apenas leitura da memória;
SP (Stack Pointer): aponta para o topo da pilha;
LV (Local Variable): aponta para a base das variáveis
locais dentro da pilha;
24. 7. Exemplos
Subconjunto da JVM: iJVM, apenas instruções
com inteiros
CPP (Constant Pool Pointer): aponta para a base da
área de constantes;
TOS;
OPC;
H (Holding Register)
25. 7. Exemplos
Diagrama de blocos completos do MIC-1,
microarquitetura da máquina utilizada como exemplo.