• user warning: Got error 28 from storage engine query: SELECT DISTINCT t.* FROM drupal_term_node r INNER JOIN drupal_term_data t ON r.tid = t.tid INNER JOIN drupal_vocabulary v ON t.vid = v.vid LEFT JOIN drupal_forum_access fa ON t.tid = fa.tid LEFT JOIN drupal_acl acl_fa ON acl_fa.name = t.tid AND acl_fa.module = 'forum_access' LEFT JOIN drupal_acl_user aclu_fa ON aclu_fa.acl_id = acl_fa.acl_id AND aclu_fa.uid = 0 WHERE ((fa.grant_view >= 1 AND fa.rid IN (1)) OR fa.tid IS NULL OR aclu_fa.uid = 0) AND ( r.vid = 2505 )ORDER BY v.weight, t.weight, t.name in /var/www/dikutal.dk/modules/taxonomy/taxonomy.module on line 632.
  • user warning: Got error 28 from storage engine query: SELECT DISTINCT node.nid AS nid, node.title AS node_title, node.language AS node_language, node.type AS node_type, node.vid AS node_vid, node_revisions.teaser AS node_revisions_teaser, node_revisions.format AS node_revisions_format, node_data_field_date.field_date_value AS node_data_field_date_field_date_value FROM drupal_node node LEFT JOIN drupal_content_field_date node_data_field_date ON node.vid = node_data_field_date.vid LEFT JOIN drupal_term_node term_node ON node.vid = term_node.vid AND (term_node.tid = 9 OR term_node.tid = 10 OR term_node.tid = 12 OR term_node.tid = 19 OR term_node.tid = 18 OR term_node.tid = 13 OR term_node.tid = 16 OR term_node.tid = 17 OR term_node.tid = 11 OR term_node.tid = 14 OR term_node.tid = 15) LEFT JOIN drupal_node_revisions node_revisions ON node.vid = node_revisions.vid INNER JOIN drupal_node_access na ON na.nid = node.nid WHERE (na.grant_view >= 1 AND ((na.gid = 0 AND na.realm = 'all') OR (na.gid = 1 AND na.realm = 'book_page_access_view') OR (na.gid = 1 AND na.realm = 'forum_access'))) AND ( ((node.status <> 0) AND (node.type in ('event')) AND (term_node.tid IS NULL)) AND (DATE_FORMAT(ADDTIME(node_data_field_date.field_date_value, SEC_TO_TIME(7200)), '%Y-%m-%d') >= '2014-10-22') )ORDER BY node_data_field_date_field_date_value ASC LIMIT 0, 3 in /var/www/dikutal.dk/sites/all/modules/views/includes/view.inc on line 771.

Maskinarkitektur er et obligatorisk bachelorkursus, der ligger i blok 1 på andet studieår. Undervisningen omhandler den grundlæggende virkemåde af et computersystem, dets design på kredsløbsniveau og hvordan det programmeres. Det er et forsimplet computersystem der gennemgåes; fokus er rettet mod beregningsenheden (CPUen) og brugen af hukommelsen (adresseringsformer og caching). På kurset lærer man også hvordan et program skrevet i et (forholdsvist) høj-niveau sprog som C i grove træk oversættes til maskinkode.

Stikord: Assembler programmering, C Programmering, binær talrepræsentation, kredsløbsdesign, CPU, hukommelse, hukommelsesadressering, caching.

Undervisere

(dette er på ingen måde en komplet liste)

  • Jyrki (2005, 2006, 2010)
  • Finn Schiermer Andersen (ekstern lektor, 1993-1999, ??, 2009-2010)
  • Brian Vinter (2009)
  • Jon Sporring (2005-2007)
  • Stig Skelboe (2007)

Finn Schiermer Andersen er måske den person der har været tilknyttet kurset i længst tid. Han skrev i 1999 en 130 siders rapport omkring afholdelsen af kurset, efter han havde været underviser på det i 7 år. I dag fungerer han som ekstern lektor på kurset.

Kurset blev ikke afholdt i 2008, da det blev flyttet fra første til andet år.

Lærebog

Siden 1996 har man brugt bogen "Computer Organization and Design" af Patterson & Hennessy. Den er lige nu i sin fjerde udgave.

Software

I løbet af kurset stilles opgaver i kredsløbsdesign, hvor af den største opgave er at konstruere sin egen CPU fra bunden. I løbet af årene er der blevet brugt en del forskelligt software til kredsløbsdesign og afvikling af assemblerkode:

2010: Logisim

I år 2010 udskiftede man KredsDesign (se herunder) med programmet Logisim. Der er dog lavet en del tilpasninger for at få komponenterne til at opføre sig mere som dem der gennemgåes i lærebogen.

https://github.com/andersbll/logisim-diku

2010: MARS

MARS (MIPS Assembler and Runtime Simulator) er et grafisk program til afprøvning af MIPS assemblerkode.

http://courses.missouristate.edu/KenVollmar/MARS/

2006-2009: KredsDesign

KredsDesign blev udviklet af som et bachelorprojekt på DIKU

http://image.diku.dk/kreds/index.php/Main_Page
http://sourceforge.net/projects/kredsdesign

??-2005: Kreds

Kreds er et sprog til definition af kredsløb. KredsDesign er en grafisk grænseflade der genererer og afvikler Kreds kode. Kreds selv, bygger oven på SimSys.

1996-??: SimSys

SimSys blev udviklet Finn Schiermer Andersen
http://www.diku.dk/hjemmesider/studerende/schier/simsyshome.html

Før 1995: C/C++

Før SimSys blev de studerende bedt om at implementere mikroarktikturerne direkte i C eller C++.

???-2009: masm og mips

masm (MIPS assembler) og mips (MIPS simulator) blev tidligere brugt til afvikling af assemblerkode. masm assemblerede assemblerkoden til maskinkode og mips kunne derefter afvikle den genererede maskinkode.

SIS

Handlinger