X86和arm的区别

这篇具有很好参考价值的文章主要介绍了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)文章来源地址https://www.toymoban.com/news/detail-769072.html

到了这里,关于X86和arm的区别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 什么是RISC-V?以及RISC-V和ARM、X86的区别

    RISC-V 是基于 RISC 精简指令集架构开发的一个开放式指令集架构,它是由加州大学伯克利分校的计算机科学教授 Krste Asanovic (克里斯蒂安·阿萨诺维奇)领导的团队开发,RISC-V是 开放 的,任何人都可以使用它来开发处理器芯片和其他硬件,而无需支付任何许可或使用费用。

    2024年02月15日
    浏览(9)
  • 查看自己电脑是arm还是x64(x86);linux操作系统识别

    查看自己电脑是arm还是x64(x86);linux操作系统识别

    参考: https://liuweiqing.blog.csdn.net/article/details/131783851 如果输出是 x86_64,那么你的系统是 64 位的 x86 架构(通常我们称之为 x64)。如果输出是 armv7l 或者以 arm 开头的其他值,那么你的系统是 ARM 架构 参考:https://baijiahao.baidu.com/s?id=1776431676006020220wfr=spiderfor=pc 1、电脑详细关于

    2024年02月21日
    浏览(21)
  • CentOS(4)——关于Linux软件下载时:amd64、x86、x86_64、arm64 的说明

    目录 一、简介 二、常见的CPU架构 三、Linux查看CPU架构命令 ①arch命令 ②uname -a 命令 ③lscpu 在安装GitLab Runner的时候,去清华源下载RPM包时发现同一个软件有许多不同架构的安装包,常见的有amd64、x86、x86_64、arm64这些架构,这就类似于Windows下安装软件需要区分32bit和64bit。在

    2024年02月03日
    浏览(14)
  • linux上构建任意版本的rocketmq多架构x86 arm镜像——筑梦之路

    目前市面上和官方均只有rocketmq x86架构下的docker镜像,而随着国产化和信创适配的需求越来越多,显然现有的x86架构下的docker镜像不能满足多样化的需求,因此我们需要根据官方发布的版本制作满足需求的多架构镜像,以在不同cpu架构下部署使用。  rocketmq官方网站:RocketM

    2024年02月08日
    浏览(7)
  • Linux 利用 qemu-system-aarch64 实现 x86 机器安装 arm64 的操作系统

    Linux 利用 qemu-system-aarch64 实现 x86 机器安装 arm64 的操作系统

    qemu-system-aarch64 启动的虚拟机,无法受到 kvm 的管理,也无法在后台运行 终端一旦断开了,虚拟机就被关掉了,想再次进入目前没找到方法,都会回到安装操作系统的步骤 可能是 centos 有某些特殊性吧,暂时没太多时间研究,后期有时间了再看看有没有解决的方案 qemu-5.2.0 和

    2024年02月06日
    浏览(10)
  • Linux操作系统下Docker和Docker Compose的安装教程(包含x86和arm64平台离线一键安装资源包)

    本文章将详细介绍Linux下Docker和Docker Compose的安装教程。 目录3为x86和arm64平台Docker离线安装资源包,包含Docker Compose、一键安装脚本使用教程。 相关文章参考: Docker常用基础命令 Docker批量清理删除镜像和容器常用命令 版本如下 名称 版本 CentOS 7.6+ openEuler等其他操作系统可以使

    2024年02月06日
    浏览(8)
  • x86 平台运行 arm 的方法

    参考: https://github.com/multiarch/qemu-user-static 核心是使用 binfmt_misc 设定运行 arm 的默认程序为 qemu-aarch64-static 1.先下载 arm64 即 aarch64 的运行文件 2.设置默认打开方式, 即设置 binfmt_misc 以支持 arm64 程序的运行 # --reset 会删除同名条目后重新设置 3.测试 4.不用映射qemu-*-static也可以使用

    2024年02月12日
    浏览(5)
  • X86、X64和ARM

    X86架构和X64架构(也称为x86-64、AMD64或Intel 64)都是计算机处理器架构的名称,它们都属于x86家族的一部分。 这些架构主要用于描述计算机中处理器的指令集和寻址能力。   X86指的是支持32位的指令集架构处理器, 最初由英特尔在1978年发布的 intel 8086,这个系统主要为X86结尾

    2024年02月15日
    浏览(11)
  • ARM和X86、X86和X64、Intel和AMD、CPU和GPU介绍

    ARM和X86、X86和X64、Intel和AMD、CPU和GPU介绍

    X86 和 ARM 都是CPU设计的一个架构。X86 用的是复杂指令集。ARM用的是精简指令集。 指令集其实就是机器码,机器码上是汇编,汇编之上是程序语言例如java、c、c#。 复杂指令集是在硬件层面上设计了很多指令,所以编程会简单些。 精简指令集是在硬件层面上设计的指令比较少

    2024年02月04日
    浏览(4)
  • windows-x86使用qemu打开x86和arm虚拟机

    windows-x86使用qemu打开x86和arm虚拟机

     下载固件(UEFI固件镜像文件,BIOS的替代方案) ) 使用cmd执行qemu命令,配置好环境变量比较方便 准备好一个x86的镜像或者arm的镜像,格式可以为qcow2 打开cmd,执行命令 x86 arm 注:上面字段含义  -m 8192 : 分配8GB内存  -cpu cortex-a72 : 虚拟CPU为ARM Cortex-A72 -smp 8,sockets=4,cores=2 : 虚

    2024年02月16日
    浏览(10)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包