202405031100 Understanding How Your CPU Thinks
- Two most important skills for a developer
- Break problems into smaller problems
- Communication (with people and with the computer)
- Talked about pipelining
- increases µops throughput
- think about doing multiple loads of laundry in washer and dryer
- f# nice
- this point was a little off from my understanding of schedulers and the term "pipelining" specifically.
- Caches and different memory locations: registers, L1, L2, L3, RAM, DISK etc.
- Don't use 0V–1.3V and 3.7V-6.3V anymore for memory and heat efficiency. They've shrunk those voltages and tolerances.
- Got into machine code and micro-ops for assembly
- Importantly, the op and params and everything are all encoded.
- This is why ARM ops have variable bit sized parameters. They're all encoded into 32 bit instructions, so the specifics of the encoded instructions/params might change the available bits for parameter store.
- Showed the circuit for a 4 bit adder, arbitrarily chainable for higher bits, 32/64.
- youtube videos:
- domino computing by standupmaths
- water computer steve mould
- how to do multiplication
- f# "Freestylecoding.Math" bit math lib
- interesting idea of returning division with remainder as tuple with
/%operator
- least significant first importance for e.g. base conversions
- youtube videos:
- some talk about knowing the complexity of things like conversions and math helps with loops and hot spots
Links to this note