Tags:
tag this topic
create new tag
view all tags
---++ Domande sul TerzoProgetto2002 ---- %TOC% ---- ---+++ Esempio di domanda * Date un titolo alla domanda * firmate * separate le domande con una riga (----) -- Users.AndreaSterbini - 29 Mar 2002 ---- ---+++ Appunti Scusate l'utilizzo di questo spazio come Bacheca ma visto l'argomento credo si tratti dello spazio più adatto. Purtroppo non mi è stato possibile partecipare alla lezione del 10 maggio su interruzioni e trap.handler. e non trovo molta documentazione in proposito. Se qualcuno fosse possesso di buoni appunti sarebbe davvero gentile se volesse anche condividerli tramite twiki o per e-mail. Grazie. -- Users.LucaFoschini - 14 Apr 2002 <A href="http://twiki.dsi.uniroma1.it/pub/Users/AlbertoRocca/5.htm" target="_blank">Clicca qui</a> e scorri verso il basso la finestra che si apre fino ad arrivare al paragrafo Eccezioni ed Interruzioni nel MIPS. -- Users.AlbertoRocca - 20 May 2002 ---- ---+++ Chiarimenti Nella documentazione di SPIM leggo che le interruzioni sono ignorate mentre le eccezioni producono la stampa di un messaggio di warning. Analizzando il trap_handler sembra però che l'unico caso in cui l'eccezione è ignorata è il caso dell'eccezione 6; mi sbaglio? Inoltre vorrei sapere se il contenuto di EPC va incrementato di 4 solo nel caso delle eccezioni o anche nel caso delle interruzioni esterne come sembra dal trap_handler. -- Users.StefanoPalma - 15 May 2002 Le due istruzioni che seguono (prese dal trap.handler) saltano all'uscita *ret* se si tratta di una interruzione. <pre> sgt $v0 $k0 0x44 # ignore interrupt exceptions bgtz $v0 ret </pre> ... sembra quindi che anche le interruzioni vengano ignorate dal trap handler di default. Se si tratta di una interruzione *il valore preso da EPC non va incrementato di 4*. (ebbene sì, il trap.handler di default e' bacato :-) ) -- Users.AndreaSterbini - 16 May 200 --- ---+++ Status Register Ho fatto una piccola ricerca su internet e ho trovato che i bit della Interrupt Mask delllo Status Register vanno dal bit 8 al bit 15 ed in particolare i bit dall'8 al 12 sono quelli che si riferiscono alle interruzioni hardware, sulla documentazione che ci e' stata messa a disposizione, invece, ho trovato che questa l'Interrupt Mask comprende i bit dal 10 al 15. Quale delle due versioni e' corretta? Inoltre, sempre nell'ambito della ricerca che ho fatto, ho trovato che il bit che abilita le interruzioni del Transmitter e' il bit 9 ( che non rientra nell'intervallo 10-15), e' corretto? Se non e' corretto, qual'e' il bit giusto? Nella documentazione fornita sul sito non mi sembra che venga specificato. -- Users.SabrinaDellUomo - 18 May 2002 Credo che la versione che hai trovato tu sia quella corretta (bit 9), ora guardo il codice di spim. Immagino che ti riferisca alle pagine del corso di Architetture 1 http://www.disco.unimib.it/architettura1/arch01/arch01.html -- Users.AndreaSterbini - 18 May 2002 --- ---+++ Cause Register Se nello Status Register la Interrupt Mask comprende i bit dall'8 compreso al 15 compreso allora anche nel Cause Register i Pending Interrupt sono i bit dall'8 compreso al 15 compreso, con conseguente significato del bit 9? Non riesco a capire se c'e' un legame tra il bit 9 del Pending Interrupt e i bit 0-5 dello Status Register: dopo aver contollato se c'e' una interruzione da servire mi devo preoccupare di gestire anche la coda delle interruzioni attraverso i bit 0-5 dello Status Register? -- Users.SabrinaDellUomo - 20 May 2002 Dato che devi abilitare un solo interrupt sarà difficile che te ne possa capitare un'altro mentre gestisci il primo. Per questo esercizio non importa. -- Users.AndreaSterbini - 21 May 2002 --- ---+++ Forse un bug Durante la ricerca su internet di cui le ho detto, ho trovato il seguente appunto e vorrei sapere se e' corretto e va gestito oppure e' solo un falso allarme: ...A quanto pare lo SPIM ogni tanto spegne "per errore" il bit Interrupt Enable del Transmitter e il nostro output (gestito con le interruzioni) si ferma. Per forzare l'avanzamento occorre riabilitarlo a mano, in questo caso si provvedera' a farlo nel momento in cui una scrittura a video e' in attesa del completamento di una precedente visualizzazione... -- Users.SabrinaDellUomo - 20 May 2002 Non so se la versione corrente di Spim (6.4) ha corretto il bug riferito nella pagina a cui ti riferisci (pagina che risale ad una versione un poco precedente). Nel dubbio non fa male se gestisci il bug anche tu. -- Users.AndreaSterbini - 21 May 2002 --- ---+++ Formato stringa Se voglio mandare a video una stringa del tipo "progetto \n" la devo gestire come se fosse "progetto \n0" dove lo zero e' l'indicatore che mi permette di capire che la stringa e' finita? -- Users.SabrinaDellUomo - 20 May 2002 Nel buffer devi aggiungere lo zero di terminazione. Se le stringhe sono definite in *.asciiz* sono già terminate da zero ed hanno i caratteri di controllo già convertiti dal formato '\n' al codice ascii corrispondente. -- Users.AndreaSterbini - 21 May 2002 --- ---+++ Link utile Codice di esempio per la gestione di un I/O con SPIM http://www.disco.unimib.it/architettura1/arch01/esercitazioni/GestioneIngressoUscita2.html -- Users.SabrinaDellUomo - 22 May 2002 Grazie! -- Users.AndreaSterbini - 23 May 2002 ---- ---+++ Salvataggio e ripristino del contesto Il trap handler contiene le seguenti istruzioni: <pre> .set noat # Because we are running in the kernel, we can use $k0/$k1 without # saving their old values. move $k1, $at # Save $at .set at ... .set noat move $at, $k1 # Restore $at .set at </pre> il loro scopo e' quello di salvare il contesto, ossia i valori dei registri, prima di gestire l'interruzione e il ripristino dello stesso contesto quando l'interruzione e' stata gestita? Le faccio questa domanda perche' durante il codice Kernel salto ad una procedura sporcando il contenuto del registro $ra, la soluzione per evitare il problema che ne segue e' salvarlo insieme a tutti gli altri? -- Users.SabrinaDellUomo - 23 May 2002 Il registro $at viene usato come registro di appoggio dalle pseudoistruzioni che SPIM traduce in 2 o più istruzioni. Le istruzioni elencate servono a salvare e ripristinare il registro $at, dato che l'interruzione potrebbe capitare in mezzo e si vuol essere liberi di utilizzare pseudoistruzioni nel codice del trap.handler. -- Users.AndreaSterbini - 23 May 2002 ---- ---+++ EPC Ho notato che eseguire l'istruzione: <pre> sw $t3, 0xffff0008 </pre> per lo SPIM equivale ad eseguire due istruzioni, la seconda di indirizzo immediatamente successivo alla prima. Il segnale di interruzione viene inviato quando viene eseguita la seconda. Se gestisco l'interruzione in modo da non incremetare l'EPC di 4 il flusso del programma torna alla seconda istruzione di cui le ho detto prima e si genera un loop perche' viene generato un nuovo segnale di interruzione. Se incremento di 4 procede con l'esecuzione del successivo codice utente. -- Users.SabrinaDellUomo - 23 May 2002 Questo è un caso abbastanza particolare ... è chiaro che se le cose funzionano correttamente solo aggiungendo 4, allora aggiungete 4. Inserite un commento nel codice per evidenziare cio' che fate. -- Users.AndreaSterbini - 23 May 2002 ---- ---+++ ktext Il codice di abilitazione delle interruzioni va dichiarato ktext? se si come faccio ad evitare che mi venga generato l'errore di salto ad un indirizzo troppo lontano? -- Users.MassimilianoMiglio Puoi definirlo sia in .text che .ktext . Nel secondo caso non puoi usare direttamente le istruzioni *j* o *jal* perche' hanno indirizzamento di 24 bit (vedi il formato dell'istruzione). Puoi però usare *jr* se metti l'indirizzo di destinazione in un registro (32 bit). Ad esempio, puoi sostituire *j etichetta* con <pre> la $registro, etichetta jr $registro </pre> e *jal etichetta* con <pre> la $registro, etichetta jalr $ra, $registro (mi pare) </pre> -- Users.AndreaSterbini - 23 May 2002 ---- ---+++ Una cosa strana Come mai facendo girare i programma con il comando GO del menu simuletor il programma stama solo il prim carattere,mentre se lo eseguo passo passo stampa l'intera stringa? C'è una bella differenza tra le due cose ma non riesco a capire il motivo. -- Users.MassimilianoMiglio Non saprei ... vediamo in laboratorio mercoledì. -- Users.AndreaSterbini - 27 May 2002 Forse se per passo passo usi l'F10 potrebbe essere ché generi anche degli interrupt di tastiera... chissà. -- Users.LucaFoschini - 27 May 2002 Ho lo stesso problema: con F10 il programma gira correttamente mentre con F5 stampa solo qualche carattere della stringa. -- Users.SabrinaDellUomo - 27 May 2002 Massimiliano e' passato in ufficio, faceva l'errore di usare un loop in polling sul bit di ready del transmitter. * non vi e' stato chiesto di fare un polling sul bit ready (altrimenti che razza di esercizio sulle interruzioni sarebbe?) * il ciclo era nel bel mezzo del trap handler, e quindi tutte le interruzioni successive alla prima rimangono pending ... Insomma: * ricordatevi che il trap handler deve inserire nel transmitter data *un solo byte* e poi uscire! * il ciclo di polling va fatto nel programma principale * il polling dev'essere sul valore del primo carattere del buffer * quando diventa zero si esce dal ciclo e si continua l'esecuzione del programma principale -- Users.AndreaSterbini - 27 May 2002 ---- ---+++ Avviso Nella <a href="http://www.dsi.uniroma1.it/ita/avvisi.html" target="_blanck">pagina internet degli avvisi del DSI</A> ho notato il seguente comunicato: <blockquote> 27/5/2002. Architettura degli Elaboratori II <br> LA PROVA SCRITTA PER L'ESAME DI: ARCHITETTURA DEGLI ELABORATORI II E' NECESSARIA SOLO PER GLI ISCRITTI AI CORSI DI LAUREA TRIENNALI DI: INFORMATICA E TECNOLOGIE INFORMATICHE </blockquote> Cosa si intende? -- Users.AlbertoRocca - 04 Jun 2002 Si intende che: * chi fa Architettura 2 per la laurea breve deve fare lo scritto di assembler. * mentre chi e' iscritto al vecchio ordinamento e fa Laboratorio di Informatica: Architettura .... deve fare anche lui lo scritto di assembler :-) -- Users.AndreaSterbini - 04 Jun 2002
E
dit
|
A
ttach
|
Watch
|
P
rint version
|
H
istory
: r25
<
r24
<
r23
<
r22
<
r21
|
B
acklinks
|
V
iew topic
|
Ra
w
edit
|
M
ore topic actions
Topic revision: r25 - 2002-06-04
-
AndreaSterbini
Log In
or
Register
Architetture2/MZ Web
Create New Topic
Index
Search
Changes
Notifications
Statistics
Preferences
Prenotazioni esami
Laurea Triennale ...
Laurea Triennale
Algebra
Algoritmi
Introduzione agli algoritmi
Algoritmi 1
Algoritmi 2
Algoritmi per la
visualizzazione
Architetture
Prog. sist. digitali
Architetture 2
Basi di Dati
Basi di Dati 1 Inf.
Basi di Dati 1 T.I.
Basi di Dati (I modulo, A-L)
Basi di Dati (I modulo, M-Z)
Basi di Dati 2
Calcolo
Calcolo differenziale
Calcolo integrale
Calcolo delle Probabilitą
Metodi mat. per l'inf. (ex. Logica)
canale AD
canale PZ
Programmazione
Fond. di Programmazione
Metodologie di Programmazione
Prog. di sistemi multicore
Programmazione 2
AD
EO
PZ
Esercitazioni Prog. 2
Lab. Prog. AD
Lab. Prog. EO
Lab. Prog. 2
Prog. a Oggetti
Reti
Arch. di internet
Lab. di prog. di rete
Programmazione Web
Reti di elaboratori
Sistemi operativi
Sistemi Operativi (12 CFU)
Anni precedenti
Sistemi operativi 1
Sistemi operativi 2
Lab. SO 1
Lab. SO 2
Altri corsi
Automi, Calcolabilitą
e Complessitą
Apprendimento Automatico
Economia Aziendale
Elaborazione Immagini
Fisica 2
Grafica 3D
Informatica Giuridica
Laboratorio di Sistemi Interattivi
Linguaggi di Programmazione 3° anno Matematica
Linguaggi e Compilatori
Sistemi Informativi
Tecniche di Sicurezza dei Sistemi
ACSAI ...
ACSAI
Computer Architectures 1
Programming
Laurea Magistrale ...
Laurea Magistrale
Percorsi di studio
Corsi
Algoritmi Avanzati
Algoritmica
Algoritmi e Strutture Dati
Algoritmi per le reti
Architetture degli elaboratori 3
Architetture avanzate e parallele
Autonomous Networking
Big Data Computing
Business Intelligence
Calcolo Intensivo
Complessitą
Computer Systems and Programming
Concurrent Systems
Crittografia
Elaborazione del Linguaggio Naturale
Estrazione inf. dal web
Fisica 3
Gamification Lab
Information Systems
Ingegneria degli Algoritmi
Interazione Multi Modale
Metodi Formali per il Software
Methods in Computer Science Education: Analysis
Methods in Computer Science Education: Design
Prestazioni dei Sistemi di Rete
Prog. avanzata
Internet of Things
Sistemi Centrali
Reti Wireless
Sistemi Biometrici
Sistemi Distribuiti
Sistemi Informativi Geografici
Sistemi operativi 3
Tecniche di Sicurezza basate sui Linguaggi
Teoria della
Dimostrazione
Verifica del software
Visione artificiale
Attivitą complementari
Biologia Computazionale
Design and development of embedded systems for the Internet of Things
Lego Lab
Logic Programming
Pietre miliari della scienza
Prog. di processori multicore
Sistemi per l'interazione locale e remota
Laboratorio di Cyber-Security
Verifica e Validazione di Software Embedded
Altri Webs ...
Altri Webs
Dottorandi
Commissioni
Comm. Didattica
Comm. Didattica_r
Comm. Dottorato
Comm. Erasmus
Comm. Finanziamenti
Comm. Scientifica
Comm Scientifica_r
Corsi esterni
Sistemi Operativi (Matematica)
Perl e Bioperl
ECDL
Fondamenti 1
(NETTUNO)
Tecniche della Programmazione 1° modulo
(NETTUNO)
Seminars in Artificial Intelligence and Robotics: Natural Language Processing
Informatica generale
Primo canale
Secondo canale
II canale A.A. 10-11
Informatica
Informatica per Statistica
Laboratorio di Strumentazione Elettronica e Informatica
Progetti
Nemo
Quis
Remus
TWiki ...
TWiki
Tutto su TWiki
Users
Main
Sandbox
Home
Site map
AA web
AAP web
ACSAI web
AA2021 web
Programming web
AA2021 web
AN web
ASD web
Algebra web
AL web
AA1112 web
AA1213 web
AA1920 web
AA2021 web
MZ web
AA1112 web
AA1213 web
AA1112 web
AA1314 web
AA1415 web
AA1516 web
AA1617 web
AA1819 web
Old web
Algo_par_dis web
Algoreti web
More...
MZ Web
Create New Topic
Index
Search
Changes
Notifications
RSS Feed
Statistics
Preferences
View
Raw View
Print version
Find backlinks
History
More topic actions
Edit
Raw edit
Attach file or image
Edit topic preference settings
Set new parent
More topic actions
Account
Log In
Register User
Questo sito usa cookies, usandolo ne accettate la presenza. (
CookiePolicy
)
Torna al
Dipartimento di Informatica
E
dit
A
ttach
Copyright © 2008-2025 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki?
Send feedback