Tópicos Avançados em Sistemas Computacionais: Infraestrutura de Hardware Aula 02 Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia de Computação
POR QUE APRENDER CONCEITOS DE ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES?
Importância da Arquitetura e Organização de Computadores Desempenho é um importante fator de qualidade para tornar os softwares competitivos. Desenvolver SW com bom desempenho requer o entendimento de como um computador funciona: Componentes de um computador Como os componentes interagem entre si Como o software interagem com os componentes Projetistas de SW devem desenvolver aplicações que maximizam o uso eficiente do HW. 3
Componentes de um Sistema Computacional Aplicação Software Hardware Compilador Montador Sistema operacional Repertório de Instruções da Arquitetura Processador Memória Sistema de E/S Datapath & Controle Projeto Digital Projeto de Circuito Transistores Software de sistema Interface Computador Sistemas digitais 4
Hardware de um Sistema Computacional O HW é composto por 5 componentes básicos: Unidade de controle Datapath Memória Dispositivos de entrada Dispositivo de saída Arquitetura de Von Neumann 5
Hardware de um Sistema Computacional Processador (CPU) Unidade de controle: gera todos os sinais de controle interno e externo ao processador. Datapath: caminho que o dado percorre dentro do processador. É o cérebro do sistema computador 6
Hardware de um Sistema Computacional Memória principal Dispositivo que permite armazenamento de dados e instruções. Também chamada de memória RAM. Memória secundária Memória para armazenamento de longa duração de dados e programas 7
Hardware de um Sistema Computacional Dispositivos de entrada São dispositivos que fornecem dados para execução de um programa. Permite a interação usuário-máquina Dispositivos de saída São dispositivos que exibem dados e informações processadas pelo sistema computacional 8
COMO PROJETAR UM SISTEMA COMPUTACIONAL (HARDWARE+SOFTWARE)? 9
Fluxo de Projeto de um Sistema Computacional (Antigo)
Fluxo de Projeto de um Sistema Computacional (Antigo) RTL Sem comunicação Equipes de hardware e software não interagem Problemas que poderiam ser descobertos na fase inicial só aparecem na prototipação Era comum projetistas partirem de uma especificação diretamente para uma implementação RTL
COMO SOLUCIONAR ESSE PROBLEMA? 12
Projeto de um Sistema Computacional Abstração É uma técnica poderosa para atacar a alta complexidade Esconde detalhes desnecessários na fase inicial Quanto mais detalhes, mais baixo o nível de abstração Tempo de implementação aumenta quando o nível de abstração diminui. Requer ferramentas
Nível de Abstração Estrutural Comportamental Algoritmos Transferências entre registros Expressões booleanas Funções de transistores Layout de transistores Células Chip Placa Físico 14
Nível de Abstração RTL Descrição funcional completa Utilizo por ferramentas de sínteses Completamente orientado por clock Precisão de ciclo tanto interno como externo 15
Nível de Abstração TLM Separa computação de comunicação Comunica através de transações Abstrai o handshaking detalhado do sinal, sincronizando as operações através de operações de E/S bloqueantes e nãobloqueantes 16
Fluxo de Síntese 17
Modelagem e Simulação A modelagem e simulação do sistema em nível abstrato é uma etapa cava vez mais importante no desenvolvimento. Modelagem: representação formal de aspectos relevantes do sistema. Simulação: Possibilidade de obter respostas do sistema modelado a estímulos fornecidos. 18
Modelagem Transacional A modelagem em nível de transações (TLM) é uma metodologia alternativa para os primeiros passos do projeto. Um conceito básico em TLM é a separação entre computação e comunicação. Uma transação é a transmissão de um conjunto de informações relevantes ao problema. Não há uma definição precisa do que seja TLM. 19
Fluxo de Projeto de um Sistema Computacional 20
COMO PROJETAR O HARDWARE DE UM SISTEMA COMPUTACIONAL?
Linguagens de Descrição de Hardware Hardware Description Language (HDL) Introduzida nos anos de 1980 Permite modelar, representar e simular projetos de sistemas digitais Concorrência Paralelismo Semântica para valores de sinais no tempo 22
Linguagens de Descrição de Hardware Hardware Description Language (HDL) São usadas extensivamente na indústria para projetos de sistemas digitais. Microprocessadores Componentes digitais São utilizadas também para descrever as características do hardware: Transições de estados Comportamento hierárquicos (sequencias ou concorrentes) Sincronzinação Instruções de alto nível 23
Linguagens de Descrição de Hardware Hardware Description Language (HDL) Maneira mais rápida de descrever hardware Se a descrição do hardware for feita direta o programador só levará 10% do tempo de projeto para descrever. E os outros 90% será utilizado para testar e validar o hardware. Podem ser sintetizada em hardware através de ferramentas de síntese 24
COMO DESCREVER UM HARDWARE? 25
Tipos de HDL
COMO DESCREVER EM NÍVEL DE SISTEMA? 27
Modelagem em C/C++ Alta velocidade de simulação em alto nível de abstração. Não existe noção de tempo no programa C/C++ não modela o paralelismo intrínseco do hardware C/C++ não modela tipos de dados de hardware, bit-wise multivalorados. Problemas com sinais, ou seja, protocolos em sinais 28
Modelagem em SystemC Comunicação de Hardware Sinais, protocolos Noção de tempo Concorrência Módulos de hardware operam em paralelo O hardware é raativo, responde a estímulos e esta em constante iteração com o sistema. Tipos de dados específicos para Hardware 29
Modelagem em SystemC SystemC é indicado para descrição em nível de sistema.
Modelagem em SystemC Modela sistemas em todos os níveis da abstração Modelagem funcional, utilizando vários modelos de computação Modelagem em TLM Modelagem em RTL Criação de modelos de plataformas HW/SW para uso por projetistas de sistemas e desenvolvedores de SW embarcados Testbenches em nível de sistema (usando bibliotecas) Não deve substituir um HDL e nem uma linguagem de modelagem de software. 31