Skip to content

硬件基础

CPU 的位宽:一次能计算多少字节数据

  • 32 位 CPU 一次可以计算 4 个字节;
  • 64 位 CPU 一次可以计算 8 个字节;
  • 32 位 CPU计算 64 位数字的加减结果,需要分高低位分别进行,64 位可以一次性完成
  • 32 位 CPU 最大能操作 4GB 内存,装多了多余
  • 由于大部分情况下计算的数额不超过 32 位数字,所以 32 位 CPU 和 64 位 CPU 的差别不大,大于的时候才能体现 线路位宽:数据传输链路在一个时钟周期内,能够并行传输的二进制位数(bit)
  • 一般和 CPU 位宽对齐,如果位宽为 1,就是串行传输 软件位数:指令是 64 位还是 32 位的
  • 32 位指令在 64 位机器上执行,需要兼容机制
  • 64 位指令在 32 位机器上执行很难,因为 32 位寄存器存不下 64 位指令
  • 操作系统其实就是一种软件,位数和软件位数等价

计算机存储

CPU 寄存器->CPU Cache(L1->L2->L3)->内存->硬盘 从左到右,速度越来越慢,单价越来越低,可存储容量越来越大,读取优先级越来越低 由于数据读取有时空局限性,那么提高 CPU 缓存命中率就可以降低读取的时间,加快程序运行速度

  • 遍历数组时,按照内存布局顺序访问。
  • 先排序再遍历比先遍历再排序要快(分支预测)

中断是什么?

中断是一种异步的事件处理机制,操作系统收到了中断请求,会打断其他进程的运行,响应中断请求的响应程序,

  • 处理期间关闭中断响应,其他中断可能会因此丢失;
  • 中断处理程序,要尽可能快的执行完,降低对其他进程、中断的影响。
  • 硬中断:直接处理硬件请求,一般会处理时暂时关闭中断请求,主要负责处理跟硬件紧密相关或者时间敏感的事情。
    • 主要是负责耗时短的工作,特点是快速执行,硬中断(上半部)是会打断 CPU 正在执行的任务
  • 软中断:由内核触发,用来延迟处理上半部未完成的工作,一般以「内核线程」的方式运行。
    • 通常都是耗时比较长的事情,特点是延迟执行;每个CPU一个软中断内核线程
    • 一般软中断包括了 10 个类型,分别对应不同的工作类型,比如 NET_RX 表示网络接收中断,NET_TX 表示网络发送中断、TIMER 表示定时中断、RCU 表示 RCU 锁中断、SCHED 表示内核调度中断。
    • 每个 CPU 核心都对应着一个内核线程。

为什么负数要用补码表示?

  • 如果用原码
    • -1:1000,0001
    • 2:0000,0010
    • -1+2:1000,0011 = -3
    • 结果不符合预期,需要特殊处理负数
  • 如果用补码
    • -1:1111,1111
    • 2:0000,0010
    • -1+2:0000,0001 = 1
    • 符合预期

十进制与二进制的转换

  • 整数部分:「除 2 取余法」。
  • 小数部分:「乘 2 取整法」。
    • 得到的整数部分作为当前的二进制的一位(二进制从小数点后一位开始)
    • 所以可能出现无限循环,而计算机资源有限,只能近似,因此有精度缺失,因此小数相加不可预期(0.1+0.2不等于0.3)
    • 计算机存储方式:符号位|指数位|尾数

正在精进