New User Special Price Expires in

Let's log you in.

Sign in with Facebook


Don't have a StudySoup account? Create one here!


Create a StudySoup account

Be part of our community, it's free to join!

Sign up with Facebook


Create your account
By creating an account you agree to StudySoup's terms and conditions and privacy policy

Already have a StudySoup account? Login here

Week 9 CMPE 12 Notes

by: Shanee Dinay

Week 9 CMPE 12 Notes CMPE 12

Shanee Dinay
GPA 3.94

Preview These Notes for FREE

Get a free preview of these Notes, just enter your email below.

Unlock Preview
Unlock Preview

Preview these materials now for free

Why put in your email? Get access to more of this material and other relevant free materials for your school

View Preview

About this Document

Notes for week 9 of CMPE 12. Topics include Floating Point Multiplication, Input and Output, Computer Systems, I/O Devices, I/O Controller, Polling I/O, Interrupts, Trap Properties, PIC32, Jumps, C...
Comp Sys/Lang Lab
Class Notes
CMPE 12, Computer Systems, Floating Point Numbers, Stack, I/O
25 ?




Popular in Comp Sys/Lang Lab

Popular in Computer Science and Engineering

This 12 page Class Notes was uploaded by Shanee Dinay on Tuesday March 8, 2016. The Class Notes belongs to CMPE 12 at University of California - Santa Cruz taught by Dunne,M.J. in Winter 2016. Since its upload, it has received 21 views. For similar materials see Comp Sys/Lang Lab in Computer Science and Engineering at University of California - Santa Cruz.

Popular in Computer Science and Engineering


Reviews for Week 9 CMPE 12 Notes


Report this Material


What is Karma?


Karma is the currency of StudySoup.

You can buy or earn more Karma at anytime and redeem it for class notes, study guides, flashcards, and more!

Date Created: 03/08/16
Day 17 ­ 3/1/2016  CMPE 12    No Office Hours Today  If you were waitlisted and submitted the homework via email, your grade will be updated    Floating Point Multiplication    Multiple these SP FP numbers together:    Example:    Floating Point Division  ­ true division  ­ faster division  ­ not covered in this class!  Floating Point Summary  ­ has 3 portions, S E F  ­ do conversion in parts  ­ arithmetic is signed magnitude  ­ subtraction could require many shifts for renormalization  ­ multiplication is easier since do not have to match exponents  Input and Output  Computer Systems  I/O: Connecting to Outside World  ­ where does data in memory come from  ­ how does data get out of the system so that humans can use it  Types of I/O devices characterized by:  ­ behavior: input, output, storage  ­ input  ­ output  ­ storage  ­ data rate: how fast can data be transferred  ­ keyboard: 100 bytes/sec  ­ disk: 30 MB/s or more  ­ network: 1 Mb/s ­ 10 Gb/s  I/O Devices  Keyboard  ­ user presses ‘A’ key → ‘a’  ­ ASCII code is 0x61  ­ keyboard sends this on wires  ­ 1 for start, 8­bits of data, 0 for stop  ­ ‘a’ is: 1011000010  ­ buffer at computer catches these bits  Displays  ­ character display works with the reverse process  ­ most displays today are ‘bit mapped’  Printers  Hard Disk  ­ a spinning disk  ­ 20 ­ 4000 GB and growing FAST  ­ Magnetic and read/wire  ­ both sides  ­ usually a stack of platters  ­ disk access  ­ electronic speeds in the nanoseconds  ­ disk speeds are in milliseconds  Lc­3 I/O  ­ uses the “TRAP” instruction to invoke the Operating System, which in turn talks to the  hardware  ­ don’t use “JSR”   ­ OS does not trust user to provide the correct address  ­ want to switch into OS mode, where more things ara allowed  ­ CPU sees the “TRAP” instruction and uses the trap vector to determine where to go in  the OS code  ­ OS will not allow (or should not)  ­ users to read each other’s keyboards  I/O Controller  ­ Control/Status Registers  ­ CPI tells device what to do ­ write to control register  ­ CPU checks whether task is done  ­ Data Registers  ­ CPU transfers data to/from device  ­ Device Electronics  ­ performs actual operation  ­ pixels to screen, bits to/from disk, characters  Programming Interface  ­ How are device registers identified?  ­ memory­mapped vs. special instructions  ­ How is timing of transfer managed?  Memory­Mapped vs. I/O Instructions  ­ special instructions  ­ designate opcode(s) for I/O  ­ Memory­mapped  ­ assign a memory address to each device register  ­ use data movement instructions for control and data transfer  Which is better?  ­ What is the problem with having special instructions for IO?  ­ What happens if a new device is created?  ­ memory mapped is much more flexible and expandable  Memory Mapped IO  ­ idea is to place devices other than RAM…  ­ Design hardware and software to recognize certain address  ­ devices on bus watch for their address  ­ but is there a new char to read?  ­ but is the display done with the last char?  Transfer Timing  ­ I/O events generally happen much slower than CPU cycles  ­ Synchronous  ­ data supplied at a fixed, predictable rate  ­ CPU reads/writes every X cycles  ­ Asynchronous  ­ data rate less predictable  ­ CPU must synchronize with device so that it doesn’t miss data or write too  quickly  Transfer Control  ­ Polling  ­ CPU keeps checking status registers until new data arrives OR device ready for  next data  ­ are we there yet?  ­ Interrupts  ­ device sends a special signal to CPU when new data arrives OR device ready for  next data  ­ CPU can be performing other tasks instead of polling device  LC­3  ­ memory­mapped I/O  ­ Asynchronous devices  ­ synchronized through status registers  ­ Polling and Interrupts  ­ the details of interrupts is in chapter 10  Input from Keyboard  ­ when a character is typed  ­ its ASCII code is placed in bits [7:0] of KBDR  ­ the ready bit set to one  ­ keyboard is disabled ­ any typed characters will be ignored  Basic Input Routine  ­ polling: new char? yes → read new character  Output to Monitor  ­ when monitor is ready to display another character:  ­ the ready bit is set to one  ­ when data is written to Display Data Register:  ­ DS[15] is set to 0  Basic Output Routine  ­ polling: screen read? yes → write character  Keyboard Echo Routine  ­ usually input character is also printed to screen  ­ user gets feedback on character typed and knows its ok to type the next  character  Polling  ­ how much time is spent spinning?  ­ a PUTC or GETC is less than 10 instructions, or 10ns on a modern processor  ­ mechanical devices take milliseconds  ­ almost all time is spent spinning  ­ would be nice to do useful work while waiting  Polling I/O  ­ the OS must check regularly (poll) for ready devices  ­ perhaps once a millisecond  ­ if ready then OS services device  ­ keyboard: transfer character and put on queue  ­ display:  ­ Problems:  ­ how often do we poll?  ­ How does the OS code get run?  ­ What happens to the user program?  ­ Is there a better option?  ­ it is the exception or the interrupt  Exceptions and the OS  ­ stop… do this!  Interrupts  ­ external condition related to IO devices  ­ have device tell OS/CPU it is ready  ­ requires hardware to support  ­ OS/CPU can then interrupt what it is doing:  ­ determine what device wants service  ­ determine what service it wants   ­ perform or start the service  ­ go back to what OS/CPU was doing  Examples of Interrupts  ­ disk drive at sector/track position  ­ ouse moved  ­ keyboard key pressed  ­ printer needs data  Interrupt Properties  ­ they arrive asynchronously  ­ can’t communicate with a running program  ­ they are associated with various priorities  ­ you want to handle them soon  ­ usually want to resume program  Trap  ­ internal conditions related to instruction stream  Trap Properties  ­ they arrive synchronously  ­ get trap in same place if you re­run program  ­ they are associated with various prioritoes  Exceptions  ­ mechanism used to handle both interrupts and traps  ­ HW handles initial reaction  ­ then invokes SW called an “Exception Handler” to take care of the interrupt/trap  LC­3 Exceptions  ­ LC­3 only has the concept of IO related exceptions, interrupts  ­ does not have any mechanisms to deal with illegal instructions or arithmetic overflow  LC­3 Interrupt Driven I/O  ­ external device can:  ­ force currently executing program to stop  ­ have the processor satisfy the device’s needs   ­ resume the stopped programs as if nothing happened  To implement an interrupt mechanism, we need:  ­ A way for the O/I device to signal the CPU that an interesting event has occurred  ­ a way for the CPU to test whether the interrupt signal is set and whether its priority is  higher than the current program  Priority  ­ every instruction executes at a stated level of urgency  ­ priority encoder selects highest­priority device, compares to current processor priority  level, and generates interrupt signal if appropriate  Testing for Interrupt Signal  ­ CPU looks at signal between STORE and FETCH phases  ­ is not set, continues with next instruction  ­ if set, transfers control to interrupt service routine  Operating Systems  ­ the program that launches the user programs and deals with exceptions  ­ how does the operating system deal with such things  Multiple Exceptions  ­ problem: how about multiple simultaneous exceptions?  ­ solution: have priorities in HW / SW  ­ handle highest­priority exception first  ­ equal priority exceptions handled randomly  How about exceptions during exception handling?  ­ makit it wait until done with first exception   ­ make exception handler re­entrant  READ Chapter 8    PIC32  PIC32 Overview    PIC32MX320F129H  ­ 80MHz processor  ­ 23­bit words  ­ 32 32­bit registers  ­ single cycle multiple  ­ multi­cycle divide  ­ memory  ­ many peripherals  MIPS4k ISA  ­ the processor is a PIC32 but the ISA is MIPS4l. What does this mean?  ­ PIC32 is an implementation of the MIPS 4000 ISa by Microchip Technology, Inc  ­ Chapter 27 of the PDF is about the ISa  Memory Organization  ­ data address  ­ program flash  ­ boot flash  ­ SFRs  ­ special function register  Memory Types  ­ Virtual vs Physical Memory Address  ­ Kernel or User?  ­ the kernel space includes all peripheral registers  Register Files  ­ 32 registers for us  ­ temporary can be used $t0 … $t9  ­ procedures can destroy these  ­ saved can be used $s0…$s7 but are caller save  ­ procedures must save/restore these  ­ $zero (or #0) is always 0  ­ $a0 … a3  Stack  ­ similar to LC­3  MIPS ISA  ­ MIPS_Vol2.pdf  ­ Chapter 27  Instruction Types  Load Instructions  ­ byte/half/word accesses  ­ only allow base + 16­bit immediate offset format  ­ load data is not available to next instruction  ­ recommend not using unaligned load/store  ­ recommend not using atomic load/store  Load/Stores  ­ typical load/stores for bytes, half word, word  ­ other special load: LUI, Load Upper Immediate, Rt = Immediate << 16  Slight Syntax Changes  ­ register relative uses this syntax  lw $t1, 4($t0)  ­ base register: $t0  ­ offset: 4 bytes  ­ destination register: $t1  ­ load the data from the address stored in $t0+4 into $t1  ­ no indirect addressing  ­ labels .text  lw $ra, myStr  .data  myStr: .asciiz “Hello, world!\n”  Data Declarations  ­ .text vs .data segment  ­ loader can put these in different parts of memory  ­ declaration  Arithmetic/Logical  Computational Instructions  ­ R­type  ­ arithmetic, logical, shift  Signed vs Unsigned Instructions  ­ example: ADDIU vs ADDI  ­ no sign extension of immediates  ­ no overflow conditions  ­ example: AND I  ­ no sign extension  Pseudo­ops  ­ our assembler does a better job of “guessing” types  ­ will often correct errors with pseudo­ops using $at register  ­ example:  add $t0,$a0,0x12345678  BECOMES  lui $at,0x1234  ori $at,$at,0x5678  add $t0,$a0,$at    Day 18 ­ 3/3/2016  CMPE 12    PIC32 Overview  Pseudo­ops  ­ our assembler does a better jobs of “guessing” types  ­ will often correct errors with pseudo­ops using $at register  ­ don’t use the $at register  ­ Example: add $t0, $a0, 0x12345678  BECOMES  lui $at, 0x1234  ori $at, $at, 0x5678  add $t0, $a0, $at  Arithmetic  Shift/Rotate  Conditional Set Instructions  Branches  ­ perform comparison/check AND branch  Jumps  ­ jal foo to call subroutine (jump and link)  ­ jr #ra to return (jump register)  Control Instructions  ­ BEWARE: jump and branch also have a ‘delay slot’  ­ first instruction after is ALWAYS executed!  ­ put a NOP if you are unsure, but this loses performance  ­ NOP is “no operation”  Delay slots Nuances  ­ Load  ­ if the instruction after a load uses the result, a nop will be inserted by hardware  ­ can affect performance by increasing number of instructions  ­ can reorder instructions to avoid this dependency  ­ branch  ­ instruction after a branch is ALWAYS executed whether branch is taken or not  ­ can insert a nop to fill this  ­ can insert another instruction to make this slot useful  Condition Codes?  ­ does the condition codes of the branch delay slot affect the branch  ­ MIPS does not have condition codes  ­ the branch itself does the comparison  Multiplu (and accumulate)  ­ takes one cycle to perform  ­ result of a 32x32 bit multiply is 64­bits  ­ two extra 32­bit registers HI and LO  ­ MULT #t1, $t0 or MULTU $t1, $t0  ­ MADD or MADDU  ­ (HI,LO) +=$t1*$t0  ­ MSUB or MSUBU  ­ (HI, LO) ­= $t1*$t0  Divide  ­ uses HI/LO registers as well  ­ takes many cycles to perform  ­ DIV  ­ LO = (int)Rs / (int)Rt  ­ HI = (int)Rs % (int)Rt  ­ DIFU  ­ LO = (uns)Rs / (uns)Rt  ­ HI = (uns)Rs % (uns)Rt  Useful PseufoOps  ­ move $x0, $zero  ­ addu $v0, $zero, $zero  ­ li $t0, 0x01234567  ­ la $t0, main  Examples  ­ to initialize register  ­ move $t0, $zero  ­ to load immediate into a register  ­ lui $t0, 0xBF88  ­ addiu $t­, $t0, 0x6140  PIC32 ­ Overview Part 2 ­ Functions  Functions  ­ what are functions  ­ same as subroutines but can pass arguments and return values  ­ C function definition  ­ int squared(int a) { return (a*a) }  ­ C function call  ­ squared(5)  ­ arguments are put in $a0…$a4  ­ what happens if there is more than 4?  ­ push them onto a stack  ­ $ra contains return address if ‘link’ instruction is used (jal or jalr)  ­ called duties  Functions Returns (Callee)  ­ return values are put in $v0…$v1  ­ less than or equal to 2 return values  ­ what happens if there are more? stack  ­ return with jr $ra  ­ callee duties  ­ must save/restore $s0…$s7 if it wants to USE them  Should we use local memory to save/restore?  ­ NO  ­ this makes the program bigger  ­ this means we can only call the function once  ­ LC3 and MIPS both have function calling conventions  ­ this is on the previous slides… follow them  Push & Pop in LC3  ­ push  ­ decrement TOS pointer  ­ then write data in R0 to new tOS  PUSH ADD R6, R6, #­1  STR R0, R6, #0  ­ pop  ­ read data at current TOS into R0  ­ then increment TOS pointer  Push/Pop in MIPS  ­ stack pointer ($sp or $r29)  Multiple Push/Pop  ­ can save instructions by doing multiple loads to the stack and then incrementing the  stack pointer one time  ­ fewer addi instructions  Stacks and Functions  ­ stack frame is the part of the stack for a particular function  ­ more than 4 arguments will be put on a stack  After calling “foo”  ­ foo() needs to save/restore registers  ­ $sp still points to top of stack  ­ $fp points to where top of stack WAS  Using $fp  ­ $fp points to a fixed location of return value and arguments  ­ calling functions inside foo  ­ must save $fp to stack first  ­ to return from foo  ­ copy all you data from $sp  ­ then copy $fp into $sp rather than worrying about the size of pooped data  Important Note  ­ if main() calls foo(), then foo() calls bar()  ­ foo must save its arguments $a0…$a3 on the stack  ­ leaf functions don’t need to save arguments since they don’t call functions  Local Memory  ­ what if your function needs more memory  ­ can also place temporary memory on the stack in a subroutine  ­ this is better than statically allocating memory  Global Memory  ­ global memory is shared among several subroutines  ­ it isn’t passed as an argument  ­ it isn’t returned as a return value  ­ most programming classes suggest to avoid it because it can be modified  ANYWHERE and lead to BUGS  ­ global pointer  ­ start of .data segment  ­ heap is memory managed by the operating system  Static Global Data example  ­ #gp should point to beginning of .data segment  ­ .data  ­ myspacer: .space 4  ­ myarray: .byte 1, 2, 3, 4  PIC32 ­ IO and Interrupts  Digital Ports (IO Section)  LED Number 5  ­ how is LD5 connected?  ­ pin ? of board (Digilent document: chipKIT­Uno32­RevC_rm.pdf)  ­ pin ? of chip (Microship device ref: PIC32_611 ...  ­ on PORTF inside  ­ bit ?   Port Configuration  ­ TRISG  ­ configures whether input or output  ­ input by default  ­ input 1 output 0  ­ PORTG  ­ read or write value from/to port  ­ LATG  ­ read or write latched value from/to port  PORTD Memory Mapped Regs  ­ masks in MPLAB assembler  ­ 1<<8 is same as 0x0100  ­ 15<<8 is same as 0x0f00  Input Switches  ­ Port D  Device Registers  ­ all device regs have 4 registers to configure them  ­ actual offset +0 you can read or write the whole register  ­ atomic registers  ­ CLR  ­ SET  ­ INV   


Buy Material

Are you sure you want to buy this material for

25 Karma

Buy Material

BOOM! Enjoy Your Free Notes!

We've added these Notes to your profile, click here to view them now.


You're already Subscribed!

Looks like you've already subscribed to StudySoup, you won't need to purchase another subscription to get this material. To access this material simply click 'View Full Document'

Why people love StudySoup

Bentley McCaw University of Florida

"I was shooting for a perfect 4.0 GPA this semester. Having StudySoup as a study aid was critical to helping me achieve my goal...and I nailed it!"

Allison Fischer University of Alabama

"I signed up to be an Elite Notetaker with 2 of my sorority sisters this semester. We just posted our notes weekly and were each making over $600 per month. I LOVE StudySoup!"

Steve Martinelli UC Los Angeles

"There's no way I would have passed my Organic Chemistry class this semester without the notes and study guides I got from StudySoup."


"Their 'Elite Notetakers' are making over $1,200/month in sales by creating high quality content that helps their classmates in a time of need."

Become an Elite Notetaker and start selling your notes online!

Refund Policy


All subscriptions to StudySoup are paid in full at the time of subscribing. To change your credit card information or to cancel your subscription, go to "Edit Settings". All credit card information will be available there. If you should decide to cancel your subscription, it will continue to be valid until the next payment period, as all payments for the current period were made in advance. For special circumstances, please email


StudySoup has more than 1 million course-specific study resources to help students study smarter. If you’re having trouble finding what you’re looking for, our customer support team can help you find what you need! Feel free to contact them here:

Recurring Subscriptions: If you have canceled your recurring subscription on the day of renewal and have not downloaded any documents, you may request a refund by submitting an email to

Satisfaction Guarantee: If you’re not satisfied with your subscription, you can contact us for further help. Contact must be made within 3 business days of your subscription purchase and your refund request will be subject for review.

Please Note: Refunds can never be provided more than 30 days after the initial purchase date regardless of your activity on the site.