Yliopiston etusivulle Suomeksi På svenska In English
Helsingin yliopisto Tietojenkäsittelytieteen laitos
 

Tietojenkäsittelytieteen laitos

in English suomeksi Kurssikuvaus 27.9.2005

581305-6 Tietokoneen toiminta (4 op, 2 ov)

Asema opetuksessa

Tietojenkäsittelytieteen aineopintojen pakollinen kurssi ja perusopintojen valinnainen kurssi.

Esitiedot

Esitietoina edellytetään ohjelmoinnin perusasioiden tunteminen, esimerkiksi Ohjelmoinnin perusteet -kurssin avulla.

Tavoitteet

Tavoitteena on ymmärtää tietokonejärjestelmän keskeiset piirteet sillä suoritettavan ohjelman näkökulmasta: miten tietokonejärjestelmä on rakennettu ja miten se suorittaa sille annettua ohjelmaa. Pääpaino on yhden ohjelman suorituksella konekielen tasolla.

Tavoitteena on myös ymmärtää suorittimen toiminta konekielen tasolla. Konekielisen ohjelman suoritusta tarkastellaan sekä yleisellä tasolla että käytännönläheisesti yksinkertaisen opetustarkoitukseen kehitetyn esimerkkikoneen (ttk-91), tämän koneen (symbolisen) konekielen ja tälle koneelle tehdyn simulaattorin avulla. Tarkastelemme myös käyttöjärjestelmän roolia ohjelman suorituksen kannalta.

ACM/IEEE Computing Curricula 2001:n mukaiset tavoitteet (englanniksi)

Architecture and Organization (AR)

The computer lies at the heart of computing. Without it most of the computing disciplines today would be a branch of theoretical mathematics. To be a professional in any field of computing today, one should not regard the computer as just a black box that executes programs by magic. All students of computing should acquire some understanding and appreciation of a computer system's functional components, their characteristics, their performance, and their interactions. There are practical implications as well. Students need to understand computer architecture in order to structure a program so that it runs more efficiently on a real machine. In selecting a system to use, they should to able to understand the tradeoff among various components, such as CPU clock speed vs. memory size.

The learning outcomes specified for these topics correspond primarily to the core and are intended to support programs that elect to require only the minimum 36 hours of computer architecture of their students. For programs that want to teach more than the minimum, the same topics (AR1-AR7) can be treated at a more advanced level by implementing a two-course sequence. For programs that want to cover the elective topics, those topics can be introduced within a two-course sequence and/or be treated in a more comprehesive way in a third course.

AR2. Machine level representation of data [core]

  • Explain the reasons for using different formats to represent numerical data.
  • Explain how negative integers are stored in sign-magnitude and twos-complement representation.
  • Convert numerical data from one format to another.
  • Discuss how fixed-length number representations affect accuracy and precision.
  • Describe the internal representation of nonnumeric data.
  • Describe the internal representation of characters, strings, records, and arrays.

AR3. Assembly level machine organization [core]

  • Explain the organization of the classical von Neumann machine and its major functional units.
  • Explain how an instruction is executed in a classical von Neumann machine.
  • Summarize how instructions are represented at both the machine level and in the context of a symbolic assembler.
  • Explain different instruction formats, such as addresses per instruction and variable length vs. fixed length formats.
  • Write simple assembly language program segments.
  • Demonstrate how fundamental high-level programming constructs are implemented at the machine-language level.
  • Explain how subroutine calls are handled at the assembly level.
  • Explain the basic concepts of interrupts and I/O operations.

AR4. Memory system organization and architecture [core]

  • Identify the main types of memory technology.
  • Explain the effect of memory latency on running time.
  • Explain the use of memory hierarchy to reduce the effective memory latency.
  • Describe the principles of memory management.
  • Describe the role of cache and virtual memory.

AR5. Interfacing and communication [core]

  • Explain how interrupts are used to implement I/O control and data transfers.
  • Describe data access from a magnetic disk drive.

Programming Languages (PL)

A programming language is a programmer's principal interface with the computer. More than just knowing how to program in a single language, programmers need to understand the different styles of programming promoted by different languages. In their professional life, they will be working with many different languages and styles at once, and will encounter many different languages over the course of their careers. Understanding the variety of programming languages and the design tradeoffs between the different programming paradigms makes it much easier to master new languages quickly. Understanding the pragmatic aspects of programming languages also requires a basic knowledge of programming language translation and runtime features such as storage allocation.

PL2. Virtual machines [core]

  • Describe the importance and power of abstraction in the context of virtual machines.
  • Explain the benefits of intermediate languages in the compilation process.
  • Evaluate the tradeoffs in performance vs. portability.
  • Explain how executable programs can breach computer system security by accessing disk files and memory.

PL3. Introduction to language translation [core]

  • Compare and contrast compiled and interpreted execution models, outlining the relative merits of each.
  • Describe the phases of program translation from source code to executable code and the files produced by these phases.
  • Explain the differences between machine-dependent and machine-independent translation and where these differences are evident in the translation process.

Opetusmuodot

Kurssin voi suorittaa joko tavallisena luentokurssina, opintopiiripohjaisena kurssina tai erilliskokeella (loppukokeella). Kurssi luennoidaan joka vuosi syys- ja kevätlukukaudella (ja avoimessa yliopistossa myös kesäisin). Huomaa, että luentokurssin kurssikuulustelua ei voi käyttää erilliskokeena.

Tavalliseen luentokurssiin sisältyy

  • luennot (4t/viikko, 6 viikkoa)
  • laskuharjoitukset (2t/viikko, 6 viikkoa)
  • kurssikuulustelu

Opintopiiripohjaiseen kurssiin sisältyy

  • luennot (4t)
  • itseopiskeluun sopivat verkkoluennot (21 t)
  • itsenäisesti tai opintopiirissä tehtäviä harjoitustehtäviä, keskustelutehtäviä ja projekteja
  • ohjattuja opintopiiritapaamisia (2t/viikko, 6 viikkoa)
  • kurssikuulustelu

Erilliskokeessa tentitään yhdellä kokeella allamainittu kurssimateriaali. Erilliskokeeseen ei sisälly mitään harjoituksia eikä aikaisempien luentokurssien harjoitustehtävistä saa mitään lisäpisteitä.

Kurssimateriaali

Luentokurssi:

  • Luennot ja luentomuistiinpanot
  • Auvo Häkkinen, Tietokoneen toiminta, opetusmoniste D390, Tietojenkäsittelytieteen laitos, Helsingin yliopisto, 30.1.1998.
    (Luvut 1-6, 8-11)
  • Auvo Häkkinen, KOKSI konekielisimulaattori.
Erilliskoe:
  • William Stallings, Computer Organization and Architecture, 7th Ed., Prentice Hall, 2006.
    Luvut 1-2, 3-3.1, 4.1, 5-5.2, 6-6.1, 7-7.5, 8-8.2, 9-9.2, 9.4, 10, 11.1, 12.1-3o

    tai William Stallings, Computer Organization and Architecture, 6th Ed., Prentice Hall, 2003.
    Luvut 1-2, 3-3.1, 4.1, 5-5.2, 6-6.1, 7-7.5, 8-8.2, 9-9.2, 9.4, 10, 11.1, 12.1-3
  • Andrew S. Tanenbaum, Structured Computer Organization, 5th Ed, Prentice-Hall, 2006.
    Luvut 4.2, 5-5.1.4, 7.3-7.4o

    tai Andrew S. Tanenbaum, Structured Computer Organization, 4th Ed, Prentice-Hall, 1999.
    Luvut 4.2, 5-5.1.4, 7.3-7.4
  • Auvo Häkkinen, Tietokoneen toiminta, opetusmoniste D390, Tietojenkäsittelytieteen laitos, Helsingin yliopisto, 30.1.1998.
    Luvut 4-5 eli esimerkkitietokoneen ttk-91 käyttö. Opiskelijoiden edellytetään osaavan perusasiat konekielitason ohjelmoinnista. Riittävää on osata suunnitella ja toteuttaa pieniä ohjelmia ja aliohjelmia ttk-91 esimerkkitietokoneen symbolisella konekielellä (KOKSI simulaattorin viitteet edellä)

    Ttk-91 koneen käyttöä voi myös opiskella TITOKONE-simulaattorin asennusohjeen ja käyttöohjeen avulla.

    Toisaalta, minkä tahansa (tunnetun) todellisen tai hypoteettisen koneen symbolinen konekieli kelpaa. Varmista jonkun muun kuin ttk-91 symbolisen konekielen käyttö etukäteen kokeen antajalta.
Tarkista koealue aina ennen erilliskoetta.

Sisältö

  • Tietokonejärjestelmän kokonaisvaltainen rakenne
  • TTK-91 -tietokone ja sen KOKSI simulaattori
  • Ohjelman esitys konekielen tasolla ja konekielinen ohjelmointi
  • Suorittimen (CPU) ja väylän perusrakenne, suorittimen tilat
  • Tiedon esitysmuodot ja tiedon muuttumattomuus
  • Järjestelmän sisäinen ja ulkoinen muisti
  • I/O:n toteutus ja I/O laitteet
  • Ohjelman toteutus ja suoritus järjestelmässä, prosessi ja sen tilat
  • Java-ohjelmien suorittaminen

Teemu Kerola