2110714   Digital Systems

Second semester 2004

Prabhas Chongstitvatana
contact  prabhas at chula dot ac dot th
Engineering building 4,  room 18-13  phone 02-2186982

Synopsis

We will study abstraction of digital devices, language for programming them and the related system software that use the devices to run applications, with emphasis on real-time systems.

We will cover three main areas:
  1. how a processor work  (6 weeks)
  2. relationship between high level language and machine code (3 weeks)
  3. real-time operating systems (3 weeks)
Syllabus

What's new

       4 Jan  2005     Nut to S2 code generator    M. Anton Ertl. PhD thesis     how the assembler work
         5 Jan 2005    Recursive microprogram    Nut version 2.0   readme
      18 Jan 2005    Nut version 2.1   readme   NOS    NOS code    Som system (especially s-code)
      21 Jan 2005      NOS version 1.0     Nut version 2.2  
      24 Jan 2005     NOS version 1.1    Nut version 2.3  (with NOS 1.1)     readme
      25 Jan 2005      NOSS v.1.1    readme
      1 Feb 2005       Nut v2.4   (with new assembler)   readme
       7 Feb 2005       Final Project
       11 Feb 2005    code optimisation     Nut v2.5  (with optimised compiler)   readme
       20 Feb 2005    NOS explain    complete NOS  (with mail)
....

topic by week

Introduction to digital systems
machine codes:  non-linear machine code  example (self.a0)
Nut language    N-code     How to compile    example quicksort
control unit  Eval in Nut
microprogramming  Eval( ) in hardware     Recursive microprogram
conventional machines  hardware elements
runtime data structure
performance design
programming at machine level :  Codegeneration
how the assembler work
basic OS   Nut operating system
NOS explain       complete NOS  (with mail)
real-time scheduling
real-time programming
code optimisation     see the new code of NOS (in s-code)
Final Project

Tools

For a public domain C compiler see my webpage (it is dated 2001, see the original site for update)
A-language package    sample of session

Nut-teach package version 0.2   Nut compiler, n-sim, microprogram generator  except  the full microprogram for n-machine
microprogram for n-machine
S2 tools set
Nut to S2 code generator
Nut version 2.0   readme
Nut version 2.1   readme
NOS code
NOS version 1.0
Nut version 2.2
NOS version 1.1   
Nut version 2.3  (with NOS 1.1)     readme
NOSS v.1.1     readme
Nut v2.4   (with new assembler)   readme
Nut v2.5  (with optimised compiler)   readme
complete NOS  (with mail)

Homework

1   Experiment with Booth's multiplication algorithm  for 2's complement number
2   Write quicksort in non-linear machine code,  study activation record
3   Try  self-machine 
4    Write quicksort in an assembly language S2,   implement  ldx, stx, new in n-sim
5    Write microprogram of n-machine  implementing  if  get  put
6   Do the midterm project: define a processor with your own instruction set and write its simulator
     due date 28 December 2004.  The report includes
     6.1  instruction set description, the format, the encoding, the meaning
     6.2  the data path
     6.3  how your simulator work.
     6.4   a small test program to show the simulator in working condition
7   Write a simple code generator for your processor (midterm project) based on RZ S2 code generator
8   Study topics in OS:  process, process synchronisation, process communication.
9    How many semaphore is needed to synchronise n processes?
10   Write and debug your code generator to work under NOSS to run a single process.
11    Run your processor under NOSS 1.1  with semaphore.

Reading

my contribution on Booth  (an experiment of a implementation in som language)
quicksort in Prolog  (to see a beautiful program)
Assembly language teaching (S2)
quicksort is S2 assembly language
Eval in Nut
J. E. Thornton, Design of a computer: The Control Data 6600, Scott, Foresman and Company, 1970. ( pdf 18 Mbytes)
Implementation of Stack-Based Languages on Register Machines. M. Anton Ertl. PhD thesis,  Technische Universität Wien, Austria, 1996.  (ps  654Kbytes)
Som system (especially s-code)

References

Other hand-out will be given in class.

last update 20 Feb  2005