MC723: Computer Systems Design Laboratory

19 / 06: Final Notes.

22 / 05: Tutorial on Virtual Platforms for Project 3.

20 / 02: Monitoring and Notes.

19 / 02: Don't miss the important dates of the Graduation calendar.

Improve the concepts learned in the Computer Systems Design course. Reinforce programming concepts in large code bases. At the end of this course, the student should be able to:

  • Define and use a benchmark to evaluate the performance of computer systems, comparing the result of multiple equipment;
  • Model a high level language processor, considering timing and performance information;
  • Model a multi-processed computer system in high-level language, considering interconnection mechanisms, peripherals and software to be executed.

The recommended bibliography for the activities of this discipline is:

  • David A. Patterson and John L. Hennessy. Computer Organization Design, The Hardware / Software Interface. Morgan Kaufmann
  • Sandro Rigo, Rodolfo Azevedo, Luiz Santos. Electronic System Level Design: An Open-Source Approach Springer, 2011
  • Language SystemC. There are books in the library about SystemC.
  • Language ArchC (alternate address).

This discipline consists of three projects, to be carried out during the semester. The final grade will be geometric mean of the notes of the three projects.

The projects will be carried out in groups of around 3 participants (adjusted for the size of the class). The composition and size of the groups will be defined by the teacher.

Any attempted fraud during the semester will be punished to the extent of my authority, including a zero score on the discipline for everyone involved.

The consultations will take place on Mondays, from 18 pm to 19 pm, in room 3 of the IC and on Wednesdays, from 18 pm to 19 pm, by the discipline monitor (Thiago Santiago) in room 361 of the IC. If you need assistance at another time, just arrange by email. In this case, send the email already with a suggested day and time to facilitate the service.

Remember that I will be in the classroom during all classes in the semester.

There will be 3 projects during the semester, each with 5 weeks to be completed. Projects must be carried out in groups, where all components of the group must be aware of all decisions made, being able to justify them. Projects will be evaluated through:

  • Final report delivered before the last class of the project period;
  • Presentation of up to 15 minutes to be made in the last class of the project period. Answers to questions will be considered in the notes;
  • Source code delivered before the last class of the project period;
  • Participation of each student in the group;
  • Delivery of the script as requested by project;

P1: Performance evaluation

Objective: Develop a benchmark with at least 5 components, to evaluate the performance of at least 5 different computational equipment (or part of them).

Design decisions: What to evaluate, how to evaluate, what guarantees this benchmark provides, what are the boundary conditions, etc.

Deliveries: This first project has a requirement to monitor the teacher more closely, to assist in the development of the methodology. A partial report is expected during the period and a final report.

  • The first one containing the methodology to be followed, on a page, delivered in print until the end of the first class, for comments during the class period by the teacher. This will be the script for the experiment that will be done in the other classes by the group. Take the opportunity of the class to answer questions. This script will have a weight of 20% in the project grade.
  • The final report, of up to 5 pages, must contain all the results of the project and be delivered before the last class of the project, which will have the presentation. This report will have a weight of 80% in the project grade.

Assessment criteria: Clarity in defining the performance evaluation criteria (What did you measure? How? Why?). Ability to reproduce the results obtained on the computers informed and also to add new computers.

Final Report and Presentation: 21/03, during the class period.

P2: Processor Performance

Objective: Several implementation characteristics affect the performance of a processor, the purpose of this project is to evaluate the impact of a range of characteristics on the execution of some programs. For this, you must use a processor behavioral simulator and design the code for accounting for the impact of the desired implementation characteristics. We will use the MIPS processor, the same seen in the theoretical discipline.

Design decisions: What implementation characteristics affect the performance of the processor? Below is a non-exhaustive list to serve as a basis.

  • Pipeline size: 5, 7 and (13) stages
  • Scalar vs processor (superscalar)
  • Hazard: data and control
  • Branch predictor: at least 2 real types
  • (Cache: 4 different configurations)

You must use the ArchC-based MIPS simulator (see tutorial), available on the IC-3 and also for installation in your home / notebook. This simulator runs programs, compiled for MIPS, one instruction at a time. It is part of your task to implement all accounting to predict the behavior of an execution according to the features above. It is not expected or desired that you implement pipeline execution, only that you can account for the effects of the pipeline.

Assessment criteria: Ability to implement accounting for the above features. You can remove one of the 3 items marked in parentheses in the previous listing. Consistency between the data obtained and a real system (does the data make sense?). Ability to understand a large code base and make minor modifications to it.

Screenplay: containing the methodology to be followed, on a page, delivered in print until the end of the first class, for comments during the class period by the teacher. This will be the script for the experiment that will be done in the other classes by the group. Take the opportunity of the class to answer questions. This script will have a weight of 20% in the project grade.

Final Report and Presentation: 09/05, during the class period. Email the report before the class period. Limit of 5 pages.

At the end of your report, include a results section with a table like:

config. 1config. 2...
program 1program 2program 3P1P2P3...
1 Event
2 Event
3 Event
...
Cycles
Time

where Config. 1, Config. 2, ..., represent the settings you evaluated and Event 1, Event 2, ..., represent the analyzed events. At the end, total the number of cycles and also the estimated time as discussed in the delivery of the Roadmap. You must have the Settings and Events descriptions and characteristics in your report. Note that it should not be possible to place all settings in this table, you will have to choose the most relevant settings. As an example, after testing various cache configurations, you can choose just one (the best one) and place it in this table, leaving the data for the others only in the previous sections of the report. A vertical reading of the table, with some examples, can be: "Using the processor with configuration 1, described in the text, running the xyz program, using X instructions (Event 1), 200 cache misses (Event 2), 150 hazzard of data (Event 3), ..., which totals 1487 cycles (fictitious number) and is equivalent to an execution time of 1ms. "

For delivery, you must have answers to the following questions:

  1. For your 7 and 13 stage Pipeline (if you chose 13), what are the delays for hazzards and branch prediction?
  2. Explain a walkthrough on how your branch prediction works by assuming PC = 1000.
  3. What stage of the pipeline is the branch predictor in and what subcomponents are you considering for it to work?
  4. What are the best cache settings for each program?

P3: Multicore and Offload Systems for Hardware

In this project, each group should model a system with up to 8 colors, run a software that takes advantage of its parallelism. In addition, an extra hardware module must be created (software offloading) to accelerate the performance of this software.

In the script, the groups must answer 3 questions:

  1. How is a multicore processor started?
  2. How is hardware concurrency control (implemented) done?
  3. How to choose the best piece of code to implement in hardware?

Groups will be formed during the class as in Project 2.

Final Report and Presentation: 13/06, during the class period. Email the report before the class period. Limit of 5 pages.

DataActivity
21 / febProject Roadmap 1
28 / feb
07 / mar
14 / mar
21 / marProject Delivery 1
28 / marProject Roadmap 2
04 / Apr
11 / Apr
18 / AprThere will be no activities
25 / Apr
02 / MayThere will be no activities
09 / MayProject Delivery 2
16 / MayProject Roadmap 3
23 / May
30 / May
June 06th
June 13thProject Delivery 3