Estratto del documento

INDICE

CAPITOLO 1:

INTRODUZIONE ALL’ARCHITETTURA DEI SISTEMI A

MICROPROCESSORE

1.1 Il contesto di riferimento: l’era dei sistemi embedded

e “smart”

1.2 L’architettura generale di un calcolatore

1.3 Il concetto di macchina a strati

CAPITOLO 2:

LA CODIFICA BINARIA E LA RAPPRESENTAZIONE

DELL’INFORMAZIONE

2.1 Il concetto di codifica e le unità di misura

dell’informazione

2.2 I sistemi di numerazione: posizionali e non posizionali

2.3 Il sistema binario, ottale ed esadecimale

2.4 Algoritmi di conversione di base

CAPITOLO 3:

ARITMETICA BINARIA E RAPPRESENTAZIONE DEI NUMERI

FRAZIONARI

3.1 I numeri naturali e l’aritmetica binaria

3.2 Rappresentazione dei numeri interi (con segno)

3.3 Aritmetica in complemento a 2 e il fenomeno

dell’overflow

3.4 Numeri frazionari, razionali e codifica testuale

CAPITOLO 4:

INTRODUZIONE ALLE RETI LOGICHE E ALL’ALGEBRA DI

BOOLE 4.1 L’algebra di boole: operazioni e proprietà

fondamentali

4.2 Funzioni booleane e insieme funzionalmente completi

4.3 Dalla teoria ai circuiti: reti, porte logiche e operatori

generalizzati

4.4 Tassonomia dei circuiti e metodologia di studio

4.5 Sintesi e minimizzazione: mappe di Karnaugh e don’t

care

CAPITOLO 5:

IMPLEMENTAZIONE REALE DEI CIRCUITI COMBINATORI E

MODULI STANDARD

5.1 Implementazione fisica dei valori logici e transistori

MOS 5.2 La tecnica CMOS e l’invertitore

5.3 Parametri temporali e di carico elettrico

5.4 Blocchi combinatori standard e interfacciamento BUS

5.5 Esecuzione dell’aritmetica hardware

CAPITOLO 6:

RETI SEQUENZIALI, SEGNALI DI CLOCK E COMPONENTI

DI MEMORIA

6.1 L’evoluzione verso i circuiti sequenziali: tempo e stato

6.2 Il segnale di clock: il metronomo del sistema

6.3 Elementi bistabili: dalle porte logiche ai latch

6.4 I flip-flop: sensibilità sui fronti ed evoluzioni

6.5 Architetture complesse: registri e contatori

CAPITOLO 7:

MACCHINE A STATI FINITI E DISPOSITIVI

PROGRAMMABILI

7.1 L’architettura generale di una macchina sequenziale

7.2 Il modello di Mealy e il modello di Moore

7.3 Diagrammi degli stati, tabelle e la codifica

7.4 Sintesi e dispositivi programmabili (PLS, FPGA, HDL)

CAPITOLO 8:

L’ORGRANIZZAZIONE DEI SISTEMI A MICROPROCESSORE

E L’EVOLUZIONE STORICA

8.1 L’evoluzione storica: dai sistemi “special purpose” ai

“general purpose”

8.2 Tassonomia moderna dei sistemi a microprocessore

8.3 Elementi fisici di un calcolatore

8.4 Architettura del Chipset: Northbridge e Southbridge

CAPITOLO 9:

STRUTTURA DEL PROCESSORE E MODELLI

ARCHITETTURALI

9.1 Unità funzionali e fasi di elaborzione

9.2 Tipologie di istruzioni

9.3 Il modello a registri e la gerarchia interna

9.4 Tipologie alternative di CPU: accumulatore e stack

CAPITOLO 10:

LA MEMORIA CENTRALE E LO SPAZIO DI

INDIRIZZAMENTO

10.1 L’interazione processore-memoria e i registri dedicati

10.2 Organizzazione della parola, endianness e allineamento

10.3 Spazio di indirizzamento e il fenomeno dell’aliasing

10.4 Gerarchia delle memorie, chip e packaging

CAPITOLO 11:

UNITÀ DI CONTROLLO, DATAPATH ED ESEMPI DI

PROCESSORI REALI

11.1 Il datapath e l’unità di controllo

11.2 Il ciclo del processore e le architetture di bus

11.3 Caso di studio 1: il processore coldfire (famiglia

motorale 68K)

11.4 Caso di studio 2: l’architettura ARM (advance risc

machine) 11.5 Caso di studio 3: Il processore Intel X86 (IA-32 /IA-

64)

CAPITOLO 12:

IL LIVELLO INSTRUCTION SET ARCHITECTURE (ISA) E IL

CODICE ASSEMBLY

12.1 Il ruolo dell’instruction set architecture (ISA)

12.2 Il ciclo di sviluppo del software e il linguaggio

Assembly

12.3 ISA e instruction format

Formato e codifica delle istruzioni (RISC VS CISC)

12.4 Modi di indirizzamento (addressing modes)

12.5 Le prestazioni di esecuzione (performance equation)

12.6 Compilatore

CAPITOLO 13:

L’INSTRUCTION SET ARCHITECTURE (ISA) DEL

PROCESSORE ARM

13.1 Modello a registri e modalità operative

13.2 Istruzioni di accesso alla memoria (LOAD/STORE)

13.3 Istruzioni aritmetico-logiche

13.4 Controllo del flusso ed esecuzione condizionatail

controllo del

Flusso in assembly

13.5 Direttive assemblatore e struttura di un programma

13.6 Istruzioni di accesso alla memoria

13.7 Istruzioni aritmetiche

13.8 Istruzioni MOV

13.9 Istruzioni logiche

13.10 Istruzioni di test

13.11 Istruzioni di controllo di flusso

13.12 Strutture di controllo elementare

13.14 Conditional execution

CAPITOLO 14:

L’INSTRUCTION SET ARCHITECTURE (ISA) DEL

PROCESSORE COLDFIRE

14.1 Il modello di programmazione e registri

14.2 Formato delle istruzioni e modi di indirizzamento

14.3 Set di istruzioni: aritmetica, logica e salti

CAPITOLO 15:

GESTIONE DELLE SUBROUTINE E DELLO STACK

15.1 Il concetto di stack e le subroutine

15.2 Subroutine linkage e chiamate innestate

15.3 Il passaggio dei parametri e lo stack frame

15.4 ARM subroutines e stack

15.5 Stack

15.6 Chiamate innestate e uso dello stack

15.7 Subroutine linkage

15.8 Pila

15.9 Passaggio parametri su stack

15.10 Link e allocate

CAPITOLO 16:

LA GESTIONE DELL’I/O: PROGRAM-CONTROLLED E

INTERRRUPT

16.1 Interfacce dei dispisitivi e memory-mapped I/O

16.2 Programm-controlled I/O (Polling)

16.3 Interrupt-based I/O e gestione delle eccezioni

16.4 Identificazione dei dispitivi

16.5 Nesting delle interruzioni e priorità

CAPITOLO 17:

ARCHITETTURA E PROGRAMMAZIONE DEL PROCESSORE

INTEL X86

17.1 Il modello di programmazione X86 (IA-32)

17.2 L’evoluzione a 64 bit (X64) e i registri multimediali

17.3 Organizzazione della memoria e struttura di un

programma

17.4 Modi di indirizzamento complessi e la sintassi

17.5 Gestione di funzioni e convenzione di chiamata

(calling conventions)

CAPITOLO 18:

GESTIONE AVANZATA DELLE INTERRUZIONI IN COLDFIRE

E ARM 18.1 Il sistema delle eccezioni nel motorola 6800

18.2 Il sistema delle eccezioni in ARM

18.3 Risposta ad un’eccezione

18.4 Ritorno da un’eccezione

18.5 Effetto della pipeline sul PC e indirizzamento di

ritorno in ARM

18.6 Calcolo dell’indirizzo di ritorno

18.7 Installazione di un exception handler

CAPITOLO 19:

ARCHITETTURA E PROGRAMMAZIONE INTEL X86/X64

19.1 Modello di programmazione e registri

19.2 Organizzazione della memoria e toolchain

19.3 Modi di indirizzamento X86

19.4 Segment registers e flat memory

19.5 La convenzione endianness (INTEL VS COLDFIRE)

CAPITOLO 20:

THE X86 ASSEMBLY LANGUAGE

20.1 Assembly line

20.2 Addressing

20.3 PTR directive

20.4 Esempio pratico con NASM

20.5 UBUNTU 18 Istruzioni

20.6 Esercizio

20.7 Arithemetic instructions

20.8 Bitwise opeartions

20.9 Branching

20.10 Variable length instruction encoding

20.11 Data moving

20.12 Loop-ing

20.13 Scan string (SCAS)

20.14 Data allocation

20.15 Data directive

20.16 Stack managemento – POP, PUSH

20.17 Funztions – CALL, RET

20.18 Stack evolution during X86 CALL/RETUNR

20.19 Calling conventions

20.20 GCC Disassembly (INTEL, STYLE & AT&T STYLE)

20.21 Operands FROM/TO variables

20.22 System call

20.23-24 Laboratorio

CAPITOLO 21:

CONVENZIONE DI CHIAMATA E PROGRAMMAZIONE

MISTA 21.1 L’evoluzione dello stack (call/return)

21.2 Calling conventions

21.3 Inline Assembly (integrazione C/ASM)

CAPITOLO 22:

DMA, GERARCHIE DI MEMORIA E MEMORIE CACHE

22.1 Direct memory access (DMA)

22.2 Interfaccia DMA device

22.3 Il principio della gerarchia delle memorie e delle

località

22.4 Le memorie cache e le politiche di scrittura

22.5 Chache hit

22.6 Tecniche di mapping (mappatura)

22.7 Algoritmi di sostituzione e performance

22.8 Le cache nei sistemi moderni

22.9 Intel cache levels

22.10 Analisi di un caso reale: INTERL I7-6700 SKYLAKE

CAPITOLO 23:

LA MEMORIA VIRTUALE E LA MMU

23.1 Il paradigma della memoria virtuale

23.2 Memory management unit (MMU) e paginazione

23.3 Traslazione lookaside buffer (TLB)

23.24 Il concetto di page fault

CAPITOLO 24:

PIPELINE, HAZARD E ARCHITETTURE SUPERSCALARI

24.1 Il concetto base di pipelining

24.2 Conflitti sui dati (data hazards) e forwarding

24.3 Conflitti sul flusso di controllo (branch hazards)

24.4 Predizione dei salti (branch prediction)

24.5 Architettura superscalari e out-off-order execution

CAPITOLO 25:

ARCHITETTURE PARALLELE: MULTITHREADING, SIMD E

GPU 25.1 Il multithreading hardware

25.2 Vector processing e architettura SMD

25.3 Estensioni multimediali su X86 (MMX E SSE)

25.4 Dalle CPU alle GPU (graphics processing units)

CAPITOLO 26:

ORGANIZZAZIONE LOGICA DELLA MEMORIA

26.1 Interazione processore-memoria: registri MA e MB

26.2 Il concetto di word e byte-addressability

26.3 Spazio di indirizzamento fisico e logico

26.4 Aliasing e indirizzi canonici

26.5 Endianness (ordine dei byte)

26.6 Memory aligment (allineamento in memoria)

CAPITOLO 27:

FONDAMENTI ARCHITETTURALI E RAPPRESENTAZIONE

DEI DATI 27.1 Tipi di computer e componenti fondamentali

27.2 Rappresentazione binaria dell’informazione

CAPITOLO 28:

INSTRUCTION SET ARCHITECTURE (ISA) E MODI DI

INDIRIZZAMENTO

28.1 L’accesso alla memoria e il set di istruzioni

28.2 Modi di indirizzamento

28.3 Implementazione dello stack e delle subroutine

CAPITOLO 29:

GESTIONE DELL’INPUT/OUTPUT E DELLE ECCEZIONI

29.1 Program-controlled I/O (polling)

29.2 Interrupt-based I/O

29.3 Eccezioni e stati privilegiati

CAPITOLO 30:

AMBIENTE DI SIMULAZIONE: ARM E MOTOROLA 68K

30.1 Il ciclo di sviluppo software

30.3 Easy68k (simulatore motorola 68K)

30.3 ARMDSIM# (simulatore ARM)

CAPITOLO 31:

SCHEDE DI LABORATORIO PRATICO (ASSEMBLY ARM E

68K) CAPITOLO 1

INTRODUZIONE ALL'ARCHITETTURA DEI SISTEMI A

MICROPROCESSORE

1.1 IL CONTESTO DI RIFERIMENTO: L'ERA DEI SISTEMI EMBEDDED E

"SMART"

Il mondo odierno è profondamente plasmato da tecnologie invisibili ma

onnipresenti. Da quando, quaranta anni fa, è nato il primo microprocessore, le

nostre vite sono state radicalmente ridisegnate dalla presenza di elaboratori

minuscoli ma estremamente potenti. Oggi viviamo in un mondo "smart", dove

piccoli computer integrati controllano e ottimizzano le interazioni fisiche e

digitali. Ad esempio, esistono sistemi energetici intelligenti in grado di

analizzare e ottimizzare i consumi all'interno degli edifici commerciali, sistemi

di traffico automatizzati che allontanano i guidatori dalle strade congestionate,

o ancora trattori automatizzati in grado di preparare i campi, piantare semi,

dispensare fertilizzante e raccogliere le colture in totale autonomia.

Nel settore automobilistico, la pervasività del software ha raggiunto vette

impressionanti. A titolo di confronto, un aereo da caccia di prima linea

statunitense come l'F-22 Raptor richiede circa 1,7 milioni di righe di codice

software per operare, mentre un aereo di linea come il Boeing 787 Dreamliner

necessita di circa 6,5 milioni di righe per gestire i suoi sistemi avionici e di

supporto. Sorprendentemente, un'automobile di classe premium moderna

supera di gran lunga queste cifre, arrivando a contenere quasi 100 milioni di

righe di codice software. Questo immenso carico computazionale viene

eseguito su una rete composta da un numero che varia tra 70 e 100

Electronic Control Units (ECUs): microcontrollori e sistemi elettronici

embedded dedicati che gestiscono specifiche funzioni fisiche e logiche

all'interno di un sistema complesso, coordinandosi attraverso una rete interna

per garantire il corretto funzionamento dell'intero veicolo. La presenza di questi

dispositivi non è limitata alle vetture di lusso; oggi anche le automobili di fascia

bassa ospitano tra le 30 e le 50 ECUs integrate capillarmente nella scocca,

nelle portiere, nel cruscotto, nel tetto, nei sedili e nel bagagliaio.

1.2 L'ARCHITETTURA GENERALE DI UN CALCOLATORE

Per comprendere il funzionamento dei complessi sistemi a microprocessore, è

indispensabile partire dall'architettura fondamentale di un elaboratore di base,

come il tipico Personal Computer. Ogni sistema informatico è composto da

blocchi funzionali ben definiti che interagiscono sinergicamente per acquisire,

memorizzare, elaborare e restituire i dati.

Il centro direttivo del sistema è la CPU (Central Processing Unit): il

processore centrale, spesso chiamato genericamente microprocessore, che

rappresenta il vero e proprio "cervello" dell'architettura hardware; ha il compito

essenziale di prelevare le istruzioni dalla memoria, decodificarle, eseguirle e

coordinare il funzionamento di tutte le altre unità operative. Affinché la CPU

possa lavorare efficacemente, ha bisogno di uno spazio di lavoro immediato: la

Memoria Centrale è un dispositivo di archiviazione elettronica ad accesso

primario ed estremamente rapido, nel quale risiedono momentaneamente sia i

dati da elaborare sia le istruzioni dei programmi in corso di esecuzione da parte

della CPU.

Tuttavia, CPU e Memoria Centrale sarebbero inutili senza un'infrastruttura

capace di farli comunicare tra loro e con il mondo esterno. Questo compito

vitale è affidato al Bus di Sistema: un canale di comunicazione elettronico e

condiviso, strutturato come un fascio di collegamenti fisici, attraverso cui

transitano velocemente i dati, gli indirizzi di memoria e i segnali di controllo e

sincronizzazione tra tutti i macro-componenti del calcolatore. È importante

notare che le periferiche esterne (come il monitor, la tastiera, il disco fisso e i

dischi rimovibili) non vengono collegate direttamente al bus, per motivi logici

ed elettrici. Esse si interfacciano all'elaboratore mediante appositi circuiti di

gestione detti Controllori di periferica (come il controllore del monitor o il

controllore del disco), i quali mediano le comunicazioni tra la periferica

specifica e il Bus di Sistema.

1.3 IL CONCETTO DI MACCHINA A STRATI

Un calcolatore è, nella sua essenza fisica, una fitta giungla di transistori e

circuiti. Se gli sviluppatori dovessero interagire direttamente con i segnali

elettrici, la stesura del software sarebbe un'impresa quasi impossibile. Per

questo motivo, in ambito informatico, si introduce e si adotta il concetto teorico

di Macchina a Strati: un modello logico-architetturale strutturato a livelli

gerarchici sovrapposti, dove ogni livello introduce un grado di astrazione

superiore nascondendo i dettagli tecnici complessi del livello sottostante,

offrendo così interfacce e servizi più semplici, funzionali e orientati all'utente.

La stratificazione architetturale si articola tipicamente in cinque livelli

principali, analizzabili dal basso verso l'alto:

1. Hardware: Il livello più basso e fondamentale, costituito dalle

componenti fisiche ed elettroniche reali.

2. Assembly Language (Linguaggio Assembly): Il primo strato di

astrazione logica, che fornisce una rappresentazione testuale e simbolica

delle istruzioni base eseguibili direttamente dal microprocessore.

3. Operating System (Sistema Operativo): Un complesso sistema

software che si interpone tra i programmi e l'hardware, fungendo da

amministratore e gestore delle risorse.

4. Problem-oriented Languages (Linguaggi Orientati al Problema): I

linguaggi di programmazione ad alto livello (es. C, Java, Python),

progettati per permettere agli sviluppatori di esprimere algoritmi in un

formato vicino alla logica umana piuttosto che alla logica della macchina.

5. User Level (Livello Utente/Application Programs): Il livello più alto e

astratto della gerarchia, formato dai programmi applicativi, con i quali

l'utente finale interagisce quotidianamente senza doversi preoccupare in

alcun modo dei sottostanti processi di elaborazione e conversione.

VERIFICA DELLE COMPETENZE

Parte A: Domande Teoriche (Esame Orale/Scritto)

Domanda 1: Illustrare il concetto di "Macchina a Strati", spiegando la sua

utilità per i programmatori e descrivendone accuratamente i livelli partendo da

quello a minor astrazione.

Linea guida per il massimo dei voti: Lo studente deve definire chiaramente

l'obiettivo del modello a strati (l'astrazione e l'occultamento della complessità).

Deve poi elencare, nell'ordine corretto dal basso verso l'alto, i livelli: Hardware,

Assembly Language, Operating System, Problem-oriented Languages e User

Level, descrivendo la funzione peculiare di ognuno.

Domanda 2: Descrivere l'architettura di base di un Personal Computer

concentrandosi sui componenti principali elaborativi e sull'infrastruttura di

comunicazione interna.

Linea guida per il massimo dei voti: Lo studente deve fornire definizioni

accurate di CPU, Memoria Centrale, Bus di Sistema e Controllori di periferica. È

essenziale sottolineare come il Bus di sistema faccia da mediatore generale e

perché le periferiche abbiano bisogno di un "controllore" dedicato piuttosto che

collegarsi direttamente al bus.

Parte B: Applicazione Pratica (Esercizi/Calcoli)

Scenario Pratico: Analisi dei livelli di astrazione in un Sistema Embedded

Automobilistico.

Siete incaricati di analizzare il funzionamento di un sistema antibloccaggio

delle ruote (una specifica ECU dei freni). Tracciate il flusso logico di un'azione (il

sensore rileva uno slittamento e aziona il freno) attraverso i 5 livelli della

Macchina a Strati discussi nel capitolo.

Risoluzione guidata passo dopo passo:

1. Livello 5 - User Level / Application Programs: L'applicativo "Anti-lock

Braking System (ABS)" esegue la sua logica continua: "Se rilevo che la

ruota si sta bloccando, riduci temporaneamente la pressione de

Anteprima
Vedrai una selezione di 10 pagine su 235
Appunti di Architettura dei sistemi a microprocessore Pag. 1 Appunti di Architettura dei sistemi a microprocessore Pag. 2
Anteprima di 10 pagg. su 235.
Scarica il documento per vederlo tutto.
Appunti di Architettura dei sistemi a microprocessore Pag. 6
Anteprima di 10 pagg. su 235.
Scarica il documento per vederlo tutto.
Appunti di Architettura dei sistemi a microprocessore Pag. 11
Anteprima di 10 pagg. su 235.
Scarica il documento per vederlo tutto.
Appunti di Architettura dei sistemi a microprocessore Pag. 16
Anteprima di 10 pagg. su 235.
Scarica il documento per vederlo tutto.
Appunti di Architettura dei sistemi a microprocessore Pag. 21
Anteprima di 10 pagg. su 235.
Scarica il documento per vederlo tutto.
Appunti di Architettura dei sistemi a microprocessore Pag. 26
Anteprima di 10 pagg. su 235.
Scarica il documento per vederlo tutto.
Appunti di Architettura dei sistemi a microprocessore Pag. 31
Anteprima di 10 pagg. su 235.
Scarica il documento per vederlo tutto.
Appunti di Architettura dei sistemi a microprocessore Pag. 36
Anteprima di 10 pagg. su 235.
Scarica il documento per vederlo tutto.
Appunti di Architettura dei sistemi a microprocessore Pag. 41
1 su 235
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher corsica97veronica di informazioni apprese con la frequenza delle lezioni di Architettura dei sistemi a microprocessore e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Napoli - Parthenope o del prof Lepore Luigi.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community