data manipulation
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