TechWorkRamblings

by Mike Kalvas

202405031100 Understanding How Your CPU Thinks

#source

  • 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
  • some talk about knowing the complexity of things like conversions and math helps with loops and hot spots