CPU寄存器
下面都是扯淡,当玩笑看看就是了。
X86架构通用寄存器只有16个,其余为不可直接操作寄存器。在叙述寄存器单元之前,我们先将CPU内部分为三大块:
控制单元
程序计数器 PC(Program Counter)、指令寄存器 IR(Instruction Register)、指令译码器 ID(Instruction Decoder)和操作控制器 OC(Operation Controller)。
运算逻辑单元
算术运算与逻辑运算,进行加减乘除基础运算与位移运算。
储存单元
包含寄存器,片内缓存L1~L4,其中L1分为数据缓存与指令缓存,L4主要在Iris上以eDRAM的形式存在。
状态寄存器0
字长 | 通用寄存器 | 指针寄存器 | 索引寄存器 | 区段寄存器 | 标志寄存器 |
---|---|---|---|---|---|
16 Bits | AX BX CX DX | BP SP IP | SI DI | CS DS SS ES | FLAGS |
32 Bits | EAX EBX ECX EDX | EBP ESP EIP | ESI EDI | CS DS SS ES FS GS | EFLAGS |
64 Bits | RAX RBX RCX RDX R8~R15 | RBP RSP RIP | RSI RDI | CS DS SS ES FS GS | RFLAGS |
- AX BX CX DX 可分为高八位与低八位,例AH(High),BL(Low),寄存器之间的长度必须相同才可进行运算。
- BP —— Base Pointer(基址指针),SP —— Stack Pointer (堆栈指针),标记Stack基准和移动的指针,BP指示函数开始地址,SP指向最新的元素地址。
- 指针寄存器IP记录下一条指令的偏移地址。
- 指针寄存器SI DI指向数组内部。
- 区段寄存器CS DS SS ES 产生储存器的绝对地址。
- 标记寄存器FLAGS标志零位,奇偶,符号,进位等。
- EAX EBX ECX EDX 低16位与AX BX CX DX相兼容。
- R8~R15为X64新增通用寄存器。
指令集专用寄存器
(我的CPU为i7-6700HQ : X86,X86-64,MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2,VT-x, AVX, AVX2, FMA3, AES,TSX)
MM —— MMX(Matrix Math eXtensions,矩阵数学扩展)指令集使用,SIMD(单指令多数据(Single Instruction Multiple Data))多媒体指令集,意在提高多媒体处理能力。
XMM —— SSE(Streaming SIMD Extensions,单一指令多数据流扩展)指令集使用,MMX继任,主要用于提高数学运算性能。
YMM ZMM —— AVX (Advanced Vector Extensions,高级向量扩展指令集)指令集使用,作为AVX继任,将XMM寄存器扩展到YMM乃至512 Bits的ZMM。
VT-x指令集主要用于硬件虚拟化操作,AES指令集主要用于提高系统加解密速度,FMA为AVX指令集子集,用来提高特定运算场景运算速度。
系统专用寄存器:
CR —— Control Register(控制寄存器)
DR —— Debug Register(调试寄存器)
TR —— Test Register(测试寄存器)
改动此类寄存器需要Ring 0级别的权限,所以我称之为操作系统专用寄存器。
二十一世纪二十年代第一天,莫有啥好说的。
本文标题:CPU寄存器
文章作者:Raincorn
发布时间:2020-01-01
最后更新:2020-07-28
原始链接:https://blog.raincorn.top/2020/01/01/CPU_Regs/
版权声明:本文采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可