Pages: 1 ... 7 8 [9] 10 11 ... 24   Go Down
Print
Author Topic: AA 2010-2011: Quesiti a risposta aperta  (Read 89404 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
pippo
Apprendista Forumista
**
Offline Offline

Posts: 150



« Reply #120 on: 09-06-2011, 21:30:41 »

Quote
La paginazione e l'uso di un registro di rilocazione sono due meccanismi di realizzazione del collegamento dinamico. Confrontarne i rispettivi meriti ed eventuali inconvenienti (max 15 righe).

In una memoria virtuale costituita dalla memoria centrale e da una parte di memoria del disco vengono utlizzate varie tecniche di allocazione.Una è la paginzaione in cui un programma in esecuzione viene diviso in pagine grandi quanto i frame della memoria.Così si evita la frammentazione esterna e un allocazione contigua della memoria.L'unico svantaggio della paginazione è la frammentazione interna dell'ultima pagina e la sostituzione di una pagina allocata per fare spazio ad un altra.La rilocazione dinamica invece è un'altra tecnica che viene effettuata senza la memoria virtuale ma l'allocazione avviene direttamente nella memoria fisica.Si utilizza un registro base e un registro limite.Il primo contiene l'indirizzo in cui dovrà incominciare ad allocarsi il rpogramma nella memoria e il secondo contiene la lunghezza del programma.Questa tecnica però fa sorgere problemi di frammentazione interna ed esterna.

Quote
Confrontare almeno tre diverse modalità d'indirizzamento in termini dei loro effetti sulla lunghezza dell'istruzione e sul suo tempo di esecuzione (max 15 righe).

Il modo con cui un istruzione può specificare un operando è di contenere, nel campo riservato al suo indirizzo,l'operando stesso invece che un indirizzo o qualunque altra informazione che ne descriva la posizione.In questo modo(indirizzamento immediato) l'operando viene recuperato automaticamente dalla memoria.
Presenta lo svantaggio di poter formìnire un operando per volta. Un metodo per specificare un operando in memoria è darne l'indirizzo completo.
In questo indirizzamento(diretto) al pari di quello immediato presenta
alcune limitazioni: l'istruzione accederà sempre alla stessa locazione
di memoria, quindi il valore può cambiare ma nella locazione di memoria no.
L'indirizzamento a registro invece memorizza(al posto di quello diretto)l'operando
in un registro.I registri sono molto più veloci in accesso e hanno indirizzi brevi.
« Last Edit: 09-06-2011, 22:00:09 by pippo » Logged
R3m
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 486



« Reply #121 on: 09-06-2011, 21:40:01 »

Io invece ho un dubbio riguardo agli errori più comuni della programmazione assembly...quali potrebbero essere?
Logged

Ciò che è nostro è stato in campo sudato....ciò che vostro è stato in aula assegnato.
In serie B non sei mai stato perchè la prescrizione t'ha salvato.
Giuseppe Scollo
Moderator
Forumista Eroico
*****
Offline Offline

Posts: 1.539


« Reply #122 on: 10-06-2011, 05:52:20 »

Si potrebbe eseguire direttamente il codice di goto, in quanto non credo che si risparmierebbe un ciclo
È vero che non si risparmierebbe un ciclo, ma solo una parola della memoria di controllo, se si potesse sostituire "; goto T" con "; goto goto1" nelle istruzioni in cui occorre, ma non si può. La ragione è che l'indirizzo (nella memoria di controllo) della microistruzione da usare in alternativa a "F" deve risiedere nella metà alta della memoria (più precisamente, all'indirizzo di "F" incrementato di 0x100), mentre l'indirizzo associato all'etichetta goto1, essendo quello della prima microistruzione della sequenza che interpreta l'istruzione IJVM GOTO, deve coincidere con il codice operativo di quest'ultima, dunque deve occupare solo un byte, non 9 bit; in altre parole, deve trovarsi nella metà bassa della memoria di controllo.
Logged
Giuseppe Scollo
Moderator
Forumista Eroico
*****
Offline Offline

Posts: 1.539


« Reply #123 on: 10-06-2011, 05:59:48 »

Non ho capito come applicare il fattore di compressione 5?
Può dividere per 5 lo spazio occupato da ciascuna immagine (48x106 B) oppure, equivalentemente, moltiplicare per 5 il n. di immagini archiviabili (22) che ha ottenuto.
Logged
Giuseppe Scollo
Moderator
Forumista Eroico
*****
Offline Offline

Posts: 1.539


« Reply #124 on: 10-06-2011, 06:06:33 »

E quindi quale dovrebbe essere la risposta corretta?
L'ultima frase è sostanzialmente corretta:
I due tipi di arbitraggio sono simili, la differenza sta che nel'l'arbitraggio decentralizzato non ha l'arbitro e ciò lo rende più economico, più veloce e non soggetto ai potenziali guasti dell'arbitro.
La motivazione per i vantaggi indicati, seppur minimale, è sufficiente. A dire troppo si rischia...
Logged
Giuseppe Scollo
Moderator
Forumista Eroico
*****
Offline Offline

Posts: 1.539


« Reply #125 on: 10-06-2011, 06:14:20 »

Ma moltiplicando il numero di bit necessari ogni secondo per il numero di secondi viene un numero troppo grande (230 GB). Quindi appunto ho qualche dubbio sui calcoli che ho effettuato..
Tenga conto che il problema proposto è: "Calcolare il fattore di compressione ... con 3,5 GB per la traccia video". Non vedo perciò perché si debba considerare 230 GB un numero troppo grande.
Logged
Giuseppe Scollo
Moderator
Forumista Eroico
*****
Offline Offline

Posts: 1.539


« Reply #126 on: 10-06-2011, 06:37:48 »

Sapreste rispondere a questa domanda??
Un calcolatore con un bus dati largo 32 bit usa una DRAM implementata con chip di 1 Mbit x 1. Qual è la più piccola memoria (in byte) che il calcolatore può avere (max 5 righe)?
Provi lei a rispondere, sfruttando la seguente dritta: poiché i chip di memoria impiegati sono "... x 1", ovvero accettano indirizzi di singoli bit in ciascun ciclo, per costruire un dato da 32 bit in un solo ciclo occorre selezionare 32 chip diversi in parallelo (ricevono tutti lo stesso indirizzo, e ciascuno fornisce uno dei 32 bit che costituiscono il dato).
Logged
Giuseppe Scollo
Moderator
Forumista Eroico
*****
Offline Offline

Posts: 1.539


« Reply #127 on: 10-06-2011, 06:42:12 »

la mia domanda non era esclusivamente rivolta ai soli studenti ma anche a lei una sua risposta sarebbe una cosa gradita Smiley
OK, le ho riproposto il problema, equipaggiato di una dritta.
Logged
Giuseppe Scollo
Moderator
Forumista Eroico
*****
Offline Offline

Posts: 1.539


« Reply #128 on: 10-06-2011, 07:00:26 »

Fà un pò pena questo codice....è possibile ottimizzarlo?  pray 
Direi che conviene innanzitutto renderlo corretto, per pensare poi ad un'eventuale ottimizzazione. Premesso che le etichette appropriate dovrebbero essere Dload1, Dload2, etc., ecco le mie osservazioni (rimpiazzando l'etichetta PopTwo"n" con Dload"n"):
  • Perché il ciclo di attesa di Dload4?
  • La lettura lanciata in Dload5 legge esattamente ciò che è stato letto con quella lanciata in Dload1, mentre la variabile locale da caricare in cima allo stack è la successiva a quella già caricata nelle precedenti microistruzioni... Forse conviene salvare il MAR calcolato in Dload1 (assegnandolo anche a un altro registro nella stessa microistruzione).
Logged
Giuseppe Scollo
Moderator
Forumista Eroico
*****
Offline Offline

Posts: 1.539


« Reply #129 on: 10-06-2011, 07:16:22 »

A questo punto ho immaginato non più un half adder al bit a destra, ma un full adder in grado di ricevere il carry a 1. per la somma a complemento a 2 basta relegare il bit più significativo al segno del valore.

professore, il ragionamento che ho fatto le sembra corretto?
No. A parte che il ragionamento (corretto) di avere il full adder anche a destra poteva farlo subito (altrimenti a chi va l'input INC?), la parte scorretta del ragionamento è quella finale, perché la rappresentazione degli interi in complemento a 2 non è la stessa cosa della rappresentazione in valore assoluto e segno (e inoltre, quale deus ex machina ci dice il "segno del valore" (risultante, suppongo)? Per determinare la risposta corretta occorre rammentare che, in complemento a 2:
  • la rappresentazione di -n si ottiene da quella di n prendendone il complemento a 1 (cioè, complementandone tutti i bit), sommandovi poi 1, e trascurando l'eventuale riporto oltre il bit di segno (noti che così la rappresentazione di -0 coincide con quella di 0);
  • per sottrarre m da n basta sommare -m a n.
Le propongo anche un supplemento di domanda, per raffinare la sua comprensione dell'aritmetica in complemento a 2: come si fa a stabilire se la somma (in complemento a 2) m+n eccede i limiti della rappresentazione (cioè, va in overflow)?
Logged
Giuseppe Scollo
Moderator
Forumista Eroico
*****
Offline Offline

Posts: 1.539


« Reply #130 on: 10-06-2011, 07:19:49 »

Si è vantaggiosa perchè in presenza di una cache miss il la cpu passa da uno stao invalido ad uno valido con la write allocation sia per le scritture consecutive che per le letture in quanto si risparmierebbe il tempo di andare in memoria.
Spiacente, ma il presunto vantaggio è assolutamente trascurabile se la write allocation è seguita da una sequenza di letture: in assenza della write allocation, infatti, la prima delle successive letture caricherebbe la linea di memoria mancante nella cache, e riguardo alle successive letture non ci sarebbe alcuna differenza.
Logged
Giuseppe Scollo
Moderator
Forumista Eroico
*****
Offline Offline

Posts: 1.539


« Reply #131 on: 10-06-2011, 07:35:22 »

Se per esempio voglio sommare 8 + 8 = 16, ottengo come risultato della somma BCD il valore 10 e quindi devo aggiungere il numero 6 per correggere il risultato

0000 1000+
0000 1000
-----------------
0001 0000+ (10 in BCD)
0000 0110
-----------------
0001 0110 (16 in BCD)
Corretto, ma cosa si usa per determinare il valore "1" del bit 4 del risultato? Il riporto dal bit 3 (che non è il terzo bit da destra, bensì il quarto).
Quote
Non ho capito cosa si intende con "riporto oltre il terzo bit" relativo alle somme BCD
Supponga che, per la somma BCD, si usi il riporto dal bit 2 (cioè il terzo da destra) invece che dal bit 3. Allora la somma 7+7 genera un tale riporto (e se ne deve tener conto nella conversione binario naturale --> BCD, perché il risultato 0xE non è una cifra decimale, dunque va convertita), ma anche la somma 4+4 genera un riporto dal bit 2, solo che in tal caso il risultato 0x8 è una  cifra decimale, dunque non va generato il riporto sulla cifra BCD successiva. In breve, non è il riporto dal bit 2 che determina se, nella somma BCD di due cifre decimali, vada generato un riporto (decimale) o no.
Logged
Giuseppe Scollo
Moderator
Forumista Eroico
*****
Offline Offline

Posts: 1.539


« Reply #132 on: 10-06-2011, 07:48:08 »

Un modo alternativo potrebbe essere assegnare 1 ad A, 1 ad entrambi F0 e F1, uno al solo abilitatore ENA (ENB resta a 0),  1 ad INVA e 1 ad INC.
INC andrebbe posto a 0 anche in questo caso: "-1" è infatti rappresentato (in complemento a 2) dalla sequenza binaria di soli 1. Suppongo che qui, quando lei dice "assegnare 1 ad A" intenda che si assegni 1 a tutti i bit che costituiscono la sequenza binaria di A. Se invece intende che si assegni 1 al bit meno significativo di A, e 0 a tutti gli altri bit di A, allora sarebbe corretto porre INC a 1. Però, in entrambi i casi, non si ottiene il valore costante -1, bensì un valore che dipende dall'input A. Occorre invece escogitare un'altra combinazione dei sei segnali di controllo tale che, come nella prima soluzione, si ottiene -1 in output qualsiasi siano gli input A e B. Il commento continua nella risposta al messaggio appresso, dal suo collega.
« Last Edit: 10-06-2011, 07:53:52 by Giuseppe Scollo » Logged
Giuseppe Scollo
Moderator
Forumista Eroico
*****
Offline Offline

Posts: 1.539


« Reply #133 on: 10-06-2011, 07:59:47 »

   F0  F1  ENA  ENB  INVA INC  Function
     0    1     0      0       1     0       -1
     1    1     1      0       1     1       -A
Come osservato nella risposta precedente, la seconda funzione qui non è la funzione costante -1, perché, al contrario, dà un output che dipende dall'input A. C'è un modo semplice per ottenere la seconda soluzione: seguire lo stesso approccio della prima, ma con una diversa selezione dell'operazione mediante F0,F1.
Logged
Giuseppe Scollo
Moderator
Forumista Eroico
*****
Offline Offline

Posts: 1.539


« Reply #134 on: 10-06-2011, 08:02:16 »

Scrivere una procedura in un linguaggio assemblativo, con istruzioni per la moltiplicazione, per il calcolo di n! (max 10 righe).

Prof ma si intende in IJVM?
Non necessariamente: IJVM, se lo preferisce, o anche MASM, o l'assembly dell'8088... qualsiasi linguaggio assemblativo va bene.
Logged
Pages: 1 ... 7 8 [9] 10 11 ... 24   Go Up
Print
Jump to: