联系方式
地 址:深圳市龙岗区南湾街道平吉大道1号建昇大厦B栋1605号(李朗软件园对面)
联系人:周工
电 话:0755-88820678
传 真:
信 箱:498187676@qq.com

p

站内搜索
看ARM如何抢走英特尔的X86市场––CPU市场上的逆袭!

什么叫「架构」?INTEL面临的移动市场逆袭

2016年7月时,软银(SoftBank) 宣布斥资234亿英镑买下全球最大移动芯片设计授权商安谋(ARM),写下「欧洲科技企业史上最大笔收购案」的纪录。

软银董事长孙正义指出,预计未来20 年内,ARM 片的年产量将达到1 兆片的规模。

等等,到底什么叫ARM 片?

你听过Android、iOS 手机,那你知道无论Android 还是iOS 手机都是用ARM 架构的片、连NVIDIA 的CPU 片也是使用ARM 架构吗(可惜现在已经退出)?所以ARM 到底是在干麻?

你知道你自己正在用的手机的CPU,正是ARM 架构吗?

那你知道你的手机如果不是iPhone 或三星,很有可能就是用高通设计的片吗?蛤?那 ARM 和高通又有什么关系?

听说,是ARM 卖架构给高通这家IC 设计公司、高通买回来再设计自己的片… 所以讲来讲去,到底什么是「架构」?片架构、处理器架构… 到底这个「架构」是在讲什么?)

听说,伺服器用的片架构主要是x86、手机片用的则都是ARM,到底为什么?

怎么那么多的为什么啦!吼,绕来绕去听不懂啦。别急,看完这篇文章就知道ARM 和Intel 在干麻、又是怎么在移动通讯市场上打群架的了ˋ_ˊ 


对电脑下命令: 高级语言与低级语言

CPU (Central Processing Unit, 中央处理器) 是驱动整台电脑运作的中心枢纽,就像是电脑的大脑;若没有CPU,电脑就无法使用。

CPU 的功能主要是执行电脑的指令、以及处理电脑软件中的资料。

什么是指令呢?指令是低级语言的命令。我们可以对电脑以程式下达命令,比如加减乘除的运算;在高级语言中的命令称为「叙述」 (statements),在低级语言中则称为「指令」 (instructions)。

所谓的程式,就是指我们要电脑完成某一项工作,所下达的一连串命令。

等等!什么又是高级语言和低级语言呢?

高级语言是目前最常见的程式语言,平常我们听到的程式语言,比如C/C++、都是高级语言。高级语言以人类的日常语言英文为基础,使用一般人易于接受的文字来表示,可读性高。

然而电脑是看不懂高级语言的,因此我们需要将高级语言透过编译器(Complier) 将高级语言再转成能直接与硬体沟通的低级语言。

电脑唯一能读懂的语言就是二进位制的「机器语言」 (Machine Language),由0与1组成,比如00101001010101100111…. 别说你会撰写到发疯,连看懂都有困难。

因此后来又发展出了「组合语言」 (Assembly Language),改用较短的字串取代机器语言的0与1,让人类比较好看的懂。

由于CPU只认得机器语言,因此组合语言所撰写的程式依然需要经由「组译器」 (Assembler) 来转译为机器码。组合语言每一行直接对应到的几乎就是一个机器码,高级语言则无。

这个流程简单来说,就是高级语言(C/C++) 得透过编译器(Complier) 转成组合语言(Assembly Language)、再透过组译程式(Assembler) 转译成机器码(Machine Code),机器才能读得懂。

低级语言不用耗费编译流程、即可被CPU 所执行,因此以低级程式语言编写的程式,其运作效率会较高级语言更高。

然而可能别人写两三行就解决的程式、你要写数十行数百行而已。就是看人类方便(高级语言)、还是机器方便(低级语言)。

这么讲大家可能很难理解,来做个示范吧!如果我们希望电脑输出「Hello, World!」这行字,在高级语言中会这样写(范例为C语言):

这时候电脑会输出Output结果:Hello, World!。

同样的一行字,来看看在组合语言中是怎么写的:

这时候你可能已经有:「这东西是什么!!!」的想法了… 别急,最后来看看机器语言会怎么写:

…天啊。这谁看得懂。

我们可以明显发现,高级语言的一个叙述可以对应到多个低级语言的指令,比低级语言更易撰写、也较好阅读。这样的话,为什么还要有低级语言呢?

事实上,不是「为什么还要有低级语言」,而是一开始的电脑就只有低级语言!高级语言是后面才发展出来的东西,方便人类好写且好读懂。

可以说:「低级语言是要给机器看的、高级语言是给人看的」。如果是底层的嵌入式系统,有些工程师还是要直接去写组合语言。

也就是说,高级语言和低级语言的功能不同,不能直接相比。高级语言是来帮助我们进行抽象化的设计、让我们能描述出需要的行为,而不是去Micro Control 每一行机器要跑的指令。

但高级语言要让机器理解,还须经过编译器的「编译」这个步骤。编译后的结果,会直接影响电脑执行该程式的效能。

就像是一个翻译人员把中文翻成英文一样,如果翻的好的话一样很优美、能达到最理想的效果;如果翻不好的话,就会变得很糟糕。台湾一家新创  Skymizer  就是在做编译器的优化,让相同的程式码经过更优化的编译器后、能在电脑上跑更快噢!

低级语言虽然难懂,但硬能不经编译器、直接执行。(不过机器只能看懂0/1,所以如果是组合语言的话,还要经过组译器翻译=>机器语言噢~)

也因为低级语言对硬直接操作,一种组合语言会专用于某种电脑架构,而不像许多高级语言可以在不同系统平台之间移植。根据这种特性,我们能透过组合语言订定「指令集」,和该指令集依附的「指令集架构」。

返回顶部