CPU架构的简介

以下内容源于网络资源的学习与整理,如有侵权请告知删除。

注意,这篇文章是很早前发布的,里面的数据与描述与当下可能不符,仅当常识认知用。

CPU发展至今存在着很多种架构,比如x86架构、ARM架构、MIPS架构、PowerPC架构等。它们可以分为两类,即复杂指令集计算机(CISC,Complex Instruction Set Computer)和精简指令集计算机(RISC,Reduced Instruction Set Computer)。

CISC典型的有 Intel 的 x86 架构,而 RISC 常见的有 IBM 的 PowerPC架构、MIPS 的 MIPS架构、Acorn 的 ARM 架构。

指令集是对CPU架构硬件的抽象,不同架构的CPU会采用不同的指令集,比如x86指令集、MIPS指令集、PowerPC指令集、ARM指令集等。同一种架构的CPU可能有几套指令集,比如ARM架构有32位的ARM指令集和16位的thumb指令集。 

一、x86架构

x86或80x86是英特尔研发的一种微处理器体系结构的泛称。该系列较早期的处理器名称用数字来表示,并以“86”作为结尾,包括Intel 8086、80186、80286、80386以及80486,因此其架构被称为“x86”。

1978年,英特尔公司推出基于x86架构的Intel 8086中央处理器(该处理器是从Intel 8008处理器中发展而来的,而8008则从Intel 4004发展而来)。1981年,8086被IBM PC所选用,从此x86便成为了个人电脑的标准平台,成为有史以来最成功的CPU架构。

在1985年英特尔公司推出32位的80386中央处理器之前,x86架构都维持16位元。在推出32位的80386之后,英尔特陆续推出了一系列基于x86架构的32位的中央处理器。直到2003年,AMD对x86架构发展了64位的扩充,并命名为AMD64。后来英特尔公司也推出了与之兼容的处理器,并命名为Intel 64。两者一般被统称为x86-64或x64,开创了x86的64位时代。

其实英特尔公司早在1990年代就与惠普合作提出了一种用在安腾系列处理器中的独立的64位架构,这种架构被称为IA-64。IA-64是一种崭新的架构,和x86架构完全没有相似性。

如今的PC机基本都是x86架构计算机。如果你想尝试其他架构的计算机,首先要考虑是否放弃Windows系统。不过从 Windows 8 起,微软开始支持ARM架构,也就是说,ARM架构的计算机也可以运行Windows 8以上版本的系统。 

二、ARM架构

ARM,是Advanced RISC Machine的缩写,早期是Acorn RISC Machine的缩写。

ARM架构是一个32位精简指令集中央处理器架构,其广泛地使用在许多嵌入式系统设计。

ARM架构包含了下述RISC特性:

  • 读取/储存架构。
  • 正交指令集(存取指令可以任意的寻址方式存取数据)
  • 大量的16 × 32-bit 寄存器阵列。
  • 固定的32 bits 操作码长度,降低编码数量所产生的耗费,减轻解码和流水线化的负担。
  • 大多均为一个CPU周期执行。

为了补强这种简单的设计方式,相较于同时期的处理器如Intel 80286和Motorola 68020,还多加了一些特殊设计:

  • 大部分指令可以条件式地执行,降低在分支时产生的负重,弥补分支预测器的不足。
  • 算数指令只会在要求时更改条件编码。
  • 32-bit筒型位移器可用来执行大部分的算数指令和寻址计算而不会损失效能。
  • 强大的索引寻址模式。
  • 精简但快速的双优先级中断子系统,具有可切换的暂存器组。

目前,ARM家族拥有32位嵌入式处理器75%的市场比例。从可携式设备(比如移动电话、多媒体播放器、计算机等),到电脑周边设备(比如硬盘、路由器等等),甚至在导弹的弹载计算机等军用设施中,都有ARM处理器的存在。

三、MIPS架构

MIPS,是Microprocessor without Interlocked Pipeline Stages的缩写,中文意思是“无内部互锁流水级的微处理器”。

MIPS架构是一种采取精简指令集的处理器架构,1981年出现,由MIPS科技公司开发并授权,广泛地使用在许多电子产品、网络设备、个人娱乐装置与商业装置上。其机制是尽量利用软件办法避免流水线中的数据相关问题。它最早是在80年代初期由斯坦福(Stanford)大学Hennessy教授领导的研究小组研制出来的。MIPS公司的R系列就是在此基础上开发的RISC工业产品的微处理器。这些系列产品为很多计算机公司采用构成各种工作站和计算机系统。

MIPS是出现最早的商业RISC架构芯片之一。MIPS的系统结构及设计理念比较先进,强调软硬件协同提高性能,同时简化硬件设计。

2002年,中国科学院计算所开始研发龙芯处理器,采用MIPS架构,但未经MIPS公司的授权,遭到侵权的控告。2007年,中国科学院与MIPS公司达成和解,得到正式授权。中国龙芯2和前代产品采用的都是64位MIPS指令架构。过去,MIPS架构的产品多见于工作站领域,索尼PS2游戏机所用的“Emotion Engine”也采用MIPS指令,这些MIPS处理器的性能都非常强劲,而龙芯2也属于这个阵营,在软件方面与上述产品完全兼容。

四、ARM架构与MIPS、X86架构的对比

1、ARM架构与MIPS架构的对比

与当前商业化最成功的ARM架构相比,MIPS的优势主要有以下几点:

  • MIPS支持64bit指令和操作,ARM目前只到32bit 。
  • MIPS有专门的除法器,可以执行除法指令 。
  • MIPS的内核寄存器比ARM多一倍,所以同样的性能下MIPS的功耗会比ARM更低,同样功耗下性能比ARM更高。
  • MIPS指令比ARM稍微多一点,稍微灵活一点。
  • 有观点认为MIPS的bank寄存器性能也要好于ARM,不过没见过能反映出来的测试。
  • 商业上二者差别也大,ARM很昂贵,而且不能随意自行更改内核,而MIPS开放许多。这也是龙芯为不采用ARM架构的原因。

与ARM架构相比,MIPS架构也存在着以下几点不足:

  • MIPS的内存地址起始有问题,这导致了MIPS在内存和cache的支持方面都有限制,现在的MIPS处理器单内核面对高容量内存时有问题。
  • MIPS今后的发展方向是并行线程,类似Intel的超线程,而ARM未来的发展方向是物理多核,目前看来物理多核占优。由此来看,我国的龙芯向多核发展还是颇具远见的。
  • MIPS虽然结构更加简单,但是到现在还是顺序单发射,ARM已经进化到了乱序双发射甚至乱序三发射了。

2、ARM架构与X86架构的对比

性能对比

X86结构的电脑无论如何都比ARM结构的系统在性能方面要快得多、强得多。X86的CPU的主频随便就是1GHZ以上,双核、四核大行其道,现在通常使用22nm制程的工艺进行生产;而ARM方面,其CPU通常是几百兆,最近才出现1G左右的CPU,制程通常使用32nm或45nm制程的工艺,可以说在性能和生产工艺方面ARM根本不是X86结构系统的对手。

但ARM的优势不在于性能强大而在于效率,ARM采用RISC流水线指令集,在完成综合性工作方面根本就处于劣势,而在一些任务相对固定的应用场合其优势就能发挥得淋漓尽致。

扩展能力对比

X86结构的电脑采用“桥”的方式与扩展设备(如硬盘、内存等)进行连接,而且x86结构的电脑出现了近30年,其配套扩展的设备种类多,价格也比较便宜,所以x86结构的电脑能很容易进行性能扩展,如增加内存、硬盘等。

ARM结构的电脑是通过专用的数据接口使CPU与数据存储设备进行连接,所以ARM的存储、内存等性能扩展难以进行(一般在产品设计时已经定好其内存及数据存储的容量),所以采用ARM结构的系统,一般不考虑扩展,基本奉行“够用就好”的原则。

操作系统的兼容性

X86系统由微软及Intel构建的Wintel联盟一统天下,垄断了个人电脑操作系统近30年,形成巨大的用户群,也深深固化了众多用户的使用习惯,同时x86系统在硬件和软件开发方面已经形成统一的标准,几乎所有x86硬件平台都可以直接使用微软的视窗系统及现在流行的几乎所有工具软件,所以x86系统在兼容性方面具有无可比拟的优势。

ARM系统几乎都采用Linux的操作系统,而且几乎所有的硬件系统都要单独构建自己的系统,与其他系统不能兼容,这也导致其应用软件不能方便移植,这一点一直严重制约了ARM系统的发展和应用。

GOOGLE开发了开放式的Android系统后,统一了ARM结构电脑的操作系统,使新推出基于ARM结构的电脑系,有了统一的、开放式的、免费的操作系统,为ARM的发展提供了强大的支持和动力。

软件开发的方便性及可使用工具的多样性

软件配套、软件开发工具的配套及兼容等工作,X86已经到达非常成熟甚至可以说是完美的境界。所以使用X86电脑系统不仅有大量的第三方软件可供选择也有大量的软件编程工具可以 帮助您完成您所希望完成的工作。

Arm结构的电脑系统因为硬件性能的制约、操作系统的精简、以及系统兼容等问题的制约,造成Arm结构的电脑系统不可能像X86电脑系统那样有众多的编程工具和第三方软件可供选择及使用,ARM的编程语言大多采用C和JAVA或C++。

因此,基于x86结构电脑系统平台开发软件比arm结构系统更容易、更简单、实际成本也更低,同时更容易找到第三方软件(免去自己开发的时间和成本),而且软件移植更容易。

功耗对比

X86电脑因考虑要适应各种应用的需求,其发展思路是:性能+速度。20多年来x86电脑的速度从原来8088的几M发展到现在随便就是几G,而且还是几核,其速度和性能已经提升了千、万倍,技术进步使x86电脑成为大众生活中不可缺少的一部分。但是x86电脑发展的方向和模式,使其功耗一直居高不下,一台电脑随便就是几百瓦,即使是号称低功耗节能的手提电脑或上网本,也有十几、二十多瓦的功耗,这与ARM结构的电脑就无法相比。

ARM的设计及发展思路是:满足某个特殊方面的应用即可,在某一专项领域是最强的,(哪怕在其他方面一无是处),这样Arm以其不是最强的技术,同样也不是很高级制程的制造工艺,生产出性能不是很强的电脑系统,但在某个专业应用方面则是最好的,特别是在众多终端应用,尤其在移动终端应用上占有绝对优势的统治地位,这个原因就是:功耗。

高功耗导致了一系列X86系统无法解决的问题出现:系统的续航能力弱、体积无法缩小、稳定性差、对使用环境要求高等问题。从这里我们可以看到x86系统与ARM系统是在两个完全不同领域方面的应用,它们之间根本不存在替换性,在服务器、工作站以及其他高性能运算等应用方面,是可以不考虑功耗和使用环境等条件时,X86系统占了优绝对优势。但受功耗、环境等条件制约且工作任务固定的情况下ARM就占有很大的优势,在手持式移动终端领域,X86的功耗更使它英雄毫无用武之地。

总结

从以上对比分析,给了我们的一个很清晰的感觉,ARM和X86结构的电脑根本就无法对比,ARM根本就不是X86电脑的的对手。如果只考虑上述几个方面的要数,ARM确实无法与X86电脑竞争,甚至连比较的资格都没有。但是近1、2年,ARM的产品在终端应用特别是手持终端应用飞速发展(如智能手机、平板电脑等),其销售数量已经远远超出x86结构的电脑销售数量,可见ARM是具有其与X86结构电脑不可对比的优势。

X86系统和ARM系统应该是两个完全不同领域的应用,如果功能单一又受到环境制约的应用,如:POS、ATM、多媒体广告机(现已经有ARM+DSP的产品)、车载电脑终端等应用,应该首先考虑ARM方案,ARM方案与X86相比,其功耗和成本占有很大优势。

现在ARM很强大,但它距离X86还是非常遥远,毕竟它们设计的出发点不一样, X86无法做到ARM的功耗,而ARM也无法做到X86的性能。不过这也不意味着ARM以后就只能占据低端,毕竟任何架构都有其优点,一旦有应用针对其进行优化,那么就可以扬长避短。X86的繁荣也正是因为整个世界的资源都针对它进行了优化所致。只要能为ARM找到合适的应用与适合的领域,未来ARM也未必不可以进入更高的层次。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/460662.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网络套接字socket的简介

以下内容源于C语言中文网的学习与整理,非原创,如有侵权请告知删除。 总结 socket的中文翻译是“套接字”,它是计算机之间进行通信的一种约定或一种方式。 套接字的典型应用就是web服务器和浏览器。 在Unix/Linux中,网络连接也是一…

IP、MAC和端口号

以下内容源于C语言中文网资料的学习与整理,非原创,如有侵权请告知删除。 在茫茫的互联网海洋中,要找到一台计算机非常不容易,有三个要素必须具备,它们分别是 IP 地址、MAC 地址和端口号。 IP地址 IP地址是 Internet Pr…

UML概述

UML视频一直在看,但是总觉得没有什么思路,知识都是零散的、片面的。最后复习阶段老师重新理了一下思路,我才觉得有点清晰了。所以,又回头把UML概述部分总结了一下。 感慨一句:思维导图真的要勤画,画图也是在…

TCP/IP模型简介(OSI模型的简化版)

以下内容源于C语言中文网的学习与整理,如有侵权请告知删除。 一、TCP/IP模型 1、模型的概念 OSI 是 Open System Interconnection 的缩写,译为“开放式系统互联”。OSI 模型把网络通信的工作分为 7 层,从下到上分别是物理层、数据链路层、网络…

图解TCP数据的传输(建立连接、数据传输、断开连接)

以下内容源于C语言中文网的学习与整理,非原创,仅作学习之用,如有侵权请告知删除。 TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的通信协议,数据在传…

自定义Button,复写里面的onKeyDown,不起作用

李刚的Android疯狂讲义真是“疯狂”,浪费了3天时间,到底是他的代码有问题,还是怎么的不得而知。 问题描述:他的书里面第3.3基于回调事件处理Propagation的例程。是为了演示基于回调事件传播的例程序,源代码如下&#x…

与socket网络编程有关的函数

以下内容源于网络资源的学习与整理,如有侵权请告知删除。 基于TCP通信的服务模式 服务端 socket函数,获取网络连接的文件描述符 bind函数,将服务器的端口、ip地址与socket函数创建的文件描述符绑定 listen函数,监听服务器的当前端…

转载Linq中GroupBy方法的使用总结

Group在SQL经常使用,通常是对一个字段或者多个字段分组,求其总和,均值等。 Linq中的Groupby方法也有这种功能。具体实现看代码: 假设有如下的一个数据集: public class StudentScore { public int ID { se…

在Atom中运行脚本

2019独角兽企业重金招聘Python工程师标准>>> 现在可以在atom官网(https://atom.io/)找到deb包。 插件script可以让atom运行脚本,具体请见:https://atom.io/packages/script。 下面大致讲一下如何使用。 安装atom后&…

js中的this

在面向对象编程语言中,对于this关键字我们是非常熟悉的。比如C、C#和Java等都提供了这个关键字,虽然在开始学习的时候觉得比较难,但只要理解了,用起来是非常方便和意义确定的。JavaScript也提供了这个this关键字,不过用…

在 Windows Azure 上部署并定制化 FreeBSD 虚拟机镜像

发布于 2014-12-11作者 陈阳FreeBSD 基础镜像现已登陆中国的 VM Depot! 对于青睐 BSD 而非 Linux 的开源爱好者来说,这无疑是个好消息。同时,随着该基础镜像的可用,我们期待很快看到更多来自社区的基于 F…

如何理解套接字的形容词前缀:“面向连接”与“无连接”

以下内容源于C语言中文网资料的学习与整理,非本人原创,如有侵权请告知删除。 前言 在《网络套接字socket的简介》一文中提到,流格式套接字(Stream Sockets)就是“面向连接的套接字”,它基于 TCP 协议&…

文件IO——Linux系统如何管理文件

以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除。 硬盘中的静态文件 文件平时以一种固定的形式存放在硬盘中,我们叫它静态文件。 一块硬盘中可以分为两大区域:一个是硬盘内容管理表,另一个是真正存储内容的区域。 …

java String类 常用函数

为什么80%的码农都做不了架构师?>>> 1. 获取 int indexOf(int c) int indexOf(int c, int start) char charAt(int index) 2.判断 判断是否包含一个字符串 boolean contains(CharSequence cs) indexOf() //也可以用来判断是否包含 判断是否有内容 boole…

设备驱动程序的简介

以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除。 一、驱动的概念 设备驱动程序(Device Driver),简称驱动程序、驱动(Driver),指操作系统中用来操控硬件的代码。 驱动是硬件与操…

Android开发实践:掌握Camera的预览方向和拍照方向

Android的Camera相关应用开发中,有一个必须搞清楚的知识点,就是Camera的预览方向和拍照方向,本文就重点讨论一下这个问题。图像的Sensor方向:手机Camera的图像数据都是来自于摄像头硬件的图像传感器(Image Sensor&…

SecureCRT显示乱码的解决办法

发现问题 在Ubuntu中编写代码,输出语句里带有中文,比如"printf("读出来的内容是:%s.\n", buf);"。使用交叉编译工具链编译后,将可执行程序转移至开发板系统运行,并使用SCRT来观测测试结果。此时发…

WCF数据契约

当使用DataMember时,和访问符无关,及时使用了private,成员都是可见的。相反如果使用static,为不可见。 上述的两个数据成员是等效的,如果是等效的话 数据成员的顺序也必须是相同的。 4.数据契约已知类型——使用KownTy…

spring mvc 配置解析之xml

2019独角兽企业重金招聘Python工程师标准>>> ##mvc.xml中可配置的元素## 既然是xml,当然是要遵循schema的规定. 那么schema文件在哪呢? 定位方法就是解开这个jar文件,找到META-INF/spring.schema文件,这是个文本文件,里面包含了namespace以及其对应的xsd文件的位置…

JDBC学习笔记——事务、存储过程以及批量处理

2019独角兽企业重金招聘Python工程师标准>>> 1、事务 1.1、事务的基本概念和使用示例 数据库事务,是指作为单个逻辑工作单元执行的一系列操作,要么完整…