Lecture 7 Assembler language nedir? Nicin onu ogreniriz? oku sections 3.1-3.4 oku H&P sections A.1 ve A.9 11/25/2004 Bilgisayar Mimarisi 7.1 11/25/2004 Bilgisayar Mimarisi 7.2 Language 3 seviyesi High Level Language (e.g., Java) change = cash - cost - tax; Assembler Lang (one operator per instruction) mov cash, temp sub cost, temp sub tax, temp mov temp, change Language in 3 seviyesi Machine Language 10100101 1011010, 1010010 10010101 1101101, 1110101 10010101 1101001, 1110101 11101101 1101100, 1101101 3 seviyenin hepsi de ayni seyi yaparlar 11/25/2004 Bilgisayar Mimarisi 7.3 11/25/2004 Bilgisayar Mimarisi 7.4
Language 3 seviyesi High level Programci icin en uygunu En kolay anlasilabileni Easiest to understand and write Best productivity (en uretken olani) Productivity birim zamanda yazilan code satir sayisi Minimal Hardware bilgisi Assembler language Numeric degerlerin yerini symbol ler alir Machine language gore daha kolay anlasilir Conditional jums (BEQ) gibi instruction lar kullanilarak program in instruction flow u degistirilebilir High level program larda kullanilmamasi tavsiye edilen go to yu ihlal eder Portable degil. Machine ozeldir 11/25/2004 Bilgisayar Mimarisi 7.5 11/25/2004 Bilgisayar Mimarisi 7.6 Temel philosophic hususlar Assembler language bir machine ne veya machine ailesine ozeldir Hardware-software interface olarak dusunulebilir Hardware le uyumlu design edilmeli 11/25/2004 Bilgisayar Mimarisi 7.7 RISC ve CISC RISC Reduced Instruction Set Computer Basit instruction lar, fakat hizli Bir kac seyi iyi yap CISC Complex Instruction Set Computer Daha cok instruction Ayni seyi daha az sayida instruction kullanarak yap Hardware yavas 11/25/2004 Bilgisayar Mimarisi 7.8
Nicin assembler language ogrenmeliyiz? Softwar i hardware le iliskilendirir Relates software to hardware Opcodes ALU fucntion unu kontrol eder Computer science in temellerindendir Onceden ogrenilmek zorundaydi, simdi de Her nekadar cok az sayida insan assembler kullanarak code yazar Nicin ihtiyac duyulur? Neyin kesin olarak execute edilecegini saglar Nadir ve kritik durumlarada daha efficient ve hizli Cogu kimse gunumuzde assembly language ine ihtiyac duymaksizin program yazmaktadir Assembly dilinde yazilan code larin maintenance i cok pahali 11/25/2004 Bilgisayar Mimarisi 7.9 11/25/2004 Bilgisayar Mimarisi 7.10 Stored program concept Principle of locality Pioneer: John von Neumann Data ve program ayni memory de Fetch ve execute instructions Instructions data yi memory den alir (fetch) Data manipulate edilir ve sonuc tekrar memory e yazilir 11/25/2004 Bilgisayar Mimarisi 7.11 Spatial locality Hemen hemen her zaman bir onceki execute olan instruction a komsu instruction execute edilir Hemen hemen her zaman bir once fetch edilen data ya yakin olan data fetch edilir Temporal locality Execute edilen instruction buyuk bir ihtimalle kisa bir sure icinde tekrar execute edililecektir Fetch edilen data kisa bir sure icinde tekrar fetch edilecektir Locality prensibinden yararlanilarak cache memory ler design edilmistir 11/25/2004 Bilgisayar Mimarisi 7.12
Skewed instruction frequency Bir program in calismasi esnasinda gecen surenin yaklasik %95 i bu program code unun yaklasik %2 sinin execution inde harcanir Dolayisiyle code un %2 sini cok efficient yap, geri kalan kisim pek onemli degil Big Endian byte addressing MSB of 32-bit word Byte 0 Byte 1 Byte 2 Byte 3 Most natural, bytes concatenate naturally Used by majority of computers Used by MIPS 11/25/2004 Bilgisayar Mimarisi 7.13 11/25/2004 Bilgisayar Mimarisi 7.14 Little Endian addressing MSB of 32-bit word Byte 3 Byte 2 Byte 1 Byte 0 Used by some computers 11/25/2004 Bilgisayar Mimarisi 7.15 Operand larin sayisina gore assembly dillerinin tasnifi 3-Operand: ADD A, B, C A = B + C 2-operand: ADD A, B A = A + B 1-operand: ADD A Accumulator = Accumulator + A Classic machine: IBM 407 tabulator 11/25/2004 Bilgisayar Mimarisi 7.16
Register kullanimina gore assembly dillerinin tasnifi Register yok: ADD Mem1, Mem2 Data memory den fetch edilir ve memory e yazilir Sadece register lar uzerinde islem ADD R1,R2 Butun operation lar register lardaki data yi kullanir load ve store instruction larina ihtiyac var Karisik ADD R1, Mem1 Data her iki kaynak dan da temin edilir 11/25/2004 Bilgisayar Mimarisi 7.17 Integrated Development Environment E.g., Visual J++, Visual Studio, Borland Builder Text editor, compiler, linker, loader, run-time exception handlink ve I/O, hepsi kolaylik acisindan ayni package da temin edilir Asagi yukari 10 yillik bir mazisi var 11/25/2004 Bilgisayar Mimarisi 7.18 Klasik yolla code uretimi Bir text editor u kullanilarak source code olusturulur Compiler bu olusturulan source file i input alarak cagrilir, ve object file olusturulur Enter source code into a text file with editor Object file, language in service routine leri (I/O, math gibi) kullanilarak link edilir ve sonucta executable olusturulur (linker) Executable file memory e yuklenerek calismaya baslanir (loader) MIPS nedir? High-speed RISC computer ureten sirket Sun Microsystems tarafindan satin alindi Cesitli graphic hardware lerinde kullanilan processor H&P textbook MIPS microprocessor u promote etmektedir 11/25/2004 Bilgisayar Mimarisi 7.19 11/25/2004 Bilgisayar Mimarisi 7.20
Diger assembly language ler Assembler language and hardware 40 yildan beri yuzlerce degisik microprocessor gelistirildi Her birinin kendi assembly language i var Ornek IBM PC: 8086-80486 Motorola PowerPC Sun s Sparc 11/25/2004 Bilgisayar Mimarisi 7.21 Memory nin CPU daki uzantisina Register File denir Register File bir grup register lardan olusur Ornek: MIPS 32 tane genel amacli register (32 general purpose registers) 32 tane floating point register CPU register lar uzerindeki data da islem yapar ve sonuc tekrar register a yazilir Register spilling nedir? 11/25/2004 Bilgisayar Mimarisi 7.22 Logic gate lerle depolama gerceklenebilir Bunlar flip-flop diye adlandirilirlar Flip-flop bir bit lik bilgi saklar Nand gate lerden yapilan flip-flop (sonraki slide) Flip-flop, basic unit of storage *A *B Y *Y When *A goes low, the flip-flop is set When *B goes low, the flip-flop is cleared When both inputs are high, the flip-flop keeps its value 11/25/2004 Bilgisayar Mimarisi 7.23 11/25/2004 Bilgisayar Mimarisi 7.24
Package flip-flops into a register with many separate bits Data In Data Out Simplified diagram of N-bit ALU A N ALU Select (from instruction Op Code) N Y Capture or Take B N 4 Z N C V 11/25/2004 Bilgisayar Mimarisi 7.25 11/25/2004 Bilgisayar Mimarisi 7.26 Opcode CPU Diagram, 3-operand assembler language IR R1 R2 Select R3 M U X Ta ALU General Registers Tb PC MAR Address Data M U X MEM CPU diyagramindan aciklamalar PC: Program Counter Execute edilen instruction in address ini tutar MAR: Memory Address Register Erisilen memory (data icin) in address ini tutar Ta ve Tb ALU ya input olarak gelen verileri tutar 11/25/2004 Bilgisayar Mimarisi 7.27 11/25/2004 Bilgisayar Mimarisi 7.28
CPU diyagramindan aciklamalar IR: Instruction Register Memory den CPU ya execute edilmek uzere getirilen instruction i tutar Instruction 4 kisimdan (fields) olusur Opcode: ALU select lines larini surer (ALU nun hangi operation I yapmasi gerektigine karar verir) R1,R2,R3 uc operand li instruction lar icin uzerlerinde islem yapilan register larin address lerini tutar 11/25/2004 Bilgisayar Mimarisi 7.29 Assembly instructionlarin gruplanmasi Data movement (load, store, ) (45.28) Program flow control (branch, call, return, ) (28.73) Arithmetic (10.75) Compare (5.92) Logical (3.91) Shift (2.93) Bit manipulation (2.05) Input/output and miscellaneous (0.44) 11/25/2004 Bilgisayar Mimarisi 7.30 Assembler instruction lar nasil calisir MIPS instruction: lw $t2, 0($t1) Her bir instruction bir microsequence baslatir Microsequence veriyi CPU ya yonlendirir ve yapilmasi gereken micro adimlari belirler PC nin gosterdigi (address ledigi) instruction memory den fetch edilir ( memory den IR ye yazilir) (Instruction fetch) IR ye getirilen instruction in code u cozumlenir (opcode, register lar vb.) (instruction decode) $t1 register ina 0 eklenerek erisilecek bellek gozunun address i bulunur ve bulunan address MAR a yazilir MAR in belirledigi memory gozu $t2 register ine yuklenir 11/25/2004 Bilgisayar Mimarisi 7.31 11/25/2004 Bilgisayar Mimarisi 7.32
add $t2, $t1, $t0 sw $t2, 0($t1) 11/25/2004 Bilgisayar Mimarisi 7.33