Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Data Manipulation
1. Data
Manipulation
Adriano Patton
Manipolazione dei Dati Computer
Architecture
(Data Manipulation) Central
Processing Unit
(CPU)
Presentazione basata sul testo: The Stored
Program
Concept
J. Glenn Brookshear, 2012. Computer Science: An Overview. 11th
Machine
Edition. Addison-Wesley. Language
Machine
Instruction
Machine
Instruction
Encoding
Patton Adriano Program
Execution
matricola numero 156358 Special-Purpose
Register
Machine Cycle
Universit` di Trento
a Example
Arithmetic/Logic
Instructions
16 marzo 2012 Arithmetic
Operations
Logic Operations
Rotation and
Shift Operations
Adriano Patton (UniTrento) Data Manipulation 16 marzo 2012 1 / 30
2. Programma della presentazione
Data
Manipulation
1 Computer Architecture
Adriano Patton
Central Processing Unit (CPU)
The Stored Program Concept Computer
Architecture
Central
2 Machine Language Processing Unit
(CPU)
The Stored
Machine Instruction Program
Concept
Machine Instruction Encoding Machine
Language
3 Program Execution Machine
Instruction
Special-Purpose Register Machine
Instruction
Machine Cycle Encoding
Program
Example Execution
Special-Purpose
Register
4 Arithmetic/Logic Instructions Machine Cycle
Example
Arithmetic Operations
Arithmetic/Logic
Logic Operations Instructions
Arithmetic
Rotation and Shift Operations Operations
Logic Operations
Rotation and
Shift Operations
Adriano Patton (UniTrento) Data Manipulation 16 marzo 2012 2 / 30
3. La Central Processing Unit
Data
Manipulation
Adriano Patton
Cos’` la CPU?
e Computer
Architecture
La circuiteria che controlla la manipolazione dei dati all’interno di un Central
Processing Unit
computer ` detta Central Processing Unit, CPU o processore.
e (CPU)
The Stored
Program
Concept
Nei computer costruiti a met` del secolo scorso la CPU era costituita
a Machine
Language
da molti ripiani di circuiti. I processori attuali sono invece piccoli Machine
Instruction
quadrati di spessore molto ridotto (e superficie di pochi centimetri Machine
Instruction
Encoding
quadrati), inseriti tramite dei perni sulla scheda di circuito principale
Program
del computer, detta anche scheda madre. Execution
Special-Purpose
In vari Mobile Internet Devices (MID), per esempio negli Register
Machine Cycle
smartphones, la CPU non ` pi` grande di met` francobollo e si parla
e u a Example
per questo di microprocessori. Arithmetic/Logic
Instructions
Arithmetic
Operations
Logic Operations
Rotation and
Shift Operations
Adriano Patton (UniTrento) Data Manipulation 16 marzo 2012 3 / 30
4. Le componenti della CPU
Data
Manipulation
Adriano Patton
Computer
Una CPU ` costituita da tre parti fondamentali:
e Architecture
Central
l’unit` di controllo (o control unit), che contiene la circuiteria
a Processing Unit
(CPU)
che controlla e coordina le attivit` della macchina, ossia del
a The Stored
Program
Concept
computer; Machine
Language
l’unit` aritmetico/logica (arithmetic/logic unit o ALU), in
a Machine
Instruction
cui si trova la circuiteria che compie le operazioni (logiche e Machine
Instruction
aritmetiche) sui dati; Encoding
Program
l’unit` dei registri, che contiene celle per l’archiviazione
a Execution
temporanea di dati, simili a quelle della memoria RAM, dette Special-Purpose
Register
registri. Machine Cycle
Example
Arithmetic/Logic
Instructions
Arithmetic
Operations
Logic Operations
Rotation and
Shift Operations
Adriano Patton (UniTrento) Data Manipulation 16 marzo 2012 4 / 30
5. I registri
Data
Manipulation
Adriano Patton
Computer
Architecture
Central
I registri si dividono in due categorie: Processing Unit
(CPU)
gli special-purpose register, quali il program counter e The Stored
Program
Concept
l’instruction register;
Machine
i general-purpose register, in cui vengono temporaneamente Language
Machine
memorizzati i dati che devono essere manipolati dalla CPU. Instruction
Machine
Hanno lo scopo di conservare in memoria i dati utilizzati come Instruction
Encoding
input dall’unit` aritmetico/logica e di fornire spazio sufficiente a
a Program
Execution
memorizzare l’output di tale unit`.
a Special-Purpose
Register
Machine Cycle
Example
Arithmetic/Logic
Instructions
Arithmetic
Operations
Logic Operations
Rotation and
Shift Operations
Adriano Patton (UniTrento) Data Manipulation 16 marzo 2012 5 / 30
6. Il bus
Data
Come comunicano CPU e RAM? Manipulation
Adriano Patton
Il trasferimento di stringhe di bit dalla Central Processing Unit (CPU)
Computer
alla memoria principale (e viceversa) avviene tramite una collezione di Architecture
cavi che prende il nome di bus. Central
Processing Unit
(CPU)
The Stored
Program
Concept
Machine
Language
Machine
Instruction
Machine
Instruction
Encoding
Program
Execution
Special-Purpose
Register
Machine Cycle
Example
Arithmetic/Logic
Instructions
Arithmetic
Operations
Logic Operations
Figura: Il bus collega CPU e memoria principale Rotation and
Shift Operations
Adriano Patton (UniTrento) Data Manipulation 16 marzo 2012 6 / 30
7. Ricapitolando
Data
Quando compie un’operazione su dati archiviati nella RAM: Manipulation
Adriano Patton
1) attraverso il bus la CPU legge i dati dalla memoria, ossia
Computer
fornisce al circuito della memoria l’indirizzo della cella Architecture
contenente i dati e quello del registro in cui i dati devono essere Central
Processing Unit
(CPU)
trasferiti (o meglio copiati), assieme ad un segnale elettronico The Stored
Program
volto ad attivare il processo di lettura; Concept
Machine
2) la CPU informa l’unit` aritmetico/logica a proposito di quale
a Language
Machine
registro contenga i dati che devono essere utilizzati come input, Instruction
Machine
attiva il circuito della stessa unit` predisposto per l’operazione
a Instruction
Encoding
in questione, comunica in quale registro l’output debba essere Program
memorizzato; Execution
Special-Purpose
Register
3) utilizzando nuovamente il bus, la CPU scrive il risultato in Machine Cycle
memoria, ossia fornisce al circuito della memoria l’indirizzo del Example
Arithmetic/Logic
registro contenente il dato da memorizzare e quello della cella di Instructions
Arithmetic
destinazione, assieme ad un altro segnale elettronico, volto Operations
Logic Operations
questa volta a far cominciare il processo di scrittura. Rotation and
Shift Operations
Adriano Patton (UniTrento) Data Manipulation 16 marzo 2012 7 / 30
8. La memoria Cache
Data
Utilit` delle varie memorie
a Manipulation
Adriano Patton
Nei registri vengono memorizzati i dati che vengono utilizzati al
Computer
momento dalla CPU, nella memoria principale quelli che serviranno in Architecture
un momento successivo poco distante, nella memoria di archiviazione Central
Processing Unit
(CPU)
di massa quelli che probabilmente non verranno utilizzati in un futuro The Stored
Program
immediato. Concept
Machine
Language
Un ulteriore livello Machine
Instruction
Machine
La memoria Cache ` una parte di memoria ad alta velocit`
e a Instruction
Encoding
collocata all’interno della CPU, in cui la macchina cerca sempre di Program
mantenere i dati di momentaneo interesse. In questo modo, vari Execution
Special-Purpose
trasferimenti di dati che dovrebbero intercorrere tra la CPU e la RAM Register
Machine Cycle
avvengono invece tra i registri e la memoria Cache, con notevole Example
risparmio di tempo. Le modifiche apportate ai dati nella memoria Arithmetic/Logic
Instructions
Cache vengono poi trasferite nella memoria principale in blocco e in Arithmetic
Operations
un momento pi` opportuno, con una velocizzazione dei processi.
u Logic Operations
Rotation and
Shift Operations
Adriano Patton (UniTrento) Data Manipulation 16 marzo 2012 8 / 30
9. L’idea dello stored-program
Data
Manipulation
Grandi miglioramenti sono stati apportati ai computer per quel che Adriano Patton
riguarda la loro flessibilit`.
a
Computer
Architecture
Central
Processing Unit
I primi calcolatori avevano i processi che dovevano eseguire (CPU)
The Stored
costruiti nella Control Unit, potevano/dovevano quindi eseguire Program
Concept
sempre lo stesso programma. Machine
Language
In un secondo momento si ` cominciato a costruire delle CPU
e Machine
Instruction
che potessero essere ricablate in maniera da poter cambiare il Machine
Instruction
programma da eseguire attaccando gli appositi cavi. Encoding
Program
Un deciso passo avanti ` stato fatto quando si ` realizzato che i
e e Execution
Special-Purpose
programmi possono essere codificati e salvati nella memoria Register
Machine Cycle
come gli altri dati. Quest’idea, che prende il nome di Example
stored-program concept, permette di modificare il programma Arithmetic/Logic
Instructions
eseguito dal computer modificando la sua memoria senza dover Arithmetic
Operations
ricablare la CPU. Logic Operations
Rotation and
Shift Operations
Adriano Patton (UniTrento) Data Manipulation 16 marzo 2012 9 / 30
10. Linguaggio macchina
RISC vs CISC
Data
Manipulation
Seguendo l’idea dello stored-program la CPU ` costruita in modo da
e
Adriano Patton
poter distinguere le istruzioni da eseguire codificate come stringhe di
bit (come un qualsiasi altro tipo di dato). Con linguaggio macchina Computer
Architecture
(Machine Language) si intende l’insieme di queste istruzioni, dette Central
Processing Unit
istruzioni macchina, e del sistema utilizzato per la loro codifica. (CPU)
The Stored
Program
Concept
Per quel che riguarda la quantit` di istruzioni elementari che una
a Machine
Language
CPU deve saper riconoscere si distinguono due filosofie di pensiero Machine
Instruction
che portano rispettivamente ai seguenti: Machine
Instruction
Encoding
reduced instruction set computer (RISC), poche istruzioni di Program
base da eseguire in successione per ottenerne di pi` elaborate;
u Execution
Special-Purpose
Register
complex instruction set computer (CISC), un numero Machine Cycle
maggiore di istruzioni pi` complesse, alcune magari ridondanti.
u Example
Arithmetic/Logic
Computer con architettura RISC sono pi` veloci, pi` efficienti e meno
u u Instructions
Arithmetic
costosi, macchine dell’altro tipo sono invece pensate per far fronte al Operations
Logic Operations
meglio alla sempre maggiore complessit` dei software in commercio.
a Rotation and
Shift Operations
Adriano Patton (UniTrento) Data Manipulation 16 marzo 2012 10 / 30
11. La classificazione delle istruzioni macchina
Trasferimento dati
Data
Manipulation
Le istruzioni macchina si dividono tipicamente in tre gruppi: Adriano Patton
gruppo di trasferimento dati. Computer
Architecture
gruppo aritmetico/logico. Central
Processing Unit
(CPU)
gruppo di controllo. The Stored
Program
Concept
Machine
Language
Nel gruppo di trasferimento dati si collocano le istruzioni che Machine
richiedono spostamento di dati tra diverse locazioni. In realt` i dati
a Instruction
Machine
che vengono spostati non sono quasi mai cancellati e le operazioni di Instruction
Encoding
trasferimento sono quindi pi` che altro operazioni di copiatura.
u Program
Execution
Termini particolari si utilizzano per indicare istruzioni che comportano Special-Purpose
Register
il movimento di dati dalla RAM alla CPU (istruzione LOAD) e Machine Cycle
Example
viceversa (istruzione STORE). Sempre in questo gruppo, le istruzioni
Arithmetic/Logic
di I/O sono invece i comandi che la CPU utilizza per comunicare con Instructions
Arithmetic
le periferiche esterne al sistema CPU-RAM. Operations
Logic Operations
Rotation and
Shift Operations
Adriano Patton (UniTrento) Data Manipulation 16 marzo 2012 11 / 30
12. La classificazione delle istruzioni macchina
Gruppo aritmetico/logico e gruppo di controllo
Data
Manipulation
Nel gruppo aritmetico/logico si trovano le istruzioni che
Adriano Patton
comunicano all’unit` di controllo di ordinare un’azione all’interno
a
dell’unit` aritmetico/logica. Quest’ultima ` in grado di svolgere le
a e Computer
Architecture
operazioni aritmetiche, quelle logiche di OR, AND e XOR, e altre che Central
Processing Unit
comportano lo spostamento a destra o a sinistra del contenuto dei (CPU)
The Stored
registri, quali le operazioni ROTATE e SHIFT (che prevedono Program
Concept
rispettivamente che il bit che spostandosi dovrebbe uscire dal registro Machine
Language
si posizioni all’estremit` opposta della stringa o che venga troncato).
a Machine
Instruction
Machine
Instruction
Encoding
Appartengono al gruppo di controllo i comandi utili a dirigere
Program
l’esecuzione dei programmi, pi` che a manipolare i dati, quali per
u Execution
Special-Purpose
esempio le istruzioni di salto (JUMP o BRANCH), che comunicano Register
Machine Cycle
alla CPU di eseguire un’istruzione diversa da quella che occupa il Example
posto successivo nella lista. I salti possono essere di due tipi: Arithmetic/Logic
Instructions
- incondizionati, in tal caso vengono sempre eseguiti; Arithmetic
Operations
- condizionati, ovvero eseguiti solo se una certa condizione Logic Operations
Rotation and
(specificata nell’istruzione) ` soddisfatta.
e Shift Operations
Adriano Patton (UniTrento) Data Manipulation 16 marzo 2012 12 / 30
13. La codifica delle istruzioni macchina
Operazioni e operandi
Data
Manipulation
Adriano Patton
In generale la versione codificata di un’istruzione macchina si divide Computer
Architecture
in due parti: Central
Processing Unit
(CPU)
il campo del codice-operazione (op-code o operation code The Stored
Program
field), Concept
Machine
il campo degli operandi (operand field). Language
Machine
I bit contenuti nell’op-code field contengono informazioni relative al Instruction
Machine
tipo di operazione che deve essere svolta (STORE, LOAD, AND, Instruction
Encoding
SHIFT), quelli nell’operand field forniscono informazioni aggiuntive, Program
Execution
quali gli indirizzi dei registri contenenti i dati in input, la cella di Special-Purpose
Register
memoria in cui memorizzare una stringa, il numero di posti di cui Machine Cycle
ruotare una stringa di bit, ecc... Example
Arithmetic/Logic
Instructions
Arithmetic
Operations
Logic Operations
Rotation and
Shift Operations
Adriano Patton (UniTrento) Data Manipulation 16 marzo 2012 13 / 30
14. La codifica delle istruzioni macchina
Esempio
Data
Manipulation
Per comprendere come le istruzioni macchina siano codificate,
Adriano Patton
consideriamo un modello di computer puramente illustrativo.
Computer
Architecture
Central
Processing Unit
(CPU)
The Stored
Program
Concept
Machine
Language
Machine
Instruction
Machine
Instruction
Encoding
Program
Execution
Special-Purpose
Register
Machine Cycle
Example
Questa macchina ha 16 registri general-purpose e 256 celle di Arithmetic/Logic
Instructions
memoria, tutti e tutte di 8 bit, numerati rispettivamente da 0 a 15 e Arithmetic
Operations
da 0 a 255, con gli indirizzi espressi nella notazione esadecimale. Logic Operations
Rotation and
Shift Operations
Adriano Patton (UniTrento) Data Manipulation 16 marzo 2012 14 / 30
15. La codifica delle istruzioni macchina
Esempio
Data
Manipulation
Adriano Patton
Nel nostro computer di esempio ogni istruzione macchina ` codificata
e
Computer
usando 16 bit, rappresentati da 4 cifre esadecimali, la prima delle Architecture
Central
quali costituisce il codice-operazione, mentre le restanti tre occupano Processing Unit
(CPU)
il campo degli operandi. The Stored
Program
I codici-operazioni distinti nel nostro linguaggio macchina sono 12 e Concept
sono indicati con le prime 12 cifre della notazione esadecimale. Machine
Language
Machine
Instruction
Machine
Per esempio, il comando 1RXY indica di caricare (LOAD) nel registro Instruction
Encoding
R la stringa di bit contenuta nella cella di memoria di indirizzo XY Program
Execution
(notare che servono 8 bit per indicare l’indirizzo di una delle 256 Special-Purpose
Register
celle), mentre l’istruzione 8RST ordina di eseguire l’operazione di Machine Cycle
Example
AND tra le stringhe contenute nei registri S e T e di memorizzare il
Arithmetic/Logic
risultato dell’operazione nel registro R. Instructions
Arithmetic
Operations
Logic Operations
Rotation and
Shift Operations
Adriano Patton (UniTrento) Data Manipulation 16 marzo 2012 15 / 30
16. L’Instruction Register e il Program Counter
Data
Manipulation
Adriano Patton
Computer
Quando un computer deve eseguire un programma archiviato in Architecture
memoria, procede copiando man mano le istruzione nella CPU, Central
Processing Unit
(CPU)
decodificandole ed eseguendole. Esso copia le istruzioni dalla The Stored
Program
memoria seguendo l’ordine delle celle che le contengono, fintanto che Concept
non incontra un’istruzione di salto. Machine
Language
Machine
Instruction
Machine
Ruoli importanti in questo processo sono svolti da due registri Instruction
Encoding
special-purpose: l’instruction register, che contiene in ogni Program
momento l’istruzione in esecuzione, e il program counter, che tiene Execution
Special-Purpose
traccia dell’indirizzo della cella contenente la prossima istruzione da Register
Machine Cycle
eseguire. Example
Arithmetic/Logic
Instructions
Arithmetic
Operations
Logic Operations
Rotation and
Shift Operations
Adriano Patton (UniTrento) Data Manipulation 16 marzo 2012 16 / 30
17. Il ciclo macchina
Data
Manipulation
Il lavoro della CPU consiste nella ripetizione continua di un Adriano Patton
algoritmo, detto ciclo macchina, suddiviso in tre fasi: Computer
Architecture
Central
1) fase di fetch, Processing Unit
(CPU)
2) fase di decode, The Stored
Program
Concept
3) fase di execute. Machine
Language
Machine
Instruction
Fetch Machine
Instruction
Encoding
Nella fase di fetch la CPU chiede alla memoria l’istruzione Program
memorizzata all’indirizzo contenuto nel program counter (e a quello Execution
Special-Purpose
successivo nel caso della macchina illustrativa, dato che un’istruzione Register
Machine Cycle
` formata da 16 bit e occupa due celle), memorizza l’istruzione
e Example
nell’instruction register e incrementa di due il contenuto del program Arithmetic/Logic
Instructions
counter, in modo che contenga l’indirizzo del comando successivo. Arithmetic
Operations
Logic Operations
Rotation and
Shift Operations
Adriano Patton (UniTrento) Data Manipulation 16 marzo 2012 17 / 30
18. Il ciclo macchina
Data
Manipulation
Adriano Patton
Decode Computer
Architecture
Nella fase di decode del ciclo macchina la CPU decodifica il comando Central
Processing Unit
memorizzato nell’instruction register, lo divide nelle parti relative ad (CPU)
The Stored
operazione e operandi e ne interpreta il contenuto. Program
Concept
Machine
Language
Execute Machine
Instruction
Nella fase di execute la CPU attiva i circuiti predisposti per lo Machine
Instruction
Encoding
svolgimento dell’operazione specificata dall’istruzione. Ad esempio,
Program
se il comando prevede un’operazione aritmetica, la CPU attiva il Execution
Special-Purpose
circuito corrispondente nell’unit` aritmetico/logica con i registri
a Register
Machine Cycle
specificati dall’istruzione in input, attende il risultato e lo pone nel Example
registro appropriato. Arithmetic/Logic
Instructions
Arithmetic
Operations
Logic Operations
Rotation and
Shift Operations
Adriano Patton (UniTrento) Data Manipulation 16 marzo 2012 18 / 30
19. Il ciclo macchina
Data
Manipulation
Eseguita un’istruzione, la CPU ricomincia il ciclo con una nuova fase Adriano Patton
di fetch, in vista della quale il program counter ` stato
e
Computer
opportunamente incrementato di due unit`. a Architecture
Central
Processing Unit
(CPU)
The Stored
Salti! Program
Concept
L’unico caso in cui il ciclo macchina viene modificato ` quello in cui il
e Machine
Language
comando da eseguire sia un salto. Supponiamo che l’istruzione Machine
Instruction
ricevuta dalla CPU del nostro modello sia BA47, che significa “salta Machine
Instruction
(JUMP) al comando della cella 47 (esadecimale) nel caso il Encoding
contenuto del registro A sia uguale a quello del registro 0”. Nella Program
Execution
fase di execute, prima vengono confrontate le stringhe nei due Special-Purpose
Register
registri, poi, se esse risultino essere differenti, la fase di execute Machine Cycle
Example
termina e riparte un nuovo ciclo, nel caso invece coincidano, la CPU Arithmetic/Logic
copia nel program counter l’istruzione memorizzata nella cella 47 Instructions
Arithmetic
(cominciando di fatto una nuova e particolare fase di fetch). Operations
Logic Operations
Rotation and
Shift Operations
Adriano Patton (UniTrento) Data Manipulation 16 marzo 2012 19 / 30
20. Il clock del computer
Data
Manipulation
Adriano Patton
Computer
Architecture
Central
Processing Unit
(CPU)
The Stored
Il clock del computer ` un circuito, detto anche oscillatore, che
e Program
Concept
genera impulsi utilizzati per coordinare le attivit` della CPU e per
a Machine
scandirne i tempi. Maggiore ` la velocit` di clock di un PC, misurata
e a Language
Machine
in Hertz, pi` velocemente questo porta a termine il suo ciclo
u Instruction
Machine
macchina. Instruction
Encoding
Program
Execution
Special-Purpose
Register
Machine Cycle
Example
Arithmetic/Logic
Instructions
Arithmetic
Operations
Logic Operations
Rotation and
Shift Operations
Adriano Patton (UniTrento) Data Manipulation 16 marzo 2012 20 / 30
21. Esempio di esecuzione di un programma
Data
Manipulation
Adriano Patton
Computer
Architecture
Concretizziamo quanto visto fino ad ora descrivendo le operazioni che Central
Processing Unit
si susseguono all’interno del nostro computer modello quando viene (CPU)
The Stored
eseguito un programma. Program
Concept
Machine
Language
Addizione di due stringhe contenute in memoria Machine
Instruction
Machine
Supponiamo che il programma consista nel leggere due dati dalla Instruction
Encoding
memoria, farne la somma e poi scrivere in memoria il risultato. Program
Per cominciare dobbiamo salvare il programma nella memoria, per Execution
Special-Purpose
esempio nelle celle consecutive da quella di indirizzo A0 in poi. Register
Machine Cycle
Example
Arithmetic/Logic
Instructions
Arithmetic
Operations
Logic Operations
Rotation and
Shift Operations
Adriano Patton (UniTrento) Data Manipulation 16 marzo 2012 21 / 30
22. Esempio di esecuzione di un programma
Data
Manipulation
Adriano Patton
Computer
Architecture
Central
Per far partire l’esecuzione bisogna Processing Unit
(CPU)
memorizzare l’indirizzo A0 nel program The Stored
Program
counter e accendere il computer. Concept
Machine
La CPU comincia il suo ciclo con la fase Language
di fetch, estraendo la prima istruzione Machine
Instruction
dalla cella A0 e copiandola Machine
Instruction
Encoding
nell’instruction register. Ci` comporta lo
o
Program
spostamento di 16 bit, il contenuto di Execution
Special-Purpose
due celle di memoria, perci` il program
o Register
Machine Cycle
counter viene incrementato di due unit`.a Example
Arithmetic/Logic
Instructions
Arithmetic
Operations
Logic Operations
Rotation and
Shift Operations
Adriano Patton (UniTrento) Data Manipulation 16 marzo 2012 22 / 30
23. Esempio di esecuzione di un programma
Data
Manipulation
Alla fine della fase di fetch abbiamo: Adriano Patton
A2 nel program counter, Computer
Architecture
156C nell’instruction register. Central
Processing Unit
Nella fase di decode successiva, la CPU decodifica il comando 156C (CPU)
The Stored
contenuto nell’instruction register, che ordina di caricare nel registro Program
Concept
5 il contenuto della cella 6C. Nella fase di execute questa operazione Machine
Language
viene portata a termine e pu` iniziare un nuovo ciclo.
o Machine
Instruction
Machine
Instruction
Encoding
Il contenuto delle celle A2 e A3 (166D) viene spostato nell’instruction Program
register e il program counter ` nuovamente incrementato di due:
e Execution
Special-Purpose
Register
A4 nel program counter, Machine Cycle
Example
166D nell’instruction register. Arithmetic/Logic
Instructions
Il comando 166D viene tradotto come “caricare nel registro 6 i bit Arithmetic
Operations
della cella 6D”e successivamente eseguito. Logic Operations
Rotation and
Shift Operations
Adriano Patton (UniTrento) Data Manipulation 16 marzo 2012 23 / 30
24. Esempio di esecuzione di un programma
Data
Manipulation
Adriano Patton
Computer
Architecture
Central
Allo stesso modo si svolgono i cicli successivi, in cui vengono reperite, Processing Unit
(CPU)
decodificate e eseguite le seguenti istruzioni: The Stored
Program
Concept
5056: somma i contenuti dei registri 5 e 6 e memorizza il Machine
Language
risultato nel registro 0; Machine
Instruction
306E: scrivi il contenuto del registro 0 nella cella di memoria di Machine
Instruction
indirizzo 6E; Encoding
Program
C000: arresta il processo. Execution
Special-Purpose
Register
Machine Cycle
Example
Arithmetic/Logic
Instructions
Arithmetic
Operations
Logic Operations
Rotation and
Shift Operations
Adriano Patton (UniTrento) Data Manipulation 16 marzo 2012 24 / 30
25. Le istruzioni aritmetico/logiche
Data
Manipulation
Adriano Patton
Il gruppo delle istruzioni aritmetico/logiche comprende tutti i
comandi che richiedono operazioni: Computer
Architecture
aritmetiche, Central
Processing Unit
(CPU)
logiche, The Stored
Program
Concept
di spostamento-bit (ROTATE e SHIFT). Machine
Language
Machine
Instruction
Operazioni aritmetiche Machine
Instruction
Encoding
Alcune CPU sono progettate per eseguire solamente somme e Program
sottrazioni, altre solo addizioni. Un’operazione di sottrazione pu`
o Execution
Special-Purpose
infatti essere calcolata come un’addizione (modificando Register
Machine Cycle
opportunamente le stringhe di bit operande). Allo stesso modo una Example
moltiplicazione pu` essere ricondotta ad una serie di addizioni e una
o Arithmetic/Logic
Instructions
divisione ad una di sottrazioni. Arithmetic
Operations
Logic Operations
Rotation and
Shift Operations
Adriano Patton (UniTrento) Data Manipulation 16 marzo 2012 25 / 30
26. Le istruzioni aritmetico/logiche
Data
Manipulation
Adriano Patton
Complemento a 2 vs virgola mobile
Computer
Esistono diverse tipologie della stessa operazione di somma: Architecture
Central
addizionare due valori memorizzati nella notazione del complemento Processing Unit
(CPU)
a due comporta soltanto una somma bit a bit, addizionarne due The Stored
Program
Concept
memorizzati nella notazione a virgola mobile (floating point) Machine
comporta invece un procedimento pi` lungo. La mantissa deve essere
u Language
Machine
estratta, la virgola spostata del numero corretto di posizioni e il bit di Instruction
Machine
segno deve essere controllato. Solamente a questo punto si procede Instruction
Encoding
con la somma bit a bit, per poi ritradurre il risultato in notazione Program
Execution
floating point. Special-Purpose
Entrambi i procedimenti appena descritti vengono definiti “operazioni Register
Machine Cycle
di addizione”, ma prevedono azioni molto diverse da parte del Example
Arithmetic/Logic
computer. Instructions
Arithmetic
Operations
Logic Operations
Rotation and
Shift Operations
Adriano Patton (UniTrento) Data Manipulation 16 marzo 2012 26 / 30
27. Le istruzioni aritmetico/logiche
Data
Manipulation
Adriano Patton
Operazioni logiche Computer
Architecture
Le operazioni binarie di OR, AND e XOR definite su due bit di input Central
Processing Unit
possono essere estese facilmente a operazioni su due stringhe di bit: (CPU)
The Stored
per fare un’operazione di OR tra due stringhe si procede eseguendo Program
Concept
l’OR bit a bit (il primo col primo, il secondo col secondo,...). Allo Machine
Language
stesso modo per AND e XOR. Machine
Instruction
Machine
10110001 Instruction
Encoding
OR 01100100 Program
Execution
Special-Purpose
11110101 Register
Machine Cycle
Example
Il risultato di una colonna ` calcolato indipendentemente dalle altre.
e Arithmetic/Logic
Instructions
Arithmetic
Operations
Logic Operations
Rotation and
Shift Operations
Adriano Patton (UniTrento) Data Manipulation 16 marzo 2012 27 / 30
28. Le istruzioni aritmetico/logiche
Masking bits
Data
Manipulation
Le operazioni logiche sono utilizzate per modificare le stringhe Adriano Patton
forzando alcuni bit ad assumere un determinato valore in quelle che Computer
Architecture
vengono dette operazioni di masking. Central
Processing Unit
Se si volesse per esempio indurre i primi quattro bit di una stringa ad (CPU)
The Stored
assumere il valore 1, lasciando invariati gli altri, basterebbe eseguire Program
Concept
un OR tra la stringa da “mascherare”e la stringa 11110000. Per far Machine
diventare invece questi bit degli 0 basterebbe eseguire un AND con la Language
Machine
stringa 00001111. Instruction
Machine
Instruction
Encoding
10110001 10110001 10110001 Program
Execution
OR 11110000 AND 00001111 XOR 11111111 Special-Purpose
Register
11110001 00000001 01001110 Machine Cycle
Example
Arithmetic/Logic
Facendo invece lo XOR della stringa data con la stringa 11111111 ne Instructions
otteniamo la complementare. Arithmetic
Operations
Logic Operations
Rotation and
Shift Operations
Adriano Patton (UniTrento) Data Manipulation 16 marzo 2012 28 / 30
29. Le istruzioni aritmetico/logiche
Data
Operazioni Shift e Rotate Manipulation
Adriano Patton
Le operazioni di traslazione e di rotazione permettono di spostare i
Computer
bit all’interno di un registro. Un’operazione di questa categoria trasla Architecture
tutti i bit (per esempio) a destra di (per esempio) 2 posti. Central
Processing Unit
(CPU)
The Stored
10101101 −→ ??101011 01 Program
Concept
Machine
Language
Le operazioni di traslazione si distinguono in base al loro Machine
Instruction
comportamento sui (nel nostro caso 2) bit che “dovrebbero Machine
Instruction
cadere”fuori dal registro, che nel nostro caso contiene 8 bit. Encoding
Program
Execution
Nel caso questi bit vengano inseriti, rispettando l’ordine, nei Special-Purpose
Register
posti lasciati liberi all’estremit` opposta della stringa rispetto a
a Machine Cycle
Example
quella in cui si trovavano, si parla di traslazione circolare o Arithmetic/Logic
Instructions
rotazione (circular shift o rotation). Arithmetic
Operations
10101101 01101011 Logic Operations
Rotation and
Shift Operations
Adriano Patton (UniTrento) Data Manipulation 16 marzo 2012 29 / 30
30. Le istruzioni aritmetico/logiche
Tipi di traslazione
Data
Manipulation
Nel caso vengano invece “dimenticati”e i posti vuoti vengano Adriano Patton
messi a 0, si parla di traslazione logica (logical shift). Eseguire Computer
Architecture
una traslazione logica a destra di un bit sulla rappresentazione in Central
Processing Unit
complemento a due di un numero equivale a dividerlo per 2, una (CPU)
The Stored
traslazione logica a sinistra equivale a moltiplicarlo per 2. Program
Concept
Machine
10101101 00101011 Language
Machine
Instruction
Machine
Si indicano infine come traslazioni aritmetiche (arithmetic Instruction
Encoding
shifts) le traslazioni logiche in cui il posto del primo bit di Program
sinistra, che in alcune notazioni rappresenta il bit di segno, viene Execution
Special-Purpose
riempito con il valore che aveva originariamente, al fine di Register
Machine Cycle
mantenere il segno invariato (per esempio in moltiplicazioni e Example
divisioni). Arithmetic/Logic
Instructions
10101101 10011011 Arithmetic
Operations
Logic Operations
Rotation and
Shift Operations
Adriano Patton (UniTrento) Data Manipulation 16 marzo 2012 30 / 30