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

Posts: 1.511


« Reply #135 on: 10-06-2011, 08:19:13 »

La rilocazione dinamica invece è un'altra tecnica che viene effettuata senza la memoria virtuale [...] Questa tecnica però fa sorgere problemi di frammentazione interna ed esterna.
Non vedo come possano manifestarsi tali problemi, dal momento che non c'è memoria virtuale, dunque né paginazione né segmentazione. Vedo invece un altro problema: proprio perché non c'è né l'una né l'altra, il trasferimento da disco a memoria o viceversa va sempre fatto dell'intero programma.
Quote
In questo modo(indirizzamento immediato) l'operando viene recuperato automaticamente dalla memoria.
Coretto, ma perché il confronto con l'indirizzamento diretto sia chiaro, va aggiunto che in quello immediato l'operando è ottenuto dalla memoria nello stesso ciclo in cui si è prelevata l'istruzione, mentre in quello diretto occorre (almeno) un ciclo aggiuntivo.
Quote
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.
Corretto, in parte (in quello immediato il valore non può cambiare), ma irrilevante alla domanda: interessa il confronto in termini di lunghezza dell'istruzione e tempo di esecuzione (come, ad es., correttamente svolto nel resto della risposta).
Logged
Giuseppe Scollo
Moderator
Forumista Eroico
*****
Offline Offline

Posts: 1.511


« Reply #136 on: 10-06-2011, 08:21:08 »

Io invece ho un dubbio riguardo agli errori più comuni della programmazione assembly...quali potrebbero essere?
V. Tanenbaum, 5a Ed., sez. 7.3.3.
Logged
Flyer
Apprendista Forumista
**
Offline Offline

Posts: 100



« Reply #137 on: 10-06-2011, 15:07:13 »

Quote
Definire una macro con 4 parametri A, B, C, D, da attualizzarsi con nomi di registri, che permuti circolarmente i contenuti dei primi tre, usando il quarto come registro di lavoro (max 10 righe).
E' una cosa del genere?
SCAMBIO MACRO A,B,C,D
                MOV D,A
                MOV A,C
                MOV B,C
                MOV C,D
                ENDM

        
« Last Edit: 13-06-2011, 10:11:19 by Flyer » Logged
R3m
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 486



« Reply #138 on: 10-06-2011, 15:26:18 »

Quote
Calcolare il fattore di compressione richiesto per memorizzare 133 minuti di video in un DVD con 3,5 GB per la traccia video, risoluzione di 720x480 pixel, colori a 24 bit, 30 frame/s

Io ho ragionato in questo modo, ma ho qualche dubbio  boh

Ogni frame è composto da 720*480 pixel, cioè 345600 pixel. Ogni pixel ha 3 colori a 24 bit (8 bit a colore), quindi per ogni pixel sono necessari appunto 24 bit. Ciò significa per ogni frame sono necessari 8294400 bit. Per ogni secondo ci sono 30 frame; quindi per ogni secondo sono necessari 248832000 di bit. Avendo una durata totale del video di 133 minuti, abbiamo 7980 secondi....[]
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..


230 GB / 65 (fattore di compressione) sarebbe 3,5 circa....ma è fattibile un fattore di compressione 65?
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.
Nyconator
Apprendista Forumista
**
Offline Offline

Posts: 130


« Reply #139 on: 10-06-2011, 15:43:58 »

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.

Sarebbe corretto allora rispondere rispondere come segue? La ALU a 8 bit, con input INC al riporto in ingresso a destra, può eseguire somme e sottrazioni a 8 bit in complemento a 2. Come?  Si immagini una ALU con 8 full adder. L'input INC fornisce in ingresso all'adder del bit meno significativo un 1. In questo modo si può procedere con somme e sottrazioni a complemento a due. per sottrarre m da n basta sommare -m a n. Per ricavare -m basta invertire ogni singolo bit di m e aggiungere 1 al risultato (grazie ad INC), ignorando poi un eventuale riporto di 1 finale che causerebbe un overflow.

Quote
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)?

Dopo qualche ricerca ho studiato che la validità dell'operazione e l'appartenenza del risultato all'intervallo dei numeri rappresentabili è verificabile attraverso gli ultimi due bit di riporto ottenuti: bisogna verificare se il riporto è stato eseguito sul bit del segno (il bit più a sinistra, 0 per i positivi e 1 per i negativi) ma non è stato portato fuori, o viceversa; più semplicemente, se i due bit più a sinistra sulla riga dei riporti non sono entrambi 0 o 1.

Mi dica se sbaglio in qualcosa per favore  mille grazie
Logged
peppe89ct
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 288


very normal people


« Reply #140 on: 10-06-2011, 16:26:42 »

Code:
Un disco da 64 settori di 512B per traccia compie una rotazione in 16 ms, con I/O in DMA su bus da 16 bit a 2 MHz. In che misura percentuale il DMA rallenta la CPU (max 5 righe)?

Il disco è dotato di 32 KB per traccia, che è 16K parole. Il trasferimento dei dati viene eseguito a 16K in 16 msec, che richiede 8,192 millisecondi di tempo di ciclo del bus. Questo lascia 7,808 msec per 16 msec per la CPU, riducendo così
7.808/16 o 48,8 per cento della sua velocità (cioè, è rallentato da 51,2per cento). Il numero di cicli di bus per istruzione è irrilevante.
« Last Edit: 10-06-2011, 17:42:16 by peppe89ct » Logged

"Real programmers always confuse Halloween and Christmas 'cause 31oct = 25dec"
R3m
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 486



« Reply #141 on: 10-06-2011, 16:26:54 »

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).

Ah si mi ero confuso con un altro esercizio che stavo svolgendo e ho copiato le etichette di quello  testate

Comunque, Dload4 è vuoto perchè deve aspettare nel ciclo precedente la scrittura del valore di MDR nell'indirizzo di MAR. Forse per sistemare il Dload5 è possibile usare MAR = LV + MBR1U + 1; rd ma non sono sicuro della correttezza. Salvando il valore di MAR in Dload1, avrei sempre lo stesso problema...
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.
m3l0
Matricola
*
Offline Offline

Posts: 74



« Reply #142 on: 10-06-2011, 16:31:57 »

   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.

 F0  F1  ENA  ENB  INVA INC  Function
   0    1     0      0       1     0       -1
   1    1     0      0       1     1       -1

Prof altro non mi viene in mente
Logged
Nyconator
Apprendista Forumista
**
Offline Offline

Posts: 130


« Reply #143 on: 10-06-2011, 16:41:59 »

  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.

 F0  F1  ENA  ENB  INVA INC  Function
   0    1     0      0       1     0       -1
   1    1     0      0       1     1       -1

Prof altro non mi viene in mente

credo che in un caso f0->0, f1->1 (01:si indica l'operazione OR), nell'altro caso f0->1, f1->0 (10:si indica l'operazione NOT). in entrambi i casi, facendo qualche conto, il segnale uscente dovrebbe essere -1, senza input esterni, ovviamente supponendo che gli altri parametri siano in successione 0      0       1     0       -1. almeno ho immaginato fosse così, lascerò la parola al prof  

Logged
m3l0
Matricola
*
Offline Offline

Posts: 74



« Reply #144 on: 10-06-2011, 17:23:35 »

Perché conviene memorizzare sequenzialmente, nella memoria di controllo di Mic-4, le micro-operazioni di ciascuna istruzione IJVM, invece di uno schema simile a quello di Mic-1 (max 15 righe)?


Nel Mic-4, l'unità di decodifica è dotata di una propria ROM indicizzata per mezzo di codice IJVM. L'unità di decodifica invia all'unità di accodamento l'indice nella ROM delle microoperazioni che ha trovato nella sua tabella. Quindi penso che sia una questione di efficienza 
Logged
peppe89ct
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 288


very normal people


« Reply #145 on: 10-06-2011, 17:39:59 »

Code:
Perché solo alcune delle istruzioni del livello macchina del sistema operativo sono interpretate da quest'ultimo, mentre un microprogramma interpreta tutte le istruzioni del livello ISA (max 5 righe)?


Affidare il compito di interpretare tutte le istruzioni al sistema operativo provoca una inefficienza di prestazioni nella macchina.Per esempio l'istruzione ADD può essere gestita dal microprogramma che può gestirla perfettamente
« Last Edit: 10-06-2011, 17:41:46 by peppe89ct » Logged

"Real programmers always confuse Halloween and Christmas 'cause 31oct = 25dec"
SalvoCia
Matricola
*
Offline Offline

Posts: 36


« Reply #146 on: 11-06-2011, 10:22:44 »

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).

4 byte?
Logged
R3m
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 486



« Reply #147 on: 12-06-2011, 11:34:11 »

Quesito 17 : In un multiprocessore con bus condiviso, che succede se due processori cercano di accedere alla memoria globale nello stesso istante? È possibile che vi accedano simultaneamente (max 5 righe)?

Non ho capito, nel libro si parla di tali processori, ma di condiviso c'è solo la memoria. Il bus è tra le CPU e la memoria, credo si intenda quello (non si parla di bus tra CPU e CPU). Comunque, se si riferisce alla memoria, è possibile che si acceda a parti della memoria che stà leggendo un'altra CPU, ma non viene spiegato cosa succede (li si parla di un algoritmo che cerca gli oggetti in un'immagine, le 16 CPU trovano gli oggetti ma si deve "correggere" il valore via software, dato che tutte e 16 trovano oggetti già trovati).

Calcolare quanti nanosecondi impiega Mic-1 a 2 GHz per eseguire l'istruzione Java "i = j + k;" (max 5 righe).

Tale codice in Mic-1 ha bisogno di 2 ILOAD (j e k), un ISTORE (i) e un IADD (j+k), ovvero 5+5 (iload)+ 6 (istore) + 3 (iadd) = 19 istruzioni da eseguire. Dato che 2 Ghz consentono 2 miliardi di operazioni al secondo, con una proporzione (2 miliardi : 1 = 19 : x) otteniamo 0,0000000095 sec, il nanosecondo è un miliardesimo di secondo, quindi 9,5 ns.
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.
ZlatanCld
Matricola
*
Offline Offline

Posts: 46


« Reply #148 on: 12-06-2011, 16:02:23 »

In un multiprocessore con bus condiviso, che succede se due processori cercano di accedere alla memoria globale nello stesso istante? È possibile che vi accedano simultaneamente (max 5 righe)?

Dato che le cpu devono usare lo stesso bus per accedere alla memoria, in caso di accesso simultaneo si verifica il cosiddetto collo di bottiglia; la cpu manda la richiesta al modulo di memoria e libera il bus. Non appena la memoria sarà libera (ha finito di comunicare con altre cpu), risponderà a quella particolare cpu utilizzando il bus. Non potrà quindi utlizzare lo stesso bus per comunicare simultaneamente con più cpu.

Un modello di consistenza della memoria in un multiprocessore è una sorta di contratto tra il software e la memoria. In che senso (max 10 righe)?

Rappresenta una sorta di contratto tra software e hardware perché se il software rispetta certe regole, allora la memoria fornirà un certo tipo di risultati.
Se ad esempio viene scelta una consistenza stretta, la memoria farà in modo che ad ogni lettura di una certa locazione, si ritorni l’ultimo valore scritto in quella locazione.
Quindi, la scelta di un particolare modello di consistenza deciderà in maniera univoca come si comporterà la memoria nel caso in cui la cpu tenti di leggere una locazione scritta in precedenza da altre cpu.

La tolleranza alle cadute di un grafo connesso è il massimo numero di archi rimovibili pur lasciandolo connesso. Essa vale m-n+1 per un grafo connesso di n nodi e m archi: perché (max 5 righe)?

Un grafo con n nodi per essere connesso deve avere minimo n-1 archi (in modo che ogni arco congiunga due nodi differenti); quindi, se il numero di archi (m) fosse maggiore di n-1, posso rimuovere al massimo m-n+1 archi affinchè m non risulti minore di n-1.
 
Come è definita la larghezza di banda di bisezione di una rete di interconnessione (max 10 righe)?

La larghezza di banda di bisezione ci permette di conoscere la quantità di dati che la rete di interconnessione può trasferire al secondo. Per calcolarla, si bipartisce il grafo di rappresentazione della rete, in modo che ogni parte abbia un ugual numero di nodi, eliminando inoltre gli archi che collegano nodi appartenenti a parti diverse; di questa particolare partizione, si calcola la larghezza di banda degli archi rimossi. Dato che per ogni rete è comunque possibile realizzare più partizioni differenti ( raggruppando in modo diverso i nodi), per ogni partizione si calcolerà una certa larghezza di banda relativa agli archi rimossi; la minima tra tutte rappresenterà la larghezza di banda di bisezione della rete.

Perché i calcolatori paralleli con rete di interconnessione ad albero o ad anello non sono scalabili, mentre lo sono quelli con rete di interconnessione a griglia o ad ipercubo (max 10 righe)?

Le reti di interconnessione ad albero o ad anello non sono scalabili perché la capacità della rete non aumenta all’aumentare delle richieste. Prendendo come esempio la rete rappresentata da un albero, dato che la larghezza di banda di bisezione è uguale alla capacità dei collegamenti, aggiungendo un nodo (un richiedente) si aggiunge sempre un solo arco (collegamento); inoltre la richiesta di collegamenti è maggiore in prossimità della radice dell’albero, e ciò rappresenta un collo di bottiglia per la rete stessa. Queste caratteristiche non solo tipiche di un calcolatore scalabile. Per una rete come quella di un ipercubo invece, la scalabilità è rispettata dato che al crescere del numero di nodi si ha un più alto numero di collegamenti, e che la latenza cresce all’aumentare delle dimensioni della rete.

Perché le funzionalità relative alla sicurezza sono particolarmente importanti nei sistemi di grid computing (max 10 righe)?

Lo scopo delle grid computing è quello di creare una sorta di infrastruttura per la condivisione di risorse tra organizzazioni differenti, accumunate da un obiettivo comune. Com’è normale che sia, ogni organizzazione che permette la condivisione delle proprie risorse con le altre componenti della grid computing, vuole garantita un alto livello di sicurezza che consiste nel conoscere con precisione chi accede alle proprie risorse, con quale frequenza e con quale intensità. Senza queste misure di sicurezza, nessuna organizzazione condividerebbe le proprie risorse.
Logged
peppe89ct
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 288


very normal people


« Reply #149 on: 12-06-2011, 16:23:24 »

Le due frasi seguenti, riprodotte dai due paragrafi del testo citati, appaiono in contraddizione. Lo sono? Se sì, quale delle due è corretta? Se no, perché (max 5 righe)?
    * 4.4.2, ultimo paragrafo in "Unione del ciclo d'interpretazione con il microcodice":
      "Il prezzo da pagare è solamente un piccolo incremento della memoria
      di controllo."
    * 4.4.4, primo paragrafo:
      "il costo della IFU è senza dubbio maggiore del guadagno ottenuto
      riducendo la memoria di controllo."



Si sono in contraddizone ed è giusta quella del paragrafo 4.4.2 perchè  il prezzo da pagare è solamente un piccolo incremento della memoria di controllo.
Logged

"Real programmers always confuse Halloween and Christmas 'cause 31oct = 25dec"
Pages: 1 ... 8 9 [10] 11 12 ... 24   Go Up
Print
Jump to: