- 3,052
- 1,278
- CPU
- Intel i7 7700K
- Dissipatore
- Bequiet Dark rock pro 4
- Scheda Madre
- Msi pc mate z270
- HDD
- Seagate barracuda 1tb, silicon power NVME 500gb
- RAM
- Patriot viper steel 3733Mhz
- GPU
- Inno 3d gtx 1080 herculez design
- Monitor
- Asus mg279q
- PSU
- Corsair HX750
- Case
- Itek lunar 23
- Net
- Tiscali ftth
- OS
- windows 10,mint,debian,Arch linux
Aritmetica binaria e lo Standard IEEE754Visualizza allegato 339747Reti logiche combinatorie e costrutti notevoliReti logiche sequenziali e costrutti notevoliMicroarchitettura degli elaboratori(CPU in particolare)Codice di Hamming per la rilevazione degli erroriInstruction Set ArchitectureLe prestazioni di un elaboratoreMemoriePeriferiche di I/OCPU BUSILPCPU multiple ISSUE
Il concetto di calcolatore
Il calcolatore è un sistema digitale di elaborazione dell'informazione.
Per sistema si intende un insieme di elementi connessi tra di loro in grado di lavorare come un unico elemento. Il cervello di questo sistema è chiamato non a caso:
CENTRAL PROCESSING UNIT
O semplicemente CPU. I nostri computer elaborano costantemente enormi flussi di dati dai quali ricavano le informazioni utili a gestire il task da noi richiesto. L'interpretazione di questi dati genera dei segnali elettrici: questi segnali elettrici possono essere di tipo digitale o analogico.
La differenza è che il segnale digitale è un segnale discreto ossia che assume valori finiti all'interno del calcolatore(0-1), mentre analogico ha un range.
Purtroppo l'immangine lascia a desiderare ma rende l'idea. Chiariamo alcuni punti:
- I valori analogici non raggiungono mai le tensioni 0 e 1, ma raggiungono valori di soglia che dipendono dalla composizione fisica dei materiali.
- Tra i segnali digitali, un segnale si dice binario quando assume solo due valori 0 e 1 rappresentabili con una cifra binaria denominata Bit (Binary Digit).
- Le stringhe composte dall'affiancamento di questi bit vengono raggruppate in variabili binarie. Queste variabili binarie sono le informazioni elaborate dal nostro computer. Ad esempio un pixel è codificato come RGB, ovvero tre componenti rappresentati a loro volta da 256 valori digitali diversi.
Un po' di storia: il termine informazione fu definito come oggetto quantificabile da Claude Shannon, pubblicando il testo "Una teoria matematica della comunicazione". Shannon misurò l’informazione con la stessa formulazione matematica dell’entropia in fisica, e definì quindi l’informazione come l’entropia A causa di questa interpretazione binaria i computer lavorano con l'aritmetica binaria gestendo dati di dimensioni variabili(integer,floating point...).
I calcolatori si dividono i tre macro categorie:
- Sistemi Embedded: sono dei sistemi dedicati, composti da una o più CPU, non sempre posseggono un sistema operativo. Sono adibiti a svolgere un compito prefissato durante tutto il periodo di utilizzo. Esempi di sistemi embedded sono Arduino, microcontrollori dei sistemi industriali
- Sistemi general-purpose: Come dice la parola sono calcolatori che rispondono a qualsiasi tipo di richiesta non definita a priori. I nostri cari computer,non hanno un compito predefinito, ma si "adattano a qualsiasi richiesta"
- ASIC: sono dei sistemi di elaborazione in cui le unità come CPU,memorie e periferiche sono "cablate" in hardware e progettate specificatamente, non sono programmabili via software ma configurabili. Configurabile significa che è possibile indicare da parte dell’utente un insieme di dati di ingresso specificatamente codificati per modificare o selezionare la funzionalità interna in base a un programma o a una rete logica già definita.
Cosa hanno in comune le prime due categorie?
L'unita chiamata a gestire le operazioni logiche e di calcolo: La CPU
Se integrata in un solo chip la CPU si chiama microprocessore, termine utilizzato erroneamente come sinonimo al giorno d'oggi.
I microprocessori attuali hanno ora parte dell’hardware dedicato al supporto del Sistema Operativo, alle cache e alla memoria , alle operazioni multimediali e hanno velocità sempre maggiore per rendere la CPU potente in processi computazionalmente complessi. I microprocessori vengono suddivisi in:
- CPU (Central Processing Unit): è il processore principale che controlla il sistema operativo e gestisce tutto il sistema di calcolo
- GPU (Graphic Processing Unit): è il processore nato per gestire il reparto grafico cuore delle schede video. Vengono denominate anche GP-GPU (general purpose) perché grazie al loro elevato numero di core, la loro bassa latenza interna sono ideali per l'elaborazione in parallelo , machine learning e intelligenza artificiale.
- APU (Accelerated Processing Unit): sono il mix delle precedenti, praticamente onnipresenti nei sistemi embedded come le console.
- DSP (Digital Signal Processor): sono processori ottimizzati per l’elaborazione del segnale digitale, in particolare dell’audio ma anche delle immagini(in assenza di gpu)
- Microcontrollori: sono microprocessori specializzati per il controllo di periferiche di I/O soprattutto per ricevere dati da sensori e controllare attuatori.
Livelli di astrazione
Lo studio di un sistema complesso come un calcolatore non può essere analizzato come un conglomerato unico; l'ingegneria ha quindi definito un modello di astrazione della realtà. La gestione dei modelli e dei livelli di astrazione è utile per trovare un collegamento tra il sistema a livello funzionale, il sistema visto dall'esterno e la visione interna a livello strutturale.
Questa necessità è tanto più evidente dove sussiste un divario semantico tra ciò che l'utente chiede virtualmente e ciò che il calcolatore è in grado di fare. A causa di questa problematica i livelli di astrazione nel calcolatore vengono denominati livelli di macchine virtuali. Lo scopo di questa guida è un'analisi del calcolatore a livello hardware potendo quindi usare un modello descritto dai seguenti livelli di astrazione:
- Livello dei circuiti
- Livello logico
- Livello RTL
- Livello di sistema
In parole povere le funzioni ottenibili con una sintesi hardware sono ottenibili in software e viceversa,:ovviamente ciò comporta dei diversi rapporti tra prestazioni e flessibilità. Un moltiplicazione hardwired (cablata in hardware) è nettamente più veloce di una moltiplicazione emulata. Tuttavia per apportare una modifica è necessario riprogettare la parte hardware dedicata. Se realizzata livello software è molto più flessibile, modificabile e riutilizzabile indipendentemente dall'hardware o dai livelli software sottostanti, definiti come il modello a cipolla:
Questo concetto di insieme di livelli di astrazione è importantissimo pensando alla vita di un software.
- Uno sviluppatore progetta per una macchina virtuale che non risponde necessariamente alla macchina fisica.
- Si attua un meccanismo di traduzione che un linguaggio a livello l possa essere tradotto in un linguaggio di livello più basso l-1, fino al linguaggio macchina del calcolatore.
- In alcuni casi il linguaggio non è tradotto, ma semplicemente interpretato istruzione per istruzione da un programma.
- La differenza sostanziale consiste che nel caso di traduzione o compilazione, il programma viene riadattato per essere conforme ad un linguaggio l-1 più semplice.
- Nell'interpretazione il programma viene caricato in memoria ed usato ingresso per un programma in linguaggio L-1 che ha lo scopo di interpretare volta per volta ogni istruzione.
È il livello delle componenti digitali, delle reti logiche e RTL(Register transfer Level) e dei componenti hardware. Il computer può essere studiato come insieme di porte logiche che a loro volta creano le unità elementari per il calcolo o la memorizzazione etc. Sotto questo livello esiste il livello dei circuiti elettronici, sotto ancora dei dispositivi e dei transistor che si studiano in elettronica. A questo livello il computer è visto come un sistema digitale non programmabile in cui ogni elemento viene configurato e compie delle funzioni a seconda degli input che riceve, di cui alcuni input sono i bit di istruzione ed altri i dati. In questo caso il livello viene descritto con linguaggi HDL(hardware description language), il più famoso è il VHDL
Livello Microarchitettural
Il livello hardware che coinvolge le scelte sui blocchi logici che implementano la CPU e l’interno dei componenti del calcolatore, si definiscono ancora il componenti logici impiegati(come RTL e sistema). Viene definita una ALU(Arithmetic Logic Unit) e il suo percorso dei dati (Data Path). In moltissimi calcolatori questo livello è programmabile con un linguaggio di basso livello(Microcode). In passato le macchine erano microprogrammate in questo modo, tuttavia per il motivo descritto prima sono più lente; ora le unità sono per lo più hardwired.
Livello Instruction Set Architecture(ISA)
Ogni produttore ha il proprio linguaggio macchina implementato nell'ISA. Essa è il livello che definisce l'architettura della CPU e di conseguenza ciò che è possibile realizzare. I compilatori devono conoscere ogni dettaglio architetturale per poter tradurre nel modo più efficiente le istruzioni scritte da un linguaggio di alto livello a linguaggio macchina. L’ISA definisce gli aspetti caratteristici e soprattutto il linguaggio macchina che è in corrispondenza con il linguaggio assembly e che è collegato ai linguaggi di alto livello da una traduzione o interpretazione.
Il termine architettura fu coniato dall' IBM all'incirca negli anni 60 per indicare una "famiglia" di calcolatori che avevano le stesse funzionalità, ma organizzazione diversa.
Livello So
È il livello Middleware ossia il software di basso livello. Chi programma in questo livello usa le istruzioni dell'ISA o alcune macro del SO(System Call) o scrive in assembly. La java virtual machine è progettata in questo livello
Livello Assembly
È il livello in cui la macchina viene programmata con l'uso di simboli, dove ogni simbolo corrisponde ad un'istruzione ISA. L'assembly viene interpretato in linguaggio macchina, ossia l'uso dei simboli è in corrispondenza del'ISA il programma viene poi assemblato al livello più basso.
Livello Macchina virtuale o dei linguaggi ad alto livello
È il livello più User-Friendly, dove il calcolatore è visto in modo astratto e virtuale i programmi sono scritti in linguaggio ad alto livello come :C,PHP,Java ecc...
Al momento questo è quanto, spero che questa introduzione vi sia piaciuta. Prossimamente definirò l'aritmetica binaria e lo standard IEEE754 utile a capire i vari livelli che andremo ad analizzare. :D
Ultima modifica: