data manipulation

30
Data Manipulation Adriano Patton 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 Arithmetic/Logic Instructions Arithmetic Operations Logic Operations Rotation and Shift Operations Manipolazione dei Dati (Data Manipulation) Presentazione basata sul testo: J. Glenn Brookshear, 2012. Computer Science: An Overview. 11th Edition. Addison-Wesley. Patton Adriano matricola numero 156358 Universit` a di Trento 16 marzo 2012 Adriano Patton (UniTrento) Data Manipulation 16 marzo 2012 1 / 30

Upload: eomereomer

Post on 16-Jul-2015

230 views

Category:

Education


0 download

TRANSCRIPT

DataManipulation

Adriano Patton

ComputerArchitecture

CentralProcessing Unit(CPU)

The StoredProgramConcept

MachineLanguage

MachineInstruction

MachineInstructionEncoding

ProgramExecution

Special-PurposeRegister

Machine Cycle

Example

Arithmetic/LogicInstructions

ArithmeticOperations

Logic Operations

Rotation andShift Operations

Manipolazione dei Dati(Data Manipulation)

Presentazione basata sul testo:J. Glenn Brookshear, 2012. Computer Science: An Overview. 11th

Edition. Addison-Wesley.

Patton Adrianomatricola numero 156358

Universita di Trento

16 marzo 2012

Adriano Patton (UniTrento) Data Manipulation 16 marzo 2012 1 / 30

DataManipulation

Adriano Patton

ComputerArchitecture

CentralProcessing Unit(CPU)

The StoredProgramConcept

MachineLanguage

MachineInstruction

MachineInstructionEncoding

ProgramExecution

Special-PurposeRegister

Machine Cycle

Example

Arithmetic/LogicInstructions

ArithmeticOperations

Logic Operations

Rotation andShift Operations

Programma della presentazione

1 Computer ArchitectureCentral Processing Unit (CPU)The Stored Program Concept

2 Machine LanguageMachine InstructionMachine Instruction Encoding

3 Program ExecutionSpecial-Purpose RegisterMachine CycleExample

4 Arithmetic/Logic InstructionsArithmetic OperationsLogic OperationsRotation and Shift Operations

Adriano Patton (UniTrento) Data Manipulation 16 marzo 2012 2 / 30

DataManipulation

Adriano Patton

ComputerArchitecture

CentralProcessing Unit(CPU)

The StoredProgramConcept

MachineLanguage

MachineInstruction

MachineInstructionEncoding

ProgramExecution

Special-PurposeRegister

Machine Cycle

Example

Arithmetic/LogicInstructions

ArithmeticOperations

Logic Operations

Rotation andShift Operations

La Central Processing Unit

Cos’e la CPU?La circuiteria che controlla la manipolazione dei dati all’interno di uncomputer e detta Central Processing Unit, CPU o processore.

Nei computer costruiti a meta del secolo scorso la CPU era costituitada molti ripiani di circuiti. I processori attuali sono invece piccoliquadrati di spessore molto ridotto (e superficie di pochi centimetriquadrati), inseriti tramite dei perni sulla scheda di circuito principaledel computer, detta anche scheda madre.In vari Mobile Internet Devices (MID), per esempio neglismartphones, la CPU non e piu grande di meta francobollo e si parlaper questo di microprocessori.

Adriano Patton (UniTrento) Data Manipulation 16 marzo 2012 3 / 30

DataManipulation

Adriano Patton

ComputerArchitecture

CentralProcessing Unit(CPU)

The StoredProgramConcept

MachineLanguage

MachineInstruction

MachineInstructionEncoding

ProgramExecution

Special-PurposeRegister

Machine Cycle

Example

Arithmetic/LogicInstructions

ArithmeticOperations

Logic Operations

Rotation andShift Operations

Le componenti della CPU

Una CPU e costituita da tre parti fondamentali:

l’unita di controllo (o control unit), che contiene la circuiteriache controlla e coordina le attivita della macchina, ossia delcomputer;

l’unita aritmetico/logica (arithmetic/logic unit o ALU), incui si trova la circuiteria che compie le operazioni (logiche earitmetiche) sui dati;

l’unita dei registri, che contiene celle per l’archiviazionetemporanea di dati, simili a quelle della memoria RAM, detteregistri.

Adriano Patton (UniTrento) Data Manipulation 16 marzo 2012 4 / 30

DataManipulation

Adriano Patton

ComputerArchitecture

CentralProcessing Unit(CPU)

The StoredProgramConcept

MachineLanguage

MachineInstruction

MachineInstructionEncoding

ProgramExecution

Special-PurposeRegister

Machine Cycle

Example

Arithmetic/LogicInstructions

ArithmeticOperations

Logic Operations

Rotation andShift Operations

I registri

I registri si dividono in due categorie:

gli special-purpose register, quali il program counter el’instruction register;

i general-purpose register, in cui vengono temporaneamentememorizzati i dati che devono essere manipolati dalla CPU.Hanno lo scopo di conservare in memoria i dati utilizzati comeinput dall’unita aritmetico/logica e di fornire spazio sufficiente amemorizzare l’output di tale unita.

Adriano Patton (UniTrento) Data Manipulation 16 marzo 2012 5 / 30

DataManipulation

Adriano Patton

ComputerArchitecture

CentralProcessing Unit(CPU)

The StoredProgramConcept

MachineLanguage

MachineInstruction

MachineInstructionEncoding

ProgramExecution

Special-PurposeRegister

Machine Cycle

Example

Arithmetic/LogicInstructions

ArithmeticOperations

Logic Operations

Rotation andShift Operations

Il bus

Come comunicano CPU e RAM?

Il trasferimento di stringhe di bit dalla Central Processing Unit (CPU)alla memoria principale (e viceversa) avviene tramite una collezione dicavi che prende il nome di bus.

Figura: Il bus collega CPU e memoria principaleAdriano Patton (UniTrento) Data Manipulation 16 marzo 2012 6 / 30

DataManipulation

Adriano Patton

ComputerArchitecture

CentralProcessing Unit(CPU)

The StoredProgramConcept

MachineLanguage

MachineInstruction

MachineInstructionEncoding

ProgramExecution

Special-PurposeRegister

Machine Cycle

Example

Arithmetic/LogicInstructions

ArithmeticOperations

Logic Operations

Rotation andShift Operations

Ricapitolando

Quando compie un’operazione su dati archiviati nella RAM:

1) attraverso il bus la CPU legge i dati dalla memoria, ossiafornisce al circuito della memoria l’indirizzo della cellacontenente i dati e quello del registro in cui i dati devono esseretrasferiti (o meglio copiati), assieme ad un segnale elettronicovolto ad attivare il processo di lettura;

2) la CPU informa l’unita aritmetico/logica a proposito di qualeregistro contenga i dati che devono essere utilizzati come input,attiva il circuito della stessa unita predisposto per l’operazionein questione, comunica in quale registro l’output debba esserememorizzato;

3) utilizzando nuovamente il bus, la CPU scrive il risultato inmemoria, ossia fornisce al circuito della memoria l’indirizzo delregistro contenente il dato da memorizzare e quello della cella didestinazione, assieme ad un altro segnale elettronico, voltoquesta volta a far cominciare il processo di scrittura.

Adriano Patton (UniTrento) Data Manipulation 16 marzo 2012 7 / 30

DataManipulation

Adriano Patton

ComputerArchitecture

CentralProcessing Unit(CPU)

The StoredProgramConcept

MachineLanguage

MachineInstruction

MachineInstructionEncoding

ProgramExecution

Special-PurposeRegister

Machine Cycle

Example

Arithmetic/LogicInstructions

ArithmeticOperations

Logic Operations

Rotation andShift Operations

La memoria Cache

Utilita delle varie memorieNei registri vengono memorizzati i dati che vengono utilizzati almomento dalla CPU, nella memoria principale quelli che serviranno inun momento successivo poco distante, nella memoria di archiviazionedi massa quelli che probabilmente non verranno utilizzati in un futuroimmediato.

Un ulteriore livelloLa memoria Cache e una parte di memoria ad alta velocitacollocata all’interno della CPU, in cui la macchina cerca sempre dimantenere i dati di momentaneo interesse. In questo modo, varitrasferimenti di dati che dovrebbero intercorrere tra la CPU e la RAMavvengono invece tra i registri e la memoria Cache, con notevolerisparmio di tempo. Le modifiche apportate ai dati nella memoriaCache vengono poi trasferite nella memoria principale in blocco e inun momento piu opportuno, con una velocizzazione dei processi.

Adriano Patton (UniTrento) Data Manipulation 16 marzo 2012 8 / 30

DataManipulation

Adriano Patton

ComputerArchitecture

CentralProcessing Unit(CPU)

The StoredProgramConcept

MachineLanguage

MachineInstruction

MachineInstructionEncoding

ProgramExecution

Special-PurposeRegister

Machine Cycle

Example

Arithmetic/LogicInstructions

ArithmeticOperations

Logic Operations

Rotation andShift Operations

L’idea dello stored-program

Grandi miglioramenti sono stati apportati ai computer per quel cheriguarda la loro flessibilita.

I primi calcolatori avevano i processi che dovevano eseguirecostruiti nella Control Unit, potevano/dovevano quindi eseguiresempre lo stesso programma.

In un secondo momento si e cominciato a costruire delle CPUche potessero essere ricablate in maniera da poter cambiare ilprogramma da eseguire attaccando gli appositi cavi.

Un deciso passo avanti e stato fatto quando si e realizzato che iprogrammi possono essere codificati e salvati nella memoriacome gli altri dati. Quest’idea, che prende il nome distored-program concept, permette di modificare il programmaeseguito dal computer modificando la sua memoria senza doverricablare la CPU.

Adriano Patton (UniTrento) Data Manipulation 16 marzo 2012 9 / 30

DataManipulation

Adriano Patton

ComputerArchitecture

CentralProcessing Unit(CPU)

The StoredProgramConcept

MachineLanguage

MachineInstruction

MachineInstructionEncoding

ProgramExecution

Special-PurposeRegister

Machine Cycle

Example

Arithmetic/LogicInstructions

ArithmeticOperations

Logic Operations

Rotation andShift Operations

Linguaggio macchinaRISC vs CISC

Seguendo l’idea dello stored-program la CPU e costruita in modo dapoter distinguere le istruzioni da eseguire codificate come stringhe dibit (come un qualsiasi altro tipo di dato). Con linguaggio macchina(Machine Language) si intende l’insieme di queste istruzioni, detteistruzioni macchina, e del sistema utilizzato per la loro codifica.

Per quel che riguarda la quantita di istruzioni elementari che unaCPU deve saper riconoscere si distinguono due filosofie di pensieroche portano rispettivamente ai seguenti:

reduced instruction set computer (RISC), poche istruzioni dibase da eseguire in successione per ottenerne di piu elaborate;

complex instruction set computer (CISC), un numeromaggiore di istruzioni piu complesse, alcune magari ridondanti.

Computer con architettura RISC sono piu veloci, piu efficienti e menocostosi, macchine dell’altro tipo sono invece pensate per far fronte almeglio alla sempre maggiore complessita dei software in commercio.

Adriano Patton (UniTrento) Data Manipulation 16 marzo 2012 10 / 30

DataManipulation

Adriano Patton

ComputerArchitecture

CentralProcessing Unit(CPU)

The StoredProgramConcept

MachineLanguage

MachineInstruction

MachineInstructionEncoding

ProgramExecution

Special-PurposeRegister

Machine Cycle

Example

Arithmetic/LogicInstructions

ArithmeticOperations

Logic Operations

Rotation andShift Operations

La classificazione delle istruzioni macchinaTrasferimento dati

Le istruzioni macchina si dividono tipicamente in tre gruppi:

gruppo di trasferimento dati.

gruppo aritmetico/logico.

gruppo di controllo.

Nel gruppo di trasferimento dati si collocano le istruzioni cherichiedono spostamento di dati tra diverse locazioni. In realta i datiche vengono spostati non sono quasi mai cancellati e le operazioni ditrasferimento sono quindi piu che altro operazioni di copiatura.Termini particolari si utilizzano per indicare istruzioni che comportanoil movimento di dati dalla RAM alla CPU (istruzione LOAD) eviceversa (istruzione STORE). Sempre in questo gruppo, le istruzionidi I/O sono invece i comandi che la CPU utilizza per comunicare conle periferiche esterne al sistema CPU-RAM.

Adriano Patton (UniTrento) Data Manipulation 16 marzo 2012 11 / 30

DataManipulation

Adriano Patton

ComputerArchitecture

CentralProcessing Unit(CPU)

The StoredProgramConcept

MachineLanguage

MachineInstruction

MachineInstructionEncoding

ProgramExecution

Special-PurposeRegister

Machine Cycle

Example

Arithmetic/LogicInstructions

ArithmeticOperations

Logic Operations

Rotation andShift Operations

La classificazione delle istruzioni macchinaGruppo aritmetico/logico e gruppo di controllo

Nel gruppo aritmetico/logico si trovano le istruzioni checomunicano all’unita di controllo di ordinare un’azione all’internodell’unita aritmetico/logica. Quest’ultima e in grado di svolgere leoperazioni aritmetiche, quelle logiche di OR, AND e XOR, e altre checomportano lo spostamento a destra o a sinistra del contenuto deiregistri, quali le operazioni ROTATE e SHIFT (che prevedonorispettivamente che il bit che spostandosi dovrebbe uscire dal registrosi posizioni all’estremita opposta della stringa o che venga troncato).

Appartengono al gruppo di controllo i comandi utili a dirigerel’esecuzione dei programmi, piu che a manipolare i dati, quali peresempio le istruzioni di salto (JUMP o BRANCH), che comunicanoalla CPU di eseguire un’istruzione diversa da quella che occupa ilposto successivo nella lista. I salti possono essere di due tipi:- incondizionati, in tal caso vengono sempre eseguiti;- condizionati, ovvero eseguiti solo se una certa condizione(specificata nell’istruzione) e soddisfatta.

Adriano Patton (UniTrento) Data Manipulation 16 marzo 2012 12 / 30

DataManipulation

Adriano Patton

ComputerArchitecture

CentralProcessing Unit(CPU)

The StoredProgramConcept

MachineLanguage

MachineInstruction

MachineInstructionEncoding

ProgramExecution

Special-PurposeRegister

Machine Cycle

Example

Arithmetic/LogicInstructions

ArithmeticOperations

Logic Operations

Rotation andShift Operations

La codifica delle istruzioni macchinaOperazioni e operandi

In generale la versione codificata di un’istruzione macchina si dividein due parti:

il campo del codice-operazione (op-code o operation codefield),

il campo degli operandi (operand field).

I bit contenuti nell’op-code field contengono informazioni relative altipo di operazione che deve essere svolta (STORE, LOAD, AND,SHIFT), quelli nell’operand field forniscono informazioni aggiuntive,quali gli indirizzi dei registri contenenti i dati in input, la cella dimemoria in cui memorizzare una stringa, il numero di posti di cuiruotare una stringa di bit, ecc...

Adriano Patton (UniTrento) Data Manipulation 16 marzo 2012 13 / 30

DataManipulation

Adriano Patton

ComputerArchitecture

CentralProcessing Unit(CPU)

The StoredProgramConcept

MachineLanguage

MachineInstruction

MachineInstructionEncoding

ProgramExecution

Special-PurposeRegister

Machine Cycle

Example

Arithmetic/LogicInstructions

ArithmeticOperations

Logic Operations

Rotation andShift Operations

La codifica delle istruzioni macchinaEsempio

Per comprendere come le istruzioni macchina siano codificate,consideriamo un modello di computer puramente illustrativo.

Questa macchina ha 16 registri general-purpose e 256 celle dimemoria, tutti e tutte di 8 bit, numerati rispettivamente da 0 a 15 eda 0 a 255, con gli indirizzi espressi nella notazione esadecimale.

Adriano Patton (UniTrento) Data Manipulation 16 marzo 2012 14 / 30

DataManipulation

Adriano Patton

ComputerArchitecture

CentralProcessing Unit(CPU)

The StoredProgramConcept

MachineLanguage

MachineInstruction

MachineInstructionEncoding

ProgramExecution

Special-PurposeRegister

Machine Cycle

Example

Arithmetic/LogicInstructions

ArithmeticOperations

Logic Operations

Rotation andShift Operations

La codifica delle istruzioni macchinaEsempio

Nel nostro computer di esempio ogni istruzione macchina e codificatausando 16 bit, rappresentati da 4 cifre esadecimali, la prima dellequali costituisce il codice-operazione, mentre le restanti tre occupanoil campo degli operandi.I codici-operazioni distinti nel nostro linguaggio macchina sono 12 esono indicati con le prime 12 cifre della notazione esadecimale.

Per esempio, il comando 1RXY indica di caricare (LOAD) nel registroR la stringa di bit contenuta nella cella di memoria di indirizzo XY(notare che servono 8 bit per indicare l’indirizzo di una delle 256celle), mentre l’istruzione 8RST ordina di eseguire l’operazione diAND tra le stringhe contenute nei registri S e T e di memorizzare ilrisultato dell’operazione nel registro R.

Adriano Patton (UniTrento) Data Manipulation 16 marzo 2012 15 / 30

DataManipulation

Adriano Patton

ComputerArchitecture

CentralProcessing Unit(CPU)

The StoredProgramConcept

MachineLanguage

MachineInstruction

MachineInstructionEncoding

ProgramExecution

Special-PurposeRegister

Machine Cycle

Example

Arithmetic/LogicInstructions

ArithmeticOperations

Logic Operations

Rotation andShift Operations

L’Instruction Register e il Program Counter

Quando un computer deve eseguire un programma archiviato inmemoria, procede copiando man mano le istruzione nella CPU,decodificandole ed eseguendole. Esso copia le istruzioni dallamemoria seguendo l’ordine delle celle che le contengono, fintanto chenon incontra un’istruzione di salto.

Ruoli importanti in questo processo sono svolti da due registrispecial-purpose: l’instruction register, che contiene in ognimomento l’istruzione in esecuzione, e il program counter, che tienetraccia dell’indirizzo della cella contenente la prossima istruzione daeseguire.

Adriano Patton (UniTrento) Data Manipulation 16 marzo 2012 16 / 30

DataManipulation

Adriano Patton

ComputerArchitecture

CentralProcessing Unit(CPU)

The StoredProgramConcept

MachineLanguage

MachineInstruction

MachineInstructionEncoding

ProgramExecution

Special-PurposeRegister

Machine Cycle

Example

Arithmetic/LogicInstructions

ArithmeticOperations

Logic Operations

Rotation andShift Operations

Il ciclo macchina

Il lavoro della CPU consiste nella ripetizione continua di unalgoritmo, detto ciclo macchina, suddiviso in tre fasi:

1) fase di fetch,

2) fase di decode,

3) fase di execute.

FetchNella fase di fetch la CPU chiede alla memoria l’istruzionememorizzata all’indirizzo contenuto nel program counter (e a quellosuccessivo nel caso della macchina illustrativa, dato che un’istruzionee formata da 16 bit e occupa due celle), memorizza l’istruzionenell’instruction register e incrementa di due il contenuto del programcounter, in modo che contenga l’indirizzo del comando successivo.

Adriano Patton (UniTrento) Data Manipulation 16 marzo 2012 17 / 30

DataManipulation

Adriano Patton

ComputerArchitecture

CentralProcessing Unit(CPU)

The StoredProgramConcept

MachineLanguage

MachineInstruction

MachineInstructionEncoding

ProgramExecution

Special-PurposeRegister

Machine Cycle

Example

Arithmetic/LogicInstructions

ArithmeticOperations

Logic Operations

Rotation andShift Operations

Il ciclo macchina

DecodeNella fase di decode del ciclo macchina la CPU decodifica il comandomemorizzato nell’instruction register, lo divide nelle parti relative adoperazione e operandi e ne interpreta il contenuto.

ExecuteNella fase di execute la CPU attiva i circuiti predisposti per losvolgimento dell’operazione specificata dall’istruzione. Ad esempio,se il comando prevede un’operazione aritmetica, la CPU attiva ilcircuito corrispondente nell’unita aritmetico/logica con i registrispecificati dall’istruzione in input, attende il risultato e lo pone nelregistro appropriato.

Adriano Patton (UniTrento) Data Manipulation 16 marzo 2012 18 / 30

DataManipulation

Adriano Patton

ComputerArchitecture

CentralProcessing Unit(CPU)

The StoredProgramConcept

MachineLanguage

MachineInstruction

MachineInstructionEncoding

ProgramExecution

Special-PurposeRegister

Machine Cycle

Example

Arithmetic/LogicInstructions

ArithmeticOperations

Logic Operations

Rotation andShift Operations

Il ciclo macchina

Eseguita un’istruzione, la CPU ricomincia il ciclo con una nuova fasedi fetch, in vista della quale il program counter e statoopportunamente incrementato di due unita.

Salti!L’unico caso in cui il ciclo macchina viene modificato e quello in cui ilcomando da eseguire sia un salto. Supponiamo che l’istruzionericevuta dalla CPU del nostro modello sia BA47, che significa “salta(JUMP) al comando della cella 47 (esadecimale) nel caso ilcontenuto del registro A sia uguale a quello del registro 0”. Nellafase di execute, prima vengono confrontate le stringhe nei dueregistri, poi, se esse risultino essere differenti, la fase di executetermina e riparte un nuovo ciclo, nel caso invece coincidano, la CPUcopia nel program counter l’istruzione memorizzata nella cella 47(cominciando di fatto una nuova e particolare fase di fetch).

Adriano Patton (UniTrento) Data Manipulation 16 marzo 2012 19 / 30

DataManipulation

Adriano Patton

ComputerArchitecture

CentralProcessing Unit(CPU)

The StoredProgramConcept

MachineLanguage

MachineInstruction

MachineInstructionEncoding

ProgramExecution

Special-PurposeRegister

Machine Cycle

Example

Arithmetic/LogicInstructions

ArithmeticOperations

Logic Operations

Rotation andShift Operations

Il clock del computer

Il clock del computer e un circuito, detto anche oscillatore, chegenera impulsi utilizzati per coordinare le attivita della CPU e perscandirne i tempi. Maggiore e la velocita di clock di un PC, misuratain Hertz, piu velocemente questo porta a termine il suo ciclomacchina.

Adriano Patton (UniTrento) Data Manipulation 16 marzo 2012 20 / 30

DataManipulation

Adriano Patton

ComputerArchitecture

CentralProcessing Unit(CPU)

The StoredProgramConcept

MachineLanguage

MachineInstruction

MachineInstructionEncoding

ProgramExecution

Special-PurposeRegister

Machine Cycle

Example

Arithmetic/LogicInstructions

ArithmeticOperations

Logic Operations

Rotation andShift Operations

Esempio di esecuzione di un programma

Concretizziamo quanto visto fino ad ora descrivendo le operazioni chesi susseguono all’interno del nostro computer modello quando vieneeseguito un programma.

Addizione di due stringhe contenute in memoria

Supponiamo che il programma consista nel leggere due dati dallamemoria, farne la somma e poi scrivere in memoria il risultato.Per cominciare dobbiamo salvare il programma nella memoria, peresempio nelle celle consecutive da quella di indirizzo A0 in poi.

Adriano Patton (UniTrento) Data Manipulation 16 marzo 2012 21 / 30

DataManipulation

Adriano Patton

ComputerArchitecture

CentralProcessing Unit(CPU)

The StoredProgramConcept

MachineLanguage

MachineInstruction

MachineInstructionEncoding

ProgramExecution

Special-PurposeRegister

Machine Cycle

Example

Arithmetic/LogicInstructions

ArithmeticOperations

Logic Operations

Rotation andShift Operations

Esempio di esecuzione di un programma

Per far partire l’esecuzione bisognamemorizzare l’indirizzo A0 nel programcounter e accendere il computer.La CPU comincia il suo ciclo con la fasedi fetch, estraendo la prima istruzionedalla cella A0 e copiandolanell’instruction register. Cio comporta lospostamento di 16 bit, il contenuto didue celle di memoria, percio il programcounter viene incrementato di due unita.

Adriano Patton (UniTrento) Data Manipulation 16 marzo 2012 22 / 30

DataManipulation

Adriano Patton

ComputerArchitecture

CentralProcessing Unit(CPU)

The StoredProgramConcept

MachineLanguage

MachineInstruction

MachineInstructionEncoding

ProgramExecution

Special-PurposeRegister

Machine Cycle

Example

Arithmetic/LogicInstructions

ArithmeticOperations

Logic Operations

Rotation andShift Operations

Esempio di esecuzione di un programma

Alla fine della fase di fetch abbiamo:

A2 nel program counter,

156C nell’instruction register.

Nella fase di decode successiva, la CPU decodifica il comando 156Ccontenuto nell’instruction register, che ordina di caricare nel registro5 il contenuto della cella 6C. Nella fase di execute questa operazioneviene portata a termine e puo iniziare un nuovo ciclo.

Il contenuto delle celle A2 e A3 (166D) viene spostato nell’instructionregister e il program counter e nuovamente incrementato di due:

A4 nel program counter,

166D nell’instruction register.

Il comando 166D viene tradotto come “caricare nel registro 6 i bitdella cella 6D”e successivamente eseguito.

Adriano Patton (UniTrento) Data Manipulation 16 marzo 2012 23 / 30

DataManipulation

Adriano Patton

ComputerArchitecture

CentralProcessing Unit(CPU)

The StoredProgramConcept

MachineLanguage

MachineInstruction

MachineInstructionEncoding

ProgramExecution

Special-PurposeRegister

Machine Cycle

Example

Arithmetic/LogicInstructions

ArithmeticOperations

Logic Operations

Rotation andShift Operations

Esempio di esecuzione di un programma

Allo stesso modo si svolgono i cicli successivi, in cui vengono reperite,decodificate e eseguite le seguenti istruzioni:

5056: somma i contenuti dei registri 5 e 6 e memorizza ilrisultato nel registro 0;

306E: scrivi il contenuto del registro 0 nella cella di memoria diindirizzo 6E;

C000: arresta il processo.

Adriano Patton (UniTrento) Data Manipulation 16 marzo 2012 24 / 30

DataManipulation

Adriano Patton

ComputerArchitecture

CentralProcessing Unit(CPU)

The StoredProgramConcept

MachineLanguage

MachineInstruction

MachineInstructionEncoding

ProgramExecution

Special-PurposeRegister

Machine Cycle

Example

Arithmetic/LogicInstructions

ArithmeticOperations

Logic Operations

Rotation andShift Operations

Le istruzioni aritmetico/logiche

Il gruppo delle istruzioni aritmetico/logiche comprende tutti icomandi che richiedono operazioni:

aritmetiche,

logiche,

di spostamento-bit (ROTATE e SHIFT).

Operazioni aritmetiche

Alcune CPU sono progettate per eseguire solamente somme esottrazioni, altre solo addizioni. Un’operazione di sottrazione puoinfatti essere calcolata come un’addizione (modificandoopportunamente le stringhe di bit operande). Allo stesso modo unamoltiplicazione puo essere ricondotta ad una serie di addizioni e unadivisione ad una di sottrazioni.

Adriano Patton (UniTrento) Data Manipulation 16 marzo 2012 25 / 30

DataManipulation

Adriano Patton

ComputerArchitecture

CentralProcessing Unit(CPU)

The StoredProgramConcept

MachineLanguage

MachineInstruction

MachineInstructionEncoding

ProgramExecution

Special-PurposeRegister

Machine Cycle

Example

Arithmetic/LogicInstructions

ArithmeticOperations

Logic Operations

Rotation andShift Operations

Le istruzioni aritmetico/logiche

Complemento a 2 vs virgola mobile

Esistono diverse tipologie della stessa operazione di somma:addizionare due valori memorizzati nella notazione del complementoa due comporta soltanto una somma bit a bit, addizionarne duememorizzati nella notazione a virgola mobile (floating point)comporta invece un procedimento piu lungo. La mantissa deve essereestratta, la virgola spostata del numero corretto di posizioni e il bit disegno deve essere controllato. Solamente a questo punto si procedecon la somma bit a bit, per poi ritradurre il risultato in notazionefloating point.Entrambi i procedimenti appena descritti vengono definiti “operazionidi addizione”, ma prevedono azioni molto diverse da parte delcomputer.

Adriano Patton (UniTrento) Data Manipulation 16 marzo 2012 26 / 30

DataManipulation

Adriano Patton

ComputerArchitecture

CentralProcessing Unit(CPU)

The StoredProgramConcept

MachineLanguage

MachineInstruction

MachineInstructionEncoding

ProgramExecution

Special-PurposeRegister

Machine Cycle

Example

Arithmetic/LogicInstructions

ArithmeticOperations

Logic Operations

Rotation andShift Operations

Le istruzioni aritmetico/logiche

Operazioni logiche

Le operazioni binarie di OR, AND e XOR definite su due bit di inputpossono essere estese facilmente a operazioni su due stringhe di bit:per fare un’operazione di OR tra due stringhe si procede eseguendol’OR bit a bit (il primo col primo, il secondo col secondo,...). Allostesso modo per AND e XOR.

10110001

OR 01100100

11110101

Il risultato di una colonna e calcolato indipendentemente dalle altre.

Adriano Patton (UniTrento) Data Manipulation 16 marzo 2012 27 / 30

DataManipulation

Adriano Patton

ComputerArchitecture

CentralProcessing Unit(CPU)

The StoredProgramConcept

MachineLanguage

MachineInstruction

MachineInstructionEncoding

ProgramExecution

Special-PurposeRegister

Machine Cycle

Example

Arithmetic/LogicInstructions

ArithmeticOperations

Logic Operations

Rotation andShift Operations

Le istruzioni aritmetico/logicheMasking bits

Le operazioni logiche sono utilizzate per modificare le stringheforzando alcuni bit ad assumere un determinato valore in quelle chevengono dette operazioni di masking.Se si volesse per esempio indurre i primi quattro bit di una stringa adassumere il valore 1, lasciando invariati gli altri, basterebbe eseguireun OR tra la stringa da “mascherare”e la stringa 11110000. Per fardiventare invece questi bit degli 0 basterebbe eseguire un AND con lastringa 00001111.

10110001

OR 11110000

11110001

10110001

AND 00001111

00000001

10110001

XOR 11111111

01001110

Facendo invece lo XOR della stringa data con la stringa 11111111 neotteniamo la complementare.

Adriano Patton (UniTrento) Data Manipulation 16 marzo 2012 28 / 30

DataManipulation

Adriano Patton

ComputerArchitecture

CentralProcessing Unit(CPU)

The StoredProgramConcept

MachineLanguage

MachineInstruction

MachineInstructionEncoding

ProgramExecution

Special-PurposeRegister

Machine Cycle

Example

Arithmetic/LogicInstructions

ArithmeticOperations

Logic Operations

Rotation andShift Operations

Le istruzioni aritmetico/logiche

Operazioni Shift e Rotate

Le operazioni di traslazione e di rotazione permettono di spostare ibit all’interno di un registro. Un’operazione di questa categoria traslatutti i bit (per esempio) a destra di (per esempio) 2 posti.

10101101 −→ ??101011 01↘

Le operazioni di traslazione si distinguono in base al lorocomportamento sui (nel nostro caso 2) bit che “dovrebberocadere”fuori dal registro, che nel nostro caso contiene 8 bit.

Nel caso questi bit vengano inseriti, rispettando l’ordine, neiposti lasciati liberi all’estremita opposta della stringa rispetto aquella in cui si trovavano, si parla di traslazione circolare orotazione (circular shift o rotation).

10101101 � 01101011

Adriano Patton (UniTrento) Data Manipulation 16 marzo 2012 29 / 30

DataManipulation

Adriano Patton

ComputerArchitecture

CentralProcessing Unit(CPU)

The StoredProgramConcept

MachineLanguage

MachineInstruction

MachineInstructionEncoding

ProgramExecution

Special-PurposeRegister

Machine Cycle

Example

Arithmetic/LogicInstructions

ArithmeticOperations

Logic Operations

Rotation andShift Operations

Le istruzioni aritmetico/logicheTipi di traslazione

Nel caso vengano invece “dimenticati”e i posti vuoti venganomessi a 0, si parla di traslazione logica (logical shift). Eseguireuna traslazione logica a destra di un bit sulla rappresentazione incomplemento a due di un numero equivale a dividerlo per 2, unatraslazione logica a sinistra equivale a moltiplicarlo per 2.

10101101 00101011

Si indicano infine come traslazioni aritmetiche (arithmeticshifts) le traslazioni logiche in cui il posto del primo bit disinistra, che in alcune notazioni rappresenta il bit di segno, vieneriempito con il valore che aveva originariamente, al fine dimantenere il segno invariato (per esempio in moltiplicazioni edivisioni).

10101101 99K 10011011

Adriano Patton (UniTrento) Data Manipulation 16 marzo 2012 30 / 30