Istituto Tecnico Industriale "Enrico Fermi"

Help On Chat

[Ritorna all'elenco sessioni]

Chat del 12 Maggio 2019 dalle 18:59:45 alle 19:44:36

Davide DE SORICELLIS
A cosa servono i general purpose register?
Silvia PASINI
per le costanti non si fanno le fetch?
Samuele SAVAZZI
quindi un doublee ha la stessa dimensione di un intero?
Stefano Salvi
Pasini: certo, si fanno le FETCH. Naturalmente le Fetch leggono comunque dalla memoria (l\'area del programma, ma comunque memoria).
Silvia PASINI
buonasera prof
il registro dei flags è sincrono? e perchè ha più segnali di write?
Stefano Salvi
Buonasera. Se vuoi cominciare, avanti!
Pasini: si, il registro dei flags è sincrono comle l\'accumulatore (e nelle operazioni artmetico/logiche vanno in coppia)
Pietro ZAVATTINI
sera prof
Silvia PASINI
non ho capito perchè viene salvato nello stack pointer la prossima area di stack libera?
Fabio BERTUZZI
Buonasera
Stefano Salvi
Pasini: ACC e Flags hanno due segnali di Write, perché hanno due ingressi per il dato (Data Bus ed ALU) quindi un segnale di write scrive nel registro prendendo il dato dal DB l\'altro dall\'uscita della ALU (o dall\'uscita dei flaf dalla ALU nel caso del registro flags).
Silvia PASINI
quindi tdr e flags sono sincroni perchè hanno due ingressi per il dato?
ah adesso ho capito
Stefano Salvi
Savazzi: per ora le uniche variabili che conosciamo sono char e unsigned char (visto che la CPU è a 8 bit). Per gli altri tipi devo fare dei piccoli programmi.
Pasini: Lo stack è una struttura LIFO (last in/first out). PEr implementarla (in software) si prende un\'area di memoria ed un puntatore. Il puntatore punta all aprina cella libera dell\'area (all\'inizio alla prima cella dell\'area, visto che è vuota) Quando si deve inserire un dato lo si inserisce alla clella puntata e si incrementa il puntatore, che punterà sempre alla prima cella libera. Se poi ci serve il dato indietro (l\'ultimo immesso), si decrementa il puntatore e si prende il dato nella cella puntata (che a questo punto diventa libera).
Pasini: TDR e Flags sono sincroni perchè devono salvare il dato nuovo che arriva dall\'ALU mentre forniscono all\'ALU il dato vecchio. Hanno due ingressi perché possono ricevere dati sia dall\'ALU che dal Data Bus. Per impementare i due ingressi nel mio schema ho fatto due segnali di Write, uno che scrive il dato proveniente da un ingresso (ALU) e l\'altro che scrive il dato proveniente dall\'altro (il mDB).
Pietro ZAVATTINI
per la codifica di hamming: quando è che posso sia rilevare che correggere? e quando posso fare solo una delle due?
Stefano Salvi
Zavattini: il discorso è relativo, in quanto se la distanza è maggiore di 2 cosa correggo e cosa rilevo è una scelta (basata sul tasso d\'errore della linea e sulla probabilità di errore che sono disposto ad accettare). Se scelgo di correggere il massimo possibile, nelle distanze pari maggiori di 2 posso correggere n bit e rilevarne uno in più erraro. (l\'ultima frase è poco chiara).
Pietro ZAVATTINI
Con la seconda fase intendevo chiedere in quali distanza di hamming NON posso sia rilevare n errori che correggerne
Stefano Salvi
Zavattini: le dispari maggiori di 1. Naturalmente se scelgo di correggere il massimo possibile (potrei anche scegliere di correggerne qualcuno e rilevare gli altri).
Alice LAVAGNINI
Ma nella CPU completa (dove abbiamo il TAR e il PC uniti) è il TAR a memorizzare il punto da cui siamo partiti e il PC aumenta?
Stefano Salvi
Lavagnini: il punto da cui siamo partiti (in una chiamata a funzione) viene salvato in memoria, nell\'area di Stack, puntata dallo Stack Pointer (SP). Il collegamento tra TAR e PC serve per poter scriver eun nuovo indirizzo di programma nel PC, in particolare uno che è il paramtro di un\'istruzione di trasferimento del controllo,. quindi sta scritto nel programma e mi serve il PC per leggerlo.
Silvia PASINI
ma il collegamento tra PC e TAR non serve per riprodurre i cicli?
Stefano Salvi
Pasino: tra le altre cose, si. Per fare un ciclo devo avere un\'istruzione in fondo che mi manda all\'inizio. Questa istrizione ha come parametro l\'indirizzo iniziale del ciclo. Per leggere questo parametro mi serve il PC (sono delle fetch), quindi non mpsso scriverci dentro direttamente. Per questo scrivo prima nel TAR, mentre uso ancora il valore vecchi del PC, poi quando ho finito copio il valore nuovo dal TAR al PC.
Come siete silenziosi...
Silvia PASINI
le costanti di un programma vengono trattate come variabili normali?
Lorenzo MAESTRINI
esatto
Stefano Salvi
Pasini: no, sono scritte nel CODICE del programma e si usa un\'indirizzamento IMMEDIATO. Non occupano celle di memoria dati e non hanno indirizzo.
Daniel DEGOBI
in che senso vengono scritte nel codice del programma
Paolo FRIGO
Se è gia presente un resto di un operazione nel flag, se dopo questa operazione ne facciamo un altra che dia resto questo verra sovrascritto al flag gia prestente?
Stefano Salvi
Segobi: le costanti nonsono variabili, quindi non vanno tra i dati e non hanno un indirizzo (nel nostro caso a 16 bit) nella memoria delle variabili. Vengono salvate nel programma, come PARAMETRO dell\'istruzione aritmetico logica o di trasferimento dati che le usa.
Pietro ZAVATTINI
Se la fetch preleva un\'istruzione la posiziona nell\'istruction register giusto?
Stefano Salvi
Frigo: si. Ricorda che il registro dei FLAG è sincrono, quindi fornisce il riporto per l\'operazione corrente e poi memorizza il riporto calcolato dall\'istruzione corrente per usarlo nella successiva.
Kain GRIMALDI POMARI
l\'unico registro che cambia sul fronte di discesa è il PC?
Silvia PASINI
non ho ancora capito come funzionano i cicli nella CPU, se il PC incrementa mentre il TAR si salva la posizione dove inizia il ciclo?
Stefano Salvi
Zavattini: la fetch può prelevare un\'istruzione (instruction fetch) o un parametro di un\'istruzione (fetch generica). L\'Instruction Fetch che preleva l\'istruzione (OpCode) salva il dato nell\'IR. Le altre fetch (generiche o "parameter fetch") invece mettono il dato letto deove serve (noi abbiamo visto le due metà del TAR, ad esempio).
Paolo FRIGO
Cosa succede nella cpu se sullo stesso bus finiscono due dati?
Stefano Salvi
Grimaldi: il PC INCREMENTA sul fronte di discesa. Flags e TDT/ACC Cambiano sul fronte di discesa, perché memorizzano il dato dall\'ALU. Stack Pointer incrementa e decrementa sul fornte di discesa (circa come il PC).
Pasini: forse è meglio che, passato il compito, vediamo nel dettaglio come si implementano le istruzioni di trasferimento di controllo e i metodi di indirizzamento divesi dal diretto, implicito e registro. Per ora tieniti il dubbio che per domani non tiserve.
Frigo: "che si brucia". Nessuna istruzione prevede che sullo stesso bus nello stesso momento due diverse sorgenti pongano un dato. Questa è una condizione di errore hardware!
Teoricamente a questo piunto dovrebbero comparirte gli studenti della 4ITel, ma non mi pare di vederne ancora, quindi se avete ancora qualche domanda rispondo. Se i fanno avanti i ragazzio di quarta, dobbiamo smettere.
Kain GRIMALDI POMARI
le costanti sono salvate in memoria con la stessa dimensione del DB?
Silvia PASINI
NO
Pietro ZAVATTINI
ccsa è il DB?
Silvia PASINI
data bus
Stefano Salvi
Grimaldi: le costanti sono salvate nel PROGRAMMA (che sta in memoria, in effetti...) ed hanno la stessa dimensione del DB (come le variabili, i GPR e l\'accumulatore).
Pietro ZAVATTINI
ah ok
Stefano Salvi
DB = Data Bus.
De Soricellis: I GPR (General Purpose Registers) sono un piccolo gruppo di VARIABILI immagazzinate direttamente all\'interno della CPU e raggiungibili con un indirizzo molto breve, che sta nell\'OPCODE, quindi sono velocissime.
Provo a chiudere, per vedere se quelli della tel si fanno avanti. Magari provate a mettere dentro il naso...
Buona cena, buon riposo ed in bocca al lupo.

[Ritorna all'elenco sessioni]