做网站站长交加盟费,网络营销4c策略是什么,网络营销岗位,国内网站是cn还是com戳蓝字“CSDN云计算”关注我们哦#xff01;作者 | brightwang责编 | 阿秃最近读到这样一篇好文章#xff0c;从底层硬件角度出发剖析了一下CPU对代码的识别和读取#xff0c;内容非常精彩#xff0c;读完感觉大学里学到的很多东西瞬间联系起来了#xff0c;这里分享给大家… 戳蓝字“CSDN云计算”关注我们哦作者 | brightwang责编 | 阿秃最近读到这样一篇好文章从底层硬件角度出发剖析了一下CPU对代码的识别和读取内容非常精彩读完感觉大学里学到的很多东西瞬间联系起来了这里分享给大家希望能认真读完并有所收获。首先要开始这个话题要先说一下半导体。啥叫半导体半导体其实就是介于导体和绝缘体中间的一种东西比如二极管。电流可以从A端流向C端但反过来则不行。你可以把它理解成一种防止电流逆流的东西。当C端10VA端0V二极管可以视为断开。当C端0VA端10V二极管可以视为导线结果就是A端的电流源源不断的流向C端导致最后的结果就是A端C端10V等等不是说好的C端0VA端10V么咋就变成结果是A端C端10V了你可以把这个理解成初始状态当最后稳定下来之后就会变成A端C端10V。文科的童鞋们对不住了实在不懂问高中物理老师吧。反正你不能理解的话就记住这种情况下它相当于导线就行了。利用半导体我们可以制作一些有趣的电路比如【与门】此时A端B端只要有一个是0V那Y端就会和0V地方直接导通导致Y端也变成0V。只有AB两端都是10VY和AB之间才没有电流流动Y端也才是10V。我们把这个装置成为【与门】把有电压的地方计为10电压的地方计为0。至于具体几V电压那不重要。也就是AB必须同时输入1输出端Y才是1;AB有一个是0输出端Y就是0。其他还有【或门】【非门】和【异或门】跟这个都差不多或门就是输入有一个是1输出就是1输入00则输入0。非门也好理解就是输入1输出0输入0输出1。异或门难理解一些不过也就那么回事输入01或者10则输出1输入00或者11则输出0。即输入两个一样的值则输出0输入两个不一样的值则输出1。这几种门都可以用二极管做出来具体怎么做就不演示了有兴趣的童鞋可以自己试试。每次都画二极管也是个麻烦我们就把门电路简化成下面几个符号。然后我们就可以用门电路来做CPU了。当然做CPU还是挺难的我们先从简单的开始加法器。加法器顾名思义就是一种用来算加法的电路最简单的就是下面这种。AB只能输入0或者1也就是这个加法器能算0010或者11。输出端S是结果而C则代表是不是发生进位了二进制1110嘛。这个时候C1S0费了大半天的力气算个11是不是特别有成就感那再进一步算个12吧二进制0110然后我们就发现了一个新的问题第二位需要处理第一位有可能进位的问题所以我们还得设计一个全加法器。每次都这么画实在太麻烦了我们简化一下也就是有3个输入2个输出分别输入要相加的两个数和上一位的进位然后输入结果和是否进位。然后我们把这个全加法器串起来我们就有了一个4位加法器可以计算4位数的加法也就是1515已经达到了幼儿园中班水平是不是特别给力做完加法器我们再做个乘法器吧当然乘任意10进制数是有点麻烦的我们先做个乘2的吧。乘2就很简单了对于一个2进制数数我们在后面加个0就算是乘2了比如510121010102所以我们只要把输入都往前移动一位再在最低位上补个零就算是乘2了。具体逻辑电路图我就不画你们知道咋回事就行了。那乘3呢简单先位移一次乘2再加一次。乘5呢先位移两次乘4再加一次。CPU飙高频繁GC怎么排查这篇告诉你。所以一般简单的CPU是没有乘法的而乘法则是通过位移和加算的组合来通过软件来实现的。这说的有点远了我们还是继续做CPU吧。现在假设你有8位加法器了也有一个位移1位的模块了。串起来你就能算ABX2了激动人心已经差不多到了准小学生水平。那我要是想算AX2B呢简单你把加法器模块和位移模块的接线改一下就行了改成输入A先过位移模块再进加法器就可以了。啥你说啥你的意思是我改个程序还得重新接线所以你以为呢编程就是把线来回插啊。惊喜不惊喜意外不意外早期的计算机就是这样编程的几分钟就算完了但插线好几天。而且插线是个细致且需要耐心的工作所以那个时候的程序员都是清一色的漂亮女孩子穿制服的那种就像照片上这样。是不是有种生不逢时的感觉虽然和美女作伴是个快乐的事但插线也是个累死人的工作。所以我们需要改进一下让CPU可以根据指令来相加或者乘2。这里再引入两个模块一个叫flip-flop简称FF中文好像叫触发器。这个模块的作用是存储1bit数据。比如上面这个RS型的FFR是Reset输入1则清零。S是Set输入1则保存1。RS都输入0的时候会一直输出刚才保存的内容。我们用FF来保存计算的中间数据也可以是中间状态或者别的什么1bit肯定是不够的不过我们可以并联嘛用4个或者8个来保存4位或者8位数据。这种我们称之为寄存器Register。另外一个叫MUX中文叫选择器。这个就简单了sel输入0则输出i0的数据i0是什么就输出什么01皆可。同理sel如果输入1则输出i1的数据。当然选择器可以做的很长比如这种四进一出的具体原理不细说了其实看看逻辑图琢磨一下就懂了知道有这个东西就行了。有这个东西我们就可以给加法器和乘2模块位移设计一个激活针脚。这个激活针脚输入1则激活这个模块输入0则不激活。这样我们就可以控制数据是流入加法器还是位移模块了。于是我们给CPU先设计8个输入针脚4位指令4位数据。我们再设计3个指令0100数据读入寄存器0001数据与寄存器相加结果保存到寄存器0010寄存器数据向左位移一位乘2为什么这么设计呢刚才也说了我们可以为每个模块设计一个激活针脚。然后我们可以分别用指令输入的第二第三第四个针脚连接寄存器加法器和位移器的激活针脚。这样我们输入0100这个指令的时候寄存器输入被激活其他模块都是0没有激活数据就存入寄存器了。同理如果我们输入0001这个指令则加法器开始工作我们就可以执行相加这个操作了。这里就可以简单回答这个问题的第一个小问题了那cpu 是为什么能看懂这些二级制的数呢为什么CPU能看懂因为CPU里面的线就是这么接的呗。你输入一个二进制数就像开关一样激活CPU里面若干个指定的模块以及改变这些模块的连同方式最终得出结果。几个可能会被问到的问题QCPU里面可能有成千上万个小模块一个32位/64位的指令能控制那么多吗A我们举例子的CPU里面只有3个模块就直接接了。真正的CPU里会有一个解码器decoder把指令翻译成需要的形式。Q你举例子的简单CPU如果我输入指令0011会怎么样A当然是同时激活了加法器和位移器从而产生不可预料的后果简单的说因为你使用了没有设计的指令所以后果自负呗。在真正的CPU上这么干大概率就是崩溃呗当然肯定会有各种保护性的设计死也就死当前进程细心的小伙伴可能发现一个问题你设计的指令【0001数据与寄存器相加结果保存到寄存器】这个一步做不出来吧毕竟还有一个回写的过程实际上确实是这样。我们设计的简易CPU执行一个指令差不多得三步读取指令执行指令写寄存器。经典的RISC设计则是分5步读取指令(IF)解码指令(ID)执行指令(EX)内存操作(MEM)写寄存器(WB)。我们平常用的x86的CPU有的指令可能要分将近20个步骤。你可以理解有这么一个开关我们啪的按一下CPU就走一步你按的越快CPU就走的越快。咦听说你有个想法少年你这个想法很危险啊姑且不说你有没有麒麟臂能不能按那么快现代的CPU也就2GHz多大概也就一秒按个20亿下左右吧就算你能按那么快虽然速度是上去了但功耗会大大增加发热上升稳定性下降。江湖上确实有这种玩法名曰超频不过新手不推荐你尝试哈。那CPU怎么知道自己走到哪一步了呢前面不是介绍了FF么这个不光可以用来存中间数据也可以用来存中间状态也就是走到哪了。具体的设计涉及到FSMfinite-state machine也就是有限状态机理论以及怎么用FF实装。这个也是很重要的一块考试必考哈只不过跟题目关系不大这里就不展开讲了。我们再继续刚才的讲现在我们有3个指令了。我们来试试算个14X23吧。0100 0001 寄存器存入10001 0100 寄存器的数字加40010 0000 乘20001 0011 再加三太棒了靠这台计算机我们应该可以打败所有的幼儿园小朋友称霸大班了。而且现在我们用的是4位的如果换成8位的CPU完全可以吊打低年级小学生了实际上用程序控制CPU是个挺高级的想法再此之前计算机器的CPU都是单独设计的。1969年一家日本公司BUSICOM想搞程控的计算器而负责设计CPU的美国公司也觉得每次都重新设计CPU是个挺傻X的事于是双方一拍即合于1970年推出一种划时代的产品世界上第一款微处理器4004。这个架构改变了世界那家负责设计CPU的美国公司也一步一步成为了业界巨头。哦对了它叫Intel对就是噔噔噔噔的那个。我们把刚才的程序整理一下01000001000101000010000000010011你来把它输入CPU我去准备一下去幼儿园大班踢馆的工作。神马等我们输完了人家小朋友掰手指都能算出来了没办法机器语言就是这么反人类。哦忘记说了这种只有01组成的语言被称之为机器语言机器码是CPU唯一可以理解的语言。不过你把机器语言让人读绝对一秒变典韦这谁也受不了。原文链接https://dwz.cn/UG3BiLM2福利扫描添加小编微信备注“姓名公司职位”加入【云计算学习交流群】和志同道合的朋友们共同打卡学习
推荐阅读
详解异构计算FPGA基础知识苹果新专利没信号也可求救同时开启超长待机谷歌被爆2500亿美元收购Salesforce号段1740的中国卫星电话来了……达摩院 2020 预测模块化降低芯片设计门槛 | 问底中国 IT 技术演进千万不要和程序员一起合租在调查过基于模型的强化学习方法后我们得到这些结论Twitter 出现重大 Bug导致政客手机号码泄露竟是由于这个原因导致的……真香朕在看了