Gabarito da LC2 1) a) Os elementos básicos são: unidade de controle, unidade lógica aritmética (ULA), memória e dispositivos de entrada e saída (I/O); b) São 4 elementos principais: processador, memória primária e secundária, barramento e dispositivos de I/O. Processador: Executar os programas armazenados na memória principal, buscando cada instrução na mesma, decodificando e executando; Memórias: Armazenamento de dados e programas, permitindo o processamento automático dos mesmos; Dispositivos de I/O: Possibilitar o interfaceamento entre o homem e a máquina; Barramento: Permitir a comunicação entre os dispositivos citados acima. 2) O código escrito para máquina Mi em nível 0 já é o código em nível mais baixo que pode existir, assim, ele pode ser executado diretamente na máquina real. Caso o nível fosse maior que 0, então seriam necessários procedimentos de traduções ou interpretações. 3) Linguagens de baixo nível possuem funções muito simples e limitadas, tornando o processo de programação tedioso e trabalhoso. Agrande vantagem de linguagens de alto nível é possibilitar um nível de abstração maior, poupando-nos de termos que nos preocupar com detalhes referentes a tecnologia específica de cada componente, permitindo nos preocupar com a lógica da solução do problema em si. 4) Esse nível define aspectos externos dos componentes de uma máquina para possibilitar que estes sejam usados por um programador de linguagem de máquina. Trata-se do nível mais baixo em que a interface de um componente pode ser exibido para quem deseja fazer uso do mesmo. 5) a) Barramento é um caminho físico de condutor elétrico com a função de interconectar os demais componentes do computador; b) Normalmente barramentos são compartilhados entre vários dispositivos, como o dispositivo que mais “conversa” com o processador é a memória, estes dois tentem a usar mais o barramento, criando um barramento dedicado para apenas tais componentes pode-se ganhar bastante em desempenho, já que estes não concorreriam com outros dispositivos para comunicarem-se. 6) São basicamente 4 registradores: PC, IR, MAR e MBR. PC (Program Counter): Registrador responsável por guardar o endereço da próxima instrução a ser executada. IR (Instruction Register): Este guarda o conteúdo da instrução a ser decodificada e executada; MAR (Memory Address Register): Registrador que guarda o endereço de uma informação que deseja-se obter da memória principal, ou que deseja-se gravar na mesma; MBR (Memory Buffer Register): Registrador que guarda o dado em si do que se está obtendo da memória principal ou deseja-se gravar na mesma. 7) O nível 1 trata-se de componentes um pouco mais complexos que são feitos com circuitos combinacionais criados no nível 0. Nesse nível pode-se ver uma ULA, Unidade de controle, conjunto de registradores e caminho de dados. No nível 2, também chamado de nível ISA, pode-se distinguir os circuitos já encapsulados em um chip fisicamente e disponível para serem programados por programadores em nível de máquina. Assim, nesse nível especificase quais instruções são suportadas pelo chip, ou seja, sua interface em linguagem mais baixa com o mundo externo. 8) Tal programa em nível alto pode ser interpretado por uma abstração de uma máquina localizada em um nível inferior à linguagem que se está programando. Outra forma que poder executar esse programa consiste em compilar ele para uma linguagem de baixo nível (tradução), posteriormente usar um montador para converter as instruções nessa linguagem para binário e finalmente usar um ligador para resolver dependências de bibliotecas externas que foram usadas nesse programa. 9) A arquitetura RISC (Reduced Instrucion Set Computer) consiste em uma arquitetura que adota a abordagem simplista, fazendo uso de instruções mais simples, porém mais rápidas de serem executadas. Nessa arquitetura também pode encontrar-se um número grande de registradores. Já na arquitetura CISC (Complex Instruction Set Computer) adota-se uma abordagem de construir instruções mais poderosas, assim, existem várias instruções que facilitam e muito um programador que esteja programando para uma máquina dessa arquitetura. O ponto negativo é que cada instrução dessa pode demorar mais do que uma instrução RISC para ser executada. 10) Porque o ASSEMBLY possibilita uma programação mais próxima da máquina, fazendo uso comandos mais simples e abstrações mais limitadas. Já o C possui a capacidade de esconder do usuários vários detalhes possibilitando, por exemplo, que ele faça uso de variáveis para guardar seus dados e não preocupe-se com registradores e coisas do tipo. 11) O hardware é o componente físico da máquina, é aquilo que pode ser palpável ao ser humano, composto de silício e condutores elétricos. O software trata-se da propriedade intelectual que foi inserida dentro da máquina, corresponde à lógica que veio do pensamento humano e foi transcrita de forma digital para ser armazenada no hardware. A CPU compõe um chip em que dentro ele existe uma unidade lógica aritmética, registradores, unidade de controle, caminho de dados e memória cache. A CPU é um chip que proporciona uma solução completa para que se possa executar programas. A ULA é um componente que está inserido dentro da CPU, a ULA é composta de um circuito combinacional que executa ações como: somar, subtrair, inverter, deslocar, etc. O clock é um pulso elétrico que fica indo de 1 para 0 e 0 para 1 intermitentemente. Esse proporciona uma noção de tempo sendo passado no circuito, assim tudo é propagado no circuito baseado no clock. 12) É dividido basicamente em dois ciclos: cliclo de busca (fetch cycle) e ciclo de execução (execution cycle). No ciclo de busca a unidade de controle verifica o valor de PC e carrega a instrução em si apontada por ele no registrador de instruções (IR). Após isso ele incrementa o valor de PC. O ciclo de execução consiste em decodificar o valor que encontra-se em IR para determinar qual operação será realizada qual tipo de informação está no operando. Caso o operando seja um endereço de memória, essa fase também é responsável por obter o dado apontado por tal endereço e o armazenar em algum registrador. Após isso, a unidade de controle sinaliza para a ULA executar o necessário para execução da instrução. 13) Sim, como no ciclo de instrução existem atividades que podem ser feitas de forma semiindependente, é possível desenvolver um pequeno hardware que seja dedicado a cada uma dessas pequenas tarefas, assim, tornando o processo iterativo e semi-paralelo. Esse processo chama-se de pipeline.Com o uso desse mecanismo é possível ganhar bastante em desempenho. 14) 15)