Che materia stai cercando?

mapping e decodifica Linguaggio macchina IO, Calcolatori elettronici

Il seguente è il Secondo di una serie di appunti dal formato domanda-risposta del corso di Calcolatori Elettronici tenuto dal professor Mattoccia dell'Università di Bologna.
Nonostante tale riassunto sia stato fatto nell'anno accademico 2013-2014, ritengo che esso sia ancora attuale in quanto gli argomenti del corso non sono cambiati.
Ho fatto e utilizzato personalmente questi... Vedi di più

Esame di Calcolatori elettronici docente Prof. S. Mattoccia

Anteprima

ESTRATTO DOCUMENTO

8) Perché una in una RAM c’è sia il segnale di WR che il segnale di RD, e non se ne usa uno

solo e il negato di esso?

Perché potrei non voler né leggere né scrivere! Ovviamente però RD e WR saranno mutuamente

esclusivi, ovvero mai si avrà RD=WR=1!

9) Perché nelle RAM in un ciclo di lettura i dati vengono messi sul bus dopo un tempo

maggiore rispetto al ciclo di scrittura?

Nelle RAM in un ciclo di lettura i dati vengono messi sul bus dopo un tempo maggiore rispetto al

ciclo di scrittura in quanto si ha che:

" !

Ciclo di lettura La memoria impiega un certo tempo a reperire i dati al suo interno!

" !

Ciclo di scrittura I dati devono essere disponibili subito in quanto prima di essere

campionati devono essersi stabilizzati! (HOLD)

10) Qual è la differenza tra DRAM e SRAM?

" !

DRAM (dynamic RAM)

Il dato è memorizzato all’interno di un condensatore

o Dinamiche in quanto necessitano di circuito di refresh. Il condensatore tende infatti a

o perdere l’informazione 2

Densità maggiore (numero bit / cm di silicio) rispetto alle SRAM

o

" !

SRAM (static RAM)

Il dato è memorizzato in un LATCH CD

o Più veloci delle DRAM

o

11) Qual è la differenza fra RAM ed EPROM ?

" !

RAM Volatile

o Può essere scritta

o Capacità multipli di 4 (motivi tecnologici)

o

" !

EPROM

Non volatile

o Sola lettura

o Capacità multipli di 2 (motivi tecnologici)

o

12) Quali sono i comandi sempre presenti in memorie e registri?

In memorie e registri sono sempre presenti i comandi di:

" !

WE (write enable) Serve per abilitare o meno la scrittura sul dispositivo

" !

OE (output enable) Serve per abilitare o meno i tristate

Calcolatori Elettronici – Mapping e Decodifica ! Pagina!3!

13) In un registro Edge-Triggered con WE quali sono le condizioni per cui avvenga una

scrittura?

Per avere una scrittura devono essere verificate le seguenti due condizioni:

1. WE attivo

2. Fronte di salita del CK con dati stabili

14) Perché è importante che un processore abbia molti registri al suo interno?

Se un processore dispone di molti registri puoi permetterti di effettuare meno accessi in memoria

in quanto una volta prelevato un dato esso può essere messo in un registro.

Ricordiamo che gli accessi alle memorie sono lenti e dunque evitarli velocizza il sistema!

Intel ha pochi registri (una decina utilizzabili) – DLX e ARM ne hanno un numero maggiore

15) Qual è la differenza tra registri e cache?

Una cache è:

" Più grande di un registro in quanto può contenere anche 16K di elementi.

I registri del DLX sono a 32 bit

" Più lenta di un registro in quanto più grande e con un tempo di accesso maggiore rispetto a

quello di un registro

Una cache può inoltre essere realizzata su un silicio differente da quello del processore!

16) Come puoi sfruttare al massimo un bus a 32 bit?

Poiché tipicamente le memorie sono a parallelismo dati 8 bit, con un bus dati a 32 bit per

sfruttarlo al massimo dovrei usare 4 memorie !

Gli svantaggi che derivano da usare 4 memorie e non una sola sono però molteplici:

1. Maggiore consumo

2. Numero maggiore di pin

3. Maggiore area occupata

4. Probabilità di rottura di una memoria maggiore

17) Cosa intendiamo con memoria disallineata?

Una memoria è disallineata se inizia ad un indirizzo che NON è multiplo della sua dimensione!

8K

8K

16 K 8K

8K

Calcolatori Elettronici – Mapping e Decodifica ! Pagina!4!

Contesto per le successive domande: Dispositivi da 8 bit in sistemi con bus dati a 8 bit

18) Quali sono le condizioni che dovranno essere rispettate nel mapping di un dispositivo?

In generale l’assegnamento di una finestra di indirizzi al dispositivo nello spazio di

indirizzamento dovrà rispettare le seguenti due condizioni:

1. La dimensione della finestra di indirizzi associata a un dispositivo è una potenza di 2

2. La finestra di indirizzi è composta da indirizzi contigui

18bis) Quante posizioni nello spazio di indirizzamento occupa un dispositivo accessibile

attraverso il bus?

Un dispositivo accessibile attraverso il bus, sia esso:

Un dispositivo di memoria (es. RAM, EPROM, register file)

• Un’interfaccia (es. un registro di uscita, una porta parallela o seriale, interfaccia per leggere)

• Un agente master indirizzabile (DMA controller, controllore di HD)

• !

! = !!

occupa in generale posizioni nello spazio di indirizzamento dove:

!

n Numero di oggetti di 8 bit indirizzabili all’interno del dispositivo stesso

• (Es. numero di celle di memoria nelle RAM e nelle EPROM, numero di registri in un

register file)

!

k Numero di bit di indirizzo interni al dispositivo: fortemente variabile!

• Generalmente:

Dispositivi di I/O (Es. Interfacce) k è piccolo (nel corso compreso tra 0 e 4)

o Memorie k è grande (Es. RAM da 128KB si ha k = 17)

o

Ricordiamo che lo spazio di indirizzamento è limitato e dunque più mappo dispositivi grandi

prima finisce la finestra di indirizzi che ho a disposizione!

In generale nello spazio di indirizzamento posso mappare ciò che voglio, anche un FFD.

!

! = !!

19) Di cosa dispongono i dispositivi a 8 bit con all’interno elementi indirizzabili

separatamente? Con quali segnali si interfacciano al bus?

!

! = !2

Qualunque dispositivo da 8 bit con all’interno elementi indirizzabili separatamente ha al

suo interno un decoder di k variabili con ingresso di enable che seleziona i singoli oggetti

indirizzabili.

Di solito un dispositivo si interfaccia al bus attraverso i seguenti segnali:

" Indirizzi (A[k-1 .. 0] )! Sono le k variabili decodificate dal decoder del dispositivo e

individuano il byte (8bit) a cui si intende accedere all’interno del chip (offset del chip)

" !

Dati (D[7 .. 0]) Definiscono la porta bidirezionale che consente di scambiare dati con

l’esterno

" !

Chip Select (CS) Detto anche Chip Enable (CE), è il segnale di enable del decoder

interno al dispositivo. Il CS è funzione di A[n-1 .. k] dove n è il numero totale dei bit di

indirizzo del sistema. !

(Es.20 bit di indirizzo, RAM da 128KB con 17 bit di indirizzo CS funzione di A[19 .. 17])

Calcolatori Elettronici – Mapping e Decodifica ! Pagina!5!

Vi sono poi dei segnali di comando :

" !

Read Command (RD) Detto anche Output Enable (OE), rappresenta il comando di

lettura. Quando RD e CS sono attivi il dispositivo espone il contenuto della cella

indirizzata.

" !

Write Command (WC) E’ il comando di scrittura. Il NOR di WR* e CS* è il “latch

enable” (“clock”) della cella indirizzata.

20) Cosa significa mappato all’indirizzo A? Quando diciamo che un dispositivo è allineato?

!

! = !2

Dato un dispositivo D di bytes (elementi da 8 bit) indirizzabili si dice che D è mappato

all’indirizzo A se gli indirizzi dei byte (elementi) di D sono compresi tra A e A+(n-1), ovvero se A

è l’indirizzo più basso tra gli indirizzi associati a D.

21) Quando un dispositivo si dice allineato?

Si dice che un dispositivo D è allineato se l’indirizzo A di partenza del dispositivo è multiplo di

n, dove n è il numero di bytes (elementi da 8 bit) interni al dispositivo, cioè se:

!

(indirizzo più basso o di partenza di D) % n = 0 Condizione di allineamento!

Se D è allineato allora i k bit meno significativi di A sono uguali a zero!

Esempi:

# Un dispositivo da due byte è allineato se è mappato ad un indirizzo pari (numero pari

sempre multiplo di 2)

# Un dispositivo da 8 byte è allineato se è mappato ad un indirizzo il cui valore codificato in

binario termina con 3 zeri (multiplo di 8)

# Un dispositivo da 16 byte è allineato se è mappato ad un indirizzo il cui valore codificato in

esadecimale termina con zero (multiplo di 16byte)

# Un dispositivo da 64 KB è allineato se è mappato ad un indirizzo il cui valore codificato in

esadecimale termina con 4 zeri (multiplo di 64KB)

22) Parlare di come avviene la decodifica completa.

Dato uno spazio di indirizzamento con n bit di indirizzo, un dispositivo con k bit di indirizzo e una

! = !!!##!!

cella di indirizzo , con: Concatenato

!

!!!

# Posizione dello spazio di indirizzamento dove la cella è mappata

!

# ! Identificatore del byte all’interno del chip

Decodifichiamo tutti i bit che compongono l’indirizzo e per farlo ricorriamo alla struttura ad

albero dei decoder con albero di due livelli: !:

!

1. Livello radice Usato per decodificare Servono n-k variabili

!

2. Secondo livello Usato per decodificare i: Serve un decoder di k variabili

Calcolatori Elettronici – Mapping e Decodifica ! Pagina!6!

23) Parlare della decodifica parziale. A cosa bisogna stare attenti?

! !

!2 !bytes !2 !bytes.

Consideriamo un dispositivo di mappato in uno spazio di indirizzamento di

!

!! !finestre

Se rinunciamo a decodificare j bit il dispositivo risulta mappato in dello spazio di

!

!2 !rispetto

indirizzamento e la porzione in ci è mappato viene moltiplicata per al caso della

decodifica completa! !

!! !volte

Si dice che l’immagine del dispositivo D è replicata nello spazio di indirizzamento!

L’effetto della decodifica parziale è duplice:

Otteniamo espressioni più semplici per i CS (Chip Select) in quanto riduciamo il numero

• di ingressi della rete che lo realizza

Il dispositivo occupa una porzione dello spazio di indirizzamento di dimensione multipla

• rispetto allo stretto necessario, per cui abbiamo un uso inefficiente della risorsa “Spazio di

indirizzamento”.

Nella decodifica parziale bisogna stare molto attenti alla sovrapposizione dei dispositivi!

Osserviamo che se rinuncio a decodificare i bit più significativi dell’indirizzo il dispositivo risulterà

mappato in zone della memoria logica NON consecutive!

Se invece rinunciamo a decodificare i bit meno significativi dell’indirizzo allora il dispositivo

risulterà mappato in zone consecutive della memoria logica.

La decodifica parziale è possibile anche per indirizzi non allineati alla dimensione del modulo!

24) Come avviene l’interfacciamento al bus degli indirizzi di un dispositivo mappato in una

!!?

determinata finestra ! !bytes,

In generale l’interfacciamento al bus degli indirizzi di un dispositivo di!2 dove k sono i bit

!

!2

di indirizzo interni del dispositivo, mappato in uno spazio di indirizzamento di bytes, dove m

sono i bit totali di indirizzo del sistema si ottiene con i seguenti passi:

1. I k bit meno significativi del bus degli indirizzi BA[(k-1) .. 0] vengono ordinatamente

interconnessi agli ingressi A[(k-1) .. 0] del dispositivo, in modo da consentire al decoder

interno del dispositivo stesso di decodificare il campo “i” dell’indirizzo, ovvero l’offset!

!

(Ricordiamo infatti che ogni indirizzo può essere suddiviso nei campi e i)

2. I bit più significativi del bus degli indirizzi BA[(m-1) .. k] vengono utilizzati per formare il

!

mintermine di (m-k) variabili la cui configurazione individua la finestra in cui il

dispositivo è mappato.

Tale mintermine verrà negato e inviato all’ingresso CS* (Chip Select negato) del dispositivo

considerato.

Il mintermine può essere realizzato con una PAL (antenato degli FPGA più difficile da

programmare e meno potente) o con un FPGA !

!

Osservazione importante Tutti gli indirizzi appartenenti ad un dispositivo hanno in

comune! Mappare un dispositivo corrisponde dunque alla decodifica dei bit di indirizzo più

significativi della zona di memoria logica che deve coprire il dispositivo che NON cambiano

all’interno del dispositivo stesso !!!

Calcolatori Elettronici – Mapping e Decodifica ! Pagina!7!

24bis) Perché il mintermine non viene realizzato con decoder fisici?

Viene utilizzato un FPGA invece di decoder fisici in quanto un FPGA è programmabile e inoltre

può contenere molti decoder. Un solo FPGA rimpiazza dunque diversi dispositivi!

25) Dato un sistema con parallelismo 16 bit in che rapporto stanno memoria logica e memoria

fisica?

Per sfruttare al massimo il parallelismo le memorie fisiche vanno in coppia! Per ogni banco di

memoria ci deve essere un byte enable (in questo caso BE0 e BE1) al fine di permettere al

processore di scegliere se trasferire 8 o 16 bit. Ovviamente per trasferire 16 bit i byte enable devono

essere abilitati entrambi!

In un banco finiscono gli indirizzi pari e nell’altro gli indirizzi dispari.

MAI gli indirizzi logici x e x+1 saranno nello stesso dispositivo fisico!! GRAVE ERRORE! Perdo

il parallelismo! (Vedi domanda 25bis)

È importante ricordare che nel caso di bus dati a 16 bit si avrà:

!"#!$!%%&!!"#$%"

!"#$%$&&'!!"#"$%!!"!#$%" = !

Osserviamo che viene dunque persa la corrispondenza fra gli indirizzi del processore e

l’organizzazione della memoria!

Es. All’indirizzo logico 0 e all’indirizzo logico 1 corrisponderà l’indirizzo fisico 0 ! All’indirizzo

logico 2 e all’indirizzo logico 3 corrisponderà l’indirizzo fisico 1! E così via …

25bis) Perché se ho 128 KB di memorie, fisicamente non organizzo la memoria ponendo i

primi 64 K su una memoria e i secondi 64 K mettendoli su un’altra memoria?

È sbagliato in quanto perdo il parallelismo !!!

26) Perché in un sistema con bus dati a 16 bit, o a parallelismo 16 bit, l’indirizzo A0 del

processore non è necessario? E in un sistema a 32 bit come cambia la situazione? E se fosse a

64 bit?

Per comprendere la situazione ci serviamo di un esempio. !"

2 − 1

Data una memoria logica da 64 KB, essa avrà indirizzi da 0 a , ovvero 65 535 possibili

indirizzi logici. Avendo un bus a 16 bit per sfruttare il parallelismo utilizzeremo due dispositivi

!"

2 − 1

fisici da 32 KB l’uno che dunque avranno indirizzi da 0 a , ovvero 32 767 possibili indirizzi

fisici.

Dunque poiché la memoria fisica è la metà della memoria logica, ricordando che dividere per due in

binario equivale a shiftare a destra, l’indirizzo emesso dal processore dovrà essere shiftato a destra

di una posizione. Ciò comporta che per un sistema con un bus dati a 16 bit, l’indirizzo A0 del

processore non è necessario e dunque non viene emesso.

Ne consegue che A0 della memoria sarà connesso con A1 del processore e così via …

!

In un sistema con bus dati a 32 bit avremo che la memoria fisica è della memoria logica al fine di

!

sfruttare al meglio il parallelismo! Dividere per 4 è come shiftare a destra di due posizioni e dunque

si avrà che gli indirizzi A0 e A1 del processore non saranno più necessari. Non vengono generati!

Ne consegue che A0 della memoria sarà connesso con A2 del processore e così via …

Calcolatori Elettronici – Mapping e Decodifica ! Pagina!8!

!

Analogamente in un sistema a 64 bit avremo che la memoria fisica sarà della memoria logica al

!

fine di sfruttare al meglio il parallelismo! Dividere per 8 equivale a shiftare a destra di 3 posizioni e

dunque si avrà che gli indirizzi A0, A1, A2 del processore non saranno più necessari!

Ne consegue che A0 della memoria sarà connesso con A3 del processore e così via …

26bis) Dato un sistema a 32 bit, dati BE0, BE1, BE2, BE3, posso risalire agli indirizzi A0 e A1

del processore?

Si posso, ma non posso fare il viceversa!!!

27) Perché rappresenta un problema leggere in modo disallineato?

Leggere in modo disallineato rappresenta un problema in quanto una lettura disallineata comporta

due indirizzi fisici differenti. Il processore, però, può emettere un solo indirizzo per volta.

Ciò comporta che alcuni processori si rifiutano di effettuare letture disallineate, altri invece le

fanno, ma le suddividono su due cicli di bus distinti!

Ricorda: 1 byte per definizione non è mai disallineato!

28) Se trasferisco dati dal bus alto di una memoria ad un registro interno del processore, cosa

deve avvenire al suo interno?

Quando il processore legge un byte ad un indirizzo pari (bus basso) per metterlo all’interno di un

suo registro a 16 bit, quello che ci si aspetta è che tale byte venga messo negli 8 bit meno

significativi del registro (parte bassa del registro).

Questo è quello che però ci aspettiamo anche da una lettura di un byte ad un indirizzo dispari (bus

alto). Vogliamo infatti che finisca nella parte bassa del registro e non in quella alta!

Di conseguenza all’interno del processore c’è un layer di MUX che provvedono ad effettuare il

trasferimento in maniera corretta.

Il processore riesce ad effettuare questi trasferimenti in quanto ciò che deve fare è codificato

nell’istruzione!

29) In un bus dati a 32 bit per leggere allineato una WORD di 32 bit a che indirizzi devo

leggere?

Per leggere allineato una WORD di 32 bit devo leggere ad indirizzi multipli di 4 (0,4,8 …)

Calcolatori Elettronici – Mapping e Decodifica ! Pagina!9!

1) Cos’è il linguaggio macchina?

Il linguaggio macchina (L.M), detto anche “Instruction Set Architecture” (ISA), è costituito

dall’insieme delle istruzioni eseguibili dalla CPU e dal loro formato binario.

L’ISA in altre parole è il livello dell’architettura della CPU visibile a chi sviluppa i compilatori

e a chi programma in Assembler.

Importante: Tra le risorse interne al calcolatore, solo quelle accessibili attraverso l'ISA possono

essere rese visibili e controllabili dal software.

Ad esempio, molti registri necessari al funzionamento della rete logica processore non sono

visibili.

2) Cosa è possibile fare con il linguaggio macchina o ISA?

Con le istruzioni del linguaggio macchina si accede alle risorse interne del calcolatore:

Memoria

! Registri

! Variabili di stato (dette anche variabili di sistema o ‘flag’)

!

Le istruzioni in linguaggio macchina sono l’unica cosa che la CPU comprende e sono codificate

in binario!

Un codice compilato non è altro che un insieme di istruzioni appartenenti all’ISA di

quell’architettura!

3) Qual’è il principale requisito di un linguaggio macchina?

Un linguaggio macchina (ISA) viene principalmente valutato in base all'efficienza del codice

generato dai compilatori.

Il progettista di un linguaggio macchina deve dunque consentire la concezione di compilatori

!"#

capaci di generare codice che minimizzi il valore di per il maggior numero di

!"#$

applicazioni possibili. (vedi formula)

4) L’evoluzione delle applicazioni influenza il linguaggio macchina?

Si, l’evoluzione delle applicazioni influenza i Linguaggi Macchina.

Ad esempio le applicazioni multi-mediali hanno portato ad estensioni multi-mediali del

linguaggio macchina su diverse architetture (Es. aggiunte che permettano di fare codifica video

più efficiente, elaborazione immagini).

Ovviamente le estensioni fatte all’ISA necessitano di HW ad hoc che le supporti.

Calcolatori Elettronici – Linguaggio Macchina ! Pagina!1!

!


ACQUISTATO

5 volte

PAGINE

18

PESO

1.68 MB

AUTORE

pet91

PUBBLICATO

+1 anno fa


DESCRIZIONE APPUNTO

Il seguente è il Secondo di una serie di appunti dal formato domanda-risposta del corso di Calcolatori Elettronici tenuto dal professor Mattoccia dell'Università di Bologna.
Nonostante tale riassunto sia stato fatto nell'anno accademico 2013-2014, ritengo che esso sia ancora attuale in quanto gli argomenti del corso non sono cambiati.
Ho fatto e utilizzato personalmente questi riassunti per superare questo esame ottenendo un ottimo risultato. Le domande in essi scritte, infatti anticipano ciò che il professore potrà chiedere all'esame.
Inoltre, essendo l'esame di calcolatori elettronici dell'università di Bologna conosciuto per essere molto complesso in quanto i professori sono molto esigenti, questi riassunti credo potranno adeguarsi anche per chi cerca una buona preparazione sui calcolatori elettronici.


DETTAGLI
Corso di laurea: Corso di laurea in ingegneria informatica
SSD:
Università: Bologna - Unibo
A.A.: 2014-2015

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher pet91 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à Bologna - Unibo o del prof Mattoccia Stefano.

Acquista con carta o conto PayPal

Scarica il file tutte le volte che vuoi

Paga con un conto PayPal per usufruire della garanzia Soddisfatto o rimborsato

Recensioni
Ti è piaciuto questo appunto? Valutalo!

Altri appunti di Calcolatori elettronici

Introduzione, Calcolatori elettronici
Appunto
DLX sequenziale e DLX Pipelined, Calcolatori elettronici
Appunto
ARM, Calcolatori Elettronici
Appunto
Domande di Teoria di Calcolatori Elettronici
Appunto