转载:http://bbs.tianya.cn/post-worldlook-544367-1.shtml

目前,华为推出了自己的四核手机,用自己的SOC,所以很多不明就里的人开始嚷嚷国产处理器的骄傲,又有很多人扯什么架构什么的,概念模糊得一塌糊涂,连 最基本的知识都没有,就开始盲目喝彩,所以,我有必要指出其中的错误,给大家普及一下基本知识。我有什么讲错的地方,也欢迎内行指出来。

  首先,什么是CPU?就是中央处理单元,它负责把数据读入计算并输出。所以,无论什么时候谈到CPU,一定是数据的处理和计算部分,这是必须要满足的基本要求。

 
 之所以你们会发生混淆,是因为你们不知道,除了数据处理,还有什么其他部分。简单来说,CPU除了内部的Cache和指令存储器和一些缓冲,就没有什么
可供存储数据和指令的了。所以,对于程序来说,运行时候需要的代码数据都是在内存里面的,CPU从内存里面把数据和代码取出来放到Cache里面,再从
Cache里取出需要的数据。
  同样,内存容量是有限的,如果找不到数据,就要从硬盘里面或者nandflash进行数据读取,或者直接读取,或者拷贝到DDR里面再进行读取,这取决于这些硬件的结构了
 
 但是,每种架构CPU的指令是固定的,指令不会区分什么具体的DDR或者nand的架构,所以,我们需要内存控制器、硬盘控制器、nand控制器,也就
是所谓的外围IP,通常,如果Cache不命中,如果需要从内存读取数据,这条访问指令就会被内存控制器获取,它进行分析后会把相应的数据从内存颗粒里面
读出来发回给CPU。如果是nand的,它有自己的寄存器,可以通过对寄存器操作来实现数据的读取,这些数据仍然由控制器送给CPU。类似还有网络控制器
之类的,CPU的命令都是要由这些控制器去具体实施的。
  一个CPU的外部端口都会有地址总线和数据总线,我们选择一种总线,把CPU和这些外围IP连起来,让CPU可以和这些IP进行通讯,完成数据的计算和输入输出,这样就变成了一个具有实际意义的系统了。
  在这一点上,不同的厂商做法不同。
 
 对于Intel而言,他是有晶圆的老大,也就是说,它的CPU由他自己设计好后入场流片,生产好之后就诞生一个正方形的下面有很多针脚的东西,就是你们
口中的CPU了。它的内存控制器在主板上的北桥里面,而硬盘控制器网络控制器啥的都在主板上的南桥。从这里可以看出,它的CPU和各类控制器都是分开的,
因而面积大,功耗高,性能强。

  ARM就不一样,首先ARM属于无晶圆。什么意思?就是ARM自己不会去流片,想用ARM的CPU怎么
办?直接购买授权,而后ARM就直接把它的CPU的源代码发给你了。我们实验室就有ARM7和ARM11的源代码,这些代码我也读过不少。从这点来
说,ARM的确胆子很大。
  ARM的功耗较低面积较小,所以各大厂商通常会把它的CPU和各类外围IP都放到一起,然后自己拿着图纸去流片,生
产出来的也是一个正方形,下面有很多引脚,这个东西不仅包含了CPU,还包含了其他的控制器,这个东西就叫做SOC(system on
chip)。从英文来看,所谓的四核SOC什么的,本意就不是单指CPU,而是四核系统。
  因特尔绝对不会给你看它的RTL代码,只会给你他芯片的spec。

 
 所以目前各大厂商所做的事情,就是买来ARM的授权,得到ARM处理器的源代码,而后自己搞一些外围IP(或者买或者自己设计),组成一个SOC后,去
流片。不同的SOC,架构不同(就是CPU如何和IP联系起来,有的以总线为核心,有的以DDR为核心),所以,海思是拥有自主产权的SOC架构。可是,
无论任何厂商,再怎么折腾,都没有怎么动过CPU,ARM核心就好好的呆在那里,那是中央处理器。你要说成是自己的CPU,对不起,ARM首先就不会同
意,因为你侵犯了它的知识产权。

  当然,厂商会对SOC里面的ARM核做一些小的修改,例如我们就给ARM7加过Cache。高通也做过修改,但是,都只是在边角料上做一些小小的改动,根本谈不上自己产权的CPU!

 
 其实,有一个方法,就可以很好的验证所谓海思是不是自主产权的CPU了。对于IP产权法来说,如果这东西是你自主产权,那么你就有一个权力,就是你可以
把这个东西授权给其它公司。如果海思真像各位所说,CPU是有自主产权的,那么华为完全可以把其中的核心卖给其他厂商。可我告诉你,世界上任何厂商都没有
这个权利,只有ARM自己有。这就是你们自己打自己的脸了

  所以,说了这么多,所谓自主产权的CPU,什么国产CPU,纯粹是不着边的事情。

给大家普及一下CPU和SOC的基本知识,好让大家在盲目喝彩做出基本的判断的更多相关文章

  1. SoC嵌入式软件架构设计

    内存是SoC(System on Chip,片上系统)集成设计的重要模块,是SoC中成本比重较大的部分.内存管理的软硬件设计是SoC软件架构设计的重要一环,架构设计师必须要在成本和效率中取得平衡,做到 ...

  2. [CB]Intel 2018架构日详解:新CPU&新GPU齐公布 牙膏时代有望明年结束

    Intel 2018架构日详解:新CPU&新GPU齐公布 牙膏时代有望明年结束 北京时间12月12日晚,Intel在圣克拉拉举办了架构日活动.在五个小时的演讲中,Intel揭开了2021年CP ...

  3. 【PCIE-1】---Pcie基本概念普及(扫盲篇--巨适合新手)

    PCIE由早期得PCI扩展衍生而来并且对兼容PCI,两者得主要区别在于并行到串行得切换,且速率更快.目前主板上越来越多得设备都挂载到PCI总线下面,甚至部分硬盘也会挂载PCI总线下面,可见PCIE得应 ...

  4. 【翻译】借助 NeoCPU 在 CPU 上进行 CNN 模型推理优化

    本文翻译自 Yizhi Liu, Yao Wang, Ruofei Yu.. 的  "Optimizing CNN Model Inference on CPUs" 原文链接: h ...

  5. SOC,System on-a-Chip技术初步

    SOC,System on-a-Chip技术初步 S O C(拼作S-O-C)是一种集成电路,它包含了电子系统在单个芯片上所需的所有电路和组件.它可以与传统的计算机系统形成对比,后者由许多不同的组件组 ...

  6. linux查看cpu、内存、版本信息

    1.  查看物理CPU的个数#cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc –l 2.   查看逻辑CPU的个数#cat ...

  7. Intel 80x86 Linux Kernel Interrupt(中断)、Interrupt Priority、Interrupt nesting、Prohibit Things Whthin CPU In The Interrupt Off State

    目录 . 引言 . Linux 中断的概念 . 中断处理流程 . Linux 中断相关的源代码分析 . Linux 硬件中断 . Linux 软中断 . 中断优先级 . CPU在关中断状态下编程要注意 ...

  8. Linux查看CPU信息

    1.  查看物理CPU的个数 #cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc –l 2.   查看逻辑CPU的个数 #ca ...

  9. 利用ZYNQ SOC快速打开算法验证通路(1)——MATLAB浮点数与定点二进制补码互转

    最近本人一直在学习ZYNQ SOC的使用,目的是应对科研需要,做出通用的算法验证平台.大概思想是:ZYNQ PS端负责与MATLAB等上位机数据分析与可视化软件交互:既可传输数据,也能通过上位机配置更 ...

随机推荐

  1. 《Java数据结构与算法》笔记-CH5-链表-1单链表

    /** * Link节点 * 有数据项和next指向下一个Link引用 */ class Link { private int iData;//数据 private double dData;//数据 ...

  2. 移动端rem布局

    手机页面——分辨率特别乱: 1.定宽320px——优点:简单,缺点:不能适应 2.百分比——优点:能适应各种分辨率,缺点:太麻烦 3.rem——优点:方便.适应各种分辨率(首先定义一个“根大小”htm ...

  3. 转载-SQL中的where条件,在数据库中提取与应用浅析

    1        问题描述 一条SQL,在数据库中是如何执行的呢?相信很多人都会对这个问题比较感兴趣.当然,要完整描述一条SQL在数据库中的生命周期,这是一个非常巨大的问题,涵盖了SQL的词法解析.语 ...

  4. Spark RDD概念学习系列之RDD是什么?(四)

       RDD是什么? 通俗地理解,RDD可以被抽象地理解为一个大的数组(Array),但是这个数组是分布在集群上的.详细见  Spark的数据存储 Spark的核心数据模型是RDD,但RDD是个抽象类 ...

  5. LightOJ 1259 Goldbach`s Conjecture (哥德巴赫猜想 + 素数筛选法)

    http://lightoj.com/volume_showproblem.php?problem=1259 题目大意:给你一个数n,这个数能分成两个素数a.b,n = a + b且a<=b,问 ...

  6. AutoCAD.NET 不使用P/Invoke方式调用acad.exe或accore.dll中的接口(如acedCommand、acedPostCommand等)

    使用C#进行AutoCAD二次开发,有时候由于C#接口不够完善,或者低版本AutoCAD中的接口缺少,有些工作不能直接通过C#接口来实现,所以需要通过P/Invoke的方式调用AutoCAD的其他DL ...

  7. C# 抽象类和接口的区别

    从表象上来说,抽象类可以给出一些成员的实现,而接口却不包含成员的实现,抽象类的成员可以被继承类来部分实现,而接口类中的成员要子类来全部实现 .还有一个类可以实现多个接口,但只可以继承一个抽象类,这只是 ...

  8. 获取和设置localStorage

    东钿金融服务平台 用户第一次访问页面出现,引导步骤,起初一直使用cookie,但是cookie一直不稳定 今天老大说改用localStorage 于是乎百度,查了一篇博客 http://www.cnb ...

  9. javascript自执行函数为什么要把windows作为参数传进去

    http://segmentfault.com/q/1010000000311686 (function (window, $, undefined) { play=function(){ $(&qu ...

  10. (剑指Offer)面试题28:字符串的排列

    题目: 输入一个字符串,打印出该字符串中字符的所有排列. 例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba. 思路: 把一个字符串看 ...