MC723: Computer Systems Design Laboratory

07 / 05: Notes table

26 / 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:

This discipline consists of three projects, to be carried out during the semester. The final grade will be the arithmetic average of the grades for the three projects.

The projects will be carried out in groups of around a maximum of 4 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 appointments will take place on Tuesdays, from 14pm to 15pm, in room 3 of the IC and on Thursdays, from 18pm to 19pm, by the discipline monitor (Tiago Falcão) 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, methodology, ways of measuring performance, scalability, reproducibility, etc. Examples of benchmarks for performance of existing processors / computers: SPEC (look for the runspec documentation, script that controls execution), PARSEC (look for parsecmngt documentation, script that controls execution), CloudSuite, DaCapo, MediaBench, MiBench, MineBench , Rodinia, San Diego Vision Benchmark Suite, SPECWeb, SPECJBB, SPECJVM, Streamit Systench, TPC, NAS NPB, NAS OMP, HPCC, Mantevo benchmark suite, CSiBE.

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.

Rating 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: 27/03, during the class period.

Groups formed for project 1:

  • G1: Nicholas (103659), Ruan (104034), Thiago (104207), Yuri (107001)
  • G2: Daniel (11645), Matheus (118124), Victor (121400), Allan (134796)
  • G3: Antonio Carlos (134985), Gabriel (135801), Lucas (136640), Luis Fernando Antonioli (136710)
  • G4: Luis Fernando Villela (136734), Erick (139415), José (139553), Ulysses (140958)
  • G5: Eric (076624), Felipe (083499), Murilo (094236), Pedro (105542)
  • G6: Cristina (135368), Marcos (136823), Rogério (140922), Diego (119319)
  • G7: André (101510), Flávio (135749), Vinícius (084197), André (119098)
  • G8: Gabriel (116909), Rafael (118439), Fabio (138311), Gustavo (105046), Matheus (119920)

Schedule of Group presentations for Project 1:

  • 8:00 am: empty (if you want to arrive earlier, I will answer)
  • 8:30: G4
  • 9:00: G3
  • 9:30: G5
  • 10:00: G7
  • 10:30: G6
  • 11:00: G8
  • 11:30: G2
  • 12:00: G1

P2: Processor Performance

Objective: Evaluate the impact, on the performance of a processor, of several architectural features studied in the theoretical discipline.

Among the characteristics to consider, I suggest:

  • Pipeline size: 5, 7 and 13 stages
  • Scalar vs superscalar processor
  • Data and control hazards
  • Branch predictor (2 different configurations)
  • Cache (4 different configurations)

How does each of these characteristics affect processor performance? (get better, get worse, leave it at the same level).

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.

Rating criteria: Ability to implement accounting for the above features. 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. Include, at the end of the script, the address of the git repository that your group will place the code of your work in.

Final Report and Presentation: 15/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

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. "

Groups formed for the project:

  • G1: Thiago (104207), Ulysses (140958), Eric (076624), Gabriel (116909), André (101510)
  • G2: Yuri (107001), Matheus (118124), Felipe (083499), Diego (119313)
  • G3: Victor (121400), Antonio (134985), Pedro (105542), Cristina (135368)
  • G4: Allan (134796), Gabriel (135801), Luiz Fernando (136734), Flavio (135749)
  • G5: Luís Fernando (136710), Erick (139415), Marcos (136823), Fabio (138311)
  • G6: Ruan (104034), José Ernesto (139553), Murilo (094236), Rogério (140922)
  • G7: Nicholas (103659), Daniel (116545), André (119098), Lucas (136640), Vinicius (084197)

Group presentation times:

  • 8:00: G1
  • 8:30: G7
  • 9:00: G3
  • 9:30: G4
  • 10:00: G2
  • 10:30: G5

P3: Multicore and Offload Systems for Hardware

In this project, each group should model a system with 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 of up to 4 participants will be formed by the students themselves and indicated in the script.

Deadline for the Script: 29/05 until 9am. Worth noting: You must indicate, in the script, a repository that can be cloned. We will check this immediately after delivery of the script.

A git repository containing the base platform for development is at /home/staff/rodolfo/mc723/base_platform.git. Note that you do not have and will not be allowed to write to this repository.

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

Groups formed for the project:

  • G1: Cristina (135368), Flavio (135749), Gabriel (135801), Marcos (136823)
  • G2: Felipe (083499), Matheus (118124), Víctor (121400), Rogério (140922)
  • G3: Antonio (134985), Lucas (136640), Luiz Fernando (136734), Erick (139415)
  • G4: Vinicius (084197), Nicholas (103659), André (119098), Diego (119319), Fabio (138311)
  • G5: Eric (076624), Thiago (104207), Yuri (107001), Gabriel (116909)
  • G6: Allan (134796), Luís Fernando (136710), José Ernesto (139553), Ulysses (140958)
  • G7: Murilo (094236), Ruan (104034), Daniel (116545)
  • G8: Andrew (101510), Pedro (105542)
27 / febProject Roadmap 1
06 / mar
13 / mar
20 / mar
27 / marProject Delivery 1
03 / AprThere will be no activities
10 / AprProject Roadmap 2
17 / Apr
24 / Apr
01 / MayThere will be no activities
08 / May
15 / MayProject Delivery 2
22 / May
29 / MayProject 3 script (until 9 am)
June 05thThere will be no activities
June 12th
June 19th
June 26thProject Delivery 3