Anteprima
Vedrai una selezione di 4 pagine su 13
Appunti Calcolatori elettronici  - parziale  Pag. 1 Appunti Calcolatori elettronici  - parziale  Pag. 2
Anteprima di 4 pagg. su 13.
Scarica il documento per vederlo tutto.
Appunti Calcolatori elettronici  - parziale  Pag. 6
Anteprima di 4 pagg. su 13.
Scarica il documento per vederlo tutto.
Appunti Calcolatori elettronici  - parziale  Pag. 11
1 su 13
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

MODI DI INDIRIZZAMENTO

Le macchine a registri si suddividono in due categorie:

1.​ Architettura Load-Store: che consente di fare operazioni di tipo aritmetico logico

solo fra operandi che sono nei registri, quindi non si può fare la somma fra un dato

che è in un registro e un dato che è in memoria, o ancor peggio la somma di

due dati che sono in memoria. Bisogna solo fare operazioni aritmetico logiche

che riguardano due operandi che sono già presenti nei registri. In sostanza si

accederà alla memoria solo attraverso operazioni tipiche della memoria. Quindi

questo tipo di macchina sarà una macchina a registri LOAD-STORE per

significare che la memoria sarà usata solo con istruzioni di tipo LOAD STORE.

Quindi per fare un'operazione aritmetica fra due dati che sono in memoria prima

bisogna eseguire la LOAD di questi due dati , per esempio prendere il primo dato e

inserirlo nel registro R1 , leggere un secondo dato e inserirlo nel registro R2 e solo

ora è possibile fare le operazioni fra R1 ed R2; il risultato andrà in un altro

registro che può anche essere uno dei due che si è appena usato, ma non si

può scrivere il dato in memoria se non attraverso l’operazione di STORE

2.​ Architettura Registro-Memoria: invece prevede di usare l’ALU per fare calcoli ma

nell’ambito della stessa istruzione anche di accedere a memoria. Questo tipo di

struttura però prevederà un codice operativo che dovrà contenere sia la specifica di

un registro (per l’operando) sia la specifica di un registro del risultato e sia un

indirizzo. Quindi siccome per indirizzare un registro tipicamente bastano pochi

bit, con 32 registri è sufficiente un insieme di 5 bit. Con 5 bit infatti si possono

codificare numeri compresi tra 0 e 31;scrivendo il numero 7 si intende il registro R7.

Per specificare un indirizzo non bastano 5 bit, attraverso 5 bit si indirizza solo

una porzione della memoria. Tipicamente per specificare un indirizzo si

necessitano dipiù bit, almeno che per specificare un indirizzo non si utilizza

un artefatto:scrivere l’indirizzo di memoria in un registro. Quindi nell’istruzione

si andrà solamente a specificare l’indirizzo del registro, che contiene l’indirizzo di

memoria, attraverso i 5 bit

1. Indirizzamento Diretto

C’è un registro che direttamente contiene l'indirizzo dell'area di memoria. Nell'istruzione si

andrà a specificare solamente l’indirizzo del registro che contiene l’indirizzo di memoria a cui

accedere.

2. Indirizzamento con Immediato

È possibile scrivere l’indirizzo direttamente nell'istruzione stessa. Quindi l’istruzione dovrà

contenere oltre anche varie altre informazioni fra cui una di queste è l’indirizzo.

3. Indirizzamento con Spiazzamento (con offset)

L’indirizzo con spiazzamento viene calcolato sommando al contenuto di un registro un

numero (INDIRIZZO BASE) codificato nell'istruzione stessa. Nell'istruzione verrà specificato

quindi un registro per esempio R9 e un immediato(indirizzo base), e l’indirizzo di memoria

verrà calcolato sommando questo indirizzo base che e il contenuto di R9. Ci si può chiedere,

ma non era meglio inserire tutto l’immediato di per sé? Si però se questa istruzione va

eseguita all’interno di un loop e ad ogni ciclo si ha la necessità di accedere a un dato

diverso bisogna avere un indirizzo diverso. Con l’indirizzamento con scostamento l’istruzione

contiene una un immediato e un registro da sommare così che nel loop ogni volta verrà

cambiato il valore dell’immediato.

4. Indirizzamento indiretto

l’indirizzamento che prende il nome di REGISTRO INDIRETTO è un indirizzamento secondo

il quale il registro contiene un indirizzo che non è l’indirizzo del dato di destinazione ma è

ancora un altro indirizzo e quindi si va due volte in memoria.

Tecnologie per la produzione di processori

Un transistor è semplicemente un interruttore acceso/spento, controllato da un

segnale elettrico. Il circuito integrato (IC) ha permesso di inserire da qualche decina a

qualche centinaio di transistor in un singolo frammento di silicio, detto

chip. La produzione di un chip inizia dal silicio, una sostanza che si trova nella sabbia; dato

che il silicio non conduce bene l’elettricità, è detto semiconduttore.

Il processo produttivo dei circuiti integrati è fondamentale per determinare il costo dei chip

ed è quindi di grande importanza per i progettisti di calcolatori. Si inizia con un lingotto di

silicio cristallino, che ha un diametro compreso tra 20 e 30 cm e una lunghezza tra 30 e 60

cm. Il lingotto viene successivamente tagliato in dischi sottili, chiamati wafer, che hanno uno

spessore non superiore a 2,5 mm.

I wafer vengono lavorati nei forni di drogaggio, dove vengono trattati per ottenere le

caratteristiche elettriche necessarie. In seguito, si effettuano simulazioni logico-funzionali per

verificare che il sistema funzioni come richiesto dalle specifiche. Vengono poi eseguite

simulazioni logico-fisiche, che determinano come i componenti logici si posizioneranno

all'interno del chip.

Si crea quindi un diagramma temporale che consente di verificare come, in funzione degli

ingressi, si comportano le uscite. Questo passo è essenziale per determinare la latenza di

ciascun componente e la frequenza massima di funzionamento del sistema.

L'output del processo di simulazione influenza il trattamento dei wafer attraverso il

drogaggio, ottenendo così wafer lavorati che contengono un certo numero di chip di forma

quadrata. L'area di ciascun quadrato dipende dal numero di transistor che il sistema

richiede. Poiché il wafer è di forma circolare, vengono scartati i quadrati che non sono

perfetti.

I wafer contengono anche una certa probabilità di impurità, e quindi alcuni chip potrebbero

risultare non funzionanti. Questo problema viene risolto aumentando la suddivisione dei

wafer e applicando tecniche di ridondanza, ovvero dotando il sistema di un numero di

componenti superiori a quelli effettivamente necessari (come nel caso delle doppie ruote dei

camion). Infine, i chip vengono inseriti nel loro case, saldati sulla scheda e sottoposti a test

per verificarne il corretto funzionamento.

CAPITOLO 5

ISTRUZIONI DEL PROCESSORE MIPS

Il processore di riferimento è il processore MIPS. È sviluppato con filosofia RISC, ha un

numero ridotto di istruzioni ma che hanno tutte una struttura molto simile tra di loro. Inoltre è

un processore di tipo Load Store, le uniche operazioni che possono accedere a memoria

sono le istruzioni LOAD e STORE. Il processore MIPS è costituito da 32 registri interi da 64

bit di utilizzo generale (GPR, general-purpose register), denominati RO, R1,..., R31. Ci sono

inoltre registri per numeri in virgola mobile (FPR, floating-point register), denominati FO,

F1,...,F31. E infine c'è anche un piccolo numero di registri "speciali". I tipi di dati presenti

sono: byte (8 bit), half word (16bit), word (32bit) e double word (64bit). Esistono solo due

modalità di indirizzamento, immediato e con scostamento. Le istruzioni di questo processore

sono di 32 bit e presentano tutte un codice operativo costituito da 6 bit. Le istruzioni sono

fondamentalmente di tre tipi: tipo R, tipo I e tipo J.

Formato R (Register)

Formato I ( Immediate)

Formato J (Jump)

Le operazioni svolte dall’hardware del calcolatore

Istruzioni Aritmetiche

Le istruzioni aritmetiche in MIPS utilizzano l'ALU (Arithmetic Logic Unit) per eseguire calcoli

sui registri.

add $s1, $s2, $s3

●​ $s1 = $s2 + $s3

○​ Significato: $s2 $s3

○​ Funzionamento: i registri e contengono valori a 32 bit.La CPU

legge i valori dai registri in seguito l' ALU esegue la somma binaria dei due

$s1.Se si verifica un

operandi e il risultato viene scritto di nuovo nel registro

overflow, viene generata un’eccezione.

sub $s1, $s2, $s3

●​ $s1 = $s2 - $s3

○​ Significato: add,

○​ Funzionamento: come per ma l’ALU esegue una sottrazione. $s3

Internamente, la sottrazione si fa sommando il complemento a due di a

$s2.Anche qui, in caso di overflow, si lancia un’eccezione.

addi $s1, $s2, 20

●​ $s1 = $s2 + 20

○​ Significato: 20

○​ Funzionamento interno: è un immediato a 16 bit che la CPU estende a

32 bit con estensione del segno. L’ALU somma il valore esteso al contenuto

$s2.Risultato $s1.Anche

di scritto in qui può verificarsi overflow

Istruzioni di Trasferimento Dati

Queste istruzioni servono a spostare dati tra la memoria e i registri. MIPS usa

indirizzamento base + offset per calcolare l'indirizzo effettivo.

lw $s1, 20($s2)

●​ $s1 = Memoria[$s2 + 20]

○​ Significato: $s2. 20 $s2

○​ Funzionamento: la CPU legge il contenuto di Somma l'offset a

per ottenere l’indirizzo effettivo. Accede alla memoria e legge 4 byte

$s1. Se l’indirizzo non è

consecutivi (1 parola).Carica i 4 byte nel registro

allineato (multiplo di 4), si genera un bus error.

sw $s1, 20($s2)

●​ Memoria[$s2 + 20] = $s1

○​ Significato: $s1

○​ Funzionamento: calcola l’indirizzo come sopra. Prende i 32 bit da e li

scrive in memoria a quell’indirizzo. Anche qui, un indirizzo non allineato

provoca errore.

lh, lhu

●​ (lettura mezza parola unsigned e non)

lh:

○​ carica 16 bit con estensione del segno.

lhu:

○​ carica 16 bit con riempimento a zero.

○​ Funzionamento :l’indirizzo è calcolato come prima. Si leggono 2 byte dalla

memoria. La differenza sta nell’estensione:

lh:

■​ riempie i 16 bit superiori con il bit più significativo (sign

extension).

lhu: 0.

■​ riempie i 16 bit superiori con

lb, lbu

●​ (lettura byte)

lb:

○​ carica 8 bit con estensione del segno.

lbu:

○​ carica 8 bit con riempimento a zero.

○​ Funzionamento : si legge 1 byte dalla memoria. Se serve, i bit rimanenti

sono riempiti come sopra.

ll sc

●​ (load linked) & (store conditional)

○​ Usati per implementare operazioni atomiche:

ll:

■​ carica un valore dalla memoria e imposta un bit di lock.

sc:

■​ scrive in memoria solo se il bit di lock è ancora attivo (cioè nessun

altro processore ha modificato la memoria).

■​ Utile per implementare mutex o spinlock in sistemi multiprocessore.

lui $s1, 20

●​ $s1 = 20 * 2^16

○​ Significato:

○​ Funzionamento : carica il valore immediato nei 16 bit superiori del

0.

registro, lasciando i 16 bit inferiori a Usato per caricare numeri grandi o per

preparare indiriz

Dettagli
Publisher
A.A. 2024-2025
13 pagine
SSD Ingegneria industriale e dell'informazione ING-INF/01 Elettronica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher Jjketamein di informazioni apprese con la frequenza delle lezioni di Calcolatori elettronici e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Politecnico di Bari o del prof Marino Francesco Maria.