Ci sono istruzioni per la memoria?

7

Dall'organizzazione del computer strutturato di Tanenbaum,

Most instructions can be divided into one of two categories: register-memory or register-register.

Register-memory instructions allow memory words to be fetched into registers, where, for example, they can be used as ALU inputs in subsequent instructions. (‘‘Words’’ are the units of data moved between memory and registers. A word might be an integer. We will discuss memory organization later in this chapter.) Other register-memory instructions allow registers to be stored back into memory.

A typical register-register instruction fetches two operands from the registers, brings them to the ALU input registers, performs some operation on them (such as addition or Boolean AND), and stores the result back in one of the registers. The process of running two operands through the ALU and storing the result is called the data path cycle and is the heart of most CPUs. To a considerable extent, it defines what the machine can do. Modern computers have multiple ALUs operating in parallel and specialized for different functions. The faster the data path cycle is, the faster the machine runs.

Ci sono istruzioni per la memoria?

O una "operazione" di memoria di memoria implementata come due istruzioni di registro-memoria (una per leggere e l'altra per scrivere)? Non è inefficiente che spostare i dati direttamente tra due luoghi nella stessa memoria senza passare attraverso un registro?

    
posta Tim 21.02.2015 - 03:33
fonte

3 risposte

9

Un sacco di architetture di macchine hanno istruzioni di memoria-memoria.

IBM System / 360 e i suoi successori hanno un intero set di istruzioni che operano su due posizioni in memoria (il gruppo Storage Storage (SS)). L'operazione "Move Character" (MVC) copia fino a 256 byte da una posizione di memoria a un'altra e ha persino una definizione chiara per quando gli intervalli di origine e destinazione si sovrappongono. Allo stesso modo ci sono Confronta Logical Character (CLC) (che fa un confronto di stringhe), OR Character (OC), AND Character (NC) e XOR Character (XC), che sono operatori logici bit a bit, etc . Inoltre hanno una serie di istruzioni aritmetiche decimali, che funzionano solo sulla memoria - non ci sono registri per la matematica decimale.

Poi ci sono le istruzioni immediate della memoria, che hanno un operando in memoria e l'altro nell'istruzione stessa. Il DEC PDP-10 aveva Add One to Storage (AOS) e Sottrai One da Storage (SOS). La famiglia IBM S / 360 disponeva di un'ampia gamma di istruzioni Storage Instant (SI), in cui un operando era una locazione di memoria e l'altro era una quantità di 8 bit nell'istruzione.

    
risposta data 21.02.2015 - 16:16
fonte
8

I chip di memoria non hanno un meccanismo per trasferire i dati direttamente da una posizione di memoria a un'altra. Quindi, il processore deve leggere i dati dalla memoria e quindi scriverli nella nuova posizione.

Nei sistemi informatici dotati di controller DMA , è possibile eseguire trasferimenti di memoria senza coinvolgere la CPU. Esistono potenziali complicazioni, come coerenza della cache .

    
risposta data 21.02.2015 - 05:11
fonte
2

L'architettura Motorola 68000 ("68K") aveva un set di istruzioni ortogonali e entrambi gli operandi potevano specificare indirizzi di memoria assoluti. Potresti anche fare cose come incrementare / decrementare direttamente il valore in una specifica posizione di memoria, mentre con un'architettura più simile a RISC ti sarà comunque richiesto di caricare la memoria per registrare, incrementare il registro, scrivere (memorizzare) tornare alla memoria.

L'architettura ColdFire è l'erede / successore del 68K e penso che potrebbero aver eliminato alcune delle più esotiche istruzioni e modalità di indirizzamento.

    
risposta data 23.02.2015 - 20:13
fonte

Leggi altre domande sui tag