资讯动态

JAVA进阶—计算机原理篇

发布时间:2026/10/27 10:16:03 来源:尧图企业网站定制
CPUCPU核心结构ALUArithmetic Logic Unit算术逻辑单元‌的缩写也叫‌运算器‌专门负责执行算术运算和逻辑运算。Registers寄存器临时存储单元‌用来暂存指令、数据和地址。寄存器根据用途可以分为通用寄存器如 AX、BX、R0、R1 等主要放操作数、中间结果专用寄存器如 PC、IR、SP、PSW 等。其中比较重要的有程序计数器 PC存放下一条要执行指令的地址。指令寄存器 IR存放当前正在执行的指令。栈指针 SP、链接寄存器 LR帮助管理函数调用、返回、参数传递和现场保存。CUControl Unit控制单元的缩写也叫控制器它是逻辑功能上独立但不是像内存条那样可单独插拔的独立芯片。现代 CPU 中控制单元往往和流水线控制、微码 ROM、分支预测等电路融合在一起物理上不一定是一个清晰的“单独盒子”。CPU执行指令细节CPU 执行一条指令通常经过以下几个阶段1. 取指PC程序计数器存放“下一条指令的地址”。CPU 把 PC 的内容送到MAR地址寄存器再通过地址总线去内存取指令。内存把指令送回MDR数据寄存器再送入IR指令寄存器。PC 自动增加指向下一条指令如果遇到跳转PC 被修改为目标地址。2. 译码控制单元读取 IR 中的指令分析要做什么比如加法、加载、存储、跳转。控制单元产生控制信号指挥 ALU、寄存器文件和内存接口工作。3. 执行如果是算术/逻辑指令比如ADD R1, R2, R3从寄存器文件读出 R2、R3 的值送入 ALU 运算结果写回 R1同时更新标志寄存器如零标志、进位标志、溢出标志。如果是访存指令就进入“访存”阶段。4. 访存LOAD从内存读数据到寄存器。STORE把寄存器里的数据写入内存。5. 写回把运算结果或读出的数据写回寄存器。如果是存储指令则写回内存。所以寄存器是 CPU 执行指令时的“临时工作台”PC 管流程IR 管当前指令通用寄存器管操作数和结果标志寄存器管状态MAR/MDR 管与内存交换地址和数据。CPU操作内存细节CPU 不能直接“伸手”改内存它通过三组总线与内存交互地址总线CPU 告诉内存要访问哪个地址。数据总线在 CPU 和内存之间传数据。控制总线CPU 发出读/写信号告诉内存是读还是写。读内存过程例如LOAD R1, [1000]CPU 把地址1000放入 MARMAR 把地址送到地址总线控制单元发出“读”信号内存找到地址1000的内容放到数据总线数据进入 MDR再写入寄存器 R1。写内存过程例如STORE [1000], R1CPU 把地址1000放入 MAR把 R1 的值放入 MDR控制单元发出“写”信号内存把数据总线上来的值写入地址1000。因此CPU 操作内存的基本模式就是地址送 MAR → 控制总线发读写信号 → 数据经 MDR 进出内存。现代 CPU 为了更快还加入了缓存 L1/L2/L3CPU 先查缓存未命中才访问内存。MMU/TLB把虚拟地址转换成物理地址。流水线取指、译码、执行、访存、写回重叠进行。乱序执行、寄存器重命名提高并行度。多核缓存一致性保证多个核心看到一致的内存数据。但无论多复杂基本逻辑不变CPU 用寄存器做最快的工作台用总线访问内存把数据搬到寄存器里运算再写回内存。内存计算机内存的结构“内存”通常有两种含义广义内存层次寄存器 → L1/L2/L3 缓存 → 主存 → SSD/硬盘。狭义内存主存也就是内存条通常是 DRAM。这里重点说主存。1. 逻辑结构线性地址空间从程序员和 CPU 的角度看内存像一个巨大的线性数组地址 0x0000: 1 字节 地址 0x0001: 1 字节 地址 0x0002: 1 字节 ... 地址 0xFFFF: 1 字节每个存储单元有一个唯一地址。现代计算机通常按字节编址一个地址对应 1 个字节8 位。CPU 访问内存时地址总线送出地址控制总线发出读/写信号数据总线传输数据。2. 物理结构DRAM 存储阵列内存条由多块 DRAM 芯片组成。每块 DRAM 内部有存储阵列行和列交叉排列的存储单元行解码器、列解码器根据地址选中某个单元灵敏放大器读出微弱电荷信号并放大行缓冲器暂存一整行数据刷新电路定期刷新电容电荷。地址通常分两次送入先送行地址触发 RAS再送列地址触发 CAS。然后选中某个存储单元进行读写。3. SRAM 与 DRAM类型存储原理特点用途SRAM双稳态触发器快、贵、不需刷新CPU 缓存DRAM电容电荷慢一些、便宜、需刷新主存主存用 DRAM因为容量大、成本低缓存用 SRAM因为速度极快。内存如何存储数据1. 一切以二进制位存储内存中最基本的单位是bit位只能表示 0 或 1。DRAM用电容是否带电表示 0/1SRAM用触发器电路的两个稳定状态表示 0/1。多个 bit 组成一个字节1 Byte 8 bit例如字符A的 ASCII 码是 65二进制是0100 0001它在内存中占 1 个字节地址假设为0x1000那么该地址的内容就是0100 0001。2. 多字节数据如何存放一个整数、浮点数通常占多个字节。比如 32 位整数占 4 字节。这 4 个字节在内存中有顺序问题这就是大端序和小端序大端高位字节放在低地址小端低位字节放在低地址。x86 和 ARM 通常用小端序。例如0x12345678存放在地址0x1000小端78 56 34 12大端12 34 56 783. DRAM 需要刷新DRAM 用电容存电荷电荷会漏掉。所以内存控制器必须定期把数据读出再写回这叫刷新。这也是 DRAM 叫“动态”的原因。4. 读写过程读CPU 把地址送上地址总线内存选中对应行和列灵敏放大器读出电荷数据经数据总线送回 CPU。写CPU 送地址CPU 送数据控制总线发出写信号内存把电荷写入对应电容。三、数据大小如何计算1. 基本单位单位含义bit位0 或 1Byte字节1 Byte 8 bitWord字通常等于 CPU 字长如 32 位、64 位KiB1 KiB 1024 ByteMiB1 MiB 1024 KiBGiB1 GiB 1024 MiBTiB1 TiB 1024 GiB注意内存和操作系统常用二进制1 KB 有时指 1024 B严格叫 KiB。硬盘厂商标称常用十进制1 GB 1000 MB 10^9 B。所以 8 GB 内存条在系统中显示约 7.45 GiB这是换算差异。2. 地址空间计算如果地址总线有n 位能表示的地址数量是2^n如果按字节编址则最大寻址空间为2^n 字节例子32 位地址总线2^32 B 4,294,967,296 B 4 GiB64 位地址总线2^64 B 16 EiB实际 CPU 不会全用。3. 内存容量计算内存容量 存储单元数 × 每个单元位数。若按字节编址容量 2^地址线数 × 1 字节若按字编址每个地址对应一个字容量 2^地址线数 × 字长例如20 根地址线按字节编址2^20 B 1 MiB20 根地址线按 32 位字编址2^20 × 4 B 4 MiB

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑