zoukankan      html  css  js  c++  java
  • [Linux]CPU架构/指令集:arm | amd | X86/i386 | aarch64

    1 前言

    本文是解决在软件开发、软件交付过程中,常常需要找寻与服务器硬件的CPU架构适配的软件包时,开发者和交付者又时常摸不着头脑、【迷迷糊糊】地就下载了某个所谓“适配”、“兼容”的各种软件包。那么,我们真的get到了背后的原因,这一层面了吗?

    正本清源,方能以更高de效率去理解、学习基于此的上层知识模块,降低开发风险、提高工作效率。

    (扯远啦~ 赶紧一把回来!那么,先从CPU架构说起叭↓↓↓)

    <一>
    CPU执行计算任务时都需要遵从一定的规范,程序在被执行前都需要先翻译为CPU可理解的语言。
    这种规范或语言就是【指令集】(ISA,Instruction Set Architecture)。
    程序被按照某种指令集的规范翻译为CPU可识别的底层代码的过程叫做【编译】(compile)。
    x86、ARM v8、MIPS都是指令集的代号。
    指令集可被扩展,如x86增加64位支持就有了x86-64。
    厂商开发兼容某种指令集的CPU需要指令集专利持有者授权,典型的例如:Intel授权AMD,使后者可开发兼容x86指令集的CPU。

    <二>
    所有软件的程序运行,最终都需执行CPU内部的指令集来完成。
    而这些CPU指令集的设计理念,主要分为2类:精简指令集(RISC)、复杂指令集(CISC)。

    发展到今天,CPU制造商,也并非就仅制造一类的指令集,甚至可能是制造融合了两种指令集设计理念的处理器。
    例如,安腾Itanium(开发代号即Merced):采用了EPIC(ExplicitlyParallelInstructionComputers,精确并行指令计算机)技术的IA-64系列处理器.
    
    还例如,这样的情况,苹果的A11等处理器、高通的处理器:2家企业并无真正的CPU架构研发能力,而是基于ARM的64位芯片做的部分定制化修改。
    
    因此,还得具体情况具体分析,切莫生搬硬套。
    

    Linux下,查看主机的硬件架构
    lscpu

    2 X86架构: IA-32 / AMD64 / Intel64

    x86(架构):泛指一系列由Intel公司开发的CPU处理器的架构。最早为1978年面世的“Intel 8086”CPU。
    早期的处理器均是以此格式来命名,如Intel 8086,80186,80286,80386,80486,这些架构被统称为x86。
    由于数字不能被注册成为商标;因此,公司每当有新的处理器使用,均会采用可注册的名称,如: Pentium。

    • 基于x86的32位架构(常被称为i386,x86),IA-32。

    • 基于x86的64位架构,x86-64常称为AMD64或Intel64。
      最早是由AMD公司,首先根据x86的架构生产出了64位的处理器,但是由于是竞争关系,Intel公司不愿意承认AMD64,近些年才推出了Intel64。

    2.1 AMD

    CPU与GPU

    AMD(Advanced Micro Devices, (美国)超威半导体):;是除了Intel以外,最大的【x86架构微处理器(CPU)】供应商;也是除了NVIDIA以外,仅有的【独立图形处理器(显卡/GPU)】供应商。

    3 ARM

    ARM(Advanced RISC Machine,Acorn RISC Machine)也是1个CPU架构;非常适用于【移动通信】,这种低成本,高性能,低耗电的领域。
    ARM的公司:安谋控股(ARM Holding plc),又称:ARM公司;总部位于剑桥的设计与软件公司,现已被日本的软银公司收购,后者同时也是国内互联网巨头阿里巴巴的最大股东。

    3.1 AArch64

    AArch64是ARMv8的一种执行状态。

    4 文献

    4.1 参考
    4.2 推荐
    # 查看CPU支持的指令集
    root# cat /proc/cpuinfo
    root# gcc -march=native -Q --help=target|grep march
    
    # 查看CPU信息(硬件架构等)
    root# lscpu
    
  • 相关阅读:
    30天敏捷结果(17):找出高效时间,并利用它来处理重要事情
    需求:需求获取技术之 观察
    30天敏捷结果(13):如何对事情付诸行动
    2010年11月blog汇总:敏捷练习、需求和建模
    MDSF:Eclipse MDD Day学习
    需求:结合TOGAF做好需求获取工作
    MDSF:架构工具简要功能说明
    信息系统开发平台OpenExpressApp:【OpenTest】 之 框架实现说明
    吃:第二次去吃香草香草
    30天敏捷生活(911):调整30天的节奏
  • 原文地址:https://www.cnblogs.com/johnnyzen/p/13224632.html
Copyright © 2011-2022 走看看