计算机组成原理

数据的表示与运算

原码,反码,补码以及JAVA中的基本数据类型

  • 原码:人看的二进制,符号位 + 真值,不能做减法,0表示正数,1表示负数
  • 反码:过渡编码,负数数值位取反
  • 补码:计算机实际使用的编码,负数 = 反码 + 1,正数的原码,反码,补码都一样。
  • Java 所有整数(byte/short/int/long)底层全是 补码 存储!
  • byte 取值范围是 -128 ~ 127,对应的补码二进制 10000000 ~ 01111111,因为最高位表示 正负,当127+1 的时候,最高位就变成1了,也就变成了-128,是一个负数了,所以说必须要增加位数,使用short变成16位 0000 0000 1000 0000,这样最高位又是0表示正数了。

ASCII / Unicode / UTF-8

  • ASCII:只管英文,最早的字典。
  • Unicode:全球统一大字典,给所有字符分配一个唯一编号(码点)。
  • UTF-8:Unicode 的实现 / 存储方式(可变长编码),互联网通用标准。

存储系统

存储器的层次结构

  • CPU寄存器 → L1/L2/L3 Cache(高速缓存) → 主存(内存RAM) → 外存(SSD/HDD/磁盘/对象存储)
  • CPU 运算只认寄存器,不能直接读写外存;所有数据必须逐层向上加载:外存→主存→Cache→寄存器 → CPU 执行计算缺一层就触发访存失效 / 缺页 / 缓存未命中,性能断崖下跌。

性能根基,局部性原理

两大核心局部性

  • 时间局部性,刚用过的数据,短时间内大概率还要再用,把刚用的数据留在高速缓存里,不立刻淘汰。
  • 空间局部性,用到某个地址的数据,它相邻 / 附近地址的数据,大概率马上也要用,预加载相邻数据、按块 / 按行缓存、内存对齐、批量预取。

Cache 核心机制

  • 缓存命中 / 未命中:命中:数据在 Cache 里 → 极速读取;未命中(Cache Miss):去下层主存取,回填 Cache,延迟暴增。
  • 缓存行(Cache Line)CPU 不是读单个字节,是按64B/128B 整块拉数据(利用空间局部性)。
  • 替换算法LRU(最近最少使用):贴合时间局部性,淘汰最久不用的数据(Redis、JVM 缓存、操作系统页缓存全在用)。
  • 写直达 / 写回:解决 Cache 与主存数据一致性。

CPU 与指令系统

总线系统

输入输出(I/O)系统

posted @ 2026-03-25 22:16  Huangyien  阅读(11)  评论(0)    收藏  举报