Cap 5 - Instruction Set Architecture Flashcards

1
Q

Quali sono i punti fermi lato sw e lato hw che devono essere rispettati quando si parla di ISA?

A

SW: l’architettura deve definire strumenti e risorse per il programmatore.
HW: l’architettura deve essere implementata attraverso un sistema digitale opportunamente progettato, in modo che si arrivi a un dispositivo che rispetti i requisiti di performance, costi, consumi e dimensioni del computer programmabile.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Quale distinzione generale si può fare nella classificazione di un’ISA?

A

Due macro-categorie: RISC: Reduced Instruction Set Computers; CISC: Complex Instruction Set Computers.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Quale vincolo rendeva l’approccio CISC ottimale nella progettazione di un’architettura?

A

Il costo e le dimensioni della memoria, motivo per cui l’obiettivo era ottenere computer che ne richiedessero poca.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Qual è l’idea che sta dietro la progettazione di tipo CISC?

A

Mantenere basso l’instruction count (# istruzioni richieste per algoritmo), in modo da minimizzare l’occupazione di memoria. Per questo motivo l’ISA deve prevedere 2 tipi di istruzioni: operazioni semplici e operazioni complesse e strutturate.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Qual è l’aspetto negativo di una progettazione dell’ISA con approccio CISC?

A

Le istruzioni complesse hanno un impatto in termini di performance, con CPI che potrebbe essere alto per tali istruzioni e clock rate che è influenzato dalla complessità del sistema digitale, e di conseguenza hanno un impatto sui costi, per la realizzazione di un sistema digitale che raggiunga certi standard di performance.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Qual è l’obiettivo dell’approccio RISC alla progettazione di un’architettura?

A

Semplificare il processore, e quindi ridurre i costi complessivi per la realizzazione del computer.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Qual è l’idea che sta dietro alla progettazione di tipo RISC?

A

Le istruzioni eseguono solo operazioni elementari, e le operazioni complesse sono realizzate componendo operazioni elementari. Questo era possibile anche dal fatto che la memoria fosse diventata più economica e meno ingombrante.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Quali sono i possibili svantaggi/vantaggi di un’implementazione di tipo RISC di un’architettura?

A

RISC potrebbe risultare meno efficiente rispetto a CISC, con un instruction count inevitabilmente maggiore. Tuttavia, istruzioni elementari implicano la possibilità di abbassare CPI e anche semplificare la struttura del sistema digitale che deve implementare le istruzioni, con vantaggi su costi e consumi.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Come può essere caratterizzato l’ISA MIPS?

A

Microprocessor without Interlocked Pipeline Stages

  • anni ‘80
  • RISC
  • 2 versioni: 32 bit, 64 bit
  • progettato pensando ai sistemi embedded.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Come può essere caratterizzato l’ISA RISC V?

A
  • consolidata attorno al 2015
  • RISC
  • royalty free + open source => non necessario pagare per realizzare processore su questa base
  • ISA modulare
  • principalmente adatto a sistemi embedded, ma può essere adattato a diversi contesti e applicazioni.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Come può essere caratterizzato l’ISA ARM?

A

Advanced RISC Machine

  • anni ‘80
  • ISA ibrido: nasce RISC ma utilizza anche soluzioni tipiche del CISC
  • pensato per realizzare processori con performance elevate e consumi contenuti
  • sistemi embedded / mobile.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Come può essere caratterizzato l’ISA Intel x86?

A
  • sigla per ISA sviluppati da Intel
  • storia che inizia nel 1978
  • tutti processori Intel 32 bit sono basati su ISA della famiglia x86.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Che cosa definisce l’ISA in termini di dati?

A

L’ISA definisce i tipi di dato messi a disposizione del programmatore e la dimensione in byte di ogni tipo.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Qual è il compito del compilatore quando si parla di dati?

A

Il compilatore deve associare ad ogni tipo di dato definito dal linguaggio di programmazione ai tipi messi a disposizione dall’ISA.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Che cosa si intende per word?

A

E’ la dimensione in bit del tipo di riferimento per l’architettura. Un’architettura prevede istruzioni che operano su dati di tipo word e suoi sottomultipli.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Che cosa definisce l’ISA dal punto di vista del livello hw, conosciuta la word del sistema?

A

Definisce le risorse necessarie a supportare le operazioni su interi (ed eventualmente floating point). Quindi la ALU dovrà essere progettata in funzione della word del sistema, anche se caratteristiche come latenza e area occupata vengono definite dal livello hw.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Come può essere riassunta l’organizzazione dei dati all’interno del computer?

A
  • RAM: elemento esterno alla CPU che ospita generalmente i dati e che detta i tempi per lo scambio di dati con il processore. Ha una capienza maggiore ma anche una latenza maggiore.
  • Register File (RF): banco di registri locale interno al processore, composto da poche unità ma a latenza più bassa. E’ possibile spostarvici i dati dalla RAM per un accesso più rapido.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Il banco di registri può sostituire la memoria all’interno di un computer?

A

No, dal momento che non è possibile usare registri per memorizzare strutture con # elevato di dati (array, struct, liste dinamiche, etc…). Inoltre un processore può ospitare al massimo un centinaio di registri, e si avrebbe il problema di come ricavare spazio utile all’interno del processore.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Quali categorie di registri vengono definite dall’ISA?

A
  • General purpose registers: registri a completa disposizione del programmatore.
  • Special function registers: l’ISA definisce per loro compiti specifici, quindi devono essere usati in maniera consona dal programmatore. L’ISA può anche inibire al programmatore l’accesso a tali registri.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Quali regole sono definite dall’ISA per gestire da dove la ALU riceva i dati e dove possa scrivere il risultato?

A
  • Register-memory: in ogni istruzione che coinvolga un’operazione aritmetico-logica gli input possono essere registri o locazioni di memoria e l’output anche.
  • Load-Store: in ogni istruzione che coinvolga un’operazione aritmetico-logica gli input possono essere solo registri e gli output solo un registro.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

Quali sono i vantaggi della politica Register-memory per la comunicazione ALU-RF/memoria in termini di performance?

A

Ci si aspetta un instruction count migliore (approccio CISC) e si ha una maggiore flessibilità nell’accesso ai dati, poiché si possono risparmiare spostamenti tra memoria e registri. Ottimo se il # di registri a disposizione è ridotto.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

Quali sono i vantaggi della politica Load-Store per la comunicazione ALU-RF/memoria in termini di performance?

A

La latenza delle operazioni aritmetico logiche può essere migliore poiché la ALU accede direttamente ai registri; di contro, generalmente sono richiesti più registri, e ciò ha ricadute sul livello hw. Nel complesso permette di semplificare la struttura della CPU, e può essere più facile trovare un compromesso performance/consumi.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

Come si possono caratterizzare RISC V e Intel x86 in termini di accesso ai registri/memoria da parte della ALU?

A

RISC V: - RISC - load-store - 32 registri general-purpose, altri 32 dedicati per unità FP.

Intel x86: - CISC - register-memory - 16 registri general-purpose, 8 per interi, 8 per FP - altri registri non visibili o con compiti dedicati.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

In che modo il metodo di codifica di un’istruzione impatta negativamente sulla CPU?

A

Dopo il fetch, la fase di decode viene effettuata dalla MSF nella CPU per poter poi passare all’esecuzione, e scegliere un metodo di codifica complicato per le istruzioni può avere un impatto sulla complessità della MSF.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
Q

Quali fattori determinano struttura e lunghezza (in bit) delle istruzioni?

A

Ogni istruzione codifica al suo interno una certa quantità di informazioni: che tipo di operazione deve eseguire la CPU (somma, aggiornare PC, spostare un dato, etc…), modalità di accesso agli input necessari per completare l’operazione (dove si trova il dato, se è una costante, etc…), destinazione di eventuali output. La lunghezza dell’istruzione inoltre impatta sullo spazio occupato in memoria.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
26
Q

Qual è la differenza tra il formato di istruzioni RISC e CISC?

A

RISC: tutte le istruzioni sono codificate con lo stesso numero di bit (tipicamente 16 o 32). CISC: istruzioni a lunghezza variabile (istruzioni diverse => formati diversi).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
27
Q

Come avviene il fetch e il decode di un’istruzione in un’architettura RISC?

A

L’istruzione ha una lunghezza prefissata, quindi durante la fase di fetch la CPU preleva un numero di byte noto a priori dalla memoria, partendo dalla posizione del Program Counter. Il pacchetto di byte viene salvato nell’Instruction Register, e nella fase di decode una MSF si occupa di interpretare il pacchetto di byte.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
28
Q

Come avviene il fetch e il decode di un’istruzione in un’architettura CISC?

A

L’obiettivo è risparmiare occupazione in memoria, quindi ogni istruzione ha le sue caratteristiche specifiche e una certa lunghezza in byte, e per ogni byte si cerca di utilizzare il minor # di byte possibile. Ad ogni fetch viene prelevato un numero prefissato di byte, e una fase di predecoding si occupa di individuare le istruzioni all’interno di questi byte.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
29
Q

Quali sono possibili esempi di architetture a lunghezza fissa e variabile?

A

MIPS / RISC V / ARM - lunghezza fissa, 32 bit, con disponibilità di formati ‘compressed’ (16 bit).

x86 - lunghezza variabile, da un minimo di 1 byte a un max di 15, + prefisso opzionale (4 byte).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
30
Q

Che metodo di indirizzamento si utilizza per accedere ai registri?

A

Essendo generalmente un numero ridotto e dovendo garantire accessi a bassa latenza, è meglio utilizzare l’indirizzamento diretto, ossia ad ognuno viene assegnato un tag diretto (ex. 32 registri, 0 - 31) e il tag è codificato nell’istruzione con un certo numero di bit (ex. 5 bit).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
31
Q

Che metodo di indirizzamento si utilizza per accedere a una locazione di memoria?

A

Esistono diversi approcci a seconda del contesto e il numero di bit necessari per la rappresentazione in linguaggio macchina. Considerando 2ᴷ locazioni da indirizzare e N bit per indirizzare i registri: - Direct / Absolute: viene direttamente scritto l’indirizzo della locazione interessata, utilizzando K bit - Register indirect: viene codificato il tag del registro in cui è contenuto l’indirizzo della locazione di memoria, attraverso N bit.

32
Q

Che cosa definisce l’ISA se parliamo di memoria?

A

Definisce le locazioni indirizzabili, locazioni da un byte indirizzabili individualmente. Indirizzi disponibili: da 0 a 2ᴷ-1 (se memoria ha 2ᴷ locazioni).

33
Q

Se un dato è rappresentato con 2 o più byte di memoria, come viene gestito l’accesso al dato?

A

Evidentemente sono necessarie 2 o più locazioni, che dovranno essere contigue. Per capire a quale locazione bisogna accedere sono importanti i concetti di: endianness e allineamento.

34
Q

Che cosa si intende per Big / Little Endian?

A

Si trattano di 2 convenzioni utilizzate per salvare in memoria dati la cui dimensione è di 2 o + byte. - Big Endian: la prima locazione utile contiene il primo byte partendo dal MSB - Little Endian: la prima locazione utile contiene il primo byte partendo dal LSB.

35
Q

Che cosa si intende per Memory Alignment?

A

Si intende il meccanismo per cui il salvataggio di dati in memoria avviene partendo da un indirizzo di memoria i cui primi bit (partendo dal lsb) corrispondenti al # di bit necessari per codificare un numero pari alla dimensione del dato da salvare sono 0.

36
Q

Perché è importante il Memory Alignment?

A

Poiché spesso la parte hw è specificamente organizzata per gestire dati allineati, difatti la latenza è più bassa se il dato è allineato in memoria.

37
Q

Quali sono degli aspetti non coinvolti quando si va a progettare un’ISA?

A
  • frequenza di clock: dipende da come verrà implementata l’architettura a livello hw
  • dettagli implementativi su singoli moduli (ex. regola specifiche funzionali in termini di I/O della ALU, ma non deve imporre vincoli sulla realizzazione in hw della stessa)
  • tecnologia: l’architettura deve essere indipendente da possibili evoluzioni a livello tecnologico.
38
Q

Quali operazioni deve fornire l’ISA?

A

Ci sono 3 categorie sempre presenti: - operazioni aritmetico-logiche - trasferimenti da / per la memoria - funzioni di controllo (jump, branch, procedures).

39
Q

Quali sono le caratteristiche dell’architettura RISC V?

A
  • approccio RISC
  • istruzioni a lunghezza fissa (32 bit)
  • struttura delle istruzioni molto regolare
  • architettura load - store (ALU interagisce solo con i registri)
  • IS: RV32I Base Integer (operazioni su dati interi con word a 32 bit) => aggiunta standard extension for integer multiplication and division.
40
Q

Come possiamo caratterizzare i registri disponibili nell’architettura RISC V?

A
  • visibili al programmatore
  • 32 registri a 32 bit => indirizzabili con 5 bit
  • previsto ulteriore banco di registri (32) a 32 bit per operazioni floating point single precision.
41
Q

What is the load-store architecture in RISC V?

A

The ALU interacts only with registers.

42
Q

What is RV32I Base Integer?

A

It performs operations on 32-bit integer data and includes standard extensions for integer multiplication and division.

43
Q

How many registers are available in RISC V architecture?

A

There are 32 registers, each 32 bits, addressable with 5 bits.

44
Q

What additional registers are provided for floating-point operations?

A

An additional bank of 32 registers, each 32 bits, is provided for single precision floating point operations with a dedicated instruction set.

45
Q

How are variables defined in RISC V architecture?

A

Variables are memory locations, corresponding to one or more memory locations depending on the variable type.

46
Q

What types of variables are identified in RISC V?

A

There are two types: global variables (in a dedicated data memory area) and local variables (limited visibility within a function).

47
Q

How are functions managed in RISC V architecture?

A

Functions are treated as subroutines with their own allocated memory space and local variables.

48
Q

What happens during a function call in RISC V?

A

There are two actors: the caller (the routine calling the subroutine) and the callee (the executed subroutine).

49
Q

What is a stack frame?

A

It is a memory area organized as a stack for subroutines to manage the callee/caller relationship.

50
Q

What is the protocol after a subroutine call?

A

The callee allocates its memory area in the stack and deallocates it before returning control to the caller.

51
Q

What do SP and FP stand for?

A

SP is the stack pointer, indicating the last occupied memory location of the stack, and FP is the frame pointer, defining the boundary of the stack portion occupied by a subroutine.

52
Q

How many instruction formats does RV32I provide?

A

It provides 4 different formats for instruction encoding: R-type, I-type, S-type (which can become B-type), and U-type (which can become J-type).

53
Q

What are the characteristics of R/I instruction encodings in RISC V?

A

They are designed for arithmetic/logical instructions, shifts, and comparisons.

54
Q

How is the addition operation defined in RISC V?

A

add t3, t4, t5

REG[t3] <= REG[t4] + REG[t5]

55
Q

How is logical/arithmetic shift defined in RISC V?

A

Logical shift: sll t3, t4, t5

REG[t3] <= REG[t4] &laquo_space;( REG[t5] & 0x0000001F )

56
Q

How are multiplication and division defined in RISC V?

A

mul t3, t4, t5

REG[t3] contains the lower 32 bits of the result.

57
Q

What are immediate operations?

A

They allow specific instructions where one input is a constant encoded in the instruction.

58
Q

What are comparison operations used for?

A

They are primarily used for managing conditional operations like if or while.

59
Q

How are comparison operations defined in RISC V?

A

slt t3, t4, t5

REG[t3] = 1 if REG[t4] < REG[t5]

60
Q

What does the load operation consist of?

A

It moves data from memory to a register.

61
Q

How is the load operation performed?

A

lw t5, t3(offset)

REG[t5] <= MEM[ REG[t3] + sext( offset ) ]

62
Q

How can a constant be loaded into a register?

A

Using the instruction: lui $t3, immediate

REG[t3] <= ( sext( immediate ) &laquo_space;12 )

63
Q

What is the store operation?

A

It transfers data from a register to memory.

64
Q

How is the store operation performed?

A

sw t5, t3(offset)

MEM[ REG[t3] + sext( offset ) ] <= REG[t5]

65
Q

What type of instruction is used for store operations?

A

S-type instructions are used, with the 12-bit constant for memory addressing encoded in two separate pieces.

66
Q

What is an unconditional jump operation?

A

It is used primarily for subroutine calls via the instruction: jal (jump and link).

67
Q

How is the jump operation performed?

A

jal ra, (offset)

It updates the PC and saves the return address.

68
Q

What are branching operations in RISC V?

A

They are conditional jumps that occur only if a certain condition is met.

69
Q

What is the structure of a branching instruction in RISC V?

A

beq t4, t5, offset

if ( REG[t4] == REG[t5] ) => branch taken => PC = PC + offset

70
Q

What does it mean for a callee to be leaf or non-leaf?

A

A leaf callee does not call other subroutines, while a non-leaf callee does.

71
Q

How are parameters and return values managed in RISC V subroutine calls?

A

RISC V reserves 8 registers (a0 - a7) for passing parameters and return values.

72
Q

What does the callee do during a subroutine call?

A

It allocates the stack frame, saves the return address and frame pointer, and updates the frame pointer.

73
Q

What are the policies for register usage in RISC V subroutine calls?

A

Registers t0 - t6 can be freely used by the callee, while registers s0 - s11 must be preserved.

74
Q

How does stack allocation affect local variables in RISC V?

A

Local variables are stored in the stack frame and cease to exist when control is returned to the caller.

75
Q

What categories of data can be identified based on allocation type?

A

Data can be static or dynamic (e.g., allocated with malloc/free in C, new/delete in C++).