CS61C Reading Summary
最近在看UC Berkley的CS61C课程(Great Ideas in Computer Architecture (Machine Structures)),本文档并非传统读书笔记,仅仅记录个人感兴趣的方向。
课程资源: https://inst.eecs.berkeley.edu/~cs61c/sp22/
Blibili: https://www.bilibili.com/video/BV15W4y1S7Lc/?spm_id_from=333.999.0.0 (机翻字幕,存在错误)
Byte aliginment and ordering
字节对齐和大小端(big-little endian)是计算机中非常基本且重要的概念。
字节对齐的原因是出于处理器的执行效率(且部分处理器不支持非字节对齐的内存操作),字节对齐允许处理器以更少的指令次数从内存中获取需要的数据。大多数编译器也遵照了字节对齐规则,对代码中的数据结构进行对齐,不同的处理器系对数据结构有不同的对齐策略,请参照相应的reference。
大小端(big-little endian)是指计算机中数据的存储顺序,至于为什么不同的处理器厂商采用不同的大小端策略(比如Intel的80x86系列采用了little-endian,而Sun的SPARC采用了big-endian ),这属于历史原因。
详细文档可参考:https://eventhelix.com/embedded/byte-alignment-and-ordering/
RISC V Assembly
RISC-V Assembler Reference: https://michaeljclark.github.io/asm.html
Arm Big.LITTLE 技术
Arm的Big.LITTLE技术是一种使用了两种类型处理器的异构处理架构。”LILLE”处理器针对最优节能设计;而”BIG”处理器针对最佳计算性能设计。使用这两种不同设计的处理器,Big.LILLTE解决方案能够适用于智能手机、平板电脑、和其它设备不同动态场景下的使用。Big.LILLTE能够满足高速处理任务(例如手机游戏、网页浏览),低速处理任务(例如短信、电子邮件、音频播放),复杂app的静态处理任务。
在半导体工艺技术的发展过程中,智能手机和平板的用户对性能需求的增长要更胜于电池或者节能的需求。与此同时,用户也希望更长的电池使用时间。这一些列冲突对移动Soc设计的需求超出了工艺技术和传统电源管理技术所能提供的范围。
详细描述可参考: https://www.arm.com/technologies/big-little
如何评价 ARM 的 big.LITTLE 大小核切换技术?:https://www.zhihu.com/question/23299449
Flynn’s taxonomy
详细请参考:https://www.geeksforgeeks.org/computer-architecture-flynns-taxonomy/
TLB (Translation lookaside buffer)
A translation lookaside buffer (TLB) is a type of memory cache that stores recent translations of virtual memory to physical addresses to enable faster retrieval. This high-speed cache is set up to keep track of recently used page table entries (PTEs). Also known as an address-translation cache, a TLB is a part of the processor’s memory management unit (MMU).
more details: https://www.techtarget.com/whatis/definition/translation-look-aside-buffer-TLB
OpenMP
Thrashing in OS
A process is said to be thrashing if the CPU spends more time serving page faults than executing the pages. This leads to low CPU utilization and the Operating System in return tries to increase the degree of multiprogramming.
more details: https://www.scaler.com/topics/thrashing-in-os/
Memory mapped io and ported io
more details: https://technobyte.org/difference-memory-mapped-io-mapped-io/
I/O Interface (Interrupt and DMA Mode)
more details: https://www.geeksforgeeks.org/io-interface-interrupt-dma-mode/