ARM处理器概述

RISC处理器和CISC处理器

首先了解一下两种处理器名字:
RISC(Reduced Instruction Set Computer):精简指令集处理器

与之相对应的是:
CISC(Complex Instruction Set Computer):复杂指令集处理器

顾名思义,RISC比CISC更加简单,那么对于处理器来说什么能称为简单呢?可以联想为生活中可以摸得着的物体相对另一种物体而言比较简单,他们可以用结构来比较。那么对于处理器或者是物体,结构简单就能代指处理器简单。

那么能不能用大小来做比较?比如生活中的物体比较大,所以它更为复杂。OK,那么真的是这样吗?对于一本书和一部手机而言,书要比手机大,但是他们这两种物体,明显是手机内部结构更为复杂,所以要想比较物质两者之间的复杂程度,可以通过看他们内部结构,而不是看他们的大小。

那么他们两种处理器在硬件中的区别是什么?

RISC处理器:

  • 只保留了简单指令,硬件结构简单,复杂操作一般通过简单指令的组合实现,一般指令长度固定,且多为单周期
  • RISC处理器在功耗、体积、价格等方面有很大优势,多用于嵌入式领域,手机等移动终端。

CISC处理器:

  • 不仅包含了常用指令,还包含了很多不常用指令,硬件结构复杂,指令条数较多,一般质量长度不稳定,周期也不固定
  • CISC处理器在性能上有很大的优势,多用于PC端或服务器等大型终端。

我们打个比方,一个CPU里面有很多种运算方法,比如加、减、乘、除、微分、积分等等

那么随着CPU的用于计算的使用不断提高,CPU里面的运算方法越来越多,虽然,可以提高CPU的效率,但是有更多负面的影响,比如功耗高、价格昂贵。没有做出任何措施,把所有想用的全都放进CPU的就是CISC,里面的结构会越来越复杂。反之,我们只将重要的、最为基本的放进CPU,而那些复杂的方法就通过简单的结构进行转化,例如2^2,直接用乘法运算2*2,即为RISC。

所以对于硬件来说也是一样,我们想使用越来越多的硬件结构来实现我们的目的,RISC处理器就使主要的结构放进去,而一些复杂的丢掉,要使用的时候再用简易结构转换。

RISC记住是精简指令集,那么在RISC中,100%的内存可能只利用了20%,而在CISC中,100%的内存可能用了80%。那么CISC的利用率就大,性能就很好,但是价格也贵的离谱了。

ARM和RISC、CISC的关系

ARM是一种基于RISC设计理念的处理器架构,因此可以将ARM视为一种RISC处理器。ARM架构最初由一家英国公司ARM Holdings开发,并已经成为一种广泛应用于移动设备、嵌入式系统、网络设备等领域的处理器架构。ARM处理器的设计理念是简单高效,具有低功耗高性能可扩展性等优点。

ARM和芯片的关系

ARM是一种基于RISC设计理念的处理器架构,各种芯片制造商可以基于ARM架构设计和生产处理器芯片。ARM Holdings是ARM架构的知识产权持有者,他们不直接生产芯片,而是授权给其他芯片制造商使用ARM处理器架构来设计和生产芯片。

ARM公司生产出来ARM处理器,但是芯片里面不止ARM处理器这一样东西,Inter等公司买到ARM处理器后还要对其进行加工、添加等自己的工具,例如ROM、RAM或者USB等,然后再将它们封装成一个芯片(SOC)。所以芯片不等于ARM

SOC(System on Chip)

SOC:片上系统,将一个系统中所需要的所有部件全部集成到芯片中,在体积、功耗、价格上有很大的优势。(芯片的一种)

ARM指令集介绍

指令集:

  • 处理器能够识别和执行的指令的集合
  • 不同的处理器架构支持不同的指令集
  • 指令集是处理器对开发者提供的接口

大多数的ARM处理器都支持两种指令集

ARM指令集:

  • 所有指令(机器码)都占用32bit存储空间
  • 代码灵活度高,简化了 解码复杂度
  • 执行ARM指令集时PC值每次自增4

Thumb指令集:

  • 所有指令(机器码)都占16bit存储空间
  • 代码密度高,节省存储空间
  • 执行Thumb指令集时PC值每次自增2

学习一种架构方法它的指令集是最重要的,在这里只是简单介绍,以后可能会出ARM指令集。

常见的指令集包括x86指令集、ARM指令集、MIPS指令集等

编译原理介绍

编译原理是将高级程序设计语言转换成计算机能够理解和执行的低级机器语言的技术和方法

例如我写了一个C语言程序在X86处理器上,需要先进行gcc -S编译成为汇编语言,再使用gcc -c将汇编语言转换成机器码,从而在CPU上执行。

总之,编译有三步,①(编译)程序->汇编语言 ②(汇编)汇编语言->机器码 ③(链接)机器码->执行

机器码(二进制)是处理器能够直接识别的语言,不同的机器码代表不同的运算指令,处理器能够识别哪些机器码是由处理器的硬件设计所决定的,不同的处理器机器码不同,所以机器码不可移植

汇编语言是机器码的符号化,即汇编就是用一个符号来代替一条机器码,所以不同处理器的汇编也不一样,所以汇编语言也是不可移植的

C语言在编译时,我们可以使用不同的编译器将C源码编译成不同架构处理器的汇编,所以C语言是可移植的。

你可能感兴趣的:(ARM学习,arm开发)