1. Resumo do material sobre ARM
Advanced Risc Machine (ARM):
O processador ARM é baseado na arquitetura RISC. Esta utiliza-se de instruções mais simples no
Hardware, e mais complexas para o compilador → Os registradores são, consequentemente, de uso
geral, enquanto, na arquitetura CISC, os registradores são locais e específicos para poucas funções.
Por isso, o processador RISC opera em frequência alta de Clock, enquanto o CISC, em baixa – Isto
não o torna melhor, contudo, pois uma simples instrução do compilador em CISC é capaz de fazer o
equivalente a varias do compilador em RISC. Note que o processador ARM não é 100% baseado
em RISC, já que sua finalidade é para sistemas embarcados, isto é, DEDICADOS.
É utilizada a Arquitetura Harvard.
Foi feito especialmente para ser pequeno e usar pouca energia, tornando-se bastante útil em
portáteis. Por ter densidade alta de código no hardware, e precisar de pouco código no software,
pode usar memórias menores e mais baratas.
O que difere o ARM de um sistema totalmente baseado em RISC:
-O tempo de execução de uma instrução não é sempre 1 ciclo
-Inline Barrel Shifter → Peça de Hardware que preprocessa um dos registradores de entrada antes
de ser usado por uma instrução, aumentando a performance e a densidade de código
-Thumb 16-bit instruction set→ Permite que o processador execute tanto intruções de 16 bits
quando de 32 bits (é um modulo extra ao set de 16 bits que já está contido no ARM)
-Execução condicional → Só executa uma instrução se a condição for sancionada (branch)
-Mistura com o Digital Signal Processor (DSP) → Permite operações matemáticas mais rápidas
O ARM é baseado em um sistema Master(ARM Core)/Slave
AMBA é um barramento on-chip usado para conectar o processador aos elementos periféricos
*Se quiser, estude os Buses possíveis de ARM no Cap1 do livro.(Não vi razão para decorá-los, mas
sinta-se à vontade)
Note que vários sistemas embarcados pequenos não usam Cache, por acabar sendo um pesar para
um sistema de tempo real.
Há 2 controladores de interrupção no ARM: Standard Interrupt Controller e o Vector Interrupt
Controller (VIC). O VIC é mais poderoso, pois associa uma prioridade a cada interrupção, e só
envia o sinal de interrupção se o mesmo tiver prioridade maior do que o que já está sendo atendido.
Quando uma interrupção ocorre, o processador suspende o funcionamento normal, e começa a
carregar as instruções do vector table.
Processadores ARM podem suportar mais de 50 sistemas operacionais, que podem ser divididos em
Real-Time Operating Systems (RTOS) e Platform Operating Systems. Esta dividão não é
mutuamente exclusiva, pois podem haver SOs características dos dois.
Aplicações: Conexão, automóveis, portáteis, modens, HDs, impressoras... Contudo, não é usado em
aplicações que precisam de alta performance, pois elas tendem a ser de pequeno volume e alto
custo.
Há um set de instruções além do ARM e Thumb: Jazelle. Este set executa instruções de 8 bits, e e
uma mistura híbrida de software e hardware para agilizar a execução de códigos em Java.
2. Para o ARM10, temos a seguinte pipeline:
Fetch → Issue → Decode → Execute → Memory → Write
Memória:
Tightly Coupled Memory(TCM) é uma SRAM localizada próxima ao Core, e garante que a
quantidade de ciclos de clock para a realização de uma instrução seja mantida – Essencial para
sistemas de tempo real
Caches são usadas para melhorar a performance do sistema, e não ser um item essencial.
São utilizados coprocessadores para estender o set de instruções, e a funcionalidade do processador.
OBS: Memória (Copiarei o texto do livro aqui, pois acredito que seja interessante para uma revisão
de memórias)
― Read-only memory (ROM) is the least flexible of all memory types because it contains an
image that is permanently set at production time and cannot be reprogrammed. ROMs are
used in high-volume devices that require no updates or corrections. Many devices also use
a ROM to hold boot code.
Flash ROM can be written to as well as read, but it is slow to write so you shouldn’t use
it for holding dynamic data. Its main use is for holding the device firmware or storing long-
term data that needs to be preserved after power is off. The erasing and writing of flash ROM
are completely software controlled with no additional hardware circuity required, which
reduces the manufacturing costs. Flash ROM has become the most popular of the read-only
memory types and is currently being used as an alternative for mass or secondary storage.
Dynamic random access memory (DRAM) is the most commonly used RAM for devices.
It has the lowest cost per megabyte compared with other types of RAM. DRAM is dynamic—
it needs to have its storage cells refreshed and given a new electronic charge every few
milliseconds, so you need to set up a DRAM controller before using the memory.
Static random access memory (SRAM) is faster than the more traditional DRAM, but
requires more silicon area. SRAM is static—the RAM does not require refreshing. The
access time for SRAM is considerably shorter than the equivalent DRAM because SRAM
does not require a pause between data accesses. Because of its higher cost, it is used mostly
for smaller high-speed tasks, such as fast memory and caches.
Synchronous dynamic random access memory (SDRAM) is one of many subcategories
of DRAM. It can run at much higher clock speeds than conventional memory. SDRAM
synchronizes itself with the processor bus because it is clocked. Internally the data is fetched
from memory cells, pipelined, and finally brought out on the bus in a burst. The old-style
DRAM is asynchronous, so does not burst as efficiently as SDRAM. ‖ (extraído do livro)