Fall, 2024
This course provides an introduction to hardware acceleration of software-based applications. The student will learn how to identify a software application’s performance limitations, how to identify parallel components of the application, how hardware and software interact, how the computer system’s architecture impacts this interaction, and methods for improving application performance by mapping portions of the application’s computation into hardware accelerators.
Having completed this course, you will have experience with the following:
Identifying performance bottlenecks in simple software applications and optimizing them algorithmicially to improve performance
Transforming portions of software applications into hardware descriptions of equivalent behavior
Utilizing high-speed hardware-software interfaces to move data between hardware and software
Adding customized hardware accelerators to improve the overall performance of a software application.
Bryce Himebaugh
bhimebaugh@iu.edu
IF4146
Office Hours: TDB Location: IF4146
Dave Ingalls - jdingall@iu.edu
Office Hours:
Lecture Time: 9:45a-11:00a Monday/Wednesday
Location: IF 4111 (Luddy Hall)
Engineering: E201 and E210
Computer Science: C335 and P441
This class assumes students are familiar with C, Python, and Verilog. Students lacking sufficient background will struggle in this course.
Lectures will loosely follow material taken from three different books, listed below. All of the books are available for free to IU students.
Practical Introduction to Hardware/Software Codesign
Patrick Schaumont
Springer, 2nd Edition, 2013, xxii+480p
ISBN 978-1-4614-3736-9 (print)
ISBN 978-1-4614-3737-6 (online)
DOI 10.1007/978-1-4614-3737-6
IU students can access the PDF for free at SpringerLink
( Requires on-campus access. Please do not post or redistribute the PDFs. )
Architecting and Building High-Speed SoCs
Mounir Maaref
Packt Publishing Ltd., 2022
ISBN 978-1-8018-1985-5 (Electronic Book)
ISBN 978-1-8018-1099-9 (Print Book)
IU Students can access this book electronically from IUCAT.
The Zynq Book: Embedded Processing with the Arm Cortex-A9 on the Xilinx
Zynq-7000 All Programmable Soc
Louise H. Crockett, Ross A. Elliot, Martin A. Enderwitz & Robert W. Stewart
Strathclyde Academic Media, 2014
ISBN: 978-0992978709
This book is publicly available for free download on ZynqBook.com
Additional materials may be provided on an as-needed basis on the course website.
Over the course of the semester, we will assign multiple programming projects. Full points will requires these projects be submitted to the autograder and/or be demonstrated to the course staff.
Assignments turned in after the exact time and date specified on the assignment will receive a zero. We do not generally offer extensions. For example, we do not offer extensions due to crowded computing sites, long queue times or slow response times on the autograder, internet access problems, accidental erasure or loss of files, or outside conflicting commitments.
We will consider extension requests made in person and at least two weeks in advance, for example, for religious holidays or planned medical procedures. Additionally, we will consider requests for extensions due to documented, unanticipated medical or personal emergencies. If you can’t see the instructor in advance due to the emergency, then contact them as soon as you possibly can. In all cases, we require written proof of the emergency.
Your final grade is based on scores from exams, the programming projects, and the final design challenge. The tentative point distribution is included in the following table. It is not likely that this will change, but circumstances might occur which would make changes necessary, at the discretion of the instructor. Once a grade has been posted to Canvas, you will have one week to appeal the grade.
Exam | Projects | Design Challenge | Design Report |
---|---|---|---|
25% | 45% | 15% | 15% |
We will grade your programs in an autograder system that is similar to the Linux environment. Your code must be submitted, compile, and run correctly on the autograder before the deadline. We use a web-based autograder for project submissions. For some projects, the autograder will also evaluate the thoroughness of test cases you submit.
Autograder Link: https://autograder.luddy.indiana.edu
Learning difficult or complicated material is often facilitated by discussions between students and we encourage you to form study groups to try to solve difficult problems together.
However, exams and programming projects must be your own work. Do not cheat in any way: do your own work! Doing your own work means that you must turn in your own, original work. It means you do not turn in a solution copied from somebody else or found on the web. In programming projects, working together may extend to figuring out overall strategies for solution but you may not work together or share the actual code that you submit.
For group projects, code sharing within the group is encouraged. Sharing code outside the group is not allowed.
If you think you need an accommodation for a disability, please let your instructor know during the first three weeks of the semester. Some aspects of this course may be modified to facilitate your participation and progress. As soon as you make us aware of your needs, we can work with the Office of Disability Services for Students (DSS) help us determine appropriate academic accommodations. Any information you provide is private and confidential and will be treated as such.
We will post a Canvas announcement in the case of any critical corrections or clarifications. It is your responsibility to ensure you are able to receive Canvas announcements.
Version: 2024.0