quarta-feira, 16 de novembro de 2011

Número de Operendos das Instruções e sua Localização

(Resenha Capítulo 7)

          Uma das principais características do conjunto de instruções compreensível por um processador é o numero e a localização de seus operandos indicados em uma instrução aritmética ou lógica.
          Uma dos primeiros formatos de instrução projetados possuía quatro operandos, conforme abaixo:


Cod. Op.
Op.1
Op.2
Op.3
End. Prox. Instruc.


          Este formato de instrução (não usado mais) era completo, possuindo a localização de todos os operandos, também trazia a localização da próxima instrução a ser executada. Uma vantagem deste formato de instrução é o fato de dispensar as instruções de desvio incodicional, pois o endereço de desvio consta na instrução. A desvantagem deste formato está na grande quantidade de espaço de espaço em memória que ela ocupa, principalmente por que uma grande quantidade de instruções não precisarem de três operandos.
          Em algumas arquiteturas, as instruções possuem três operandos, dois  operandos-fonte e um operando-destino, como por exemplo em

Cod. Op.
Op.1
Op.2
Op.3

onde Op.1 e Op.2 são os operandos-fonte e Op.3 é  o operando-destino. Um problema neste formato de instrução acontece quando as operações repetem os operandos (Op.2 = Op.3, por exemplo). Isso acontece normalmente quando se deseja incrementar ou decrementar o valor de uma variável.
          Tendo isso em vista, algumas arquiteturas utilizam instruções com apenas dois operandos

Cod. Op.
Op.1
Op.2

onde Op.2 é operando-fonte e também operando-destino.
          Quanto à localização dos operandos especificados por uma instrução, podemos encontrar arquiteturas onde podem ser realizados acessos aos operandos diretamente a partir da memória principal. Por exemplo, nestas arquiteturas podemos ter instruções aritméticas/lógicas tais como:

Cod. Op.
M1
R1
R2

Cod. Op.
M1
M2
R2

Cod. Op.
M1
M2
M3

onde R1 e R2 são registradores e M1,  M2 e  M3 são endereços de locações de memória. Em um outro extremo, existem arquiteturas onde todos os operandos encontram-se apenas em registradores. As instruções aritméticas/lógicas são todas do tipo:

Cod. Op.
R1
R2
R3

Cod. Op.
R1
R2

          A partir do número de operandos explicitamente referenciados e da localização destes operandos, podemos classificar as arquiteturas nos seguintes tipos: 

Arquiteturas memória-memória: as instruções aritméticas/lógicas usam três operandos e todos os operandos podem estar na memória.

Arquiteturas registrador-memória: as instruções aritméticas/lógicas usam dois operandos, sendo que apenas um deles pode residir na memória.
  
Arquiteturas registrador-registrador: as instruções aritméticas/lógicas usam três operandos, todos em registradores. Neste caso, apenas duas instruções acessam diretamente a memória:  LOAD e  STORE. A instrução  LOAD carrega em um registrador um dado armazenado na memória e  instrução STORE armazena na memória o conteúdo de um registrador.  

          Arquiteturas memória-memória e registrador-memória apresentam como vantagem um menor número de instruções no código do programa, já que não é necessário carregar previamente em registradores os operandos-fonte de uma instrução aritmética/lógica, como acontece em uma arquitetura registrador-registrador.  Por outro lado, a existência de instruções aritméticas/lógicas mais poderosas torna mais complexa a implementação da arquitetura. As arquiteturas Intel 80x86 e Motorola MC680x0 são do tipo registrador-memória. Dentre as arquiteturas memória-memória está o DEC VAX 11.


Principais Referências:
  • Tao, Welfane K. Arquitetura e Organização de Computadores. Cap. 6. 2004, Janeiro.
  • Clícia, M. O conjunto de Instruções do Computador. Cap. 4. 2005, Abril.

sexta-feira, 4 de novembro de 2011

Phase Change Memory- PCM

(Resenha Capítulo 6)

         No início da década passada poucas tecnologias tinha sido propostas para substituir as memórias não-voláteis (NVM) padrão e para ampliar a base de tecnologia Flash. À medida que o final daquela década se aproximava, pôde-se notar que apenas uma das tecnologias propostas estava demonstrando a capacidade de entrar no mercado NVM amplamente e ser a memória dominante para a próxima década: a tecnologia de memória de mudança de fase (Phase Change Memory (PCM)) criada pela IBM.
Esta memória é feito de uma liga de calcogeneto que é também encontrado em CDs e DVDs regraváveis. No nível de discos óptico, um feixe de laser com intensidade diferente é usado para aquecer um volume pequeno para mudar o material entre os estados cristalino e amorfo. O estado das células de memória é determinado pela refletividade da camada de memória.  Na PCM baseadas em silício, uma corrente elétrica de diferentes magnitudes é lançada por um elemento aquecedor até um material calcogeneto e um aquecimento Joule local é usado para alterar o volume programável em torno da região de contato.
O uso de correntes altas e rápido resfriamento “congela” o material em um estado amorfo com alta resistência. O tempo necessário para mudar para o estado amorfo é na maioria das vezes inferior a 100ns. Uma corrente com tempo de pulso médio é utilizado para recristalizar a região, levando a um estado de cristal com baixa resistência. Uma corrente pequena sem aquecimento Joule é usada para leitura da memória, diferenciando os estados de alta (amorfo) e baixa (cristalino) resistência.
PCM fornece um novo conjunto de características interessantes, combinando características de memórias não voláteis e DRAM (Tabela 1).

Tabela 1 - Comparação entre PCM, memórias não voláteis (EEPROM, NOR e NAND) e DRAM.
Do ponto de vista da aplicação, PCM pode ser explorada por todos os sistemas de memória. Suas características permitem faz com que possam ser usadas em uma base ampla de aplicações, proporcionando um valor agregado significativo. Em particular PCM pode ser usado:
  1. em sistemas sem fio para o armazenamento de código executado diretamente, estruturas de dados semi-estática e arquivos. A forma como o PCM altera seus bits permite que seja tratada como uma memória direta de escrita, como uma DRAM. Isto reduz significativamente os requisitos da DRAM, reduzindo o custo do subsistema desta memória;
  2. em aplicações embarcadas, similar aos sistemas sem fio, em particular, como substituto do Flash. 
  3.  nos subsistemas de armazenamento de estado sólido para armazenar páginas acessadas freqüentemente e para armazenar os elementos que são mais facilmente gerenciados quando manipulados no local
  4. em plataformas computacionais, explorando a sua não- volatilidade para reduzir o consumo de energia. Os blocos DRAMs consomem uma boa quantidade de energia para a realização dos sucessivos refreshes. Já os blocos PCM podem simplesmente serem “desligados”. Resultando numa redução do consumo de energia.

A memória PCM possui as capacidades básicas de trabalhar com altos ciclos, baixa voltagem, rápida leitura e escrita e consumo de energia moderado. Por isso empresas como a Samsung têm investido esforços na construção e aplicação destas memórias em dispositivos móveis. Ela começará com um chip de 512 MB. A expectativa é que a memória PCM possa vir a substituir a memória DRAM do computados assim como parte das memórias Flash.


Principais Referências:
  • Atwood, Greg & Bez, Roberto. Current status of Chalcogenide phase change memory. Device Research Conference Digest. IEEE 2005.
  • Bez, Roberto. Chalcogenide PCM: a Memory Technology for Next Decade. R&D Technology Development. Italia, Milão. IEEE 2009.