64位CPU/OS简史
https://www.expreview.com/77702.html
1960年代64位的CPU就已用在超级计算机上,到了1990年代64位处理器开始应用于工作站与服务器,个人电脑是在AMD 2003年推出速龙64后才开始渐渐普及,而手机上用的64位处理器ARMv8-A架构是2011年发布的。
CPU位宽指的是CPU能方便地处理的最大的二进制位数,如8086 CPU是16位的,可以一次处理2个字节(16个bit),80386 CPU是32位,能一次处理4个字节,目前的CPU基本上64位的了,一次能处理8个字节。
算数
16位:sizeof(int) = sizeof(short) = 2; sizeof(long) = 4; AX, BX寄存器都是16位。DX:AX两个拼起来放32位
32位:sizeof(int) = sizeof(long) = 4; EAX等寄存器32位
64位:sizeof(int) = 4; sizeof(long) = 8; RAX等寄存器64位
地址
8086用段寄存器+段内偏移量可访问20位地址 (1MB),指针void*还分near和far.
- near, far, wherever you are?
80286首先用在IBM AT上,再加上某个寄存器的某位,实模式下可访问1MB以上的内存。比如该位为0时1MB以下,为1时视为addr + 1MB
奔腾MMX处理器所引入的MMX指令集开创了x86处理器支持SIMD操作的先河,该指令集定义了8个64位的浮点向量两用寄存器,而奔腾MMX本身只是个32位处理器。
MMX技术借用了处理器的浮点单元(FPU)的80位寄存器中的低64位作为其MMX寄存器(MM0至MM7)。由于这些寄存器是共享资源,如果在MMX操作后不进行清理,后续的浮点运算就可能因寄存器状态混乱而得到错误的结果。emms指令的作用清空这些MMX寄存器,使其恢复到可供浮点运算正常使用的初始状态。因此,在包含MMX指令的代码段末尾,需要使用emms指令来复位寄存器。从SSE起不再需要这样做。
奔腾MMX的最大意义是可以软解VCD. 看352x288分辨率的机器,能买1平米房子:2000多。现在花10万买个能看8K视频的?不是8K 100寸电视,仅仅是播放器。
目前CPU内部最大的是AVX-512指令集所用的512位寄存器(64个字节)。
Physical Address Extensions (PAE) is a feature that allows 32-bit processors to access a physical address space larger than 4 gigabytes.
64位CPU的地址总线位宽一般采用的是36位或者40位,它们寻址的物理地址空间为64GB或者1T。
虚拟地址经过段页式转换成为物理地址。虚拟地址可以有洞不连续,比如从0开始一块,从2^64-1向下一块。
Windows 7 32位只能识别4GB内存,但同为32位的Windows Server 2003/2008却可用使用4GB以上的内存,因为它们支持PAE物理地址扩展技术。
Windows 7 32位通常保留约768MB的地址空间用于硬件映射(如显卡显存),因此实际可用内存约为4GB减去保留空间,即3.25GB左右。不同硬件配置下,保留空间大小可能略有差异,导致可用内存可能在3.2GB至3.5GB之间浮动。
PAE除了CPU自身支持之外,还需要芯片组、主板还有操作系统的支持才行,比如一些旧主板就不支持大于4GB物理内存,而微软也没有把PAE功能开放到32位的家用操作系统中,即使是Windows Server系统,如果不是企业版的也没有开放PAE功能。32位版的系统可通过破解开启以支持4GB以上内存。
我拿着自己6GB内存的手机陷入了沉思:
- 现在12/16 GB内存的手机,都比我手里的重,旧手机坏了后买不到轻的咋办
- 8G内存的电脑会不会有意见。 10万词2MB,猴年马月能整理完
- 以前还root手机,现在豌豆荚之类的网站好像都不行了吧
- Long live 下载的1000多集象棋视频

浙公网安备 33010602011771号