Your SlideShare is downloading. ×

Data Manipulation

183
views

Published on

Published in: Education

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
183
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
1
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Data Manipulation Adriano Patton Manipolazione dei Dati Computer Architecture (Data Manipulation) Central Processing Unit (CPU) Presentazione basata sul testo: The Stored Program ConceptJ. 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 Manipulation1 Computer Architecture Adriano Patton Central Processing Unit (CPU) The Stored Program Concept Computer Architecture Central2 Machine Language Processing Unit (CPU) The Stored Machine Instruction Program Concept Machine Instruction Encoding Machine Language3 Program Execution Machine Instruction Special-Purpose Register Machine Instruction Machine Cycle Encoding Program Example Execution Special-Purpose Register4 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 PattonCos’` la CPU? e Computer ArchitectureLa circuiteria che controlla la manipolazione dei dati all’interno di un Central Processing Unitcomputer ` detta Central Processing Unit, CPU o processore. e (CPU) The Stored Program ConceptNei computer costruiti a met` del secolo scorso la CPU era costituita a Machine Languageda molti ripiani di circuiti. I processori attuali sono invece piccoli Machine Instructionquadrati di spessore molto ridotto (e superficie di pochi centimetri Machine Instruction Encodingquadrati), inseriti tramite dei perni sulla scheda di circuito principale Programdel computer, detta anche scheda madre. Execution Special-PurposeIn vari Mobile Internet Devices (MID), per esempio negli Register Machine Cyclesmartphones, la CPU non ` pi` grande di met` francobollo e si parla e u a Exampleper 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 ComputerUna 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 DataQuando 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 DataUtilit` delle varie memorie a Manipulation Adriano PattonNei registri vengono memorizzati i dati che vengono utilizzati al Computermomento dalla CPU, nella memoria principale quelli che serviranno in Architectureun 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 Programimmediato. Concept Machine LanguageUn ulteriore livello Machine Instruction MachineLa memoria Cache ` una parte di memoria ad alta velocit` e a Instruction Encodingcollocata all’interno della CPU, in cui la macchina cerca sempre di Programmantenere i dati di momentaneo interesse. In questo modo, vari Execution Special-Purposetrasferimenti di dati che dovrebbero intercorrere tra la CPU e la RAM Register Machine Cycleavvengono invece tra i registri e la memoria Cache, con notevole Examplerisparmio di tempo. Le modifiche apportate ai dati nella memoria Arithmetic/Logic InstructionsCache vengono poi trasferite nella memoria principale in blocco e in Arithmetic Operationsun 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 ManipulationGrandi miglioramenti sono stati apportati ai computer per quel che Adriano Pattonriguarda 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 macchinaRISC 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 macchinaTrasferimento 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 macchinaGruppo 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 macchinaOperazioni 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 macchinaEsempio 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 macchinaEsempio 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 ComputerQuando un computer deve eseguire un programma archiviato in Architecturememoria, procede copiando man mano le istruzione nella CPU, Central Processing Unit (CPU)decodificandole ed eseguendole. Esso copia le istruzioni dalla The Stored Programmemoria seguendo l’ordine delle celle che le contengono, fintanto che Conceptnon incontra un’istruzione di salto. Machine Language Machine Instruction MachineRuoli importanti in questo processo sono svolti da due registri Instruction Encodingspecial-purpose: l’instruction register, che contiene in ogni Programmomento l’istruzione in esecuzione, e il program counter, che tiene Execution Special-Purposetraccia dell’indirizzo della cella contenente la prossima istruzione da Register Machine Cycleeseguire. 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 ManipulationIl lavoro della CPU consiste nella ripetizione continua di un Adriano Pattonalgoritmo, 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 InstructionFetch Machine Instruction EncodingNella fase di fetch la CPU chiede alla memoria l’istruzione Programmemorizzata all’indirizzo contenuto nel program counter (e a quello Execution Special-Purposesuccessivo nel caso della macchina illustrativa, dato che un’istruzione Register Machine Cycle` formata da 16 bit e occupa due celle), memorizza l’istruzionee Examplenell’instruction register e incrementa di due il contenuto del program Arithmetic/Logic Instructionscounter, 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 PattonDecode Computer ArchitectureNella fase di decode del ciclo macchina la CPU decodifica il comando Central Processing Unitmemorizzato nell’instruction register, lo divide nelle parti relative ad (CPU) The Storedoperazione e operandi e ne interpreta il contenuto. Program Concept Machine LanguageExecute Machine InstructionNella fase di execute la CPU attiva i circuiti predisposti per lo Machine Instruction Encodingsvolgimento dell’operazione specificata dall’istruzione. Ad esempio, Programse il comando prevede un’operazione aritmetica, la CPU attiva il Execution Special-Purposecircuito corrispondente nell’unit` aritmetico/logica con i registri a Register Machine Cyclespecificati dall’istruzione in input, attende il risultato e lo pone nel Exampleregistro 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 ManipulationEseguita un’istruzione, la CPU ricomincia il ciclo con una nuova fase Adriano Pattondi fetch, in vista della quale il program counter ` stato e Computeropportunamente incrementato di due unit`. a Architecture Central Processing Unit (CPU) The StoredSalti! Program ConceptL’unico caso in cui il ciclo macchina viene modificato ` quello in cui il e Machine Languagecomando da eseguire sia un salto. Supponiamo che l’istruzione Machine Instructionricevuta dalla CPU del nostro modello sia BA47, che significa “salta Machine Instruction(JUMP) al comando della cella 47 (esadecimale) nel caso il Encodingcontenuto del registro A sia uguale a quello del registro 0”. Nella Program Executionfase di execute, prima vengono confrontate le stringhe nei due Special-Purpose Registerregistri, poi, se esse risultino essere differenti, la fase di execute Machine Cycle Exampletermina e riparte un nuovo ciclo, nel caso invece coincidano, la CPU Arithmetic/Logiccopia 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 StoredIl clock del computer ` un circuito, detto anche oscillatore, che e Program Conceptgenera impulsi utilizzati per coordinare le attivit` della CPU e per a Machinescandirne i tempi. Maggiore ` la velocit` di clock di un PC, misurata e a Language Machinein Hertz, pi` velocemente questo porta a termine il suo ciclo u Instruction Machinemacchina. 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 ArchitectureConcretizziamo quanto visto fino ad ora descrivendo le operazioni che Central Processing Unitsi susseguono all’interno del nostro computer modello quando viene (CPU) The Storedeseguito un programma. Program Concept Machine LanguageAddizione di due stringhe contenute in memoria Machine Instruction MachineSupponiamo che il programma consista nel leggere due dati dalla Instruction Encodingmemoria, farne la somma e poi scrivere in memoria il risultato. ProgramPer cominciare dobbiamo salvare il programma nella memoria, per Execution Special-Purposeesempio 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 ManipulationAlla fine della fase di fetch abbiamo: Adriano Patton A2 nel program counter, Computer Architecture 156C nell’instruction register. Central Processing UnitNella fase di decode successiva, la CPU decodifica il comando 156C (CPU) The Storedcontenuto nell’instruction register, che ordina di caricare nel registro Program Concept5 il contenuto della cella 6C. Nella fase di execute questa operazione Machine Languageviene portata a termine e pu` iniziare un nuovo ciclo. o Machine Instruction Machine Instruction EncodingIl contenuto delle celle A2 e A3 (166D) viene spostato nell’instruction Programregister 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 InstructionsIl comando 166D viene tradotto come “caricare nel registro 6 i bit Arithmetic Operationsdella 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 CentralAllo 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 PattonIl gruppo delle istruzioni aritmetico/logiche comprende tutti icomandi che richiedono operazioni: Computer Architecture aritmetiche, Central Processing Unit (CPU) logiche, The Stored Program Concept di spostamento-bit (ROTATE e SHIFT). Machine Language Machine InstructionOperazioni aritmetiche Machine Instruction EncodingAlcune CPU sono progettate per eseguire solamente somme e Programsottrazioni, altre solo addizioni. Un’operazione di sottrazione pu` o Execution Special-Purposeinfatti essere calcolata come un’addizione (modificando Register Machine Cycleopportunamente le stringhe di bit operande). Allo stesso modo una Examplemoltiplicazione pu` essere ricondotta ad una serie di addizioni e una o Arithmetic/Logic Instructionsdivisione 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 PattonComplemento a 2 vs virgola mobile ComputerEsistono diverse tipologie della stessa operazione di somma: Architecture Centraladdizionare due valori memorizzati nella notazione del complemento Processing Unit (CPU)a due comporta soltanto una somma bit a bit, addizionarne due The Stored Program Conceptmemorizzati nella notazione a virgola mobile (floating point) Machinecomporta invece un procedimento pi` lungo. La mantissa deve essere u Language Machineestratta, la virgola spostata del numero corretto di posizioni e il bit di Instruction Machinesegno deve essere controllato. Solamente a questo punto si procede Instruction Encodingcon la somma bit a bit, per poi ritradurre il risultato in notazione Program Executionfloating point. Special-PurposeEntrambi i procedimenti appena descritti vengono definiti “operazioni Register Machine Cycledi addizione”, ma prevedono azioni molto diverse da parte del Example Arithmetic/Logiccomputer. 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 PattonOperazioni logiche Computer ArchitectureLe operazioni binarie di OR, AND e XOR definite su due bit di input Central Processing Unitpossono essere estese facilmente a operazioni su due stringhe di bit: (CPU) The Storedper fare un’operazione di OR tra due stringhe si procede eseguendo Program Conceptl’OR bit a bit (il primo col primo, il secondo col secondo,...). Allo Machine Languagestesso modo per AND e XOR. Machine Instruction Machine 10110001 Instruction Encoding OR 01100100 Program Execution Special-Purpose 11110101 Register Machine Cycle ExampleIl 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/logicheMasking 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 DataOperazioni Shift e Rotate Manipulation Adriano PattonLe operazioni di traslazione e di rotazione permettono di spostare i Computerbit all’interno di un registro. Un’operazione di questa categoria trasla Architecturetutti i bit (per esempio) a destra di (per esempio) 2 posti. Central Processing Unit (CPU) The Stored 10101101 −→ ??101011 01 Program Concept Machine LanguageLe operazioni di traslazione si distinguono in base al loro Machine Instructioncomportamento sui (nel nostro caso 2) bit che “dovrebbero Machine Instructioncadere”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/logicheTipi 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