csc 252: computer organization spring 2020: lecture 10 · carnegie mellon!3 announcement...
TRANSCRIPT
![Page 1: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/1.jpg)
CSC 252: Computer Organization Spring 2020: Lecture 10
Instructor: Yuhao Zhu
Department of Computer ScienceUniversity of Rochester
![Page 2: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/2.jpg)
Carnegie Mellon
!2
Announcement• Programming assignment 3 is out
• Details: https://www.cs.rochester.edu/courses/252/spring2020/labs/assignment3.html
• Due on Feb. 28, 11:59 PM • You (may still) have 3 slip days
Today
Due
![Page 3: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/3.jpg)
Carnegie Mellon
!3
Announcement• Programming assignment 3 is in x86 assembly language. Seek
help from TAs.• TAs are best positioned to answer your questions about
programming assignments!!!• Programming assignments do NOT repeat the lecture materials.
They ask you to synthesize what you have learned from the lectures and work out something new.
![Page 4: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/4.jpg)
Carnegie Mellon
!4
So far in 252…
C Program
Assembly Program
ProcessorMicroarchitecture
Circuits
Instruction Set Architecture
![Page 5: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/5.jpg)
Carnegie Mellon
!4
So far in 252…
ret, call movq, addq jmp, jne
C Program
Assembly Program
ProcessorMicroarchitecture
Circuits
Instruction Set Architecture
![Page 6: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/6.jpg)
Carnegie Mellon
!4
So far in 252…
ret, call movq, addq jmp, jne
movq %rsi, %rax imulq %rdx, %rax jmp .done
C Program
Assembly Program
ProcessorMicroarchitecture
Circuits
Instruction Set Architecture
![Page 7: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/7.jpg)
Carnegie Mellon
!4
So far in 252…int, float if, else +, -, >>
ret, call movq, addq jmp, jne
movq %rsi, %rax imulq %rdx, %rax jmp .done
C Program
Assembly Program
ProcessorMicroarchitecture
Circuits
Instruction Set Architecture
![Page 8: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/8.jpg)
Carnegie Mellon
!4
So far in 252…int, float if, else +, -, >>
ret, call movq, addq jmp, jne
movq %rsi, %rax imulq %rdx, %rax jmp .done
Logic gates
C Program
Assembly Program
ProcessorMicroarchitecture
Circuits
Instruction Set Architecture
![Page 9: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/9.jpg)
Carnegie Mellon
!4
So far in 252…int, float if, else +, -, >>
ret, call movq, addq jmp, jne
movq %rsi, %rax imulq %rdx, %rax jmp .done
Logic gates
Transistors
C Program
Assembly Program
ProcessorMicroarchitecture
Circuits
Instruction Set Architecture
![Page 10: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/10.jpg)
Carnegie Mellon
!5
So far in 252…• ISA is the interface between
assembly programs and microarchitecture
C Program
Assembly Program
ProcessorMicroarchitecture
Circuits
Instruction Set Architecture
![Page 11: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/11.jpg)
Carnegie Mellon
!5
So far in 252…• ISA is the interface between
assembly programs and microarchitecture
• Assembly view:
C Program
Assembly Program
ProcessorMicroarchitecture
Circuits
Instruction Set Architecture
![Page 12: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/12.jpg)
Carnegie Mellon
!5
So far in 252…• ISA is the interface between
assembly programs and microarchitecture
• Assembly view:• How to program the machine,
based on instructions and processor states (registers, memory, condition codes, etc.)?
C Program
Assembly Program
ProcessorMicroarchitecture
Circuits
Instruction Set Architecture
![Page 13: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/13.jpg)
Carnegie Mellon
!5
So far in 252…• ISA is the interface between
assembly programs and microarchitecture
• Assembly view:• How to program the machine,
based on instructions and processor states (registers, memory, condition codes, etc.)?
• Instructions are executed sequentially.
C Program
Assembly Program
ProcessorMicroarchitecture
Circuits
Instruction Set Architecture
![Page 14: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/14.jpg)
Carnegie Mellon
!5
So far in 252…• ISA is the interface between
assembly programs and microarchitecture
• Assembly view:• How to program the machine,
based on instructions and processor states (registers, memory, condition codes, etc.)?
• Instructions are executed sequentially.
•Microarchitecture view:
C Program
Assembly Program
ProcessorMicroarchitecture
Circuits
Instruction Set Architecture
![Page 15: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/15.jpg)
Carnegie Mellon
!5
So far in 252…• ISA is the interface between
assembly programs and microarchitecture
• Assembly view:• How to program the machine,
based on instructions and processor states (registers, memory, condition codes, etc.)?
• Instructions are executed sequentially.
•Microarchitecture view:• What hardware needs to be built to
run assembly programs?
C Program
Assembly Program
ProcessorMicroarchitecture
Circuits
Instruction Set Architecture
![Page 16: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/16.jpg)
Carnegie Mellon
!5
So far in 252…• ISA is the interface between
assembly programs and microarchitecture
• Assembly view:• How to program the machine,
based on instructions and processor states (registers, memory, condition codes, etc.)?
• Instructions are executed sequentially.
•Microarchitecture view:• What hardware needs to be built to
run assembly programs?• How to run programs as fast
(energy-efficient) as possible?
C Program
Assembly Program
ProcessorMicroarchitecture
Circuits
Instruction Set Architecture
![Page 17: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/17.jpg)
Carnegie Mellon
(Simplified) x86 Processor State
• Processor state is what’s visible to assembly programs. Also known as architecture state.
�6
ZF SF OF
RF: Program registers
CC: Condition
codes
PC
DMEM: Memory
Stat: Program status
%r8
%r9
%r10
%r11
%r12
%r13
%r14
%rax
%rcx
%rdx
%rbx
%rsp
%rbp
%rsi
%rdi
![Page 18: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/18.jpg)
Carnegie Mellon
(Simplified) x86 Processor State
• Processor state is what’s visible to assembly programs. Also known as architecture state.
• Program Registers: 15 registers (omit %r15). Each 64 bits
�6
ZF SF OF
RF: Program registers
CC: Condition
codes
PC
DMEM: Memory
Stat: Program status
%r8
%r9
%r10
%r11
%r12
%r13
%r14
%rax
%rcx
%rdx
%rbx
%rsp
%rbp
%rsi
%rdi
![Page 19: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/19.jpg)
Carnegie Mellon
(Simplified) x86 Processor State
• Processor state is what’s visible to assembly programs. Also known as architecture state.
• Program Registers: 15 registers (omit %r15). Each 64 bits• Condition Codes: Single-bit flags set by arithmetic or logical instructions
(ZF, SF, OF)
�6
ZF SF OF
RF: Program registers
CC: Condition
codes
PC
DMEM: Memory
Stat: Program status
%r8
%r9
%r10
%r11
%r12
%r13
%r14
%rax
%rcx
%rdx
%rbx
%rsp
%rbp
%rsi
%rdi
![Page 20: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/20.jpg)
Carnegie Mellon
(Simplified) x86 Processor State
• Processor state is what’s visible to assembly programs. Also known as architecture state.
• Program Registers: 15 registers (omit %r15). Each 64 bits• Condition Codes: Single-bit flags set by arithmetic or logical instructions
(ZF, SF, OF)• Program Counter: Indicates address of next instruction
�6
ZF SF OF
RF: Program registers
CC: Condition
codes
PC
DMEM: Memory
Stat: Program status
%r8
%r9
%r10
%r11
%r12
%r13
%r14
%rax
%rcx
%rdx
%rbx
%rsp
%rbp
%rsi
%rdi
![Page 21: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/21.jpg)
Carnegie Mellon
(Simplified) x86 Processor State
• Processor state is what’s visible to assembly programs. Also known as architecture state.
• Program Registers: 15 registers (omit %r15). Each 64 bits• Condition Codes: Single-bit flags set by arithmetic or logical instructions
(ZF, SF, OF)• Program Counter: Indicates address of next instruction• Program Status: Indicates either normal operation or error condition
�6
ZF SF OF
RF: Program registers
CC: Condition
codes
PC
DMEM: Memory
Stat: Program status
%r8
%r9
%r10
%r11
%r12
%r13
%r14
%rax
%rcx
%rdx
%rbx
%rsp
%rbp
%rsi
%rdi
![Page 22: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/22.jpg)
Carnegie Mellon
(Simplified) x86 Processor State
• Processor state is what’s visible to assembly programs. Also known as architecture state.
• Program Registers: 15 registers (omit %r15). Each 64 bits• Condition Codes: Single-bit flags set by arithmetic or logical instructions
(ZF, SF, OF)• Program Counter: Indicates address of next instruction• Program Status: Indicates either normal operation or error condition• Memory
• Byte-addressable storage array • Words stored in little-endian byte order
�6
ZF SF OF
RF: Program registers
CC: Condition
codes
PC
DMEM: Memory
Stat: Program status
%r8
%r9
%r10
%r11
%r12
%r13
%r14
%rax
%rcx
%rdx
%rbx
%rsp
%rbp
%rsi
%rdi
![Page 23: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/23.jpg)
Carnegie Mellon
!7
Why Have Instructions?• Why do we need an ISA? Can we directly program the hardware?
![Page 24: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/24.jpg)
Carnegie Mellon
!7
Why Have Instructions?• Why do we need an ISA? Can we directly program the hardware?• Simplifies interface
• Software knows what is available • Hardware knows what needs to be implemented
![Page 25: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/25.jpg)
Carnegie Mellon
!7
Why Have Instructions?• Why do we need an ISA? Can we directly program the hardware?• Simplifies interface
• Software knows what is available • Hardware knows what needs to be implemented
• Abstraction protects software and hardware• Software can run on new machines • Hardware can run old software
![Page 26: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/26.jpg)
Carnegie Mellon
!7
Why Have Instructions?• Why do we need an ISA? Can we directly program the hardware?• Simplifies interface
• Software knows what is available • Hardware knows what needs to be implemented
• Abstraction protects software and hardware• Software can run on new machines • Hardware can run old software
• Alternatives: Application-Specific Integrated Circuits (ASIC)• No instructions, (largely) not programmable, fixed-functioned, so
no instruction fetch, decoding, etc. • So could be implemented extremely efficiently. • Examples: video/audio codec, (conventional) image signal
processors, (conventional) IP packet router
![Page 27: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/27.jpg)
Carnegie Mellon
!8
Characteristics of a Good ISA• x86 is just one kind of ISA; there are many (ARM, MIPS, etc.)• Must be unambiguous• Must be expressive
• Easily describes all the algorithms that will run on this platform • Instructions are used
• Very complex instructions might not be used often • (Relatively) easy to compile• (Relatively) easy to implement well
• Has to be implementable • And, implementation provides good performance, cost, etc.
• ISAs often highly reliant on microarchitecture and vice-versa• Some ISAs easy to implement on some microarchitectures • Some microarchitectures make some instructions easy to implement
![Page 28: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/28.jpg)
Carnegie Mellon
!9
Some ISA Design Tradeoffs• Fewer instructions
• Pros?• Cons?
![Page 29: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/29.jpg)
Carnegie Mellon
!9
Some ISA Design Tradeoffs• Fewer instructions
• Pros?• Cons?• There are 1 instruction ISAs
![Page 30: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/30.jpg)
Carnegie Mellon
!9
Some ISA Design Tradeoffs• Fewer instructions
• Pros?• Cons?• There are 1 instruction ISAs
• subjle a, b, c ;
![Page 31: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/31.jpg)
Carnegie Mellon
!9
Some ISA Design Tradeoffs• Fewer instructions
• Pros?• Cons?• There are 1 instruction ISAs
• subjle a, b, c ;• Mem[b] = Mem[b] - Mem[a]; if (Mem[b] ≤ 0) goto c
![Page 32: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/32.jpg)
Carnegie Mellon
!9
Some ISA Design Tradeoffs• Fewer instructions
• Pros?• Cons?• There are 1 instruction ISAs
• subjle a, b, c ;• Mem[b] = Mem[b] - Mem[a]; if (Mem[b] ≤ 0) goto c
• Number of registers per instruction
![Page 33: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/33.jpg)
Carnegie Mellon
!9
Some ISA Design Tradeoffs• Fewer instructions
• Pros?• Cons?• There are 1 instruction ISAs
• subjle a, b, c ;• Mem[b] = Mem[b] - Mem[a]; if (Mem[b] ≤ 0) goto c
• Number of registers per instruction• Affect number of bits per instruction
![Page 34: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/34.jpg)
Carnegie Mellon
!9
Some ISA Design Tradeoffs• Fewer instructions
• Pros?• Cons?• There are 1 instruction ISAs
• subjle a, b, c ;• Mem[b] = Mem[b] - Mem[a]; if (Mem[b] ≤ 0) goto c
• Number of registers per instruction• Affect number of bits per instruction• Affect number of registers the microarchitecture has to implement
![Page 35: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/35.jpg)
Carnegie Mellon
!9
Some ISA Design Tradeoffs• Fewer instructions
• Pros?• Cons?• There are 1 instruction ISAs
• subjle a, b, c ;• Mem[b] = Mem[b] - Mem[a]; if (Mem[b] ≤ 0) goto c
• Number of registers per instruction• Affect number of bits per instruction• Affect number of registers the microarchitecture has to implement• How many?? Zero, One, Two, Three, Four, …
![Page 36: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/36.jpg)
Carnegie Mellon
!10
Number of Registers Per Instruction• To implement C = A + B, how many registers should an ISA provide?
![Page 37: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/37.jpg)
Carnegie Mellon
!10
Number of Registers Per Instruction• To implement C = A + B, how many registers should an ISA provide?• Zero
• Stack machine (HP calculators): implied addresses • PUSH AddrA; PUSH AddrB; ADD; POP AddrC
![Page 38: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/38.jpg)
Carnegie Mellon
!10
Number of Registers Per Instruction• To implement C = A + B, how many registers should an ISA provide?• Zero
• Stack machine (HP calculators): implied addresses • PUSH AddrA; PUSH AddrB; ADD; POP AddrC
• One (implied)• Accumulator-based machine • LOAD AddrA; ADD AddrB; STORE AddrC
![Page 39: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/39.jpg)
Carnegie Mellon
!10
Number of Registers Per Instruction• To implement C = A + B, how many registers should an ISA provide?• Zero
• Stack machine (HP calculators): implied addresses • PUSH AddrA; PUSH AddrB; ADD; POP AddrC
• One (implied)• Accumulator-based machine • LOAD AddrA; ADD AddrB; STORE AddrC
• Two (same register, src and dest), e.g., x86• One source is destination • LOAD R1, AddrA; LOAD R2, AddrB; • ADD R1, R2; STORE R1, AddrC
![Page 40: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/40.jpg)
Carnegie Mellon
!10
Number of Registers Per Instruction• To implement C = A + B, how many registers should an ISA provide?• Zero
• Stack machine (HP calculators): implied addresses • PUSH AddrA; PUSH AddrB; ADD; POP AddrC
• One (implied)• Accumulator-based machine • LOAD AddrA; ADD AddrB; STORE AddrC
• Two (same register, src and dest), e.g., x86• One source is destination • LOAD R1, AddrA; LOAD R2, AddrB; • ADD R1, R2; STORE R1, AddrC
• Three• Current (D = S1 OP S2) • LOAD R1, AddrA; LOAD R2, AddrB; • ADD R3, R1, R2; STORE R3, AddrC
![Page 41: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/41.jpg)
Carnegie Mellon
!10
Number of Registers Per Instruction• To implement C = A + B, how many registers should an ISA provide?• Zero
• Stack machine (HP calculators): implied addresses • PUSH AddrA; PUSH AddrB; ADD; POP AddrC
• One (implied)• Accumulator-based machine • LOAD AddrA; ADD AddrB; STORE AddrC
• Two (same register, src and dest), e.g., x86• One source is destination • LOAD R1, AddrA; LOAD R2, AddrB; • ADD R1, R2; STORE R1, AddrC
• Three• Current (D = S1 OP S2) • LOAD R1, AddrA; LOAD R2, AddrB; • ADD R3, R1, R2; STORE R3, AddrC
• Four and above
![Page 42: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/42.jpg)
Carnegie Mellon
!11
Today: Instruction Encoding• How to translate assembly instructions to binary
• Essentially how an assembler works• Using the Y86-64 ISA: Simplified version of x86-64
![Page 43: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/43.jpg)
Carnegie Mellon
How are Instructions Encoded in Binary?• Remember that instructions are stored in memory as bits (just
like data)
• Each instruction is fetched (according to the address specified in the PC), decoded, and executed by the CPU
• The ISA defines the format of an instruction (syntax) and its meaning (semantics)
• Idea: encode the two major fields, opcode and operand, separately in bits.
• The OPCODE field says what the instruction does (e.g. ADD) • The OPERAND field(s) say where to find inputs and outputs
�12
![Page 44: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/44.jpg)
Carnegie Mellon
Y86-64 Instructions
�13
pushq rA
jXX Dest
popq rA
call Dest
cmovXX rA, rB
irmovq V, rB
rmmovq rA, D(rB)
mrmovq D(rB), rA
OPq rA, rB
ret
nop
halt
![Page 45: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/45.jpg)
Carnegie Mellon
Y86-64 Instructions
�13
pushq rA
jXX Dest
popq rA
call Dest
cmovXX rA, rB
irmovq V, rB
rmmovq rA, D(rB)
mrmovq D(rB), rA
OPq rA, rB
ret
nop
halt
jmp
jle
jl
je
jne
jge
jg
![Page 46: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/46.jpg)
Carnegie Mellon
Y86-64 Instructions
�13
pushq rA
jXX Dest
popq rA
call Dest
cmovXX rA, rB
irmovq V, rB
rmmovq rA, D(rB)
mrmovq D(rB), rA
OPq rA, rB
ret
nop
halt
addq
subq
andq
xorq
jmp
jle
jl
je
jne
jge
jg
![Page 47: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/47.jpg)
Carnegie Mellon
Y86-64 Instructions
�13
pushq rA
jXX Dest
popq rA
call Dest
cmovXX rA, rB
irmovq V, rB
rmmovq rA, D(rB)
mrmovq D(rB), rA
OPq rA, rB
ret
nop
halt
addq
subq
andq
xorq
jmp
jle
jl
je
jne
jge
jg
rrmovq
cmovle
cmovl
cmove
cmovne
cmovge
cmovg
![Page 48: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/48.jpg)
Carnegie Mellon
Y86-64 Instructions
�13
pushq rA
jXX Dest
popq rA
call Dest
cmovXX rA, rB
irmovq V, rB
rmmovq rA, D(rB)
mrmovq D(rB), rA
OPq rA, rB
ret
nop
halt
addq
subq
andq
xorq
jmp
jle
jl
je
jne
jge
jg
rrmovq
cmovle
cmovl
cmove
cmovne
cmovge
cmovg
How to encode them in bits?
![Page 49: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/49.jpg)
Carnegie Mellon
Encoding Operands
�14
pushq rA
jXX Dest
popq rA
call Dest
cmovXX rA, rB
irmovq V, rB
rmmovq rA, D(rB)
mrmovq D(rB), rA
OPq rA, rB
ret
nop
halt addq
subq
andq
xorq
jmp
jle
jl
je
jne
jge
jg
rrmovq
cmovle
cmovl
cmove
cmovne
cmovge
cmovg
• 27 Instructions, so need 5 bits for encoding the operand
![Page 50: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/50.jpg)
Carnegie Mellon
Encoding Operands
�14
pushq rA
jXX Dest
popq rA
call Dest
cmovXX rA, rB
irmovq V, rB
rmmovq rA, D(rB)
mrmovq D(rB), rA
OPq rA, rB
ret
nop
halt addq
subq
andq
xorq
jmp
jle
jl
je
jne
jge
jg
rrmovq
cmovle
cmovl
cmove
cmovne
cmovge
cmovg
• 27 Instructions, so need 5 bits for encoding the operand
• Or: group similar instructions, use one opcode for them, and then use one more bit to indicate specific instructions within a group.
![Page 51: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/51.jpg)
Carnegie Mellon
Encoding Operands
�14
pushq rA
jXX Dest
popq rA
call Dest
cmovXX rA, rB
irmovq V, rB
rmmovq rA, D(rB)
mrmovq D(rB), rA
OPq rA, rB
ret
nop
halt addq
subq
andq
xorq
jmp
jle
jl
je
jne
jge
jg
rrmovq
cmovle
cmovl
cmove
cmovne
cmovge
cmovg
• 27 Instructions, so need 5 bits for encoding the operand
• Or: group similar instructions, use one opcode for them, and then use one more bit to indicate specific instructions within a group.
• E.g., 12 categories, so 4 bits
![Page 52: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/52.jpg)
Carnegie Mellon
Encoding Operands
�14
pushq rA
jXX Dest
popq rA
call Dest
cmovXX rA, rB
irmovq V, rB
rmmovq rA, D(rB)
mrmovq D(rB), rA
OPq rA, rB
ret
nop
halt addq
subq
andq
xorq
jmp
jle
jl
je
jne
jge
jg
rrmovq
cmovle
cmovl
cmove
cmovne
cmovge
cmovg
• 27 Instructions, so need 5 bits for encoding the operand
• Or: group similar instructions, use one opcode for them, and then use one more bit to indicate specific instructions within a group.
• E.g., 12 categories, so 4 bits• There are four instructions within
the OPq category, so additional 2 bits. Similarly, 3 more bits for jXX and cmovXX, respectively.
![Page 53: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/53.jpg)
Carnegie Mellon
Encoding Operands
�14
pushq rA
jXX Dest
popq rA
call Dest
cmovXX rA, rB
irmovq V, rB
rmmovq rA, D(rB)
mrmovq D(rB), rA
OPq rA, rB
ret
nop
halt addq
subq
andq
xorq
jmp
jle
jl
je
jne
jge
jg
rrmovq
cmovle
cmovl
cmove
cmovne
cmovge
cmovg
• 27 Instructions, so need 5 bits for encoding the operand
• Or: group similar instructions, use one opcode for them, and then use one more bit to indicate specific instructions within a group.
• E.g., 12 categories, so 4 bits• There are four instructions within
the OPq category, so additional 2 bits. Similarly, 3 more bits for jXX and cmovXX, respectively.
•Which one is better???
![Page 54: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/54.jpg)
Carnegie Mellon
Encoding Operands
�15
Byte
pushq rA A 0
jXX Dest 7 fn
popq rA B 0
call Dest 8 0
cmovXX rA, rB 2 fn
irmovq V, rB 3 0
rmmovq rA, D(rB) 4 0
mrmovq D(rB), rA 5 0
OPq rA, rB 6 fn
ret 9 0
nop 1 0
halt 0 0
0 1 2 3 4 5 6 7 8 9
• Design decision chosen by the textbook authors (don’t have to be this way!)
• Use 4 bits to encode the instruction category
• Another 4 bits to encode the specific instructions within a category
• So 1 bytes for encoding operand • Is this better than the alternative of using
5 bits without classifying instructions? • Trade-offs.
![Page 55: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/55.jpg)
Carnegie Mellon
Encoding RegistersEach register has 4-bit ID
• Same encoding as in x86-64 • Register ID 15 (0xF) indicates “no register”
�16
%rax
%rcx
%rdx
%rbx
0
1
2
3
%rsp
%rbp
%rsi
%rdi
4
5
6
7
%r8
%r9
%r10
%r11
8
9
A
B
%r12
%r13
%r14
No Register
C
D
E
F
![Page 56: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/56.jpg)
Carnegie Mellon
Encoding Registers
�17
Byte
pushq rA A 0 rA F
jXX Dest 7 fn
popq rA B 0 rA F
call Dest 8 0
cmovXX rA, rB 2 fn rA rB
irmovq V, rB 3 0 F rB
rmmovq rA, D(rB) 4 0 rA rB
mrmovq D(rB), rA 5 0 rA rB
OPq rA, rB 6 fn rA rB
ret 9 0
nop 1 0
halt 0 0
0 1 2 3 4 5 6 7 8 9
![Page 57: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/57.jpg)
Carnegie Mellon
Instruction ExampleAddition Instruction
• Add value in register rA to that in register rB • Store result in register rB
• Set condition codes based on result • e.g., addq %rax,%rsi Encoding: 60 06 • Two-byte encoding
• First indicates instruction type • Second gives source and destination registers
�18
addq rA, rB 6 0 rA rB
![Page 58: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/58.jpg)
Carnegie Mellon
Instruction ExampleAddition Instruction
• Add value in register rA to that in register rB • Store result in register rB
• Set condition codes based on result • e.g., addq %rax,%rsi Encoding: 60 06 • Two-byte encoding
• First indicates instruction type • Second gives source and destination registers
�18
addq rA, rB 6 0 rA rB
Assembly Form
![Page 59: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/59.jpg)
Carnegie Mellon
Instruction ExampleAddition Instruction
• Add value in register rA to that in register rB • Store result in register rB
• Set condition codes based on result • e.g., addq %rax,%rsi Encoding: 60 06 • Two-byte encoding
• First indicates instruction type • Second gives source and destination registers
�18
addq rA, rB 6 0 rA rB
Encoded Representation
Assembly Form
![Page 60: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/60.jpg)
Carnegie Mellon
Arithmetic and Logical Operations• Refer to generically as “OPq” • Encodings differ only by “function
code” • Low-order 4 bytes in first instruction
word • Set condition codes as side effect
�19
addq rA, rB 6 0 rA rB
subq rA, rB 6 1 rA rB
andq rA, rB 6 2 rA rB
xorq rA, rB 6 3 rA rB
Add
Subtract (rA from rB)
And
Exclusive-Or
![Page 61: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/61.jpg)
Carnegie Mellon
Arithmetic and Logical Operations• Refer to generically as “OPq” • Encodings differ only by “function
code” • Low-order 4 bytes in first instruction
word • Set condition codes as side effect
�19
addq rA, rB 6 0 rA rB
subq rA, rB 6 1 rA rB
andq rA, rB 6 2 rA rB
xorq rA, rB 6 3 rA rB
Add
Subtract (rA from rB)
And
Exclusive-Or
Function Code
![Page 62: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/62.jpg)
Carnegie Mellon
Arithmetic and Logical Operations• Refer to generically as “OPq” • Encodings differ only by “function
code” • Low-order 4 bytes in first instruction
word • Set condition codes as side effect
�19
addq rA, rB 6 0 rA rB
subq rA, rB 6 1 rA rB
andq rA, rB 6 2 rA rB
xorq rA, rB 6 3 rA rB
Add
Subtract (rA from rB)
And
Exclusive-Or
Instruction Code Function Code
![Page 63: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/63.jpg)
Carnegie Mellon
Move Instructions
�20
0 1 2 3 4 5 6 7 8 9Byte
pushq rA A 0 rA F
jXX Dest 7 fn
popq rA B 0 rA F
call Dest 8 0
cmovXX rA, rB 2 fn rA rB
irmovq V, rB 3 0 F rB
rmmovq rA, D(rB) 4 0 rA rB
mrmovq D(rB), rA 5 0 rA rB
OPq rA, rB 6 fn rA rB
ret 9 0
nop 1 0
halt 0 0
![Page 64: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/64.jpg)
Carnegie Mellon
Move Instructions
�20
0 1 2 3 4 5 6 7 8 9Byte
pushq rA A 0 rA F
jXX Dest 7 fn
popq rA B 0 rA F
call Dest 8 0
cmovXX rA, rB 2 fn rA rB
irmovq V, rB 3 0 F rB
rmmovq rA, D(rB) 4 0 rA rB
mrmovq D(rB), rA 5 0 rA rB
OPq rA, rB 6 fn rA rB
ret 9 0
nop 1 0
halt 0 0
irmovq $0xabcd, %rdx
![Page 65: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/65.jpg)
Carnegie Mellon
Move Instructions
�20
0 1 2 3 4 5 6 7 8 9Byte
pushq rA A 0 rA F
jXX Dest 7 fn
popq rA B 0 rA F
call Dest 8 0
V
cmovXX rA, rB 2 fn rA rB
irmovq V, rB 3 0 F rB
rmmovq rA, D(rB) 4 0 rA rB
mrmovq D(rB), rA 5 0 rA rB
OPq rA, rB 6 fn rA rB
ret 9 0
nop 1 0
halt 0 0
![Page 66: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/66.jpg)
Carnegie Mellon
Move Instructions
�20
0 1 2 3 4 5 6 7 8 9Byte
pushq rA A 0 rA F
jXX Dest 7 fn
popq rA B 0 rA F
call Dest 8 0
V
cmovXX rA, rB 2 fn rA rB
irmovq V, rB 3 0 F rB
rmmovq rA, D(rB) 4 0 rA rB
mrmovq D(rB), rA 5 0 rA rB
OPq rA, rB 6 fn rA rB
ret 9 0
nop 1 0
halt 0 0
rmmovq %rsi,0x41c(%rsp)
![Page 67: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/67.jpg)
Carnegie Mellon
Move Instructions
�20
0 1 2 3 4 5 6 7 8 9Byte
pushq rA A 0 rA F
jXX Dest 7 fn
popq rA B 0 rA F
call Dest 8 0
V
D
cmovXX rA, rB 2 fn rA rB
irmovq V, rB 3 0 F rB
rmmovq rA, D(rB) 4 0 rA rB
mrmovq D(rB), rA 5 0 rA rB
OPq rA, rB 6 fn rA rB
ret 9 0
nop 1 0
halt 0 0
![Page 68: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/68.jpg)
Carnegie Mellon
Move Instructions
�20
0 1 2 3 4 5 6 7 8 9Byte
pushq rA A 0 rA F
jXX Dest 7 fn
popq rA B 0 rA F
call Dest 8 0
V
D
cmovXX rA, rB 2 fn rA rB
irmovq V, rB 3 0 F rB
rmmovq rA, D(rB) 4 0 rA rB
mrmovq D(rB), rA 5 0 rA rB
OPq rA, rB 6 fn rA rB
ret 9 0
nop 1 0
halt 0 0
mrmovq -12(%rbp),%rcx
![Page 69: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/69.jpg)
Carnegie Mellon
Move Instructions
�20
0 1 2 3 4 5 6 7 8 9Byte
pushq rA A 0 rA F
jXX Dest 7 fn
popq rA B 0 rA F
call Dest 8 0
V
D
D
cmovXX rA, rB 2 fn rA rB
irmovq V, rB 3 0 F rB
rmmovq rA, D(rB) 4 0 rA rB
mrmovq D(rB), rA 5 0 rA rB
OPq rA, rB 6 fn rA rB
ret 9 0
nop 1 0
halt 0 0
![Page 70: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/70.jpg)
Carnegie Mellon
Move Instructions
�20
0 1 2 3 4 5 6 7 8 9Byte
pushq rA A 0 rA F
jXX Dest 7 fn
popq rA B 0 rA F
call Dest 8 0
V
D
D
cmovXX rA, rB 2 fn rA rB
irmovq V, rB 3 0 F rB
rmmovq rA, D(rB) 4 0 rA rB
mrmovq D(rB), rA 5 0 rA rB
OPq rA, rB 6 fn rA rB
ret 9 0
nop 1 0
halt 0 0
The instruction length limits the immediate value and displacement.
![Page 71: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/71.jpg)
Carnegie Mellon
Move Instruction Examples
�21
irmovq $0xabcd, %rdx
30 82 cd ab 00 00 00 00 00 00
Y86-64
Encoding:
rrmovq %rsp, %rbx
20 43
mrmovq -12(%rbp),%rcx
50 15 f4 ff ff ff ff ff ff ff
rmmovq %rsi,0x41c(%rsp)
40 64 1c 04 00 00 00 00 00 00
Encoding:
Encoding:
Encoding:
![Page 72: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/72.jpg)
Carnegie Mellon
Jump/Call Instructions
�22
0 1 2 3 4 5 6 7 8 9Byte
pushq rA A 0 rA F
jXX Dest 7 fn
popq rA B 0 rA F
call Dest 8 0
V
D
D
cmovXX rA, rB 2 fn rA rB
irmovq V, rB 3 0 F rB
rmmovq rA, D(rB) 4 0 rA rB
mrmovq D(rB), rA 5 0 rA rB
OPq rA, rB 6 fn rA rB
ret 9 0
nop 1 0
halt 0 0
![Page 73: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/73.jpg)
Carnegie Mellon
Jump/Call Instructions
�22
0 1 2 3 4 5 6 7 8 9Byte
pushq rA A 0 rA F
jXX Dest 7 fn
popq rA B 0 rA F
call Dest 8 0
V
D
D
cmovXX rA, rB 2 fn rA rB
irmovq V, rB 3 0 F rB
rmmovq rA, D(rB) 4 0 rA rB
mrmovq D(rB), rA 5 0 rA rB
OPq rA, rB 6 fn rA rB
ret 9 0
nop 1 0
halt 0 0
jle .L4
![Page 74: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/74.jpg)
Carnegie Mellon
Jump/Call Instructions
�22
0 1 2 3 4 5 6 7 8 9Byte
pushq rA A 0 rA F
jXX Dest 7 fn
popq rA B 0 rA F
call Dest 8 0
V
D
D
cmovXX rA, rB 2 fn rA rB
irmovq V, rB 3 0 F rB
rmmovq rA, D(rB) 4 0 rA rB
mrmovq D(rB), rA 5 0 rA rB
OPq rA, rB 6 fn rA rB
ret 9 0
nop 1 0
halt 0 0
jle .L4
The assembly would assume a start address of the program, and then calculates the address of each instruction.
![Page 75: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/75.jpg)
Carnegie Mellon
Jump/Call Instructions
�22
0 1 2 3 4 5 6 7 8 9Byte
pushq rA A 0 rA F
jXX Dest 7 fn
popq rA B 0 rA F
call Dest 8 0
V
D
D
Dest (essentially the target address)
cmovXX rA, rB 2 fn rA rB
irmovq V, rB 3 0 F rB
rmmovq rA, D(rB) 4 0 rA rB
mrmovq D(rB), rA 5 0 rA rB
OPq rA, rB 6 fn rA rB
ret 9 0
nop 1 0
halt 0 0 The assembly would assume a start address of the program, and then calculates the address of each instruction.
![Page 76: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/76.jpg)
Carnegie Mellon
Jump/Call Instructions
�22
0 1 2 3 4 5 6 7 8 9Byte
pushq rA A 0 rA F
jXX Dest 7 fn
popq rA B 0 rA F
call Dest 8 0
V
D
D
Dest (essentially the target address)
cmovXX rA, rB 2 fn rA rB
irmovq V, rB 3 0 F rB
rmmovq rA, D(rB) 4 0 rA rB
mrmovq D(rB), rA 5 0 rA rB
OPq rA, rB 6 fn rA rB
ret 9 0
nop 1 0
halt 0 0 The assembly would assume a start address of the program, and then calculates the address of each instruction.
call foo
![Page 77: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/77.jpg)
Carnegie Mellon
Jump/Call Instructions
�22
0 1 2 3 4 5 6 7 8 9Byte
pushq rA A 0 rA F
jXX Dest 7 fn
popq rA B 0 rA F
call Dest 8 0
V
D
D
Dest (essentially the target address)
Dest (essentially the start address of the callee)
cmovXX rA, rB 2 fn rA rB
irmovq V, rB 3 0 F rB
rmmovq rA, D(rB) 4 0 rA rB
mrmovq D(rB), rA 5 0 rA rB
OPq rA, rB 6 fn rA rB
ret 9 0
nop 1 0
halt 0 0 The assembly would assume a start address of the program, and then calculates the address of each instruction.
![Page 78: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/78.jpg)
Carnegie Mellon
Jump Instructions
�23
jmp Dest 7 0
Jump UnconditionallyDest
jle Dest 7 1
Jump When Less or EqualDest
jl Dest 7 2
Jump When LessDest
je Dest 7 3
Jump When EqualDest
jne Dest 7 4
Jump When Not EqualDest
jge Dest 7 5
Jump When Greater or EqualDest
jg Dest 7 6
Jump When GreaterDest
![Page 79: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/79.jpg)
Carnegie Mellon
Subroutine Call and Return
• Push address of next instruction onto stack • Start executing instructions at Dest • Like x86-64
• Pop value from stack • Use as address for next instruction • Like x86-64
�24
call Dest 8 0 Dest
ret 9 0
![Page 80: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/80.jpg)
Carnegie Mellon
One More Complication…
�25
jXX Dest 7 fn
call Dest 8 0
Dest (essentially the target address)
Dest (essentially the start address of the callee)
jle .L4
call foo
0 1 2 3 4 5 6 7 8 9Byte
![Page 81: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/81.jpg)
Carnegie Mellon
One More Complication…
�25
jXX Dest 7 fn
call Dest 8 0
Dest (essentially the target address)
Dest (essentially the start address of the callee)
jle .L4
call foo
0 1 2 3 4 5 6 7 8 9Byte
• The instruction length limits how far you can jump/call functions. What if the jump target has a very long address that can’t fit in 8 bytes?
![Page 82: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/82.jpg)
Carnegie Mellon
One More Complication…
�25
jXX Dest 7 fn
call Dest 8 0
Dest (essentially the target address)
Dest (essentially the start address of the callee)
jle .L4
call foo
0 1 2 3 4 5 6 7 8 9Byte
• The instruction length limits how far you can jump/call functions. What if the jump target has a very long address that can’t fit in 8 bytes?
• One alternative: use a super long instruction encoding format.• Simple to encode, but space inefficient (waste bits for jumps to short addr.)
![Page 83: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/83.jpg)
Carnegie Mellon
One More Complication…
�25
jXX Dest 7 fn
call Dest 8 0
Dest (essentially the target address)
Dest (essentially the start address of the callee)
jle .L4
call foo
0 1 2 3 4 5 6 7 8 9Byte
• The instruction length limits how far you can jump/call functions. What if the jump target has a very long address that can’t fit in 8 bytes?
• One alternative: use a super long instruction encoding format.• Simple to encode, but space inefficient (waste bits for jumps to short addr.)
• Another alternative: have different encodings for jump/call, one with a short Dest field for short jumps and the other for long jumps.
![Page 84: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/84.jpg)
Carnegie Mellon
One More Complication…
�25
jXX Dest 7 fn
call Dest 8 0
Dest (essentially the target address)
Dest (essentially the start address of the callee)
jle .L4
call foo
0 1 2 3 4 5 6 7 8 9Byte
• The instruction length limits how far you can jump/call functions. What if the jump target has a very long address that can’t fit in 8 bytes?
• One alternative: use a super long instruction encoding format.• Simple to encode, but space inefficient (waste bits for jumps to short addr.)
• Another alternative: have different encodings for jump/call, one with a short Dest field for short jumps and the other for long jumps.
• Or: encode the relative address, not the absolute address• E.g., encode (.L4 - current address) in Dest
![Page 85: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/85.jpg)
Carnegie Mellon
One More Complication…
�25
jXX Dest 7 fn
call Dest 8 0
Dest (essentially the target address)
Dest (essentially the start address of the callee)
jle .L4
call foo
0 1 2 3 4 5 6 7 8 9Byte
• The instruction length limits how far you can jump/call functions. What if the jump target has a very long address that can’t fit in 8 bytes?
• One alternative: use a super long instruction encoding format.• Simple to encode, but space inefficient (waste bits for jumps to short addr.)
• Another alternative: have different encodings for jump/call, one with a short Dest field for short jumps and the other for long jumps.
• Or: encode the relative address, not the absolute address• E.g., encode (.L4 - current address) in Dest
• Better yet, combines the above two ideas: short relative jump and long relative jump. This is what x86 and many other ISAs do. Elegant design.
![Page 86: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/86.jpg)
Carnegie Mellon
One More Complication…
�25
jXX Dest 7 fn
call Dest 8 0
Dest (essentially the target address)
Dest (essentially the start address of the callee)
jle .L4
call foo
0 1 2 3 4 5 6 7 8 9Byte
• The instruction length limits how far you can jump/call functions. What if the jump target has a very long address that can’t fit in 8 bytes?
• One alternative: use a super long instruction encoding format.• Simple to encode, but space inefficient (waste bits for jumps to short addr.)
• Another alternative: have different encodings for jump/call, one with a short Dest field for short jumps and the other for long jumps.
• Or: encode the relative address, not the absolute address• E.g., encode (.L4 - current address) in Dest
• Better yet, combines the above two ideas: short relative jump and long relative jump. This is what x86 and many other ISAs do. Elegant design.
• What if you want to jump really far away from the current instruction?• Alternatives: indirect jump, use a combination of absolute + relative addresses
(“Far jumps” in x86).
![Page 87: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/87.jpg)
Carnegie Mellon
Miscellaneous Instructions
• Don’t do anything
• Stop executing instructions • Usually can’t be executed in the user mode, only by the OS • Encoding ensures that program hitting memory initialized to zero will halt
�26
nop 1 0
halt 0 0
![Page 88: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/88.jpg)
Carnegie Mellon
How Does An Assemble Work?• Translates assembly code to binary-encode• Reads assembly program line by line, and translates according
to the instruction format defined by an ISA
!27
addq rA, rB 6 0 rA rB
Add
• It sometimes needs to make two passes on the assembly program to resolve forward references
• E.g., forward branch target address
jmp Dest 7 0
Jump UnconditionallyDest
![Page 89: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/89.jpg)
Carnegie Mellon
�28
Variable Length Instructions
![Page 90: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/90.jpg)
Carnegie Mellon
�28
Variable Length Instructions
• X86 (and Y86) is a variable length ISA (1 to 15 bytes), where different instructions have different lengths.
![Page 91: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/91.jpg)
Carnegie Mellon
�28
Variable Length Instructions
• X86 (and Y86) is a variable length ISA (1 to 15 bytes), where different instructions have different lengths.
• There are fixed length ISAs: all instructions have the same length
![Page 92: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/92.jpg)
Carnegie Mellon
�28
Variable Length Instructions
• X86 (and Y86) is a variable length ISA (1 to 15 bytes), where different instructions have different lengths.
• There are fixed length ISAs: all instructions have the same length• ARM’s ISA for micro-controllers have a 4-bit ISA. Very Long Instruction Word
(VLIW) ISAs have instructions that are hundreds of bytes long.
![Page 93: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/93.jpg)
Carnegie Mellon
�28
Variable Length Instructions
• X86 (and Y86) is a variable length ISA (1 to 15 bytes), where different instructions have different lengths.
• There are fixed length ISAs: all instructions have the same length• ARM’s ISA for micro-controllers have a 4-bit ISA. Very Long Instruction Word
(VLIW) ISAs have instructions that are hundreds of bytes long.• Or you can have a combination of both: e.g., 16-bit ISA with 32-bit extensions
(e..g, ARM Thumb-extension).
![Page 94: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/94.jpg)
Carnegie Mellon
�28
Variable Length Instructions
• X86 (and Y86) is a variable length ISA (1 to 15 bytes), where different instructions have different lengths.
• There are fixed length ISAs: all instructions have the same length• ARM’s ISA for micro-controllers have a 4-bit ISA. Very Long Instruction Word
(VLIW) ISAs have instructions that are hundreds of bytes long.• Or you can have a combination of both: e.g., 16-bit ISA with 32-bit extensions
(e..g, ARM Thumb-extension).
• Advantages of variable length ISAs
![Page 95: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/95.jpg)
Carnegie Mellon
�28
Variable Length Instructions
• X86 (and Y86) is a variable length ISA (1 to 15 bytes), where different instructions have different lengths.
• There are fixed length ISAs: all instructions have the same length• ARM’s ISA for micro-controllers have a 4-bit ISA. Very Long Instruction Word
(VLIW) ISAs have instructions that are hundreds of bytes long.• Or you can have a combination of both: e.g., 16-bit ISA with 32-bit extensions
(e..g, ARM Thumb-extension).
• Advantages of variable length ISAs• More compact. Some instructions do not need that many bits. (Actually what’s
the optimal way of encoding instructions in a variable length ISA?)
![Page 96: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/96.jpg)
Carnegie Mellon
�28
Variable Length Instructions
• X86 (and Y86) is a variable length ISA (1 to 15 bytes), where different instructions have different lengths.
• There are fixed length ISAs: all instructions have the same length• ARM’s ISA for micro-controllers have a 4-bit ISA. Very Long Instruction Word
(VLIW) ISAs have instructions that are hundreds of bytes long.• Or you can have a combination of both: e.g., 16-bit ISA with 32-bit extensions
(e..g, ARM Thumb-extension).
• Advantages of variable length ISAs• More compact. Some instructions do not need that many bits. (Actually what’s
the optimal way of encoding instructions in a variable length ISA?)• Can have arbitrary number of instructions: easy to add new inst.
![Page 97: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/97.jpg)
Carnegie Mellon
�28
Variable Length Instructions
• X86 (and Y86) is a variable length ISA (1 to 15 bytes), where different instructions have different lengths.
• There are fixed length ISAs: all instructions have the same length• ARM’s ISA for micro-controllers have a 4-bit ISA. Very Long Instruction Word
(VLIW) ISAs have instructions that are hundreds of bytes long.• Or you can have a combination of both: e.g., 16-bit ISA with 32-bit extensions
(e..g, ARM Thumb-extension).
• Advantages of variable length ISAs• More compact. Some instructions do not need that many bits. (Actually what’s
the optimal way of encoding instructions in a variable length ISA?)• Can have arbitrary number of instructions: easy to add new inst.
•What is the down side?
![Page 98: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/98.jpg)
Carnegie Mellon
�28
Variable Length Instructions
• X86 (and Y86) is a variable length ISA (1 to 15 bytes), where different instructions have different lengths.
• There are fixed length ISAs: all instructions have the same length• ARM’s ISA for micro-controllers have a 4-bit ISA. Very Long Instruction Word
(VLIW) ISAs have instructions that are hundreds of bytes long.• Or you can have a combination of both: e.g., 16-bit ISA with 32-bit extensions
(e..g, ARM Thumb-extension).
• Advantages of variable length ISAs• More compact. Some instructions do not need that many bits. (Actually what’s
the optimal way of encoding instructions in a variable length ISA?)• Can have arbitrary number of instructions: easy to add new inst.
•What is the down side?• Fetch and decode are harder to implement. More on this later.
![Page 99: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/99.jpg)
Carnegie Mellon
�28
Variable Length Instructions
• X86 (and Y86) is a variable length ISA (1 to 15 bytes), where different instructions have different lengths.
• There are fixed length ISAs: all instructions have the same length• ARM’s ISA for micro-controllers have a 4-bit ISA. Very Long Instruction Word
(VLIW) ISAs have instructions that are hundreds of bytes long.• Or you can have a combination of both: e.g., 16-bit ISA with 32-bit extensions
(e..g, ARM Thumb-extension).
• Advantages of variable length ISAs• More compact. Some instructions do not need that many bits. (Actually what’s
the optimal way of encoding instructions in a variable length ISA?)• Can have arbitrary number of instructions: easy to add new inst.
•What is the down side?• Fetch and decode are harder to implement. More on this later.
• A good writeup showing some of the complexity involved:http://www.c-jump.com/CIS77/CPU/x86/lecture.html
![Page 100: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/100.jpg)
Carnegie Mellon
!29
So far in 252…int, float if, else +, -, >>
ret, call movq, addq jmp, jne
movq %rsi, %rax imulq %rdx, %rax jmp .done
Logic gates
Transistors
C Program
Assembly Program
ProcessorMicroarchitecture
Circuits
Instruction Set Architecture
![Page 101: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/101.jpg)
Carnegie Mellon
!29
So far in 252…int, float if, else +, -, >>
ret, call movq, addq jmp, jne
movq %rsi, %rax imulq %rdx, %rax jmp .done
Logic gates
Transistors
C Program
Assembly Program
ProcessorMicroarchitecture
Circuits
Instruction Set Architectureand their bit encodings.
![Page 102: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/102.jpg)
Carnegie Mellon
!30
Today: Circuits Basics• Transistors• Circuits for computations• Circuits for storing data
![Page 103: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/103.jpg)
Carnegie Mellon
Overview of Circuit-Level Design• Fundamental Hardware Requirements
• Communication: How to get values from one place to another. Mainly three electrical wires.
• Computation: transistors. Combinational logic. • Storage: transistors. Sequential logic.
•Circuit design is often abstracted as logic design
�31
![Page 104: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/104.jpg)
Carnegie Mellon
Digital Signals
• Extract discrete values from continuous voltage signal• Simplest version: 1-bit signal
• Either high range (1) or low range (0) • With guard range between them
• Not strongly affected by noise or low quality circuit elements• Can make circuits simple, small, and fast
�32
Voltage
Time
0 1 0
![Page 105: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/105.jpg)
Carnegie Mellon
!33
Basic Building Block: Transistors
![Page 106: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/106.jpg)
Carnegie Mellon
!33
Basic Building Block: TransistorsMOS = Metal Oxide Semiconductor
• two types: n-type and p-type
![Page 107: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/107.jpg)
Carnegie Mellon
!33
Basic Building Block: TransistorsMOS = Metal Oxide Semiconductor
• two types: n-type and p-typen-type (NMOS)
Terminal #2 must be connected to GND (0V).
![Page 108: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/108.jpg)
Carnegie Mellon
!33
Basic Building Block: TransistorsMOS = Metal Oxide Semiconductor
• two types: n-type and p-typen-type (NMOS)
• when Gate has positive voltage,short circuit between #1 and #2 (switch closed)
Gate = 1
Terminal #2 must be connected to GND (0V).
![Page 109: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/109.jpg)
Carnegie Mellon
!33
Basic Building Block: TransistorsMOS = Metal Oxide Semiconductor
• two types: n-type and p-typen-type (NMOS)
• when Gate has positive voltage,short circuit between #1 and #2 (switch closed)
• when Gate has zero voltage, open circuit between #1 and #2 (switch open)
Gate = 0
Gate = 1
Terminal #2 must be connected to GND (0V).
![Page 110: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/110.jpg)
Carnegie Mellon
!34
Basic Building Block: Transistorsp-type is complementary to n-type (PMOS)
• when Gate has positive voltage,open circuit between #1 and #2 (switch open)
• when Gate has zero voltage, short circuit between #1 and #2 (switch closed)
Gate = 1
Gate = 0
Terminal #1 must be connected to +1.2V
+1.2V
![Page 111: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/111.jpg)
Carnegie Mellon
!35
CMOS Circuit• Complementary MOS• Uses both n-type and p-type MOS transistors
![Page 112: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/112.jpg)
Carnegie Mellon
!36
Inverter (NOT Gate)+1.2V
+0.0V
![Page 113: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/113.jpg)
Carnegie Mellon
!36
Inverter (NOT Gate)+1.2V
+0.0V
PMOS
![Page 114: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/114.jpg)
Carnegie Mellon
!36
Inverter (NOT Gate)+1.2V
+0.0V
PMOS
NMOS
![Page 115: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/115.jpg)
Carnegie Mellon
!36
Inverter (NOT Gate)+1.2V
+0.0V
+1.2V
![Page 116: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/116.jpg)
Carnegie Mellon
!36
Inverter (NOT Gate)+1.2V
+0.0V
+1.2V
+0.0V
![Page 117: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/117.jpg)
Carnegie Mellon
!36
Inverter (NOT Gate)
In Out
0 11 0
+1.2V
+0.0V
+1.2V
+0.0V
![Page 118: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/118.jpg)
Carnegie Mellon
!37
NOR Gate (NOT + OR)
A B C
0 0 10 1 0
1 0 0
1 1 0
Note: Serial structure on top, parallel on bottom.
![Page 119: CSC 252: Computer Organization Spring 2020: Lecture 10 · Carnegie Mellon!3 Announcement •Programming assignment 3 is in x86 assembly language.Seek help from TAs. •TAs are best](https://reader033.vdocuments.site/reader033/viewer/2022042106/5e85f042157bc103507c5c30/html5/thumbnails/119.jpg)
Carnegie Mellon
!38
Basic Logic Gates
A | B ~(A | B)
A & B ~(A & B)