CISC441/841 Advanced Computer Architecture (Winter 2004) |
What the course is about.
This course is about the way high-performance computers are designed and used. It follows on from CISC221 or 231, but also builds on CISC324 and CISC340. High-performance computing, for most of its 50 year history, was mostly concerned with scientific and numerical applications. In the past decade, the emphasis has shifted to applications such as web servers (ecommerce and search engines, for example), and data mining. High-performance computing is slowly becoming a natural extension of mainstream computing, rather than a specialised area.
Designing hardware to provide high performance is actually the easier part of the problem. We will examine techniques whose aim is to increase the performance of a single processor (many of which you will already have encountered), and also techniques based on replicating one or more parts of a computing system to increase performance. These you will not have seen before.
The hard part of the problem is how to program a high-performance computer when you have built one. Such a computer is an extremely rapid consumer of instructions. We need ways to express computations at a level of abstraction where we need to say very little to create long, complex sequences of instructions. Thus we need programming languages that are expressive. Different high-performance computers differ internally in important ways. We do not wish to have to completely rewrite programs when we change computers; hence we need a programming language that is portable. At the same time, we must be able to exploit most of each computer's potential performance or else the exercise is pointless. These different requirements are in tension with each other, and many attempts have been made to find programming languages that satisfy all of them. Some progress is finally being made in this direction.
This area changes very quickly. You may want to buy one of the (optional) textbooks; there are several relevant journals; and you will want to explore the web and newsgroups. The assignments aim to take you to the leading edge of what is happening today. Nevertheless, it is always wise to remember that the aim of this course is an understanding of the principles of high-performance computing rather than the details of the current leading edge.
We will be using WebCT extensively -- go to the WebCT server. Your account for WebCT will be created automatically from your registration data.
Classes will be more discussions than lectures. You are expected to have done some reading before each one.
Administrative Details.
Instructor: David Skillicorn
Office: Goodwin Hall 528
Phone: 533 6065
Email: skill at cs.queensu.ca
Office Hours: TBA
It is best if as much interaction as possible takes place within WebCT.
If you have a question, then almost certainly two other people do as well.
If you ask it online, everyone can see the answer. I will answer questions
frequently, so you should be able to get reasonably fast
response. Your assessed work must also be placed online. Our experience
shows that students learn as much from reading other people's solutions
as they do from generating their own.
Assessment.
There are three assignments, worth 20% each. There is a three hour, closed book exam worth 40%. Assignments may be done in groups of up to three people.
There will be an opportunity for the authors of the best assignments to make a presentation in class for a 5 mark bonus.
Textbook
There is no ideal text for this course, I have ordered a selection. Look them over, and buy the one you like the best (or none at all). I have put all of them on reserve in Douglas Library. All are good for at least some parts of the course, but none covers everything we will cover.
There are many journals that have some relevance to this area. Don't forget newsgroups such as comp.parallel and comp.arch as well.
Outline
Here is an outline of the course.