X86和arm的区别

X86架构和arm架构的区别

硬件上的区别

x86 系统中的硬件组件(如声卡、显卡、内存、存储器和 CPU)都是相互独立的。大多数组件都有单独的芯片,称为控制器。我们可以对这些组件进行更改或扩展,而不会影响连接性或整个硬件平台。
ARM 处理器没有单独的 CPU。相反,处理单元与其他硬件控制器位于同一物理载板上,形成一个集成电路。

硬件性能上的区别

X86无论时性能还是生产工艺都是比arm平台上强很多的,arm的优势不在于性能,而是在意于效率,在综合性工作上x86为优势,在任务相对固定的场景就是arm有优势了,这也是两个对于市场上的应用的不同。

硬件上的扩展性

X86是以桥的方式扩展设备链接的,其扩展的便捷性,稳定性以及成本都控制的很好
Arm是通过专用的数据接口让cpu与数据存储等外设连接的,后期难以扩展,属于类似于定好的框架里面填东西。

功耗

X86其要求就是尽可能多的满足不同的市场需求,所以注定了其功耗是不低的
Arm硬件有很强的专业性,功能少,自然消耗也少

指令集的区别

X86是CISC(复杂指令系统计算机)架构(至少981个指令,不开源)
ARM是RISC(精简指令集计算机)架构(50多个指令,半开源)
ARM相比较于X86用了精简指令集,是一个更简单的架构,所以它所需硅面积小,功耗低,适用于移动设备端。X86功耗高,生态好。

软件上的区别

系统的兼容性

X86系统的兼容性不用说很好,很强大
Arm的兼容性基本上就只有linux系统或者说是类unix系统,几乎每一套arm硬件都需要一套新的linux适用的系统去兼容。除了那种系列的硬件架构相对好一点点,但也就是一点点。

软件开发及移植

这个就是属于生态的那种了,同样的道理,其与系统的兼容性是一样的。在arm架构中而且还涉及到了特定的编译链,很麻烦。主要是因为arm不同的硬件就需要不同的编译链就需要不停的编译适用的软件,而x86就有一套很完整的自己的相对稳定的。

启动方式
x86 Linux的启动方式

现代 Intel 芯片含有 Intel Management Engine。一旦上电,先启动 Intel ME。它执行自身的初始化:
读取 BIOS 的 flash 描述符,找到 Intel ME 区
读取代码并设置数据
按下电源键后,RAM中什么也没有,但是ROM中有生产商烧录的BIOS启动块,此时,CPU 启动。在多核系统中,往往先启动一个 CPU(Bootstrap Processor a.k.a BSP)。刚启动时,CPU 进入 16-bit 实模式(默认为16位实模式),指令指针指向 0xffff:0000(CS:IP的复位向量)(CS:IP默认指向0xFFFF0这个地址位置。这个地址即是BIOS启动块的地)。
0xFFFF:0x0000这个地址,是处理器上电之后的第一个重要的物理地址。从地址的书写形式上,就可以看出这是 8086 系统中实模式下的段寻址方式:段地址 * 16 + 偏移量。
段地址:0xFFFF
偏移地址:0x0000
计算得到物理地址:0xFFFF0(CPU reset之后CS的只为0xF000,IP的只为0xFFF0,算法同样是CS左移4位+IP,计算出的物理地址也是0xFFFF0)
0xf_fff0 作为 CPU 复位地址,指向 boot ROM 的 BIOS 区。BIOS 区中的固件被称为启动固件,例如 UEFI 实现,legacy 实现。
启动固件要做的第一件事是切换到保护模式,,开启分段并区分分段权限。然而启动固件仅包含一个段,被称为 flat mode。

arm linux的启动方式

在cpu reset之后,pc会指向reset vector (地址位于0x00000000 or 0xFFFF0000),此时的代码需要做以下几件事情:
• 在多核系统中,让非主要核睡眠。
• 初始化异常向量
• 初始化memory,包括MMU
• 初始化不同模式下的栈以及寄存器
• 初始化关键I/O设备
• 针对NEON或VFP做些必要的初始化
• 使能中断
• 改变核心模式或者状态
• 如果需要,做一些必要的安全性配置
• 调用main()函数
系统刚上电时, 硬件相关的启动代码从flash或者ROM中执行。这部分代码负责初始化系统,包括一些必要的外设,然后启动bootloader,并且初始化主存,把内核镜像拷贝到主存储器中(从flash设备,板上内存,MMC,主机PC或者别的什么地方)。bootloader接着把特定的参数传给内核,然后Linux内核自解压,初始化数据结构,执行用户进程。
bootloader在内核启动前做一些初始化工作,有时候也不是必须的
• 初始化内存系统以及一些外设
• 把内核镜像加载到内存中适当的位置(也可能是一个ram disk)
• 产生传给内核的启动参数(包括机器类型码)
• 配置好一个终端
• 进入内核

启动方式不同的总结:所以可以看到硬件上来说物理地址的启动位置也是不一样,包括整个过程中调用的对应程序也不一样,相对来说x86更为复杂一些(BIOS->GRUB->kernel->rootfs),arm来讲更为简单一些(bootloader->kernel->rootfs)

  • 27
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值