Editing MicroArchitecture
You are currently not logged in.
To change this, fill in the following fields:
Username
Password
Who can read this page?
The World
Members
Council
Admin
You have been granted an edit lock on this page
until Sun May 19 11:18:53 2024.
Press
to finish editing.
Who can edit this page?
... world editing disabled
Members
Council
Admin
After MicroElectronics we come to MicroArchitecture. This is the level at which we take our gates, representing tiny fragments of logic, and build them into larger units of computation. First you build circuits that can do simple arithmetic ("adders" and "multipliers") and memory cells that can hold a single "yes" or "no" (a "bit", as it's known), then you build those up into larger systems like Arithmetic Logic Units, Floating Point Units, branch predictors, caches, Load-Store units, registers and so on. Then you build *those* into a complete microprocessor capable (in theory) of handling any computation you might throw at it. Universities generally teach this level over two courses: [Computer Design](http://www.inf.ed.ac.uk/teaching/courses/cd/Course_Description.html), which takes you from gates up to the larger systems I mentioned, and [Computer Architecture](http://www.drps.ed.ac.uk/14-15/dpt/cxinfr09009.htm), which talks about how to organise your chip design to extract better performance out of it. Microelectronics isn't the only possible substrate for this level: much of Lovelace and Babbage's work in the 1800s was at this level, only built on top of gears rather than circuits. The notations Babbage developed in some ways [strikingly anticipate](http://blog.plan28.org/2014/11/babbages-language-of-thought.html) modern hardware design notations. Application programmers rarely need to care about what goes on at this level, but occasionally they get bitten by how [branch prediction](http://stackoverflow.com/questions/11227809/why-is-processing-a-sorted-array-faster-than-an-unsorted-array) or caching affects the performance of their code. Programmers working on cryptographic software need to care more, because [what's going on at the microarchitectural level](http://blog.erratasec.com/2015/03/x86-is-high-level-language.html#.VkELznzhCV5) can leak secret information to an attacker. After this comes: * Instruction Set Architecture