Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
• .GLOBL
- → GLOBL è simbolo, serve quando vogliamo realizzare dei progetti che si compongono di più moduli che devono essere tra di loro collegati da link and loader.
• .SPACE
- → SPACE n, dice all'assemblatore di riservare uno spazio ampio in byte nel segmento dati coperti.
• LEZIONE 13: 30/06/21
*SYSCALL
SPIM fornisce tramite SYSTEM CALL (SYSCALL) servizi analoghi a quelli del sistema operativo.
Passaggio parametri alla SYSCALL avviene attraverso i registri $a0-$a3 (se interi), $f12 (se in Virgole mobile) e il codice della chiamata attraverso $v0. Redditi restituiti in $v0, $f0 (se in Virgola mobile). Se ci sono più parametri si usa la memoria.
*ESEMPIO:
Per stampare sulla console "Risposta = 5" devo:
str: .data ← SEGMENTO DATI
.asciiz "Risposta = " ← STRINGA DA STAMPARE
.text ← SEGMENTO TESTO
li $v0,4 ← CHIAMATA PRINT_STRING
la $a0,str ← STRINGA DA STAMPARE
syscall
li $v0,1 ← CHIAMATA PRINTINT
li $a0,5 ← INTERO DA STAMPARE
syscall
*NOTA:
CODICE
CHIAMATA → INPUT
PRINT_INT 1 → $a0
PRINT_FLOAT 2 → $f12
PRINT_DOUBLE 3 → $f12
PRINT_STRING
READ_INT
READ_FLOAT
READ_DOUBLE
READ_STRING
EXIT
RESTITUISCE IL CONTROLLO DEL PROGRAMMA AL PROGRAMMATORE
LEZIONE 24
15/06/23
COM'È NOTO, CONCLUSA LA FASE DI SIMULAZIONE DI UN PROGRAMMA, BISOGNA VALUTARE QUALI REQUISITI DI MEMORIA DEBBANO ESSERE RISPETTATI AFFINCHE IL PROGRAMMA POSSA ESSERE MESSO IN ESECUZIONE SU UNA SCHEDA REALE BASATA SUL PROCESSORE MIPS. COME ESEMPIO SI FARÀ RIFERIMENTO AL PROGRAMMA SOMMA - BCD. SYSCALL, RSM
(1O) PROGRAMMA (AREA DI TESTO) =
SPAZIO = 0X13B (BYTE) ← MEMORIA NON VOLATILE ROM
(2O) MESSAGGI ADDETT
SPAZIO = 0X5D (BYTE) ← MEMORIA NON VOLATILE ROM
IMPLEMENTAZIONE ALU CON MULTIPLEXER
SOMMA IMPLEMENTAZIONE:
RIPORTO IN
SOMMA
RIPORTO OUT
* OSSERVA:
SE UTILIZZO IL MULTIPLEXER IL PROGETTO SI SEMPLIFICA PERCHÉ POSSO PROGETTARE LE SINGOLE "OPERAZIONI" IN MODO SEPARATO PER POI METTERLE IN PARALLELO.
** NOTA:
- Cout = a·b + a·Cin + b·Cin
- Σ = a ⊕ b ⊕ Cin
ALU A 1bit:
QUI A DESTRA È DISEGNATA LA ALU AD 1BIT CHE IMPLEMENTA LE OPERAZIONI DI AND, OR E SOMMA.
LA TABELLA DI VERITÀ ORA HA 5 INGRESSI A, B, DUE LINEE PER L'OPERAZION E UNA PER IL CARRY IN
* 5 INGRESSI = 25 Righe (32)
NOTA:
ABBIAMO SOMMA, AND E OR PER CONFICARE IL MODO D'INS PAR NEL CAMPO OPERATION CI SERVONO 2bit E QUINDI DUE LINEE Φi
C3 = Q2 b2 + Q2 C2 + b2 C2
C4 = Q3 b3 + Q3 C3 + b3 C3
IPOTESI:
QUALE CHE SIA IL NUMERO DEGLI INGRESSI, E QUALE CHE SIA IL NUMERO DELLE USCITE SI PUÒ REALIZZARE UNA QUALSIASI FUNZIONE CHE LEGA INGRESSI E USCITE ATTRAVERSO UNA SOMMA DI PRODOTTI.
POSSO COSTRUIRE UN SOMMATORE CHE NON SIA COSÌ FORTEMENTE LEGATO AL RIUSCITO?
C2 = Q1 (c0 c1 c2 b0 + b2 C1) + b1 (c0 c1 c2 b0 + b1 C1) + b3 C3
IN QUESTO MODO IL RIUSCITO DIVENTA POSSIBILE PER ESEMPIO SE Q1 b3 SOLO PASSA AD H0 RIUSCITO OPPURE SE b2 b2 C1 SOLO PASSA AD H0 RIUSCITO E COSÌ VIA...
IL PROBLEMA CHE SI RISPOSA È CHE PIÙ IL RETURN C3 POSSIE (i = 0, 1, 2, ... n) PIÙ L’EQUAZIONE DIVENTA GRANDE (CORRETE IL NOSTRO DI TERMINI CHE AL COMPOSTO) E QUINDI RISULTA SEMPRE PIÙ COSTOSO REALIZZARLO.
NOTA
QUESTA SOLUZIONE POSSIE IL NOME DI RIUSCITO VELOCE GRAZIE AD UN SOMMATORE AD HARDWARE INFLUITO
PIÙ VADO AVANTI CON LA PIÙ LA SOLUZIONE HARDWARE DIVENTA COMPLESSA
IPOTESI
QUESTA SOLUZIONE NON È FATTIBILE
DEVO TROVARE DELLE NUOVE SOLUZIONI
POSSIBILE SOLUZIONE:
POSSO PENSARE DI LIMITARE IL PROCESSO SOPRA DESCRITTO FINO AL CALCOLO DI C4 (SEPPOR GIÀ COMPLESSO È FATTIBILE)
POSSO POI PENSARE DI METTERE IN CASCATA PIÙ DISPOSITIVI COSÌ DA NON AVERE PIÙ ETA PROPAGAZIONE DEL RIUSCITO PER COPPIE DI BIT (c0 b0 c0 b0 c0 b1)
AVENDO INVECE UNA PROPAGAZIONE DEL RIUSCITO PED MAGIO BLOCCO
I RIUSCITI DA PROPAGARE SAREBBERO QUELLI DI C4, C8, C32...
RIEPILOGO: (CALCOLATORE A 4 BIT)
- RIPPLE CARRY ANDOR
- * TEMPO: 32 Δ
- 4 SOMMATORI AD HARDWARE INFINITO (4 BIT OGNUNO)
- * TEMPO: 8 Δ
- ANTICIPAZIONE DEL RIPORTO (16 BIT)
- * TEMPO: 3 Δ
- ANTICIPAZIONE DEL RIPORTO SECONDO LV. DI ASTRAZIONE
- * TEMPO: 5 Δ
LEZIONE 18: 25/06/21
RAPPRESENTAZIONE IN VIRGOLA MOBILE:
NASCHE DALLA NECESSITÀ DI DOVER RAPPRESENTARE O NUMERI MOLTO PICCOLI OPPURE MOLTO GRANDI. (OPPURE NUMERI FRAZIONARI)
RAPPRESENTAZIONE = SEGNO + ESPONENTE + MANTISSA
- #MANTISSA = ACCURATEZZA DELLA RAPPRESENTAZIONE
- #ESPONENTE = RANGE DI RAPPRESENTAZIONE
*FORMA NON NORMALIZZATA
Per riempire il "buco" rimasto fra lo zero e il più piccolo numero positivo normalizzato (2-126) lo standard ammette dei numeri detti subnumber (numeri non normalizzati) nel quale l'obbligo di avere sempre 1 nella parte della virgola non c'è.
(-1) . (MANTISSA) 2exp.bias
Non ho più 1+mantissa
Il numero più piccolo rappresentabile coa è 0,000...1 ≈ 2-23
Questo fattore lo uso come fatt. moltiplicativo per il fattore di scala.
2-23 · 2-126 = 2-149
IMPORTANTE:
Questo "poco riempimento" è detto underflow graduale perché so che posso rappresentare numeri sempre più piccoli, ma facendo ciò perdo anche gradualmente la precisione di rappresentazione.
Il numero più piccolo 2-149 avrà solo un bit nella mantissa però ad uso e sarà quello meno significativo.
Se vado sotto a 2-149 vado in underflow, che in questo caso equivale a zero.