什么是硬件以及什么是软件
软件跟硬件之间的界限已经越来越模糊了,那么处于这个灰色地带的,就是固件了。这就分成三类工作者。
1、软件工程师一般指做图形界面的程序员,工作内容就是写C++、JAVA、Web等。
2、硬件工程师当然是指玩电路板的,工作内容就是画原理图、PCB等。
3、固件工程师也叫单片机工程师,既写代码(主要是C语言、汇编)又要画电路图。
玩单片机的人,可能会有个疑问,为什么我写的C语言能操作到底层的硬件?其实在《计算机组成原理》已经有很详细的介绍了。
我这里粗略地介绍一下,这个原理。
首先你可以搜索一下“从零开始造电脑”,这位叫Steve的大神,就告诉你,用晶体管可以做出CPU(单片机也是CPU)。
当然,我们现在可不会落后到需要到晶体管来制造电脑。
接下来,你可以看一部叫《乔布斯》的电影,剧中就给你展示苹果公司的第一台计算机。
嘿嘿,看到那些黑色的芯片没有?还有两个大大的变压器。这说明了在大学玩单片机的时代,就相当于回到苹果公司的初始时期!是不是很激动人心?
其实你可以用74系列的逻辑IC、单片机等,来搭建一个属于自己的计算机。这就是说人们把若干个晶体管集成为一块74系列的IC,如果集成度更高呢?那就是手机或者台式机用的多核CPU了。
好,介绍了这些古董之后,就让你有个认识,计算机本质上是N个晶体管的组合,也是数字逻辑芯片的组合,更高级的,就是一块数模混合的芯片,具体形式是由你的工艺决定的。现在回到正题,介绍一下数电的基础知识。
因为CPU主要功能是计算,也就是可以直接运用数学知识来解决问题,这里就举个例子介绍一下,CPU如何计算加法,也就是用数电里的门电路搭一个加法器。
怎样用晶体管搭这些与、或、非门就不说了,不懂的,可以翻书。上图就告诉你,可以用这些门电路搭一个加法器。
怎样输入Ai=0,Bi=1,Ci=0?用74系列的IC的话,可以直接把Ai,Ci接GND,Bi接VCC,就实现加法了。而在CPU内部也是一样可以这样做的,但是CPU可没那么死板,只算常数的加法。
上图中,蓝色箭头指向的1,就是接VCC的,而红色箭头,就是接GND。
在CPU内部,还有ROM,它可以把你要计算的加数和被加数存进去(ROM输出的高低电平,跟你接GND和VCC是一样的效果),而结果则存在寄存器(先暂存,以备后面使用)。
现在有个问题,如果加完之后还要计算乘法(在信号处理领域的卷积运算的核心单元就是乘加器),怎么办?谁来自动完成这个动作?幸好,CPU里面有个叫ALU(算术逻辑单元)来处理这件事情。
这里的控制单元,就把ROM里面的数据取出来,再用选择器,来调用加法器和乘法器,最终把结果存到寄存器中。
如果ROM里面只存数据,那是无法让控制单元知道,你要执行加法还是乘法,要解决这个问题,就需要在ROM里面再划分一个区域,存放指令码。
这个指令码,跟数据是一样,都是0、1的二进制数,只是用途不同,所以起了不同的名字。
其实这个指令码,对应在单片机里面的汇编语言,就是操作码(如:MOV);而操作数就是数据(如:01H)。具体的,可以看看单片机的教材。
根据指令码的设计方法来分,有四种,分别是CISC、RISC、VLIW、TTA,具体区别可以看计算机组成原理。
而PC(程序计数器)就是控制ROM的地址,现在你要知道PC是不能出错的,一旦出错,就意味着单片机不按照你的代码来工作。
现在,我在8位的CPU的ROM里面,第一个地址存了0x03这个指令码来代表加法,而在第二、三个地址存了加数和被加数,然后在第四个地址存了0x05代表乘法,在第五、六个地址存了乘数和被乘数。那么,按照一定的规则来设计控制单元(这个规则可以自己定义的),它就知道0x03是要执行加法。
那么这个规则如何设计?最简单的,就是用与门了,然后输出一个使能信号,让加法器工作,就跟上面的74LS160差不多。
但是CPU可没那么简陋,它可以使用状态机、流水线等,来控制这些基本单元(如:加法器、乘法器),如下图所示。
说到这里,你至少应该知道,我们只要改变ROM的内容,就可以操作CPU内部的ALU,从而操作CPU的各个硬件单元了。
下面给个相对完整一点的ALU内部结构图。
ROM的内容本质上是一些电荷量(电容上有、无电荷,代表二进制的1和0),也就是固件、软件工程师写的代码。而硬件,就是由晶体管搭建的数字、模拟电路(如:单片机内部的比较器、ADC等)。所以硬件是物理器件,不容易更改;而ROM的内容完全可以用烧录器就轻松改变它,修改成本非常低,而且很灵活。
在这里,你很难表述,这些电荷量是软件还是硬件,但是CPU的这种结构,导致了两种不同类型的工作者,我们称他们为软件工程师和硬件工程师。而单片机程序员写的代码,跟硬件密切相关,而且一旦完成之后,很少需要修改的(不像软件工程师修改的那么频繁),我们称之为固件。
什么是硬件以及什么是软件相关推荐
- 【STM32-V7】STM32H743XIH6开发板,丰富软件资源,强劲硬件配置,大量软件解决方案持续更新中(2020-07-22)
[STM32-V7]STM32H743XIH6开发板,丰富软件资源,强劲硬件配置,大量软件解决方案持续更新中(2020-07-22) 参考文章: (1)[STM32-V7]STM32H743XIH6开 ...
- EasyNVR智能云终端硬件与EasyNVR解决方案软件综合对比
背景分析 互联网视频直播越来越成为当前视频直播的大势,对于传统的安防监控,一般都是局限于内网,无法成批量上云台.传统的海康和大华的平台虽然可以通过自身私有协议上云平台 集总管控,但是往往只是支持自身的 ...
- 为什么谈及硬件,必言软件?软硬件协同让开源世界“阴阳调和”
作者:Muhammad Ahmad,希捷科技高级工程师,开源战略主管 数据即价值.但是,仅仅拥有可用的数据并不意味着可以充分利用数据价值.企业要思考一个关键问题:我们如何发掘数据中蕴藏的却又难以触及 ...
- 计算机主机系统构成,一个完整的计算机系统通常是由()构成。A.硬件B.主机C.软件D.操作系统...
一个完整的计算机系统通常是由()构成.A.硬件B.主机C.软件D.操作系统 更多相关问题 [判断题] 灭火救援业务训练是公安消防部队官兵进行技.战术的训练活动.() [单选] <劳动合同法> ...
- 硬件堡垒机、软件堡垒机、云堡垒机品牌怎么选?
硬件堡垒机.软件堡垒机.云堡垒机品牌怎么选? 作为一个运维leader,硬件堡垒机.软件堡垒机.云堡垒机我都用过,现在市面上的堡垒机品牌有很多,价格相差比较大,但选购堡垒机并非越贵的就越好,而是要综合 ...
- 运维老鸟总结_硬件堡垒机、软件堡垒机、云堡垒机品牌怎么选?
作为一个运维leader,硬件堡垒机.软件堡垒机.云堡垒机我都用过,现在市面上的堡垒机品牌有很多,价格相差比较大,但选购堡垒机并非越贵的就越好,而是要综合考量各项指标与运维团队本身的契合度,以及在实际 ...
- 硬件看门狗和软件看门狗
看门狗分硬件看门狗和软件看门狗.硬件看门狗是利用一个定时器电路,其定时输出连接到电路的复位端,程序在一定时间范围内对定时器清零(俗称"喂狗"),因此程序正常工作时,定时器总不能溢出 ...
- 硬件程序员和软件开发程序员相比,哪一个就业发展前景比较好呢?
计科专业毕业从事软件开发,也有和硬件工程师打交道,从人员数量相比硬件工程师和软件工程师无法比较.毕竟硬件主要在开始阶段,一旦可以用了后续人手会少许多,其实单纯的比较软件和硬件没有多大的意义,任何一种岗 ...
- 嵌入式软件硬件比例_嵌入式做硬件方向好还是软件方向好?
利益相关:利益相关 先放结论Q:现在学硬件方向好还是软件方向好? A:建议偏软件! 下面咱们详细说说为什么. 硬件开发就是做电路板或者电路原理图,一般把原理图叫做设计,PCB叫做版图或layout在芯 ...
- 搞硬件工资比搞软件的低?
最近看到一件电子业界悲剧:一位博士毕业的高才生,在硅谷排名前十的一家半导体公司工作近20年,最近工资被他女儿超过了.他女儿加州理工本科毕业,在Facebook工作了2年. 这不禁让人想到了那个老生常谈 ...
最新文章
- clock函数返回负值~ (转)
- Ember——在构建Ember应用程序时,我们会使用到六个主要部件:应用程序(Application)、模型(Model)、视图(View)、模板(Template)、路由(...
- kill Signal
- 继英伟达最小边缘超算,英特尔再推10倍VPU,终端AI芯片竞争加剧
- wordpress引入php文件,WordPress主题制作之模板文件的引入方法,wordpress模板
- 设计模式:依赖倒置原则
- 用户空间与内核空间数据交换的方式(1)------debugfs
- 华为公开“一种芯片堆叠封装及终端设备”专利
- bug-Both weights and assigned values must be a sequence of numbers when assigning to values of <clas
- 梁肇新-豪杰超级解霸
- Mac:小米手机刷机
- Python3: 超简单个性动态二维码制作
- vs code git 编辑器中拉取(pull) 的时候报错 [rejected] v1.0.0 -> v1.0.0 (would clobber existing tag)
- 中国VR/AR技术的日渐成熟,带动行业领域巨大发展!
- stirling formula prove
- 【论文精读】A Survey on Deep Learning for Named Entity Recognition
- LoadRunner12 进行协议顾问分析时浏览器选择问题
- 12操作系统面临的安全威胁安全脆弱性基本概念
- stem课程是什么意思
- 网络教育学位证计算机考试包括什么区别,远程网络教育学历和学位证书有什么区别...