处理器架构就是处理器的硬件架构,称为微架构。是一堆硬件电路,去实现指令集所规定的操作运算。
是的,指令集决定了处理器的架构,因为处理器架构就是用硬件电路实现指令集。但是具体用什么样的处理器架构,设计怎样的硬件电路,每个人设计的都可以不一样。
英特尔80386SX 【32位 但16位数据总线】
80386SX是80386DX芯片的“精简”版本。它只使用16位数据总线,外部总线宽度与80286相同。它也只能处理16 MB内存,如80286.事实上,386芯片的SX版本在DX之后很好地发布了,在某些方面,它旨在使市场远离286,因为它具有大致相同的接口但性能更好。它实际上是 在DX之后几年推出的。
注意: 80386SX可以代替286主板中的80286,这是一个常见的神话。虽然芯片在外部接口方面是兼容的,但它们使用不同的封装。如果使用适当的适配器,可以将386SX放入286主板。
与同等速度的386DX相比,386SX较窄的数据总线宽度使性能降低约20-25%; 有显着差异但不过分。80386SX芯片是第一款小型笔记本电脑的热门选择,特别是386SL型号为英特尔系列引入了SMM电源管理功能。386SX内部仍然是一个32位处理器,将运行32位软件(非常慢:^))。它的速度范围为16至33 MHz; 没有为SX生产40 MHz版本,也可以从AMD和Cyrix的克隆版本中获得。
如今,386SX芯片已被淘汰。
计算机中的位数指的是CPU一次(即一个时钟周期内)能处理的最大位数(数据数量),这和CPU中寄存器的位数对应。
古老的故事中:处理器对内存的最小寻址单位是字节,
记得intel的8086芯片,是16位的,但当时intel工程师给这处理器配置了20位的地址总线(用段:偏移量 这种方式寻址),使得处理器可以访问1048576字节的地址。
CPU为了实现其功能一般设计了指令集,即是CPU的全部指令,这就是机器语言。计算机的所有功能都是基于CPU的指令集。指令集和CPU的位数是有联系 的。如Intel 8086 CPU 是16位,其指令集也是16位。如Intel 80386DX CPU 是32位,其指令集也是32位,但它也保持原16位指令集,这是为了向上兼容。
操作系统的位数是说其所依赖的指令集的位数。
计算机系统一般都应有向上兼容性,所以也可有64位CPU上运行32位操作系统、32位CPU上运行16位操作系统的情况。
操作系统位数应该是根据指针类型的位数来定的。整数类型不一定跟位数相等,CPU位数准确地说应该是CPU一次能够并行处理的数据宽度,一般就是指数据总线宽度。
从计算机硬件层面来看, CPU位数指的是一个时钟周期内CPU同时寄存和处理的二进制位数。对于CPU位数有如下关系:CPU位数 = CPU中寄存器的位数 = CPU一次并行处理的数据宽度。CPU位数越多,则寻址位数越多,处理能力就越强。
从计算机软件层面来看, 操作系统位数的概念是基于CPU的位数的,且操作系统的位数是依赖于指令集的位数的。一般,操作系统位数有如下关系:操作系统位数 = 其所依赖的指令集位数 <= CPU位数
32位计算机的CPU一次最多能处理32位数据,例如它的EAX寄存器就是32位的,当然32位计算机通常也可以处理16位和8位数据。
需要注意的是,(a)、32位CPU只能安装32位操作系统,32位操作系统支持的内存最多为2的32次方,就是4G,在windows 32位操作系统中最大只识别3.25-3.75之间,根据windows版本不同而不同。(b)、64位CPU可以安装32位操作系统,也可以安装64位操作系统。64位操作系统的寻址能力就是2的64次方,即理论上是17179869184G,实际中是不可能用到这么大的内存,目前64位windows系统最大只支持128G,而当前主流主板只能加到16G。。现在软件兼容性已基本没有任何问题,如果计算机安装内存超过4G,比如到6G或更多,就必须考虑安装64位操作系统,不然发挥不出硬件的所有性能,如内存相当于白装了。64位系统向下兼容32位软件,64位系统是今后发展的方向。
字长
字长并非一个十分严格的概念。在一个 CPU 指令集中,每条指令都可以处理长度不同的操作数。这时就把大多数指令能处理的最长长度但是又不花费额外周期的操作数长度称为字长。比如说,大多数指令都能处理 8 位,16 位,32 位数据,但是处理 32 位数据要花费更多的时钟周期,而处理 8 位和 16 位的时间一样,那么就称字长是 16 位。
其实,CPU 指令集众多,各种例外是难免的。比如,8088 处理 16 位操作数的时候,只要不涉及主内存(只是立即数或者寄存器)就不花费额外周期,否则花费额外周期。所以称为准 16 位。再比如,如今的支持 SSE 指令集的 CPU,所称的字长从历史角度考虑,根本就没把 SSE 这种单指令多数据的情况算进去。
而且,字长还经常会从地址总线宽度,数据总线宽度这类概念借用过来。总之,说 64-bit CPU,32-bit CPU 的时候,明白自己指什么就好,不必拘泥于字长这个概念。
参考:
https://www.zhihu.com/question/20536161/answer/15410344