teaching machines

CS 352 Final

See the PDF.

CS 352 Midterm

See the PDF.

CS 352 Lecture 38 – Superion Technology

Dear students, Today we welcome Eau Claire’s very own Superion Technology to our class. They will be offering us a view of computer architecture in industry and through the lens of FPGAs. Here’s your TODO list to complete before next time: There is no next time. I will hand out final exams. Please complete these […]

CS 352 Lecture 37 – Hazard Mitigation

Dear students, Last time we introduced the idea of pipelining, which allowed multiple instructions to progress through the processor at a time. But we saw some dangers that crept in. If this were politics, we would tell pipelining to apologize and resign. But we’re computer scientists, and we fix things rather than give up on […]

CS 352 Lecture 36 – Pipelining

Dear students, We begin today with a short baking lesson that will demonstrate the need for processing instructions differently. Suppose I need a lot of cookies. Ignoring the setup costs, suppose it takes me 15 minutes to scoop out 12 balls of dough and plop them onto a baking sheet. These then cook for 30 […]

CS 352 Lecture 35 – Caching Strategies

Dear students, We looked last time at how our code will perform better if we capitalize on temporal and spatial locality. Sadly, we cannot avoid misses altogether. Caches are finite storage, and their designers must decide where blocks from memory will go in the cache and how long they will stay there. As you’ve done […]

CS 352 Lecture 34 – Memory Hierarchy Cont’d

Dear students, Last time we introduced the memory hierarchy. This hierarchy is not unlike a league of superheroes, each with its strengths and weaknesses. But the weaknesses are minimized, as long as you rotate in the proper superhero for each villain you encounter. For the memory hierarchy, the goal of stacking together these technologies is […]

CS 352 Lecture 33 – Memory Hierarchy

Dear students, Here’s the situation: our processors typically have somewhere between 4-30 general purpose registers. In a load/store architecture like ARM, computation can only be done on registers, and 4-30 pieces of data is simply not enough. Why not, then, make a computer with millions of registers? There are several reasons: Registers are identified within […]

CS 352 Lecture 32 – Von Neumann Architecture

Dear students, Today we discuss the pattern that generalizes most modern computers: the von Neumann architecture. But we start back before such a pattern converged. In the 1940s, the ENIAC was built to calculate artillery tables for World War II. It was built out of many vacuum tubes (which served the same role as transistors). […]

CS 352 Lecture 31 – Framebuffer

Dear students, Today we continue our discussion of working more directly with I/O devices by reading and writing to their device files in Linux. Last time we reverse engineered the PS/2 mouse protocol. This time we use the Linux input_event API to read from keyboard. With two input devices to read from, we’ll encounter an […]

1 2 3 5