搜索
写经验 领红包
 > 设计

芯片是啥意思(芯片是什么简单说)

导语:1.1:从芯片说起~芯片是什么

芯片是什么?大家可以看很多的书,前面有很多导论都有介绍芯片的发展,集成电路技术的演进,很多文章也会介绍包括现在成为焦点的光刻机。

在这儿,我只想给软件行业的同事介绍下芯片是如何决定了软件。不会涉及芯片硬件相关的知识。

一个牛人

我们先来点看起来不想干的知识。介绍一位牛人~图灵。相信大家都听说过图灵测试,甚至有的人还听说过图灵完备的概念。图灵其实也算是计算机的奠基人,冯诺依曼结构在我个人看来,算是对图灵的设想的实现。

图灵的计算机

图灵的计算机非常简单,如下图:

图灵计算机

图灵的计算机将一条纸带上的信息作为输入,机器上内置了一些基本程序,通过不断地读取输入,就能在纸片上给出输出结果。简单的说,你在纸片上写上”1+2“,然后机器就会在纸上打印“3”。

大家发现没有?这跟我们现在看到的芯片是不是很相似。不同的是:芯片的输入是通过总线,其实就是几根线(总线)不断地读取输入(指令),然后根据指令内容改变自己本身的状态(寄存器),最后将计算结果(寄存器)通过几根线(总线)输出出来。

总结一下,芯片在软件人员看起来是什么:芯片其实就是实现了很多“基础函数“的集合体,如果我们要用芯片,就要把复杂的动作拆分成芯片能够识别的函数,然后就可以让芯片干活了。这其实就是个分层设计思想:每层只需要实现最简单、够用的接口,剩下的事跟我没关系,是别的模块儿的事。

芯片IP:芯片IP,用软件的概念来理解,就是把软件能够干的事,直接让硬件干。我就设计一套电路,能够自动的模拟软件完成计算,这就是IP。就好比外国的机械工程师,他们可以纯机械实现一个计算器。芯片就是拿电路开关实现了一个“计算器”。

芯片的“基本函数”

前面我们说,芯片本质上是电路直接模拟软件完成计算。有一个问题是:现在我们能看到的随便一个复杂的系统,比如Linux,他编译完的二进制镜像内容是很大的,可能有几十个G。这么大的系统,让芯片来模拟可是不行的,复杂度太高。那么芯片应该做到什么程度呢?

自然大家就都能想到的:分层设计啊。我的芯片只做基本功能,剩下的你就调用我芯片的接口就行。这里面引入了软件领域开发常见的一个定律“太复杂你就封一层”。分层设计当然有缺点,如果芯片只做基本功能,那么算法是否高效就取决于码农了,因为芯片只能看到一个个基本接口。这也是为什么现在各种“NPU”芯片热起来的原因,他们要用更为高效、也更为复杂的“基本操作”来帮助码农提升代码性能。回到最开始的一段文字:如果你能将整个神经网络代码全部转换为硬件电路,那你的芯片一定非常快。事实上,这样的芯片已经早就问世了。

大家肯定都能想到的一点:加法、减法、乘法啊!天天看了那么多技术书籍,全都是在讲和强调运算的,怎么用补码,怎么用其他运算实现除法。计算机最初发明的目标也是完成复杂的计算,所以运算操作也是必须的。

但是,“但是”来了。基本的运算芯片是可以做了。如果我给你一个芯片,每次的运算结果你都要自己记下来,然后再输入一次才能完成下次运算。比如一个简单场景:

a = 1

b= 2

c = a + b

d = c - 1

如果芯片要求你必须这么搞:

步骤1:人肉输入a=1

步骤2:人肉输入b=2

步骤3:人肉启动加法器,得到运算结果3

步骤4:人肉观察运算结果,得到3

步骤5:人肉输入c=3

步骤6:人肉启动减法器,得到d=2

发现没,每一个步骤都需要手工做,这不是把人逼疯了。特别是“优秀的程序员都是懒人”,这也得把懒人逼死了。所以我们得把“人肉”操作替换为芯片的操作,让芯片替我们干活。那么我们该怎么做:

从上图可以看出,我们还要增加一种指令:数据传送指令,能够从存储器中读取指令和回写结果。

总结:芯片的基本操作有加、减、乘基本运算指令,还有读取指令回写结果的数据传送指令。有这些我们就可以构建最原始的计算机。

计算机课程上指令其实分为四种:

数据处理指令:包括算术运算指令、逻辑运算指令、移位指令、比较指令等

数据传送指令:包括寄存器之间、寄存器与主存储器之间的传送指令

程序控制指令:包括条件转移指令、无条件转移指令、转子程序指令

状态管理指令:包括诸如实现置存储保护、中断处理等功能的管理指令

总结

芯片单纯从软件角度看,就只是一些基本函数的实现。只不过现在使用半导体集成电路实现了而已,你当然可以用机械的方式实现,或者其他任意的方式,只要它能够实现“基本函数”。这也是生化计算机、机械计算机等等能够行得通的原因。

免责声明:本站部份内容由优秀作者和原创用户编辑投稿,本站仅提供存储服务,不拥有所有权,不承担法律责任。若涉嫌侵权/违法的,请反馈,一经查实立刻删除内容。本文内容由快快网络小森创作整理编辑!