{"id":93,"date":"2025-03-17T09:59:38","date_gmt":"2025-03-17T13:59:38","guid":{"rendered":"https:\/\/sites.nd.edu\/adingler\/?page_id=93"},"modified":"2025-03-17T10:01:08","modified_gmt":"2025-03-17T14:01:08","slug":"cse-30321-computer-architecture","status":"publish","type":"page","link":"https:\/\/sites.nd.edu\/adingler\/teaching\/cse-30321-computer-architecture\/","title":{"rendered":"CSE 30321 &#8211; Computer Architecture"},"content":{"rendered":"\n<p>The information below is based on the <strong>Spring 2025<\/strong> section of CSE 30321.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Course Goals<\/strong><\/h3>\n\n\n\n<p>By the end of this course you should be able to:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Describe the fundamental components required in a single core of a modern microprocessor as well as how they interact with each other, with main memory, and with external storage media.<\/li>\n\n\n\n<li>Suggest, compare, and contrast potential architectural enhancements by applying appropriate performance metrics.<\/li>\n\n\n\n<li>Apply fundamental knowledge about a processor\u2019s datapath, different memory hierarchies, performance metrics, etc. to design a microprocessor such that it (a) meets a target set of performance goals and (b) is realistically implementable.<\/li>\n\n\n\n<li>Explain how code written in (different) high-level languages (like C, Java, C++, etc.) can be executed on different microprocessors (e.g., RISC-V, Intel, ARM, etc.) to produce the result intended by the programmer.<\/li>\n\n\n\n<li>Use knowledge about a microprocessor\u2019s underlying hardware (or \u201carchitecture\u201d) to write more efficient software.<\/li>\n\n\n\n<li>Describe the main architectural approaches to improve computer performance (circa 2004 and 2012).<\/li>\n\n\n\n<li>Explain and articulate why modern microprocessors now have more than one core and how software must adapt to accommodate the now prevalent multi-core approach to computing.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Grading<\/strong><\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>Homework<\/td><td>35%<\/td><td>Weighted equally by score as percentage<\/td><\/tr><tr><td>Readings<\/td><td>5%<\/td><td>zyBooks readings will be released on most class days.<\/td><\/tr><tr><td>Midterm Exam 1<\/td><td>17.5%<\/td><td>Tuesday 2\/18<\/td><\/tr><tr><td>Midterm Exam 2<\/td><td>17.5%<\/td><td>Tuesday 4\/8<\/td><\/tr><tr><td>Final Exam<\/td><td>25%<\/td><td>Wednesday 5\/7 7:30-9:30pm<strong>Same format as the two midterms, but cumulative<\/strong><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Course Schedule<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>Date<\/td><td>Lecture<\/td><td>Readings<\/td><td>Homework<\/td><\/tr><tr><td>Tu 01\/14\/25<\/td><td>L01: Course Introduction; ISA and Processor Review<\/td><td>Reading 01: Introduction<\/td><td>HW01: ISA Review and RISC-V Intro assigned<\/td><\/tr><tr><td>Th 01\/16\/25<\/td><td>L02: ISA Review and Performance Intro<\/td><td>None; review albaCore as needed or work ahead on next reading<\/td><td><\/td><\/tr><tr><td>Tu 01\/21\/25<\/td><td>L03: Performance<\/td><td>Reading 02: Performance (open until Wed.)<\/td><td><\/td><\/tr><tr><td>Th 01\/23\/25<\/td><td>L04: RISC-V Instructions and Programming<\/td><td>Reading 03: RISC-V Instruction Introduction<\/td><td>HW01 due<br>HW02: Performance and Assembly Programming assigned<\/td><\/tr><tr><td>Tu 01\/28\/25<\/td><td>L05: RISC-V Instruction Types and Encodings<\/td><td>Reading 04: RISC-V Instructions (R-, I-, S-, SB-types)<\/td><td><\/td><\/tr><tr><td>Th 01\/30\/25<\/td><td>L06: RISC-V Control and Procedures<\/td><td>Reading 05: RISC-V Procedures (UJ-type, call\/return, stack)<\/td><td>HW03: RISC-V ISA and Function Calls<br>assigned<br>HW02 due<\/td><\/tr><tr><td>Tu 02\/04\/25<\/td><td>L07: Recursive Function and Pipelining Introduction<\/td><td>Reading 06: Pipelining Intro<\/td><td><\/td><\/tr><tr><td>Th 02\/06\/25<\/td><td>L08: Pipelining<\/td><td>Reading 07: Pipelining Details<\/td><td>HW04 Procedures, Pipelining, and Sorting assigned<br>HW03 due<\/td><\/tr><tr><td>Tu 02\/11\/25<\/td><td>L09: Pipelining Hazards<\/td><td>Reading 08: Pipelining Hazards<\/td><td><\/td><\/tr><tr><td>Th 02\/13\/25<\/td><td>L10: Exam 1 Review<\/td><td>No reading due<\/td><td>HW04 due<\/td><\/tr><tr><td>Tu 02\/18\/25<\/td><td>Midterm Exam 1 (L11)<\/td><td>No reading due<\/td><td><\/td><\/tr><tr><td>Th 02\/20\/25<\/td><td>L12: Control Hazards<\/td><td>Review Control Hazards from Reading 08<\/td><td>HW05 Pipeline Control Hazards assigned<br>No HW due<\/td><\/tr><tr><td>Tu 02\/25\/25<\/td><td>L13: Control Hazard Examples, Memory Hierarchy Review<\/td><td>Reading 09: Memory Hierarchy Intro\/Review of Direct-mapped Caches<\/td><td><\/td><\/tr><tr><td>Th 02\/27\/25<\/td><td>L14: Direct-mapped Caches<\/td><td>Reading 10: AMAT and Set Associative Caches<\/td><td>HW06 Caches assigned<br>HW05 due<\/td><\/tr><tr><td>Tu 03\/04\/25<\/td><td>L15: Associative Caches and Cache Examples<\/td><td>No reading due<\/td><td><\/td><\/tr><tr><td>Th 03\/06\/25<\/td><td>L16: Cache Performance (no video)<\/td><td>Reading 11: Improving Cache Performance<\/td><td>HW06 due <strong>Friday<\/strong><\/td><\/tr><tr><td>Tu 03\/11\/25<\/td><td>Spring Break<\/td><td><\/td><td><\/td><\/tr><tr><td>Th 03\/13\/25<\/td><td>Spring Break<\/td><td><\/td><td><\/td><\/tr><tr><td>Tu 03\/18\/25<\/td><td>L17: Cache-Aware Programming and Virtual Memory Intro<\/td><td>No reading due<\/td><td><\/td><\/tr><tr><td>Th 03\/20\/25<\/td><td>L18: Virtual Memory (Paging)<\/td><td>Reading 13: Virtual Memory<\/td><td>HW07 Cache Performance assigned<\/td><\/tr><tr><td>Tu 03\/25\/25<\/td><td>L19: VM Examples and Performance<\/td><td>Reading 14: VM Performance and the TLB<\/td><td><\/td><\/tr><tr><td>Th 03\/27\/25<\/td><td>L20: VM Wrap-up<\/td><td>No reading due<\/td><td>HW07 due<br>HW08 Virtual Memory assigned<\/td><\/tr><tr><td>Tu 04\/01\/25<\/td><td>L21: Out-of-order Introduction<\/td><td>Reading 15: Multiple Issue, Static Scheduling<\/td><td><\/td><\/tr><tr><td>Th 04\/03\/25<\/td><td>L22: Midterm Exam 2 Review<\/td><td>No reading due<\/td><td>HW08 due<br><\/td><\/tr><tr><td>Tu 04\/08\/25<\/td><td>Midterm Exam 2 (L23)<\/td><td>No reading due<\/td><td><\/td><\/tr><tr><td>Th 04\/10\/25<\/td><td>L24: Dynamic Scheduling<\/td><td>Reading 16: Dynamic Scheduling<\/td><td>HW09 Out of Order Execution assigned<br><\/td><\/tr><tr><td>Tu 04\/15\/25<\/td><td>L25: Dynamic Scheduling Examples<\/td><td>No reading due<\/td><td><\/td><\/tr><tr><td>Th 04\/17\/25<\/td><td>L26: Multi-core Introduction<\/td><td>Reading 17: Cache Coherence (last reading)<\/td><td>HW09 due<br>HW10 Cache Coherence assigned<\/td><\/tr><tr><td>Tu 04\/22\/25<\/td><td>L27: Cache Coherence<\/td><td>No reading due<\/td><td><\/td><\/tr><tr><td>Th 04\/24\/25<\/td><td>L28: Cache Coherence Examples<\/td><td>No reading due<\/td><td>HW10 due<\/td><\/tr><tr><td>Tu 04\/29\/25<\/td><td>L29: Wrap-up and Final Exam Review<\/td><td>No reading due<\/td><td><\/td><\/tr><\/tbody><\/table><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>The information below is based on the Spring 2025 section of CSE 30321. Course Goals By the end of this course you should be able to: Grading Homework 35% Weighted equally by score as percentage Readings 5% zyBooks readings will be released on most class days. Midterm Exam 1 17.5% Tuesday 2\/18 Midterm Exam 2 [&hellip;]<\/p>\n","protected":false},"author":4492,"featured_media":0,"parent":16,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"class_list":["post-93","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/sites.nd.edu\/adingler\/wp-json\/wp\/v2\/pages\/93","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sites.nd.edu\/adingler\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/sites.nd.edu\/adingler\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/sites.nd.edu\/adingler\/wp-json\/wp\/v2\/users\/4492"}],"replies":[{"embeddable":true,"href":"https:\/\/sites.nd.edu\/adingler\/wp-json\/wp\/v2\/comments?post=93"}],"version-history":[{"count":1,"href":"https:\/\/sites.nd.edu\/adingler\/wp-json\/wp\/v2\/pages\/93\/revisions"}],"predecessor-version":[{"id":96,"href":"https:\/\/sites.nd.edu\/adingler\/wp-json\/wp\/v2\/pages\/93\/revisions\/96"}],"up":[{"embeddable":true,"href":"https:\/\/sites.nd.edu\/adingler\/wp-json\/wp\/v2\/pages\/16"}],"wp:attachment":[{"href":"https:\/\/sites.nd.edu\/adingler\/wp-json\/wp\/v2\/media?parent=93"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}