Fall 2013, Spring 2007, Spring 2006, Fall 2004, Fall 2001, Spring 2000, Spring 1999, Spring 1998, Spring 1997
Computer architects have been striving to improve uniprocessor performance ever since the first stored program computer was designed half a century ago. Superscalar execution is one of the techniques in this avenue and most modern microprocessors employ superscalar issue and other instruction-level parallelism techniques to enhance their performance. In the simplest words, superscalar processors are processors that can issue more than one instruction per cycle. This course deals with the tradeoffs and design considerations in the design of superscalar or instruction level parallel (ILP) microprocessors.
Fall, 2014, Fall 2013, Fall 2009, Fall 2007, Fall 2006, Spring 2005, Fall 2002, Fall 1999, Fall 1998
Evaluating computer architectures have become extremely difficult due to the complexity of the processors and the complexity of the applications that run on the computers. This course will focus on quantitative and analytical characterization of microprocessors, computer systems and applications from general purpose and scientific computing. Several papers from the recent computer architecture, performance evaluation and workload characterization related conferences will be used as course material.
EE382M - Java Processing
Java is very popular in a wide range of platforms ranging from embedded systems to enterprise servers. Portability across platforms is an important feature of Java and this is made possible by the Java Virtual Machine (JVM). JVMs come in several different forms such as Interpreters, Just-In-Time (JIT) Compilers and hardware Java processors. This course is about the performance impact of Java execution in different modes. The processing engines in many Java systems were designed before the advent of Java. It is not known whether the microarchitectural features in modern processors such as out of order execution, branch prediction, etc are effective for Java applications. Do we need special microarchitectural features in processors to be used as Java engines?
EE382M - E-commerce Processor Architecture
With the Internet's evolution from being a scientific network to a venue where true business can be done, E-commerce is expected to grow into a $1.4 trillion business in 4 years. E-commerce enables the electronic transfer of procurement, order entry, transaction processing, payment, production, inventory, order tracking, customer support, etc. via the internet. An end-to-end e-business transaction typically involves a dozen or more different software layers, including the front end/portal, shopping carts, network communication, credit card or electronic check transaction, security software layers, etc. These layers may be implemented using cgi-script, Java servlets, Java Beans, XML, CORBA, JINI, etc. Thus e-commerce involves the integration of a variety of software, protocols, and standards: GUIs, Java, cgi, perl, TCP/IP, HTTP, and HTML are just a few of them. It is not known whether the microarchitectural features in modern processors such as out of order execution, branch prediction, etc are effective for E-commerce applications. Do we need special microarchitectural features in processors to be used as servers? What kind of computing is required on the client side? In this course, we will look into E-commerce applications, their characteristics and contemplate on suitable architectural paradigms for them.
Hardware implementation of arithmetic and other algorithmic processes; hardware description languages (Verilog); Field Programmable Gate Arrays (FPGAs); state machine charts; microprogramming; floating point arithmetic; and organization, design, simulation, synthesis, and testing of digital systems.
Spring 2013, Spring 2007, Spring 2006, Fall 2005, Spring 2005, Spring 2004, Spring 2003
Hardware implementation of arithmetic and other algorithmic processes; hardware description languages (VHDL); Field Programmable Gate Arrays (FPGAs); state machine charts; microprogramming; floating point arithmetic; and organization, design, simulation, synthesis, and testing of digital systems.
EE316 - Digital Logic Design
Boolean algebra; analysis and design of combinational and sequential logic circuits; state machine design and state tables and graphs; simulation of combinational and sequential circuits; applications to computer design; and introduction to VHDL and field-programmable gate arrays (FPGAs).
EE360N Computer Architecture
Fall 2000, Fall 1999, Spring 1999
This class covers many of the concepts that implement that execution magic, more commonly called computer architecture. We start by learning the machine language that a computer exposes to the user and how one can use that language to express algorithms in the form of machine language (or the more human-readable form of machine language called assembly language) programs. We then learn how a simple hardware-based machine language interpreter (generally called a processor) is structured. We use that as a launching point to explore implementing the processor (in a basic sense), improving the performance and useability of the processor and measuring and understanding tradeoffs between performance, usability and design complexity