代码改变世界

CPU知识

2013-01-14 11:47  轩脉刃  阅读(2940)  评论(2编辑  收藏  举报

CPU的指令集是什么

指令集是底层软件与硬件交互的语言。一台计算机的全部指令称为该计算机的指令集。

现在的常见的指令集有:

MIPS指令集

ARM指令集

Intel x86指令集

 

指令集有两种形式,一种是人类可以编程书写的形式(也就是平时所说的汇编语言),另一种是计算机所能识别的形式(就是汇编语言对应计算机的机器语言)。

下面是一个典型的MIPS汇编语言:

add $s1,$s2,$3

汇编语言和高级语言不一样,变量不能任意指定,它只能操作寄存器中的变量,寄存器的个数在计算机中是有限制的,一般是32个。不同的指令集按照寄存器的顺序给他们排列编号0,1,2... 并且用$号来表示寄存器。比如MIPS是使用$s0-$s7表示寄存器16-23,$t0-$t7表示寄存器8-15。

寄存器的长度

寄存器一个字的长度有32和64,由于寄存器是CPU一次运算执行的变量单元,因此我们说的32位机器和64位机器最本质的区别就在于寄存器字的长度是32还是64。

寄存器中存的可能是值,也可能是一个地址。

什么是程序计数器(PC)

储存当前程序运行指令的寄存器就是程序计数器。

指令集的寻址方式

其实就是说如何根据寄存器找到一个值。比如MIPS的PC相对寻址,就是说要获取的值的地址是PC(程序计数器)的值与指令中常数的和。

CPU架构

CPU架构指的是全套CPU的机制,包括用什么CPU指令集,用什么寄存器,有什么寻址方式。一般一种指令集对应一种CPU架构。

ARM指令集

ARM指令集是在嵌入式设备中最常用到的指令集,像苹果和三星的移动设备都是使用这个ARM 架构。

Intel X86指令集

这个是PC中最常用到的指令集了,比如平常说的Intel 8086是第一款寄存器为16位长的体系结构。Intel 80386是第一款寄存器为32位长的指令集。

AMD64 指令集

AMD64是64位的。由AMD公司开发。更多用于服务器上。其后也为Intel所采用,称为Intel X86-64

具体产品

举具体产品的例子,iphone4使用的cpu是苹果A4处理器,iphone5使用的是苹果A5处理器,这两个实质上都是ARM架构。三星应用在智能手机和平板电脑上的Exynos处理器也是基于ARM架构的,由自家公司研发改造的。

Intel公司生产的所有CPU都兼容x86指令集,只不过后来它开发出了很多扩展指令集,比如酷睿系列i3/5/7就支持Intel avx扩展指令集,MMX(多媒体扩展指令集)。

比如戴尔的Inspiron笔记本电脑系列多使用AMD的CPU架构。

go中的5g/6g/8g

go编译器支持三种指令集:

amd64(即Intel x86-64或AMD64): 6g,最成熟的实现

386(即Intel X86-32) : 8g,是amd64到386机器的完美移植

arm: 5g,所以说go本质是支持在移动终端的开发

5g, 5l, 5c, 5a 分别表示 arm的go编译器,链接器,c编译器,汇编编译器