quarta-feira, 29 de agosto de 2018

Aula 06 - Arquitetura de Computadores - 29/08





Na aula do dia 29 de agosto, o conceito, aplicação e exemplos da Hierarquia de Memória, seu princípio de localidade, que pode ser temporal ou espacial. A hierarquia Hit e Miss, que ocorrem respectivamente quando o processador encontra a informação, e por fim, quando o processador não a encontra. Foi comentado sobre o Cache, que se trata de uma memória de acesso rápido. Em seguida vimos sobre a memória virtual e os dispositivos de entradas e saídas (I/O), suas características, armazenamento. Compreendemos sobre memória flash, SSD, e também, SSHD. Sem deixar de ver sobre a interconexão de dispositivos, os tipos de barramento, a gerência das entradas e saídas.

Tipos de memória:

A memória cache, que é caracterizada por ser uma memória de acesso rápido, que habilita dados ou instruções que o processador informou. Este tipo de memória entrou na informática quando a memória RAM parou de acompanhar o avanço dos processadores.  Sua capacidade de armazenamento é pequena, mas compensa em velocidade.
Memória RAM, é a sigla de Random Access Memory, é conceituada por não ser um tanto lenta, porém ela permite leitura, gravação e até mesmo, regravação dos dados. Ela é divida entre DRAM que é a memória dinâmica, tendo capacidade de armazenamento. A do tipo SRAM, que é do tipo estática, com mais velocidade e com preço por MB mais alto.
A memória ROM, Read Only Memory, é uma memória produzida para realizar somente leitura de informações que são gravadas uma única vez, não podendo ser apagadas e nem alteradas, somente se pode acessar os dados. Dentre a ROM, podemos citar PROM (Programmable Read Only Memory), EPROM (Erasable Programmable Read Only Memory), EAROM (Electrically Alterable Read Only Memory) e memórias flash.

Falhas de cache

As falhas que podem ocorrer em um cache são:

  • Compulsórias: sendo as falhas que são causadas pelo primeiro acesso a um bloco que nunca permaneceu no cache.
  • Capacidade: são as falhas causadas quando a cache não tem capacidade em reter todos os blocos que são necessários durante a execução de um programa, assim, acontece quando os blocos são substituídos e depois recuperados
  • Conflito: esse tipo de falha ocorre quando vários blocos disputam a mesma "comunidade", assim ocorrendo conflitos.


O DMA, quer dizer Acesso Direto à Memória, e é um recurso da placa mãe que possibilita que os periféricos tenham o acesso direto à memória RAM, não sobrecarregarndo o processador. Com este acesso, as transferências de dados não tem a intervenção da CP, assim, a transferência, que ocorre em canais específicos (0 a 7), se dissipa muito mais rápido.

O RAID, Conjunto Redundante de Discos Independentes, foi desenvolvido para melhorar o desempenho e também, a segurança dos discos rígidos existentes em um PC qualquer, por meio do uso de HDs extras.
Este sistema,  é utilizado em servidores que consiste em um conjunto de dois ou mais discos rígidos. Sendo que este método possui duas definições básicos:
  • (RAID 0), tornar o sistema de disco mais rápido, com o uso de Divisão de dados;
  • (RAID 1), ou o sistema de disco fica mais seguro, sendo espelhado.




Referências:
<http://www.batebyte.pr.gov.br/modules/conteudo/conteudo.php?conteudo=1839>
<http://www.ufjf.br/eduardo_barrere/files/2013/03/Aula07.pdf>
<https://www.intel.com.br/content/www/br/pt/support/articles/000007456/network-and-i-o/ethernet-products.html>
< https://canaltech.com.br/software/O-que-e-RAID/>

quarta-feira, 22 de agosto de 2018

Aula 05 - Arquitetura de Computadores - 22/08



Caracterização da arquitetura MIPS e da arquitetura de Von Neumann: 

A arquitetura de Von Neumann  é um tipo de arquitetura de computador que é conceituada por possibilitar que uma máquina digital armazene os seus programas no mesmo espaço de memória que os dados estarão, deste modo podendo manipular certos programas.
Esta arquitetura é constituída por três sistemas principais: a CPU, a memória principal e o sistema de entrada/saída.
A CPU que é caracterizada por executar os programas estão na memória principal, buscando, examinando e executando as instruções em sequência. A CPU é composta por um UC, que funciona buscando e definindo o tipo de instrução, a ULA, que efetua as operações aritméticas (portas lógicas), os registradores, sendo memórias de armazenamento de resultados temporários, e por fim, um PC, que indica qual será a próxima instrução que a CPU irá executar.  
 A arquitetura MIPS é caracterizada por se basear em registrador, utilizando somente os registradores para realizar as operações lógicas e também, aritméticas.
As instruções são compostas por um conjunto de 32 registradores que realizam as operações necessárias. Sendo, que alguns destes não são utilizados por programação, mas sim para armazenamento de certas informações úteis. 

Compreensão sobre processador monociclo, multiciclo e pipeline:

Os processadores por Monociclo são conceituados por funcionarem em somente um clock, que por sinal, é tão grande que guarda todas as instruções que devem ser consideradas. Assim, a instrução começa a ser executada em uma transição ativa do clock e se completa na próxima transição que o sinal de clock esta ativo. Portanto, todas as instruções irão utilizar o mesmo tempo para serem executadas, e este tempo vai ser equivalente ao tempo que foi gasto na execução da instrução que mais demorou, sendo assim, obrigatoriamente igual ao ciclo do clock.
Já os processadores Multiciclo gastam um período do clock para cada passo de execução. O multiciclo permite que uma unidade seja utilizada mais de uma vez por instrução, uma vez que ela está sendo usada em ciclos diferentes do clock. Isto pode auxiliar na reduzução da quantidade de hardware necessário à implementação. Ou seja, uma vantagem da implementação  do multiciclo é a possibilidade de fazer com que instruções sejam executadas em quantidades diferentes de períodos do clock, capacitando de compartilhar unidades funcionais dentro do espaço de tempo necessário à execução de uma única instrução.
O processador Pipeline é uma técnica que consiste em fazer a divisão do processador em vários estágios diferentes. Assim que uma instrução é carregada, ela deve passar pelo primeiro estágio, que executa durante apenas um ciclo de clock, seguindo para o segundo estágio. A instrução segue sendo processada sucessivamente pelo segundo, terceiro, quarto e quinto estágios do processador. Esta técnica conta com a grande vantagem de que o estágio não vai ficar esperando a instrução passar por todos os estágios para assim caregar a próxima, assim, a nova instrução vai carregar assim que executa no primeiro estágio, após o primeiro pulso do clock.

Imagem: Funcionamento do pipeline.



Referências:

<http://roboliv.re/uploads/documentos/arquiteturas-de-computadores/vonNeumann-2011-08-08_1_1343264233.pdf>

<https://oacsi.wordpress.com/2010/04/02/arquitetura-mips/>

<http://www2.ic.uff.br/~bazilio/cursos/arqcomp/cpu-multiciclo.pdf>

<https://www.hardware.com.br/termos/pipeline>


quarta-feira, 15 de agosto de 2018

Aula 04 - Arquitetura de Computadores - 15/08


Técnicas de endereçamento no MIPS + resumo da aula


O MIPS (Microprocessador sem estágios intertravados de pipeline) é uma arquitetura de microprocessadores desenvolvida pela MIPS Computer Systems. Seu funcionamento se baseaia na utilização de registrador. As suas instruções utilizam um conjunto de 32 registradores para poder concluir as operações necessárias.
Modos de Endereçamento na arquitetura do MIPS:
  • ·         A Registrador: Tem seu funcionamento por representação do dado passando o nome do registrador no qual ele está contido. Ex: add $r1, $r2, $r2.
  • ·         Base-Deslocamento: Caracteriza-se por representar o dado passando o endereço de um vetor no qual ele está e a quantidade de bits a serem deslocados. Ex: lw $r5, 4($r65).
  • ·         Imediato: Funciona de modo que passe o dado e escreva o seu valor imediato. Ex: addi $r1, $r2, 456.
  • ·         Relativo ao PC: O dado é passado e descreve-se o seu valor relativo ao endereço da instrução atual. Ex: beq $r1, $r2, DESTINO.
  • ·         Absoluto: Funciona com a informação do valor no seu endereço (pseudo-) absoluto. Ex: j DESTINO.

Além de conhecermos sobre as técnicas de endereço no MIPS, foi retomado alguns assuntos que pesquisamos na última aula, como por exemplo conceito básico de montadores e sua função de gerar um arquivo objeto, função dos lgadores, carregadores, compiladores e interpretadores.
Entendemos sobre a diferença entre as macros e as sub-rotinas. As macros que são presentes na linguagem de montagem. E as sub-rontinas que são utilizadas em linguagens de mais alto nível.
Aprendemos sobre instruções, mais precisamente a linguagem de máquina ISA em processadores MIPS. Nesse assunto foi abordado as operações básicas, entre elas os tipos de operações do computador (matemáticas, de movimentação de dados, entrada-saída e de controle) , vimos sobre os operandos, que podem ser maior de 32 bits ou os sw, o formato das instruções, e por fim, as instruções de desvios que na linguagem de montagem são de dois tipos BEQ e BNE.

Refêrencias:
< https://www.embarcados.com.br/arquitetura-de-conjunto-de-instrucoes-mips/>
< https://pt.scribd.com/document/250159831/01-MIPS-Conjunto-e-Formato-de-Instrucoes-Modos-de-Enderecamento>

quarta-feira, 8 de agosto de 2018

Aula 03 - Arquitetura de Computadores - 08/08

Montadores, Ligadores, Carregadores, Computadores e Interpretadores:

     Um montador, também conhecido como assembler, trata-se de exercer a função de montagem de um programa em linguagem de máquina a partir da linguagem de montagem. Nesse processo, o código fonte, que são as instruções  do código feito pelo próprio programador, é analisado e após isso, ocorre a tradução deste código, gerando por fim, o código que a máquina ira executar, também conhecido como código objeto. Na fase das instruções, podemos analisar que nem todas as instruções são instruções básicas, algumas são caracterizadas por pseudo instruções, que são as combinações de mais de uma instrução citada.

    Os ligadores (linker), são caracterizados como programas especiais que recem um ou mais arquivo objeto, assim gerando na saída, um programa que seja executável em linguagem de máquina. Sendo assim, a função principal do ligador é juntar procedimentos traduzidos separadamente e fazer a ligação de uns com os outros para assim executar o programa.

    Carregadores (loaders), para que ocorra a execução de um programa é necessário ter um carregador, que consistem em programas responsáveis pelo transporte de vários segmentos de memória. Tem como funções principais, verificar se o programa existe, copiar o código para  a memória, e também, ajustar os endereços do código.

     Compiladores, são conhecidos como programas que recebem arquivos de texto que contem a escrita em linguagem e geram um programa em linguagem de montagem, ou também, um arquivo objeto. Eles são responsáveis por traduzir um programa em alto nível para os montadores, ligadores e carregadores.

      E por fim, os interpretadores, que recebem como entrada arquivos de texto com programas em linguagem assembly, ou linguagem de alto nível, ou ainda, arquivos binários com instruções de máquina, e após receberem, executam estes arquivos imediatamente. Os interpretadores percorrem estes programas, a partir do ponto de entrada, assim, executando cada comando. Sendo assim, que processadores são interpretadores implementados em um hardware.


Imagem: Execução de um programa

Referências:



<http://producao.virtual.ufpb.br/books/camyle/introducao-a-computacao-livro/livro/livro.chunked/ch05s03.html>



sexta-feira, 3 de agosto de 2018

Aula 02 - Arquitetura de Computadores - 01/08

Testes de Benchmark, desempenho:

      Na aula do dia 01/08, foram realizados testes de benchmark, no qual podemos perceber e analisar algumas informações sobre o computador.
     No primeiro teste, é perceptível analisar diversas informações a respeito da energia da máquina, uma delas é o nível de consumo de desgaste da bateria, que no meu caso está com 15%, já o desempenho de meu colega Augusto Plack, está com 42%, ou seja, um pouco mais degastada.



    















    








    
     No segundo teste, é evidenciado as informações sobre os processadores de ambas as máquinas, podendo ver suas características, como por exemplo, o processador que está alocado em minha máquina é do tipo Mobile DualCore Intel Core i3, com velocidade de clock de 1700 MHz, e demais dados sobre a CPU. Já o processador de meu colega Augusto Plack é um Mobile DualCoreIntel Core i7, com velocidade de clock de 2000 MHz.
    Conhecendo que a velocidade de clock pode ser definida como a frequência pela qual o processador irá executar uma determinada tarefa em um determinado período de tempo, assim pode-se concluir que conforme uma maior capacidade de clock, melhor será o desempenho e assim, sua velocidade.








    

















   No terceiro teste, verificamos informações sobre o Chipset, na qual são imensamente importantes para um computador, perdendo importância somente para processador e memória, ou seja, diversos circuitos integrados que se alocam na placa-mãe, tendo por finalidade controlar os barramentos (PCI, AGP e o antigo ISA).
    O Chipset está diretamente associado ao clock do processador da máquina. Se o clock externo do processador ter um valor maior de barramento que o chipset possa suportar, não será realizável um bom desempenho do mesmo.

  
















     No quarto teste, fizemos a verificação de estabilidade de ambas os notebooks, observando diversas informações, podendo citar: stress CPU, stress do cache, stress da PPU, os clocks do sistema, entre outros:







  















   No quinto teste, foram visualizados e comparados os dados de Cache e Memória de ambos os notebooks, realizando o teste da memória principal e das memórias cache L1, L2 e L3. Concluindo que os notebooks tem uma certa diferença nas funções de read, write, copy e latency:
  




    

































    O último teste foi o que demonstra as características da unidade de processamento gráfico (GPU) dos dois notebooks, observando grandes diferença entre os mesmos percebemos que um possui placa de vídeo integrada "onboard' a placa mãe, e o outro possui uma placa de vídeo "onboard".








































Referências:
<https://www.clubedohardware.com.br/forums/topic/169282-definindo-mem%C3%B3ria-cache/>
<https://www.tecmundo.com.br/memoria/1402-o-que-e-chipset-.htm>
<http://blog.maxieduca.com.br/memoria-computador/>