ESERCIZIO 1
Il set di istruzioni del DLX viene esteso con le seguenti due istruzioni FOR Ri, Rx, Ry NEXT Ri, IMM
Che verranno sempre utilizzate in coppia come mostrato nel seguente frammento di codice ADDI FOR LW SW NEXT
R4, R0, 4 R1, R0, R4 R4, 1000H(R1) 2000H(R1), R4 R1, 4
Queste due nuove istruzioni devono comportarsi come segue: FOR Ri, Rx, Ry
0 0 0 e u \ 0 0Ri 0 e u \ue000 \\ u0 0e0 e0u \00 000 eRx u \\ ue eR29 0 0 \ 0 u Rx e 0(indici 0 0 per il ciclo for) 0 0 0 e u \ 0R30 0 0 e u \\ \ue000 u e 0 0 0 Ry (il significato di Ry \u00e8 spiegato
nell\u2019istruzione NEXT. Si suppone che valga la relazione Rx < Ry e che Rx \u2265 0) 0 0 0 e u \ 0R31 0 0 e u \\ \ue000 u e 0 0 0 PC + 4 (indirizzo dell\u2019istruzione successiva all\u2019istruzione FOR)
NEXT Ri, IMM
0 0 0 e u \ 0 0Ri 0 e u \ue000 \\ u e 0 0 0 Ri + 0 0 0 e u \ 0R29 0 0 e u \\ \ue000 u e 0 0 0 R29
IMM (IMM \u00e8 un operando immediato senza segno) + 1 Confronta il valore di R29 aggiornato col valore di R30. Se (R29 \u2265 R30) allora l\u2019esecuzione del programma continua con l\u2019istruzione che segue l\u2019istruzione NEXT. Se (R29 < R30) allora la prossima istruzione da eseguire sar\u00e0 l\u2019istruzione successiva all\u2019istruzione FOR (l\u2019indirizzo di tale istruzione si trova gi\u00e0 in R31).
NB: Si suppone inoltre che le istruzioni presenti tra un\u2019istruzione FOR e la corrispondente NEXT non modifichino i registri Ri, R29, R30 e R31. Si indichi una possibile codifica binaria nel linguaggio macchina del DLX delle due nuove istruzioni. Per l\u2019istruzione FOR serve il formato con tre registri, cio\u00e8 il formato R. FOR
Rx
Ry
Ri
Op. code
Per l\u2019istruzione NEXT serve un formato che abbia l\u2019operando immediato, cio\u00e8 il formato I. NEXT
Ri
R29
IMMEDIATE
Con riferimento all\u2019implementazione sequenziale del DLX, si disegni il diagramma degli stati delle istruzioni FOR e NEXT. FOR
IR
PC
\ue000
\ue000
M[PC]
A \ue000 Rx (c\u2019\u00e8 Rx) B \ue000 Ry (c\u2019\u00e8 Ry) PC + 4* (incremento contatore) C
\ue000
A
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Ri \ue000 C 0 0 0 e u \ 0 0Ri 0 e u \ue000 \\ u e 0 0 0
Rx
R29 \ue000 C C \ue000 B 0 0 0 e u \ 0R29 0 0 e u \\ \ue000 u e 0 0
0
Rx
R30 \ue000 C C \ue000 PC 0 0 0 e u \ 0R30 0 0 e u \\ \ue000 u e 0 0
0
Ry
R31 \ue000 C 0 0 0 e u \ 0R31 0 0 e u \\ \ue000 u e 0 0 0
PC + 4*
NEXT
IR
\ue000
A
C
\ue000
M[PC]
\ue000
Ri
A + (0)16 ## IR15\u20260
0 0 0 e u \ 0 0Ri 0 e u \ue000 \\ u e 0 0 0 Ri \ue000 C
C
\ue000
B + 1
0 0 0 e u \ 0R29 0 0 e u \\ \ue000 u e 0 0 0 R29 \ue000 C
A B
1 0 0 e\u2265 u \ 1 0 0 eR30) u \\ u \ue001 ((R29 e 0 0
1
Ri + IMM
\ue000
\ue000
R29 + 1
R29 R30
C \ue000 A \ u 2 0 1 3 B A \ue000 R31 per C maggiore o uguale a zero, salta a dopo la NEXT)
PC \ue000 A Se (R29 < R30) allora la prossima istruzione da eseguire sar\u00e0 l\u2019istruzione
Considerando il frammento di codice riportato all\u2019inizio del testo, si mostri con un esempio quale risultato si ottiene dall\u2019esecuzione di detto codice. ADDI R4, R0, 4 FOR R1, R0, R4
Si inizializza R4 a 4 Viene invocata la FOR con parametri R1, R0, R4.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Si confronta R29 con R30: se sono uguali, o se R29 \u00e8
Vengono in pratica spostate 4 word (4 x 4 byte) dall\u2019indirizzo 1000H all\u2019indirizzo 2000H. Si indichi il numero di periodi di clock necessari ad eseguire le istruzioni nell\u2019ipotesi che la memoria richieda 2 stati di wait per ogni accesso. FOR = 7 + wait = 9 NEXT = (taken) 8 + wait = 10 (not-taken) 7 + wait = 9 Nelle ipotesi del punto 4, supponendo una frequenza di clock di 100 Mhz, quale
ADDI R3, R0, N FOR R1, R0, R3 NEXT R1, 1
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
ESERCIZIO 1
Come si potrebbe codificare l’istruzione utilizzando uno dei tre formati che ci mette a disposizione il DLX? Non è difficile accorgersi che, nella nuova istruzione, fanno la loro comparsa 3 registri: Rx, Ry, Rz. Dunque, l’unica codifica possibile è quella di tipo R: LBUR
Ry
Rz
Rx
LBUR
L’istruzione che abbiamo definito trasferisce in Rx il dato di tipo unsigned-byte situato all’indirizzo di memoria ottenuto sommando i registri Ry e Rz. FETCH:
IR
DECODE:
PC
MEMORY:
MAR
A+B
MDR
M[MAR]
C WRITE BACK:
RD
stati di wait
M[PC] PC + 4
accesso in memoria (wait)
MDR0..7 ## (0)24
si inserisce tutto in C
C
Vengono utilizzati 6 + altri 2 aggiuntivi dovuti agli accessi alla memoria Nell’ipotesi di voler aggiungere all’indirizzo di memoria usato dall’istruzione LBUR
LBUR
Ry
Rz
Rx
IMMEDIATE
Ad IMMEDIATE vengono riservati 11 bit, quindi può essere codificato con un range di [-1024, 1023]. Per poter distinguere questa codifica dalle altre senza generare confusione, l’unico
ESERCIZIO 2
Si consideri la seguente sequenza di istruzioni del DLX
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
SLTI R2, R1, 500H BNEZ R2, CICLO Si indichi il numero totale di cicli di bus relativo rispettivamente al “fetch” e all’esecuzione delle istruzioni. Anzitutto esaminiamo il codice: CICLO:
ADDI R1, R0, 400H LBU R2, 0(R1) LB R3, 0(R2) SB 0(R1), R3 ADDI R1, R1, 1 SLTI R2, R1, 500H BNEZ R2, CICLO
R1 viene a messo 400H (cioè 1024) Viene messo in R2 il contenuto di M[R1] Viene messo in R3 il contenuto di M[R2] Viene messo in R1 il contenuto di M[R3] R1 viene incrementato di 1 Se R1 è < 500H (cioè 1280) allora R2 viene messo a 1, altrimenti a 0 Se R2 è diverso da zero ciclo
Dunque questo mini-programmino assembler mette 400H In R1 in R2 in R3 Poi R1 viene incrementato di uno e si controlla se è minore di 500H: in tal caso si ricomincia da CICLO. Si esegue dunque il blocco CICLO (di 6 istruzioni) 1280 – 1024 = 256 volte; per
Per quanto riguarda l’esecuzione delle istruzioni, solo le prime 3 (in rosso) prevedono l’accesso alla memoria: quindi il numero totale di accessi è di 256 3 = 768. ⋅
Si consideri la struttura sequenziale del DLX ed, ipotizzando che tutti gli accessi in
Vengono fatte: 256 + 1 256 2 256 256 255 1 ⋅
ALU (6 clock ciascuna) LOAD (6+2 clock ciascuna) STORE (5+2 clock ciascuna) SET (5 clock ciascuna) BRANCH (not-taken) (3+2 clock ciascuna) BRANCH (taken) (4 clock)
Il numero totale di periodi di clock è quindi 10501. Il CPI medio, di conseguenza, risulta pari a 10501/1537 = 6,83
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
ESERCIZIO 1
Si supponga di voler estendere il set di istruzioni del DLX con l’istruzione: BNEQ++ (Rx), (Ry), IMMEDIATE Dove gli operandi Rx, Ry rappresentano due registri generali ed IMMEDIATE è una costante signed
If (M[Rx] ≠ M[Ry) Ry Ry + 4
then
PC PC + IMMEDIATE
Si mostri come potrebbe essere codificata la nuova istruzione utilizzando il più idoneo fra i 3 f istruzioni DLX.
Il formato più idoneo è quello di tipo I, perché abbiamo a disposizione lo spazio per due registri per l’operando immediato. BNEQ++
Rx
Ry
IMMEDIATE
Con riferimento al datapath del DLX sequenziale visto a lezione si disegni il diagramma degl controlla l’esecuzione della nuova istruzione inserendo anche gli stati necessari al fetch ed alla d
1) FETCH
IR M[PC]
Accesso in memoria
2) DECODE
PC PC + 4
3) MEMORY
MAR B (Ry)
4)
MDR M[MAR] C MAR + 4
Accesso in memoria Approfittiamone per farlo (bisogna effettuare questa operazione in ogni caso)
5)
TEMP MDR RS2 C
Ry (com’era all’inizio) è in TEMP, mentre l’Ry aggiornato viene deposto in B
6)
MAR A
Ora è necessario andare a prendere l’altro registro per effettuare il confronto
(le solite due fasi)
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
SE è TRUE 9a)
PC PC + (IR15)16 ## (IR15..0) Aggiorniamo il PC con l’immediato (16 bit)
SE è FALSE --)
Si torna daccapo
Nell’ipotesi che tutti gli accessi alla memoria possano essere completati in 2 clock, si calcoli il nu di clock (CPI) necessari per l’esecuzione dell’istruzione.
CASO Branch-TAKEN (risposta TRUE al punto 8) CPI = 6 + 2 (IF) + 2 (MEM1) + 2 (MEM2) = 12 CASO Branch-NOT-TAKEN (risposta FALSE al punto 8) CPI = [caso precedente] – 1 = 11 Utilizzando la nuova istruzione BNEQ++ si scriva un frammento di codice assembler DLX che, dato
ADD R1, R0, R0 ADDI R2, R0, 200H ADDI R3, R0, 228H
ADDI R4, R0, 4000H LOOP:
Inizializziamo R1: è il contatore degli elementi uguali ad alfa Inizializziamo R2 a 200H (dove inizia V1) Inizializziamo R3 a 228H (distante 40 celle da 8 bit da 200H, ovvero le celle dove contenere le 10 word). Qui inizia il secondo vettore, che è adiacente al primo. Mettiamo in R4 l’indirizzo della variabile alfa
BNEQ++ (R4), (R2), SKIP Se V[i] è diverso da alfa, vai a SKIP ADDI R1, R1, 1 Aggiungiamo 1 ad R1: abbiamo trovato una word uguale ad alfa SUBI R5, R2, 4 Mettiamo, in R5, R2 – 4; esso è l’indice di V1 aggiornato
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Dividiamo il codice in tre fasi: 1) INIZIALIZZAZIONE (4 istruzioni)
Si tratta di 4 ALU
4 + 2 (wait)
24 clock
4 + 2 (wait) 3 + 2 + 2 (wait) TAKEN NOT-TAKEN
18 clock 7 clock 12 clock 11 clock
2) UGUALE AD ALFA (5 istruzioni)
Ci sono 3 ALU C’è una STORE La BNEQ++
3) FINALE / DIVERSO DA ALFA (2 istruzioni)
C’è la SET Infine, la BRANCH
4 + 2 (wait) 6 clock TAKEN 5 clock NOT-TAKEN 4 clock L’inizializzazione si fa una volta sola. Poi, se si verifica che l’elemento del vettore è uguale ad alfa allora si fanno sia la fase 2 (con BNEQ++ “Not-taken”) che la fase 3. Altrimenti si fa solo la BNEQ++ “Taken” e la 3.
Numero totale di clock: 24 + (3 x [12+6+5+4]) + (7 x [11 + 7 + 18 + 6 + 5]) – 1 = 433
CPI MEDIO = 433/62 = 6,78
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
ESERCIZIO 1
Si supponga di voler estendere il set di istruzioni del DLX con l’istruzione: BNEQ++ (Rx), (Ry), IMMEDIATE Dove gli operandi Rx, Ry rappresentano due registri generali ed IMMEDIATE è una costante signed
If (M[Rx] ≠ M[Ry) Ry Ry + 4
then
PC PC + IMMEDIATE
Si mostri come potrebbe essere codificata la nuova istruzione utilizzando il più idoneo fra i 3 f istruzioni DLX.
Il formato più idoneo è quello di tipo I, perché abbiamo a disposizione lo spazio per due registri per l’operando immediato. BNEQ++
Rx
Ry
IMMEDIATE
Con riferimento al datapath del DLX sequenziale visto a lezione si disegni il diagramma degl controlla l’esecuzione della nuova istruzione inserendo anche gli stati necessari al fetch ed alla d
1) FETCH
IR M[PC]
2) DECODE
PC PC + 4
3) MEMORY
MAR B (Ry)
Accesso in memoria (le solite due fasi)
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
SE è TRUE 9a)
PC PC + (IR15)16 ## (IR15..0) Aggiorniamo il PC con l’immediato (16 bit)
SE è FALSE --)
Si torna daccapo
Nell’ipotesi che tutti gli accessi alla memoria possano essere completati in 2 clock, si calcoli il nu di clock (CPI) necessari per l’esecuzione dell’istruzione.
CASO Branch-TAKEN (risposta TRUE al punto 8) CPI = 6 + 2 (IF) + 2 (MEM1) + 2 (MEM2) = 12 CASO Branch-NOT-TAKEN (risposta FALSE al punto 8) CPI = [caso precedente] – 1 = 11 Utilizzando la nuova istruzione BNEQ++ si scriva un frammento di codice assembler DLX che, dato
ADD R1, R0, R0 ADDI R2, R0, 200H ADDI R3, R0, 228H
ADDI R4, R0, 4000H LOOP:
Inizializziamo R1: è il contatore degli elementi uguali ad alfa Inizializziamo R2 a 200H (dove inizia V1) Inizializziamo R3 a 228H (distante 40 celle da 8 bit da 200H, ovvero le celle dove contenere le 10 word). Qui inizia il secondo vettore, che è adiacente al primo. Mettiamo in R4 l’indirizzo della variabile alfa
BNEQ++ (R4), (R2), SKIP Se V[i] è diverso da alfa, vai a SKIP ADDI R1, R1, 1 Aggiungiamo 1 ad R1: abbiamo trovato una word uguale ad alfa SUBI R5, R2, 4 Mettiamo, in R5, R2 – 4; esso è l’indice di V1 aggiornato
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Dividiamo il codice in tre fasi: 1) INIZIALIZZAZIONE (4 istruzioni)
Si tratta di 4 ALU
4 + 2 (wait)
24 clock
4 + 2 (wait) 3 + 2 + 2 (wait) TAKEN NOT-TAKEN
18 clock 7 clock 12 clock 11 clock
2) UGUALE AD ALFA (5 istruzioni)
Ci sono 3 ALU C’è una STORE La BNEQ++
3) FINALE / DIVERSO DA ALFA (2 istruzioni)
C’è la SET Infine, la BRANCH
4 + 2 (wait) 6 clock TAKEN 5 clock NOT-TAKEN 4 clock L’inizializzazione si fa una volta sola. Poi, se si verifica che l’elemento del vettore è uguale ad alfa allora si fanno sia la fase 2 (con BNEQ++ “Not-taken”) che la fase 3. Altrimenti si fa solo la BNEQ++ “Taken” e la 3.
Numero totale di clock: 24 + (3 x [12+6+5+4]) + (7 x [11 + 7 + 18 + 6 + 5]) – 1 = 433
CPI MEDIO = 433/62 = 6,78
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
ESERCIZIO 1
Si supponga di voler estendere il set di istruzioni del DLX con l’istruzione: SCANVW Dove
gli
operandi
Rx,
Ry,
Rz,
Rx, Ry, Rz
rappresentano
tre
registri
generali.
L’istruzione
if (M[Rx] = Ry) then Rz 1 else Rz 0 Rx Rx + 4 Si mostri come potrebbe essere codificata la nuova istruzione utilizzando il più idoneo fra i tre formati delle istruzioni del DLX. Senza troppo scervellarci: ci sono tre registri, dunque la codifica appropriata è quella di tipo R. SCANWV Rx,Ry,Rz Ry Rx Rz Con
riferimento
al
datapath
FETCH
IR
M[PC]
DECODE
A
RS1 (Ry)
del
DLX
sequenziale
(stati di wait)
(cioè
non-pipelined)
… visto
a
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Inizializziamo la variabile R2 (indirizzo del vettore)
ADDI
R2, R0, 0400H
Valore confrontando
ADDI
R3, R0, 100
Contatore delle iterazioni
ADDI
R4, R0, 256
Usiamo l’istruzione SCANVW
SCANWV
R3, R2, R1
Se l’elemento è uguale a = R3 allora salta alla label FOUND
BNEZ
R1, FOUND
Decremento del contatore delle iterazioni
SUBI
Se il contatore delle iterazioni è diverso da 0, salta a NEXT
BNEZ
(NEXT)
R4, R4, 1 R4, NEXT
Se arriviamo qui significa che ADDI
R2, R0, 4
SUBI
R1, R2, 4
Se abbiamo trovato un elemento
R3 R4
100 256
M[400H] è = 100 ?
(NEXT)
(FOUND)
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
si fa invece dalla SCANVW alla successiva BNEZ-R1 (taken), quindi si salta alla FOUND. QUINDI 9 volte: SCANVW BNEZ-R1 (n.t.) SUBI BNEZ-R4 (t.)
12 clock 5 clock 7 clock 6 clock
1 volta: SCANVW BNEZ-R1 (t.) FOUND (SUBI)
12 clock 6 clock 7 clock
NUMERO TOTALE DI ISTRUZIONI: 3 (init) + 4 x 9 + 2 x 1 + 1 = 42
CPI medio: 316 / 42 = 7,5 circa
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
ESERCIZIO 1
Si supponga di voler estendere il Set di Istruzioni del DLX con la seguente istruzione NEG IMMEDIATE(Rx) Dove Rx è un registro generale ed IMMEDIATE è una costante di 16 bit con segno.
Si mostri come potrebbe essere codificata la nuova istruzione utilizzando uno dei 3 formati delle istruzioni DLX. C’è soltanto un registro di cui tenere conto (Rx), dunque è largamente sufficiente la codifica I: NEG Con
riferimento
IR
M[PC]
A
RS1 (Rx)
Rx al
datapath
MAR
A + (IR15)16 ## IR15..0
MDR
M[MAR]
del
indifferente DLX
sequenziale
(cioè
IMMEDIATE (16 bit) non-pipelined)
(stati di wait)
(sommiamo A all’operando immediato) (stati di wait)
visto
a
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Si spieghi in modo preciso e sintetico qual è l’operazione svolta dalla procedura. Si sottrae 4 dal registro R30 Si deposita R31 in R30
R30 R30
Viene cambiato di segno di ciò che c’è nel registro R1
( LOOP) R1 -R1 R1 R1 + 4 R2 R2 - 1
Viene aggiunto 4 ad R1 (si cerca la prossima word) Viene sottratto 1 da R2 R2 è uguale a zero? Se sì torna a LOOP, sennò prosegui. Viene messo in R31 ciò che viene preso in R30 Si aggiunge 4 ad R30 Si salta ad R31
R30 - 4 R31
R31 R30 R30 R30 + 4 Salta
Cosa fa questo benedetto programmino?
Si consideri la struttura sequenziale del DLX. Ipotizzando che tutti gli accessi
Se R2 è stato posto a 1000 significa che il LOOP (testo in verde) verrà eseguito
4 x 1000 (loop) 3 (fine) 4005 ISTRUZIONI
+ + =
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
PROC:
LOOP:
SUBUI R30, R30, 4 SW 0(R30), R31 SUBUI R30, R30, 4 SW 0(R30), R2 NEG 0(R1)
R31, 0(R30) ADDUI R30, R30, 4 LW R31, 0(R30) ADDUI R30, R30, 4 JR R31
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
ESERCIZIO 1
Si supponga di voler estendere il Set di Istruzioni del DLX con la seguente istruzione: ADDM IMMEDIATE(Rx), Ry Dove Rx, Ry sono due registri generali e IMMEDIATE è una costante a 16 bit con
M[Rx + IMMEDIATE]
M[Rx + IMMEDIATE] + Ry
Si mostri come potrebbe essere codificata la nuova istruzione utilizzando uno dei tre formati delle istruzioni DLX. Usiamo, in virtù della presenza dei due registri, il formato I. ADDM
Rx
Ry
IMMEDIATE (16 bit)
Con riferimento al datapath del DLX sequenziale (non-pipelined) visto a lezione
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Cosa fa questo codice? ADDI R1, R0, R0 CICLO: LW R2, V1(R1) LW R3, V2(R1) ADD R2, R2, R3 SW V1(R1), R2 ADDI R1, R1, 4 SLTI R2, R1, 1000H BNEZ R2, CICLO
Inizializziamo R1 a 0 Si carica in R2 il valore in V1[R1] Si carica in R3 il valore in V2[R1] Si somma: R2 R2 + R3 Si mette R2 in V1[R1] Togli 4 da R1 Se R1 < 1000H allora R2 1 (0 altrimenti) Se R2 non è uguale a zero, vai a CICLO
Il
programma
due
Si
consideri
scorre
la
struttura
TIPO DI ISTRUZIONE ALU LOAD
vettori
(V1
sequenziale
e
V2),
somma
del
DLX
ed,
QUANTE E QUANDO 1 (init.) + 1024 x 2 (ciclo) 1024 x 2 (ciclo)
fra
loro
ipotizzando
gli
che
CLOCK 7 10
elementi
tutti
gli
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
CPI medio
= 44038 / 5121 = 8,59
Come si nota, il CPI medio si è alzato. Tuttavia, ciò non significa che il nuovo
Considerando
sia
la
struttura
sequenziale
sia
quella
“pipelined”,
si
discutano
Semplicemente, non possiamo eseguire tale programma sulla pipeline a 5 stadi del DLX: la nuova istruzione è di tipo CISC.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
ESERCIZIO 1
Si scriva in Assembler DLX una procedura che calcola il massimo di un vettore di
PROC: LOOP:
SKIP:
ADD
R3, R0, R0
Inizializziamo R3: qua dentro ci finirà il massimo appena lo troveremo all’interno del vettore. LW R4, 0(R1) Carichiamo ciò che c’è in R1 su R4. SGTU R5, R4, R3 Se R4 > R3 allora R5 = 1 (se, cioè, abbiamo trovato un massimo, altrimenti R5 = 0. BEQZ R5, SKIP Non abbiamo trovato un nuovo massimo. Salta. ADD R3, R4, R0 Aggiornamento di R3 col nuovo massimo. ADDI R1, R1, 4 Si prosegue nel vettore (nota l’operando immediato 4, dovuto all’elaborazione di word). SUBI R2, R2, 1 Decrementiamo il contatore. BNEZ R2, LOOP Se non abbiamo finito, ricominciamo da LOOP. JR R31 Se abbiamo finito, ritorniamo al programma chiamante.
Si scriva il codice Assembler DLX necessario ad invocare la procedura scritta al
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
ESERCIZIO 1
Si supponga di voler estendere il set di istruzioni del DLX con l’istruzione CMPS Rx, Ry, Rz Dove
gli
operandi
Rx,
Ry,
Rz
rappresentano
tre
registri
generali.
L’istruzione
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
CLOCK TOTALI: 7 + 2 x 3 = 13 Utilizzando la nuova istruzione CMPS si scriva un frammento di codice assembler
ADDI ADDI ADDI LOOP: CMPS BEQZ
R1, R0, 1000H R2, R0, 2000H R4, R0, 100 R1, R2, R3 R3, SKIP
Indirizzo del primo vettore Indirizzo del secondo vettore Contatore dei caratteri Confronta gli elementi Al primo elemento diverso, si salta a SKIP
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
ESERCIZIO 1
Si supponga di voler estendere il set di istruzioni del DLX con l’istruzione SWAP_RM Rx, IMMEDIATE (Ry) Dove Rx, Ry rappresentano due registri generali ed IMMEDIATE una costante signed
Si mostri come potrebbe essere codificata la nuova istruzione utilizzando il più idoneo fra i tre formati delle istruzioni del DLX.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
For (i = 0; i < 100, i++) V1[i] = V2[V1[i]] Dove V1 e V2 sono due vettori di unsigned-byte allocati rispettivamente all’indirizzo 400H ed all’indirizzo 0. ADDI R1, R0, 400H ADDI R3, R0, 100 LOOP: LBU R2, 0(R1) LBU R2, 0(R2) SW
0(R1), R2
Indice del vettore V1 Contatore delle iterazioni R2 è ora l’indice del vettore V1, cioè V1[i] Ora mettiamo in R2 il contenuto riferito dall’indice trovato precedentemente Mettiamo ora tutto nel primo vettore