Microprocessors part 1 b/c why not?
by @EBYEMJC1
November 23, 2022 • 7 min read
How many of you have been totally lost when reading something? Me!! This is why vocabulary is super important when reading, ask any teacher. When reading something do not just skip over stuff you don't understand although it may be tempting, look it up. It is a book, you can always go back so take advantage of that and pause in-between readings and figure out what you don't understand. This is like the first thing we learned in EDSC 330 and it will be part of this blog post, tell me what you learned and what you still don't understand if it is even an option to interact with this.
For the intro blog post for the microprocessor series, here is a bunch of vocabulary words that are kind of randomly ordered and a bit messy, sorry.
Levels of abstraction
Physics - motion of electrons and behavior of the electrons described by quantum mechanics and maxwell’s equations (I think phys 226 covers some of this if want to learn about it)
Electronic devices - ex. Transistors, capacitors, resistors, that have well defined connection point s called terminals that can be modeled by the relationship between voltage and current measured at each terminal
each logic circuit is implemented in accordance with device technology so cmos circuits are different than nmos circuits which are different from gallium arsenide circuits
Transistors are electronically controlled switches that turn on or off when a voltage or current is applied to a control terminal
Analog circuits - input and output a continuous range of voltages
Digital circuits - restrict voltages to discrete ranges which are used to indicate a 0 or 1 and are a subset of analog circuits and must be capable of less than broader class of analog circuits
Logic design- build more complex structures such as adders or memories from digital circuits
From the programmer's perspective
Microarchitecture - links logic design and architecture levels
implementation of isa what is going on under the hood cost and performance tradeoffs is result of designer’s decisions regarding tradeoffs of cost and performance examples include that x86 has had many implementations such as 8086, 80286, skylake
Architecture - describes a computer from the programmer's perspective for example intel x86 is defined by a set of instructions and registers that a programmer is allowed to use
The microarchitecture combines the logic elements to execute the instructions defined by the architecture
Different types of microarchitectures for example x86 architecture can be implemented by microarchitectures such as intel core i7 or amd athlon or some other microarchitecture (do this different microarchitectures have different logic designs or just different links that result in different performance?)
translate the program into the instruction set of the particular computer that will carry out the work of the program
ISA or architecture - is the complete specification of the interface between programs that have been written and the underlying computer hardware that must carry out the work of those programs interface between computer program and the computer hardware
Opcode-operation or function like lets say multiply
Operand - t individual data values
Data types - what isa specifies the acceptable representation for operands in other words a representation of an operand such that the computer can perform operations on that representation so like strings or ints or whatever
Addressing modes - ISA also specifies the mechanism that the computer can use to figure out where the operands are located so like different ways in which a source operand is denoted in an instruction link explaining addressing modes in 8086
Some isas have as few as a dozen opcodes or operations while others have more and some have a few data types while other have more some have a few addressing modes while others have more
Isa also specifies the number of unique locations that make up a computer's memory as well as number of individual 0s and 1s that are contained in each location
Compiler - translating program that translates high level languages to isa of the computer that the program will execute on
What in the world is an assembler??
An example of an isa is the x86 isa
Operating system - handles low levels of details such as accessing a hard drive or managing memory
Application software - uses facilities provided by operating system to solve a problem for the user
Managing complexity:
Abstraction - hiding details when they are not important there are many levels of abstraction. Electronic devices are an abstraction of the physics behind electron move or operating systems are an abstraction of microarchitecture ex2. Using 0s and 1s instead of varying voltages of transistors in logic gates, another example is a circuit being an abstraction of the gates that make it up. You can basically think of seeing something as the sum of its parts and kind of ignoring the parts a great example is a mosaic
Deconstruction - the ability to go from abstraction to the component parts so from bottom to top in our list of vocab starting at operating system ending at physics or the opposite of abstraction
Discipline - intentionally restricting design choices so can work more productively at a higher level of abstraction and using interchangeable parts is a familiar application of discipline an example of this is using digital circuits which intentionally restrict the function of analog circuits to do a task
Hierarchy - dividing a system into modules then further subdividing each module into smaller parts until the pieces are easy to understand
Modularity - the modules have well-defined functions and interfaces so they can connect together easily without unanticipated side effects
Regularity - seeks uniformity among modules so that they can be reused many times reducing the number of distinct modules that must be designed
Beginning of Computer systems
Software - directs hardware so basically telling hardware what to do
Hardware - physical parts of the computer that performs the actual processing like adding or subtracting also called CPU, processor, or microprocessor
Computer - hardware + software
levels of transformation
Natural languages - languages people speak like English
The problem with natural languages is that there is a lot of ambiguity like if I said time flies you should be able to know that it means that time is passing by quickly but someone might view it as time literally flying or maybe think of a group of flies called time flies just like a group of whales like humpback whales. Point is context matters and there are expressions that may be hard to understand especially since they are not universal this multiple interpretations of the same instruction makes it hard for computers to understand natural language
Algorithms - is a step by step procedure that is guaranteed to terminate such that each step is precisely stated and can be carried out by the computer
Defitness - each step is precisely stated
Effective computability - each step can be carried out by the computer
Finiteness - the procedure terminates
For every problem there are usually many different algorithms for solving that problem but differ in amount of time or resources or steps or whatever
Program - transform the algorithm to a computer program through use of programming languages which are mechanical languages
Mechanical languages - invented for use in specifying a sequence of instructions to a computer so do not have ambiguity
Languages are machine independent meaning they should work no matter the machine this is for high level languages while low level languages may be machine dependent as there is different types of assembly language for different computers
Instruction set look above -
Microarchitecture - look above
Logic circuit - look above
The device - look above
Total gibberish, right?
Look up turing
Look up nmos, mos, and cmos, we will maybe go over these when we go over logic gates which should be after binary numbers God willing, no promises though
Next blog will be on binary numbers and number systems