Notice: Undefined index: arturo in /home/artupanett/domains/arturu.it/public_html/v/computer/sw/index.php on line 2
Software
23 May 2019 - 17:42--=[Computer]=----=[Computer]=----=[Musica]=----=[Musica]=----=[Geometra]=----=[Geometra]=----=[Download]=----=[Download]=----=[Link]=----=[Link]=----=[Articoli]=----=[Articoli]=--
Indice Computer Computer/ Software/ Organizzazione Software - 1/


Parte |1|2|3|4|


I calcolatori digitali (o più semplicemente calcolatori) sono macchine complesse in grado di elaborare informazioni in forma codificata (dati). La codifica esterna dell'informazione fornita alla macchina e restituita dalla macchina consiste comunemente in sequenza di caratteri (lettere, cifre, segni di interpunzione, caratteri speciali), mentre la codifica interna è costituita da sequenze di simboli binari o bit (BInari digiT). Ogni carattere esterno viene codificato (in genere su 7 o 8 bit) direttamente da un dispositivo trasduttore di ingresso (un'operazione inversa è compiuta da un sispositivo trasduttore di uscita), mentre ulteriori conversioni di codifica per informazioni più complesse vengono effettuate mediante opportunamente elaborazioni.
Una significativa classe di informazioni è costituita dai numeri: questi, all'interno della amcchina, vengono in genere convertiti in base 2 su un numero prefissato di bit. Se consideriamo i numeri naturali, una configurazione di N bit rappresenta un numero il cui valore è dato dalla somma pesata dei vari bit, dove il bit rappresenta un numero il cui valore è dato dalla somma pesata dei vari bit, dove il bit di posizione i (i=N-1, N-2, ..., 0 da sinistra verso destra) ha preso 2i: con N bit possono quindi essere rappresentati numeri naturali da 0 a 2N-1.
Le azioni elementari che un calcolatore sa eseguire sono in numero abbastanza limitato, e ognuna di esse è rappresentata da un'opportuna combinazione di bit o istruzione. Per effettuare una certa elaborazione, dobbiamo quindi fornire al calcolatore sia le qualità su cui operare o dati, sia la sequenza delle istruzioni da eseguire o programma. Il calcolatore esegue le istruzioni nell'ordine di cui gli sono state fornite fino a quando non incontra un'istruzione di controllo, la quale fa alternare il flusso sequenziale stabilendo il numero d'ordine della prossima istruzione da eseguire. A partire da tale istruzione il procedimento prosegue con le stesse modalità.
Le istruzioni si dividono pertanto in due grosse classi, ossia istruzioni operative e istruzioni di controllo. Le istruzioni operative servono a seguire operazioni su dati, tipicamente operazioni aritmetiche semplici (addizione, sottrazione, moltiplicazione e divisione) oppure operazioni logiche elementari (AND, OR, NOT bit a bit). Le istruzioni di controllo (o di salto) servono a determinare, in funzione dei risultati ottenuti con le istruzioni operative, il flusso con il quale le varie istruzioni vengono eseguite.
L'intera circuteria di cui è composto un calcolatore (hardware) si può pensare logicamente divisa in blocchi, ognuno dei quali esegue un certo insieme specificato di funzioni.

Rete

La memoria principale immagazzina sia dati che il programma che sono oggetto della elaborazione attuale. Il processore (o unità centrale di elaborazione) provvede a prelevare dalla memoria le istruzioni, una alla volta, e a eseguire le operazioni specificate. Le interfacce hanno lo scopo di gestire i vari dispositivi di ingresso/uscita, in modo da farli apparire al processore come entità più semplici e più standard (i dispositivi possono far parte o meno del calcolatore). Ad alcune interfacce sono collegate delle memorie di massa (tipicamente dischi magnetici), che hanno lo scopo di immagazzinare dati e programmi attualmente non interessati all'esecuzione.
In queste pagine viene rappresentato un modello che illustra in funzionamento di un semplice calcolatore a livello di linguaggio macchina, cioè con visibilità delle istruzioni e dei dati su cui il calcolatore opera. In realtà il linguaggio macchina, essendo composto da sequenze di bit, risulta sostanzialmente incomprensibile, per cui si fa ricorso a un linguaggio simbolico in corrispondenza uno a uno con il linguaggio macchina, ma con il pregio di una maggiore leggibilità.
Il modello di calcolatore preso a riferimento è di tipo estremamente semplificato, e ha lo scopo di illustrare le funzionalità della macchina prescindendo da specifiche particolarità costruttive. Esso è basato su un processore ideale chiamato PS (Processore Semplificato), che ha caratteristiche software costituite da un sottoinsieme assai limitato di quelle possedute dai processore presenti sui Personal Computer. Per la programmazione ordinaria, pertanto, si può utilizzare un Personal Computer e supporre che esso sia dotato di un processore PS.


Calcolatore basato sul processore PS

Nell'illustrazione del calcolatore semplificato, faremo spesso riferimento a quantità numeriche binarie: per compattare la scrittura useremo la notazione esadecimale, che consiste nel raggruppare i bit a 4 a 4 e sostituire ogni quadrupla di bit con uno dei simboli 0,1, ..., 9, A, B, ..., F, secondo la seguente tabella:
Quadrupla      Simbolo         Quadrupla       Simbolo
0000           0               1000            8
0001           1               1001            9
0010           2               1010            A
0011           3               1011            B
0100           4               1100            C
0101           5               1101            D
0110           6               1110            E
0111           7               1111            F
Il processore PS è in grado di elaborare operandi a 8 bit (byte), a 16 bit (parola o word) e a 32 bit (parola lunga). Nell'eseguire le istruzioni aritmetiche, il processore può trattare come operandi sia numeri naturali (senza segno) che numeri interi (con segno), sempre espressi in base 2.
Un calcolatore basato sul processore PS appare al programmatore come illustrato nella figura nel prossimo paragrafo, dove sono evidenziati i registri del processore, lo spazio di memoria e lo spazio di I/O ai quali il processore è in grado di accedere.


Sapzio di memoria

Lo spazio di memoria è una sequenza lineare e contigua di 4G locazioni (G=1024*1024*1024). Ogni locazione ha la capacità di 8 bit ed è individuata madiante un'indirizzo a 32 bit. Il processore è in grado di accedere a una singola locazione contenente un byte, a una coppia di locazioni consecutive (doppia locazione) contenente una parola, o a una quadrupla di locazioni consecutive (quadrupla locazione) contenente una parola lunga; nel primo caso deve essere specificato l'indirizzo della locazione stessa, nel secondo e nel terzo caso l'indirizzo della prima delle locazioni interessate (l'indirizzo più piccolo), che verrà semplicemente detto indirizzo della doppia locazione o indirizzo della quadrupla locazione. Se una doppia locazione o una quadrupla locazione contengono un numero naturale o un numero intero, la locazione di indirizzo più piccolo contiene la parte meno significativa e le altre le parti via via più significative del numero stesso.
Lo spazio di memoria viene riferito durante il prelievo delle istruzioni e durante l'esecuzione della maggior parte delle istruzioni operative (per prelevare operandi o memorizzare risultati). In questo spazio viene montata la memoria principale, realizza in piccola parte con integrazioni di tipo EPROM (Erasable Programmable Read Only Memory) e in gran parte integrati di tipo RAM (Random Access Memory).

Processore


Lo spazio di I/O

Lo spazio di ingresso/uscita (o spazio di I/O, Imput/Output) è una sequenza lineare e contigua di 64K locazioni o porte (K=1024), ognuna delle quali ha una capacità di 8 bit ed è individuata mediante un indirizzo di 16 bit. In genere un operando occupa nello spazio di I/O una sola porta.
Lo spazio di I/O viene riferito durante l'esecuzione di particolari istruzioni operative, dette appunto di ingresso/uscita. Questo spazio contiene le interfacce attreverso cui il calcolatore colloquia con il mondo esterno.


Registri del processore

Il processore PS possiede tre tipi di registri: i registri generali, registri di stato e il puntatore di pila.

Registri generali:
I registri generali sono 4 a 32 bit, denominati EAX, EBX, ECX ed EDX; a da 16 bit (che sono le parti meno significative dei registri a 32 bit), denominati AX, BX, CX, DX e infine 8 registri da 8 bit (che sono i registri a 16 bit divisi in due: le parti più significative con H e quelle meno significative L), denominati AH AL, BH BL, CH CL, DH DL. I registri generali vengono utilizzate indifferentemente per memorizzare operandi e contenere indirizzi: in quest'ultimo caso possono essere utilizzati solo i registri a 32 bit.

Registri di stato:
Questo gruppo di registri comprende il contatore (o puntatore) di istruzioni EIP (Instruction Pointer) e il registro dei flag EFLAG.
Il registro EIP contiene l'indirizzo della locazione di memoria a partire dalla quale sarà prelevata la prossima istruzione da eseguire: una volta prelevata un'istruzione, il suo contenuto viene automaticamente aggiornato in modo da indirizzare l'istruzione sequenziale successiva. Il contenuto di questo registro viene modificato dalle istruzioni di controllo.
Il registro EFLAG (vedi figura sotto) contiene, nella parte meno significativa, 4 flag le cui funzioni sono:

Registro

  • Carry flag CF: quando vale 1 indica che durante l'esecuzione dell'ultima istruzione si è generato un riporto (carry) se l'istruzione era di somma, o si è richiesto un prestito (borrow) se l'istruzione era di sottrazione: per i numeri naturali questa situazione indica che il risultato dell'operazione non è rappresentabile.
  • Zero flag ZF: quando vale 1 indica che l'ultima istruzione eseguita ha prodotto un risultato uguale a zero (tutti i bit uguali a 0).
  • Sign flag SF: quando vale 1 indica che l'ultima istruzione eseguita ha prodotto un risultato con il bit più significativo uguale a 1: per i numeri interi questa situazione indica che il risultato è negativo.
  • Overflow flag OF: quando vale 1 indica che durante l'esecuzione dell'ultima istruzione si è avuto un traboccamento: per numeri interi questa situazione indica che il risultato non è rappresentabile.
Registro puntatore di pila
Un programma in genere è composto da molti sottoprogrammi, che utilizzerà delle chiamate e dei valori di ritorno del sottoprogramma oppure del salvataggio e rispristino dei contenuti di registri ecc. quindi è molto utile disporre di una pila (o stack), cioè una porzione di memoria in cui immettere e prelevare dati in accordo alla disciplina LIFO (Last In First Out): il dato che viene prelevato per primo è quello che vi è stato immesso per ultimo.
La pila viene realizzata utilizzando più locazioni consecutive di memoria, raggruppate in dati, che vengono riempite a partire da quella di indirizzo maggiore: un opportuno registro puntatore individua a ogni istante la cima (o top) della pila, cioè il dato inserito per ultimo. Sulla pila si possono effettuare le seguenti 3 azioni (vedi anche figura).

Pila

  • inizializzazione: il registro puntatore viene iniazializzato con l'indirizzo successivo a quello della prima locazione da cui comincia la pila (quella di indirizzo maggiore);
  • immissione (operazione push): il contenuto del registro puntatore viene prima decrementato e poi utilizzato come indirizzo per un'operazione di scrittura di un dato in memoria;
  • estrazione (operazione pop): il contenuto del registro puntatore viene prima utilizzato come indirizzo per un'operazione di lettura di una dato dalla memoria e poi incrementato.


La prima operazione dopo l'inizializzazione sarà certamente una PUSH.
Nel processore PS il registro puntatore di pila è detto ESP (Stack pointer), e i dati sono lunghi 4 byte (parola lunga): per ogni immissione o estrazione, ESP viene quindi incrementato o decrementato sempre di 4.


Condizioni al reset iniziale

Il processore è dotato di un apposito piedino per il reset: ogni volta che questo diviene attivo, il processore si porta in uno stato iniziale in cui i registri vengono azzerati. Ne risulta in particolare che l'istruzione viene eseguita per prima è quella che si trova in memoria a partire dalla locazione di indirizzo 00000000.

Vai Prossimo
--=[Home page]=----=[Home page]=----=[Forum]=----=[Forum]=----=[lingua]=----=[lingua]=----=[Statistiche]=----=[Statistiche]=----=[Cerca in questo sito]=----=[Cerca in questo sito]=----=[Info sul copyright]=----=[Info sul copyright]=----=[Scegli le impostazioni che preferisci]=----=[Scegli le impostazioni che preferisci]=----=[Scrivi al webmaster]=--
vPHPvHTMLvCSS