TDT1: Architecture of Computing Systems
**This compendium is the 2015 version of TDT1**
The following papers are curriculum:
*Part 1* Modern computing architectures (Lasse): with focus on multicores and energy efficient computing.
- 1.1 **Models and metrics to enable energy-efficiency optimizations**, *Suzanne Rivoire et.al.*, Computer, December 2007 (ITSL = Made available to students thru Its Learning) [Presentation](https://docs.google.com/presentation/d/1znpJALl4ZqGZ37b8GSsSShTpxqChnYAz_un7OAvgCp4/pub?start=false&loop=false&delayms=30000&slide=id.p)
- 1.2 **Case Studies of Multi-core Energy Efficiency in Task Based Programs**, *Hallgeir Lien et al*, In proc. of ICT-GLOW ICT againts Global Warming, Vienna Sept 2012 (ITSL)
- 1.3 **Feedback-Driven Threading: Power-Efficient and High-Performance Execution of Multithreaded Workloads on CMPs**, *Suleman et.al.*, ASPLOS 2008 (ITSL)
- 1.4 **Single-ISA Heterogeneous Multi-Core Architectures: The Potential for Processor Power Reduction**, *Kumar et.al.*, MICRO 2003 (ITSL)
- 1.6 **Optimized Hardware for Suboptimal Software: The Case for SIMD-aware Benchmarks**, *J M Cebrian et. al.*, ISPASS 2014
*Part 2* Unconventional computing architectures (Stefano, www.nichele.eu, nichele@idi.ntnu.no):
Current and future research on new alternative computing architectures that go beyond the traditional Turing/von Neumann paradigm:
- 2.1 *Moshe Sipper* - **The Emergence of Cellular Computing** (<http://www.cs.bgu.ac.il/~sipper/papabs/cellcomp.pdf>)
- 2.2 *Melanie Mitchell* - **Life and Evolution in Computers** (<http://web.cecs.pdx.edu/~mm/life-and-evolution.pdf>)
- 2.3 *Moshe Sipper et al.* - **A Phylogenetic, Ontogenetic and Epigenetic View of Bio-Inspired Hardware Systems** (<http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=585894&tag=1> also available on ITSLEARNING)
- 2.4 *Julian Miller et al.* - **Evolution-in-Materio: Evolving Computation in Materials** (<http://www.cartesiangp.co.uk/papers/ei2014-miller.pdf>) [Presentation](https://docs.google.com/presentation/d/1ZBLbhKdwICzH6C1Y6RZVUUGOQk5aJE73TP67s5gEecI/edit?usp=sharing)
- 2.5a **D-Wave Quantum Computer Architecture** (<http://www.dwavesys.com/sites/default/files/D-Wave-brochure-Aug2015B.pdf>)
- 2.5b **Programming with D-Wave, Map Coloring Problem** (<http://www.dwavesys.com/sites/default/files/Map%20Coloring%20WP2.pdf>)
- 2.6 *Lila Kari* - **DNA Computing: Arrival of Biological Mathematics** (<http://link.springer.com/article/10.1007%2FBF03024425> also available on ITSLEARNING)
# 2.4 Evolution-in-Materio: Evolving Computation in Materials
[Link to the slides](https://docs.google.com/presentation/d/1ZBLbhKdwICzH6C1Y6RZVUUGOQk5aJE73TP67s5gEecI/edit?usp=sharing)
## Basically what it is
Evolution in materio is about using evolutionary algorithms in physical material to get a desired result in a physical material.
There are many reasons why this is done; we are approaching the silicon cap, where more transistors would mean our processors melt, therefore we might want to find some other basis for computation than silicon.
Tests of this has also shown that using this technique is a good way of supplement the human mind's thinking, as the humand mind is often bound by it knowledge.
## Working examples
There are multiple examples of this actually working.
The NASA antenna which is on one of its space shuttles might be the best known example.
## Measuring and changing problems
When working with evolution in materio, we _must_ be able to distinguish if we are significantly changing the matter in question.
Matter is changing all the time, and it can be difficult to see if the matter is changing because of us, or regardless of us.
To combat this we need ways of measuring changes in the material.
If we are not careful, we might be measuring floating pins, and we might see the same results as we expect from measuring the actual matter.
If our material spits out random numbers, we have created a random number generator, _not_ a turing machine with some extra computations.
We need to be on the edge of chaos.
## Ways of evolving
There are three main ways of using evolutionary algorithms in the context of evolution in materio.
- **Purely in software**
You evolve your design in software to be used in software.
- **Evolution in software produces results in real life**
You evolve in software, and take the result to be used in real life.
This is often a blueprint or a design that is used to create a real life item.
- **Physical evolution in actual materio**
You have a material that you change physical properties of and read off data.
## Some notes on the field itself
This is a very new field and it will take some more research before it matures.
The results so far has to be taken with a grain of salt, as the results is not easy or even possible to replicate.