计算机体系结构

Posted xkjlive

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算机体系结构相关的知识,希望对你有一定的参考价值。

一、硬件编

1、目录

第一部分:硬件基础部分
    1. 计算机的实现
1.计算机的实现
  1.1 计算机理论提出
      1.1.1 图林机理
            1936年,阿兰.图灵提出了一种数学上的抽象的计算机模型,这个模型被称为图灵机,并在数学上验证了其理论上的可能性,现在所
            有的计算机运行原理都符合图林机的运作原理,图灵也因为在计算机上巨大成就,计算机科学界的最高奖也被称为“图灵奖”,这个奖
            有计算机科学界的“诺贝尔奖”之称。   
     1.1.2 冯·诺依曼提出计算机在工程上的实现原理
            1946年冯·诺依曼提出计算机在工程上被实现的可能性,并给出了一个完整的计算机基本组成结构,也即冯诺·依曼结构,冯诺依曼给
            出了这个计算机在工程上的实现结构后,很多的学院和厂家就开始着手计算机具体设计工作。
  1.2 计算机的工程实现
      1.2.1 遵循计算机原理,实现计算机的材料可以有很多 
            现在的计算机是使用电子器件实现,容易给大家造成一种错觉,好像计算机就应该是电子器件实现的,实际上只要符合计算机的原理,
            任何材料都可以用来设计计算机,比如早期的有些计算机就是机械实现的,目前研制中的量子计算机和生物计算机,就不是电子器件的,
            随着科技的发展,可能还有出现各种新型材料的计算机。
      1.2.2 机械计算机 
           美国发明家丹尼尔·希利斯就设计了一台机械式的计算机“万年钟”,当初设计这台计算机的初衷就是为了让几万年后还能够
           正常的运行,让以后的人类也能够窥探现如今的科技。据说当初就是希望使用机械式的方式实现的,部件之间全部采用齿轮转动来传
           递信息,所有运行的动能来自于太阳能的转换,
      1.2.3 通过游戏也可以模拟一台计算机
           有一款叫做我的世界的游戏,这个游戏是一个像素点游戏,不清楚的朋友可以上网搜索下,像素点游戏就是使用一个一个的小方块搭
           建你设计的世界,使用java语言进行开发的,记得有一个很有意思的玩家,这个玩家在我的世界中,使用像素点根据计算机的原理搭建
           了一台计算机,完全可以工作运行,根据输入的结果得到我们需要的结果。
     1.2.4 明白计算机的实现原理,你也可以搭建一台自己的计算机
           所以只要你明白了计算机的工作原理,你也可以自己搭建一台简单的机械式的或者电子式计算机,对于理解计算机原理还是很有
           帮助的。所以与电子/计算机相关的理工科毕业的学生,在学完了相关计算机的原理性课程后,都应该有能力搭建出一台如何计算机原理
           的简易计算机。                
     1.2.5 为什们使用电子器件实现计算机
          机械式计算机的速度非常的慢,因此向运行速度更快的电子计算机过度是必然的事情。
    2. 计算机的计算
2.1计算机的计算,指的就是各种数学运算
    数学可以描述现实世界一切的东西,科学家/工程师使用数学来描述所有事物的,事实上计算机也是这样的。    
    我们都知道,计算机中的各种图片、声音、视频等都是以数据形式存在的,计算机计算的过程其实就是处理这些数据的过程,比如对
    音视频数据进行编解码,编解码的过程中就是进行各种数学运算。
    

    各种图像、声音能够变成数据,数据又被还原成为图片、声音被人识别,都是要归功于各种翻译设备。
        
                                                相机/摄影机/麦克风 (翻译)
                    图片、声音  ——————————————————————————————>  图片、声音对应的数据 ——————————————>  计算数据(各种数学运算)
            
                                                                显示器/扬声器
                    计算数据 ——————————————> 图片、声音  ——————————————————————————————>  图片、声音(被人所识别)

    
        所以在计算机里面,所有都是以数据形式被描述的,这些数据被处理的过程就是数学计算的过程。        
        
2.2 数学运算 之 算术运算与逻辑运算
        2.2.1 什么是算术运算
            很简单,加/减/乘/除,以及从这些加减乘除引申出来的平方,开方,微积分等运算。
        2.2.2 算术运算有啥用
            比如对计算机对处理视频数据时,就会涉及加、减、乘、除等的算术运算。                
        2.2.3 实际上所有的算术运算,都是从加法中引申来的

        (1)加、减、乘、除引申出平方,开方,微积分等复杂运算        
                                                          引申出
                            加/减/乘/除法  ——————————————————> 复杂的运算(平方、开方、微积分等)
    
        (2)加法引申出乘法
                                                             引申出
                                 加法  ——————————————————> 乘法
                        
            
                乘法是快速的加法,乘法摸清了加法规律后的,快速加法计算方法,比如3*3=9,意思是三个3相加等于9
    
        (3)减法引申出除法
                                                 引申出
                                 减法  ——————————————————> 除法
                                                                  
                除法是摸清了减法规律后的,减法的快速计算方法。比如9/3=3,表示9-3减3次,就可以减完。                 
                     
        (4)减法其实就是加法,比如1-1等价于1+(-1)。

                                                         引申出
                                 加法  ——————————————————> 减法             
                                                                       
            因此最后你会发现,实际上所有各种复杂的算术运算,在计算机中最后都变成了加法运算,所以对于计算机来说所有的运算都是加法运算。
    
        2.2.4 算术运算单元
            (1)计算机CPU中,专门实现算术运算的功能单元,就是算术运算单元                    
            (2)通过上面的介绍可知,对于计算机来说,只需要一个加法器就可以实现减法、乘法、除法、开方等等各种算术运算。    
            (3)算术运算单元的核心是加法器
            
2.3 逻辑运算        
        2.3.1 什么是逻辑运算
            很简单,与/或/非相关的运算就是逻辑运算,学过数字电路的同学,对于逻辑运算应该是很熟悉的。
        2.3.2 逻辑运算有什么用    
                在现实世界中,我们时常需要做出各种选择,计算机也需要做出选择,比如,计算机通过判断某条件是否成立,选择最那个
            视频数据做处理,        
            
            比如: 
            
                如果 A条件成立 & B条件成立  
                {    
                    对A视频数据解码,并输出显示
                }    
                否者
                {
                    对B视频数据解码,并输出显示
                }
            
            (1)判断条件是否成立的,其实就是判断某个条件的真假(成立为真,不成立为假)。                        
            (2)基本辑运算三种:与/或/非,其它更加复杂的逻辑运算,比如什么或非、与非、与或非等,都是从这三个引申出来的。

        2.3.3 逻辑运算单元
    
            (1)计算机CPU中,专门实现逻辑运算的功能单元,就是逻辑运算单元                    
                        CPU的运算器 = 算术运算单元 + 逻辑运算单元 + ...    
            (2)逻辑运算单元,实际上也是加法器实现的,也就是说加法器既可以实现算术运算,也可以实现逻辑运算。
    
2.4 总结
        1)计算机执行各种程序的过程,其实就是对数据进行各种的算术运算和逻辑运算        
        2)将实现世界的温度/光照/压力/声音被翻译成为数据,以及将计算机中的数据转为视频、声音、动作等被人识别,这是各种输
        入输出翻译设备的功劳。    
                                                            翻译                                        翻译
            外界现象(光/声等信号)——————————>            数据                ————————————>   各种光/声信号,被人识别   
                                                          输入设备       cpu(算术/逻辑运算器)        输出设备            
    
            人的其实也是这样的,眼睛、耳朵将外界的信号,翻译为生物电波形式的数据,然后大脑进行处理,然后再通过嘴巴和四肢这些数据
        翻译出来,别人就能知道想表达什么。    
3. 计算机使用的进制
3. 计算机使用的进制
    3.1 进制 
        3.1.1 为什么需要进制
            当进行算术运算时,必然涉及进制问题,对于计算机来说,也需要进行算术运算,所以也必然涉及进制问题。

        2.1.2 什么是进制

            所谓进制就是计算者(人/或者机器)进行算术运算时的数据累计的规则,比如十进制,它的累计规则就是逢十进一,0到9为数码,
        只是不同的文化中,数码符号有所不同,比如,


                (1)印度/阿拉伯: 0 1 2 3 4 5 6 7 8 9, 目前为全世界所通用
                (2)英语:one two three .... nine
                (3)中文:零 一 二 三 .....九, 或者 零 壹 贰 叁 肆 ...... 玖
                (3)其它:.......

        3.1.3 原则上可以有n(n>=2)进制
            原则上可以有n进制,n>=2,所以可以有2/3/4/5/6/7/8/9...16/..20...n等进制,比如目前有的进制为,
                        
            (1)2进制:逢2进1,数码为0,12)8进制:逢8进1,数码为0,1,2,3,4,5,6,73)10进制:逢10进1,数码为0,1,2,3,4,5,6,7,8,94)16进制:逢16进1,数码为0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F

            
        3.1.4 进制只是一种计数方式
            同一个数值可以使用不同进制表示,表示的样子可能不一样,比如十进制的30这个数,以其它进制表示的话,

            (1)二进制:111102)8进制:363)16进制:1E

            虽然表示形式有差异,但是表示的数值大小是相等的。

        3.1.5 使用者具体采用那种进制来计数,需要根据使用者自身特点来定
    
        
        (1)对人来说
                人所使用的进制不能太低,也不能太高,
                
                1)进制太低的话
                    进制太低的话,会导致进位太频繁,人脑反应不过来,比如2进制的进位就会非常频繁,对人来说,使用二进制计数不合适。        
                            
                2)进制太高的话
                    比如弄个100进制,进位实在是太慢了,需要逢100才进位,实在是太慢了。
        
                3)人适合使用进位不快不慢的进制
                    对人来说,使用8/9/10/11/12/13/14/15/16进制都是合适的,比如玛雅人就是12进制的,但是人类习惯使用的还是10进制,之所以
                会使用十进制,也许是因为人类有十个手指的缘故吧。
    
                
        (2)机械式计算机
                对于早期机械式计算机来说,由于机械运转速度慢,所以进制过低会导致频繁进位,机械的速度跟不上,进制过高又导致进位过慢,
            因此和人一样,早先的机械式计算机,大多也采用10进制作为计算进制。

        (3)电子计算机
                由于电子计算机自身的特点,人们发现,电子计算机非常合适使用二进制计数,接下来就会介绍为什么适电子计算机适合使用二进
            制计数。

        
    3.2 电子计算机(数字电路)为什么使用二进制

        3.2.1 二进制
        (1)逢2进一,数码只有0和1两个

        (2)二进制有一个很突出的优点,那就是二进制只有两个数码,即0和1,数码简单,很容易使用物理形式的表示,比如,
        
                    1)纸带上有孔就是1,无孔就是0
                    22.5v高电压就是1,0v就是0,

                不像十进制,有0,1,2,3,4,5,6,7,8,9是个数码,使用物理形式表示时,需要使用十种状态来表示这十个数码。

        (2)二进制也有明显缺点
        
        
                那就是二进制进位速度太快,前面也说过,对于反应速度慢的计算者,比如人或者早期的机械式计算机,就不适合使用二进制。
            但是对于使用电信号工作的电子计算机来说,由于电子计算机的运行速度非常快,所以这个缺点对于电子计算机来说,没有任何影响。
            
        3.2.3 电子计算机使用二进制有哪些好处
    
        (1)很容易使用电子器件的二态性,来代表二进制的0、1数码    
                1)所谓二态性就是两个状态,电路中到处充满二态性的特点,比如高电平/低电平,饱和/截止,通/断等等,非常适合
                    用来表示二进制的0、1这两个数码。

                2)在电路当中,最常见的就是使用高低电平表示0/1,比如0v(低电平)代表0,2.5v(高电平)代表1。
        
        (2)容易对二进制数据进行永久存储

                1)早期的纸带存储
                    在纸带上打孔,当光照射到纸带上时,光线能够穿过去孔洞被另一边接收到时就死数据1,否则就是数据0。
    
                2)磁盘存储
                    通过磁极的方向(正反)表示二进制数据,实现数据永久保存。

                3)光盘存储
                    表面的凹凸表示二进制数据的0/1。

        (3)容易进行算术运算和逻辑运算

                1)容易实现算术运算
    
                    容易设计出二进制加法电路(加法器),而算术运算单元的核心就是加法器,对于计算机来说,只要实现了加法运算,其它的减/乘/
                除等运算,很容从加法运算中引申出来。

                2)容易实现逻辑运算(与、或、非)    
                    在逻辑运算中有真假概念(条件成立为真、不成立为假),二进制的1/0正好可以用来代表“真”和“假”,1可以表示“真(Ture)”,
                0可以表示“假(False)”,所以说电子计算机使用二进制,非常适合用于进行逻辑运算。
                    
                    计算机的逻辑运算也是使用“加法器”完成的。
    
        (4)电子计算机使用二进制数据,具有很强的抗干扰能力

                    因为二进制数只有两个表示状态,比如2.5V表示1,0v表示0,状态很简单,因此抗干扰能力强,如果是十进制的话,需要十种状态
                来表示0...9的数码,表示的状态越复杂,数据就越容易因干扰而出错。
                
                    这就好比我们平时处理事情,事情如果很简单的话,就算有点干扰也没事,不容易出错,事情如果很复杂,哪怕一点点干扰也很容
                易出错。
4. 数字电路
4.1 模拟电信号 与 数字电信号 
      在讲模拟电信号和模拟电信号之前,首先来看看电信号,
      4.1.1 电信号:数据的表现方式
            对于电子设备而言,数据不可能凭空存在,必须以某种方式表现出来,对于电子设备而言,数据是以电信号(电流/电压)的
           方式表现的,电信号分为了两种,       
            (1)是模拟电信号:模拟电路中流通的就是模拟电信号。
            (2)是数字电信号:数字电路中流通的就是数字电信号。
    
       4.1.2 模拟电信号和数字电信号异同
        (1)模拟电信号
                1)模拟电信号,直接使用电压值、或者电流值表示现实世界的各种情况(数据)
                  比如外界温度为15摄氏度,当温度传感器感受到15度的温度后,会将感受到的温度转换为电压或者电流,然后直接使用电压、
                  电流值表示温度值,比如得到的电压值为15v的话,也就是说这个15v直接表示的就是温度15度,直接使用电压、电流值表示数据。
                        
                2)模拟电信号是连续变化的    
                  模拟电信号直接通过电压值、电流值模拟真实情况(比如温度),由于现实的温度是连续变化的,因此模拟电信号也跟着连续
                  变化,其实这就是“模拟”现实情况的这么一个过程,也因为这个“模拟”的过程,电信号就被称为了“模拟”电信号。
                    
                3)模拟电信号流通于模拟电路中

                4)总结
                    (a)模拟电信号,就是直接使用电压或者电流值,反应(模拟)现实世界各种情况的电信号,直接电压、电流值来表示数据的
        
                    (b)由于现实世界的情况是连续变化,所以反应现实情况的模拟电信号,也跟着是连续变化。        
                    (c)模拟电信号流通于模拟电路中    

        (2)数字电信号
                1)数字电信号是如何表示现实世界的
                    (a)回顾“模拟电信号”是如何表示温度的
                        直接使用电压或者电流值表示(模拟)外界的温度,电压、电流值会跟着温度连续变化。
                        但是需要强调一点的是,电压、电流表示温度时存在精度问题,比如实际温度是13.4567567.....,由于受到精度影响,
                        模拟的电压、电流值只能表示到13.45这个程度,后面的可能表示不出来,无法100%准确反映。    

                    (b)数字电信号是如何表示温度的
                        还是温度的例子,实际温度为15摄氏度,温度传感器仍然还是会先得到模拟电压值15v,然后再将这个模拟电压的电压值
                        转为二进制数据,15的二进制为1111,在数字电路中,如果使用2.5v表示1,0v表示0的话,使用数字电信号表示1111(15)
                        的话,应为2.5v 2.5v 2.5v 2.5v。

                                                    转(温传)                       转(模数转换)
                        15摄氏度  ———————————> 15v模拟电压  ———————————————————>  数字电信号表示的二进制数:2.5v 2.5v 2.5v 2.5v(1111)
    
                                                    转(温传)                          转(模数转换)
                        12摄氏度  ———————————> 12v模拟电压  ———————————————————>  数字电信号表示的二进制数:2.5v 2.5v  0v   0v (1100)

    
                         直白点理解:
                            ·模拟电信号:使用电压或者电流值直接表示外界情况(温度)。
                            ·数字电信号:使用高低电平组合而成二进制数,来表示外界的情况。
                             数字电信号不可能凭空出现,需要从模拟电信号转换而来。
                                    
                2)数字电信号是离散的
                    为什么说数字电信号是离散的呢,要搞清楚这个问题,首先要弄清楚“模拟电信号”如何被转成“数字电信号”。

                    图中过程的特点:
                    (a)数字电信号都是由模拟电信号转换而来,转换的过程分两步,
                            · 第一步:采样,采样之后,原本时间上连续的模拟电信号,就变成了离散的电信号
                            · 第二步:将采样后的、离散的电压/电流值,转为数字电信号形式的二进制数所表示温度值

                    (b)采样频率越高,数字电信号就越逼近出真实情况
        
    (3)总结

            1)模拟电信号与数字电信号的区别和联系
                (a)区别:模拟电信号是连续的,数字电信号时离散的,模拟电信号流通于模拟电路中,数字电信号流通于数字电路中
                (b)联系:数字电信号不可能凭空得到,需要从模拟电信号转换而来
            2)A/D和D/A转换            
                (a)A/D转换:将模拟电信号转换为数字电信号,这个过程叫模数转换(A/D转换),A表示Analog(模拟),D表示Digital(数字)
                (b)D/A转换:有A/D转换就有D/A转换,D/A就是将数字电信号转为模拟电信号,称为数模转换。        
                    在后面的单片机课程中,会详细讲解A/D和D/A的电路原理,以及如何通过编程控制A/D和D/A转换。

    4.2 信号/数据/信息之间的关系

        在前面,我们已经提到了电信号和数据之间的关系,我们说过,在电子设备中,数据是以电信号的形式存在的,在这里我们再加入一个概念“信息”,然后对信号/数据/信息这三
者,做一个的对比理解。 当然,如果你要是实在的分不清楚的话,那么你可以认为这三个是一回事。
4.2.1 概念描述 (1)数据:一种是数学上的逻辑关系 (2)信号:用于表现数据,比如以电/磁/光信号(能量)表现数据,信号又分为模拟信号和数字信号两种 (3)信息:从数据中提取出得到的,客观世界在人脑中的反映 4.2.2 通过例子来理解信号/数据/信息之间的关系 例子:计算机如何表示“冷”? 首先:计算机不可能直接存储冷这个字形,所是以“中文编码”的形式存储在计算机中。        其次:当然如果人要看懂“冷”这个意思的话,显示器需要将“中文编码”换为“冷”的字形。        最后:当人看到“冷”的字形后,自然就能理解冷所表达的信息了。        我们假设“冷”这个字的中文编码为18,对应的二进制的 1 0 0 1 0。 (1)数据:一种是数学上的逻辑关系 “冷”的中文编码为18,二进制为10010,不管是10010还是18,事实上指的是同一个数据。 (2)信号:数据的表现方式 在数字电子设备中,使用数字电信号来表示10010这个二进制数,数字电信号为2.5v 0v 0v 2.5v 0v。 如果是在光纤中,则使用数字光信号表示10010。       (3)信息:从数据中提取出得到的,客观世界在人脑中的反映 显示器最后将18翻译为“冷”这个字形后,人看到后就能得到“冷”这个信息,总之最后从18这个数里面提取出了“冷”这个信息。 4.2.3 数据可以被各种信号表现 使用各种不同的信号表现同一个数据,尽管表现形式有所不同,但是表示的都是同一个数,比如二进制的10010,不管使用电 信号、磁信号还是光信号表示,
都是同一个数。
1)数字电信号: 2.5v 0v 0v 2.5v 0v ,使用电平表示数据 (2)磁信号: 正向 反向 反向 正向 反向, 使用磁性方向表示数据 (3)人识别的符号: 1 0 0 1 0 , 眼睛可以通过光信号读到这个数据 总之,不管使用什么信号表现数据,数据逻辑关系所表示的都是18这个数(10010),至于这18这个数应该怎么解读,暗含 了什么信息,这个要根据具体情况来看,因为18可以表示18个人,也可以表示18头猪,也可以表示18块钱,也可以表示你今年18岁, 也有可能表示“冷”。 4.2.4 具体使用那种信号来表现数据,需要看数据使用者的特点       (1)对于人来说,主要靠视觉(光信号)/听觉(声音信号)来感知世界,因此人所识别的数据,主要以光/声音(振动)信号进行表现的。        (2)对于计算机来说主要使用数字电信号/磁信号/光信号(光纤通信)来表现数据。 4.3 数字电路的实现 4.3.1 计算机与数字电路         设计计算机的前提,是先设计出数字电路,有了数字电路后,才能使用数字电路设计出电子计算机,换句话说电子计算机的电路就是数字电路的。 4.3.2 数字电路为什么也被称为开关电路 “开关”只有两个状态,一个开状态、一个关状态,数字电路中的二进制,也只有两个状态,一个是1(2.5v)、另一个是0(0v),所以数字电路也被称为开关电路。 4.3.3 具体如何实现数字电路       (1)设计开关电路(数字电路)的关键就是,电路中要有能表示1/0的、稳定的高低电平(电压)。       (2)可否使用电阻电路实现?           1)什么是电阻电路就是除电源外,只由电阻、电感、电容元件组成的电路,初中、高中所学的简单电路就是电阻电路。           2)电阻电路无法用于设计“数字电路” 为什么不能用于设计“数字电路”呢? 因为电阻电路,很难提供稳定的高低电平,提供稳定的0v的低电平,相对还比较容易,顶多不给电就行,但是要提供稳定的高电平就很难了。 根据初中、高中所学电阻电路知识,我们知道在电阻电路中,电压和电流之间是线性关系,电流一旦有变化,电压随即会跟着变化,很难稳定的电压,
因此很难使用电阻电路实现“数字电路”。       图:电阻电路的电压与电流关系图: (
3)晶体管成为了实现“数字电路的”关键 1)在早期,使用电子管实现开关电路 早期通过电子管来设计开关电路,但是由于电子管的体积太过巨大,被后来的半导体材料的二极管、三极管、以及mos管等 替代,二极管、三极管、以及mos管也被称为晶体管。 2)半导体材料 二极管、三极管、以及mos管等晶体管是由半导体材料实现的, (a)什么是半导体 所谓半导体,就是导电性能介于全导体(比如金属)和绝缘体(比如塑料)之间的一种导电材料,通俗理解就是能导电、但是导电效果又不是很好的导电材料。         (b)半导体材料            理工类的同学应该都知道,半导体材料就是往二氧化硅中参入硅、锗、砷化镓等杂质后所形成的,二极管、三极管、以及mos管等晶体管,就是使用半导体材料制
成的。对于半导体材料不清楚的同学,请百度,或者查阅相关书籍自行了解。
3)晶体管特点 晶体管的最大特点就是,体积可以非常小,目前最先进的集成电路,已经包含超过17亿个晶体管,可以想见晶体管的体积有多小。      (4)为什么晶体管能用于设计开关电路         1)二极管 a)二极管特性 图:二极管特性图           · 稳压特性:当正向电压达到0.7V后,不管电流如何增加,二级管两端的正向电压将会稳定的维持在0.7V左右。           · 反向截止特性:给二极管两端加反向电压时,二极管截止不导通,当然前提是,反向电压<击穿电压。            · 击穿特性:当反向电压持续增大,一般达到6v左右时,二极管就会被击穿,二级管被击穿后,       - 二极管要么完全断开,不再有任何有导通能力       - 要么就变成了一根导线,不再具有单向导通的能力。 (b)二极管具有能够提供,稳定表示1、0的高低电平的能力           · 提供稳定低电平:不给电就是低电平。            · 提供稳定的高电平:给正向电压时,可以将电压稳定在0.7v左右。       从上可以可知,二极管能够提供稳定的0v和0.7v,用于表示二进制的0/1,而实现开关电路(数字电路)的核心就是,就是提供 稳定的高低电平,因此从二极管就
可以看出,使用半导体材料的晶体管,是可以实现开关电路(数字电路)。不过真正的数字电路,都是使用三极管或者mos管是实现的,这里只介绍了二极管,而没有介绍三极管,因为三
极管的电压/电流关系比较复杂,不易理解,这里只是想通过简单的二极管来告诉大家,使用半导体的晶体管,可以很容易地实现数字电路。       2)晶体管表现出数字特性,但是内部的工作任然模拟的 (a)晶体管内部工作是模拟的 二极管/三极管/mos管等晶体管的电压/电流是连续变化,因此晶体管内部的工作是模拟的。 (b)晶体管实现的数字电路宏观上是数字的晶体管在宏观上,由于能够提供稳定的高低电平,因此宏观上具备开关特性,因此使用晶体管设计的开关电路自然是数字的。 (c)总结 · 数字电路是由晶体管实现的,因为晶体管能够提供稳定的,表示1/0的高低电平,宏观上表现出1/0的数字特性,因此数字电路在宏观上必然是数字的。            · 由于晶体管的内部工作是模拟的,因此数字电路本质上是模拟的,实际上一切的电路都是模拟的,就算是数字电路本质上也是模拟的,之所以称为数字电路,是
因为电路宏观上表现出1
/0的数字特性。 3)二极管/三极管/mos管的关系       (a)在数字电路实际的实现中,基本都是使用三极管或者mos管实现三级管/mos管同样能够提供稳定高低电平,可以把三极管、mos管看成是由多个二极管组合而成。       (b)三级管、MOS管,可以将电平稳定在任何需要的电压值数字电路中表示1的高电平电压,一般的要求在2.5~5V间,所以三级管、MOS管,只要能够提供2.5~5V之间的稳
定电压,该电压就能够用来表示二进制的1。 (c)集成电路(集成芯片)数字电路的核心电路都被集成在了集成电路中,以集成芯片的形式存在,目前很多的集成芯片,居多集成MOS管,因为MOS管的体积上比三极管更
小。

 


5. 大学中的模拟电路、数字电路、微机原理这几门课的关系
5. 大学中《模拟电路》、《数字电路》、《微机原理》三门课的关系
5.1 三门课的基本介绍
        5.1.1 模拟电路
        (1)含义
                即Analog Circuit,模拟电路就是处理模拟电信号的电子电路,《模拟电路》这门课专门讲模拟电路的设计与实现的,《模拟电路》
            这门课,这门课常被简称为《模电》。

        (2)模拟电路是一切电路的基础
                前面说过,虽然二极管、三极管、mos管等晶体管,能够提供稳定的高低电平,用于表示二进制的1/0,在宏观上表现出开关特性
            (数字特性),但是晶体管的内部工作任然还是模拟的,所以就算是使用晶体管实现的数字电路,本质上还是模拟的,因此模拟电路
            是一切电路的基础,因此《模拟电路》这门课的重要性不言而喻。

        (3)二极管、三极管、Mos管是《模拟电路》的内容
                既然二极管、三极管、Mos管的内部工作却是模拟的,所以二极管、三极管、Mos管自然就属于《模拟电路》这门课的内容。

        5.1.2 数字电路
        (1)含义
                即Didgital  Circuit,数字电路就是处理数字电信号的电子电路,《数字电路》这门专门讲数字电路的设计与实现,这门课也常
            被简称为《数电》。

        (2)《数字电路》具体讲些啥
                讲如何使用二极管、三极管、mos管等有着“数字特性”的晶体管,设计出各种功能的数字电路,而这些数字电路是组成计算机的基本
            电路,这些数字电路有,
                1)加法器:可用于实现cpu的算术运算单元和逻辑运算单元    
                2)A/D、D/A转换器:模数、数模转换,特别是A/D,计算机需要使用A/D转换器得到数字电信号    
                3)触发器:内存、寄存器等存储器的基本组成单元
                4)译码器:用于实现内存地址翻译            
                5)等等

        5.1.3 微机原理
                有了加法器、AD/DA转换器、触发器、译码器等计算机所需要的各种数字电路后,并不等于有了计算机,还需要根据
            冯诺·依曼提出计算机工程结构,将这些东西在合理的设计到一起,然后才能得到计算机。
            (1)微机原理
                    通过《微机原理》这门课的学习,我们可以知道                
                    1)计算机的各个组成部分,是如何通过数字电路设计实现的,这些电路又是如何根据“冯·诺依曼”组合在一起,构建出计算机的。
                    2)计算机的各硬件具体是怎么工作,以及如何使用汇编程序来控制这些硬件使其工作。


    5.2《模拟电路》、《数字电路》、《微机原理》之间联系
        大多理工科类的同学基本都学过这三门课,但是很多同学一直都搞不清楚为什么要学习这几门课,实际上,你只要学明白了《模拟电路》、
        《数字电路》、《微机原理》这三门基础原理课,就可以完全搞明白计算机的结构组成与工作原理。

                图:

            不过现在有不少专业已经将《微机原理》去掉了,改用单片机课程来及代替,那么为什么要这么做呢,主要有四个方面的原因,
        (1)《微机原理》使用Intel x386系列芯片进行讲解,但课程涉及的芯片,大多已经过时,还讲这种老的东西意义不很大,而且还晦涩难懂
        (2)单片机是微缩版的计算机,通过学习更简单的单片机,更加容易弄懂计算机的基本组成与工作原理
        (3)关键一点是,单片机在实际开发中,还在被广泛的使用,学习单片机具有很强的现实意义
        (4)单片机课程相对有趣,因为可以使用单片机做出很多有趣的小电子设备,相比原有的枯燥的《微机原理》课,学生对单片机更感兴趣。
                至少我当年学习时,我是很讨厌《微机原理》,但是对单片机确很感兴趣。
        
            在后期技术课程中,会推出8051和stm32高级单片机的详细课程,感兴趣的同学请关注。

5.3 应该如何对待《模电》、《数电》、《微机原理》这是三门课
        至于如何对待这三门课,则需要看你将来具体从事哪个方向。

        5.3.1 从事微电子方向
            假如你想考研向微电子方向发展的话,建议最好把这三门课都学好,当然对于微电子来说,其中的模电和数电需要着重学习,
        特别《模电》更是重中之重。

        5.3.2 毕业后面,从事纯粹硬件方面的工作
                纯粹硬件方面的工作,比如有电路原理图设计、PCB板绘制等,与硬件密切相关,因此《模电》和《数电》是一定要过关的,
            至于《微机原理》的话,要求就要低一些。

        5.3.3 毕业后,从事与编程相关的IT开发工作
        (1)纯软件的IT开发
                1)《模电》、《数电》
                    工作内容与硬件的相关性不是非常大,所以了解基础知识即可,不需要深入研究,如果是电子、计算机等相关专业的同学,只要有
                在大学里的《模电》、《数电》底子就够了。
                
                2)《微机原理》
                (a)有义务学好《微机原理》
                        因为既然你是从事是像编程这种,与计算机相关的IT开发工作,你就应该要知道《微机原理》所讲的计算机硬件工作原理,
                    前面讲《嵌入式工程师-系列课程》的“概述篇”时就说过,了解计算机硬件原理是由好处的。
                        
                        但是实际情况是,很多的IT编程工作者,基本只会使用某一门高级语言敲代码,具体的计算机原理方面的知识非常差,老实讲,
                    不算是真正的IT应用开发工程师,顶多是普通编程的“码农”。
        

                (b)有些同学说,我的微机原理有些差,怎么办呢?
                        是不是应该立即去买一本《微机原理》的书,或者抱着大学的微机原理的书赶紧啃呢,但是《微机原理》挺难的,
                    很难坚持学的下去。
                    
                        所以我们建议通过学习单片机课程来代替,前面也介绍过,不少高校本来就使用《单片机》的课程来代替《微机原理》的课,
                    而且更容易学懂,在实际开发中单片机也在被广泛使用,关键是学习单片机时,还能做不少非常有意思的小电子设备,实践内容
                    非常的丰富,学习起来也很有趣,不会感觉很枯燥。        
                    
        (2)毕业后,从事“嵌入式”这种硬软相结合的IT开发工作
            (a)嵌入式开发比较特殊
                        嵌入式是一个硬软相结合的技术方向,不仅要求有软件方面的知识,还要求有硬件方面的知识,所以对《模电》、《数电》、
                《微机原理》,当然是有所要求的。        
            (b)《模电》、《数电》、《微机原理》的基础不好怎们办呢?    
                    有些同学说我大学没学好,是不是赶紧把大学的这三本书回炉下呢,其实这倒不必,

                    ·《模电》、《数电》
                            
                            站在it应用开发工程师的角度来说,大家在大学所学的那点基础其实足够了,如果在后续嵌入式课程中,涉及到了与模电、数电
                        相关的某些具体的、深入的知识时,会单独的这对知识点做重点讲解,所以不用担心。
                            假如你对自己的《模电》、《数电》还是不放心,也没关系,后续会有专门针对《模电》、《数电》的视频课程,我们是站
                        在it应用开发的角度来讲的,我们只会讲对IT开发有帮助的内容,也就是说只捡干货讲,不需要的内容会被果断舍弃。
                    
                ·《微机原理》
                        如果你在学校没有学好这门课,也没关系,后面嵌入式技术课程,会涉及从硬件到OS到上层软件等计算机各方面的知识,
                    内容完全超过《微机原理》的范畴,所以学习嵌入式完全可以完胜《微机原理》。
                        学习嵌入式技术,一方面可以让你深入全面的掌握计算机从底层到上层的各方面的知识,不管你具体做那方面的IT方向开发的,
                    都是有帮助的,更关键的是,嵌入式本来就是一个很不错的It就业方向。

6. 微电子和计算机对 电子的影响
6. 微电子和计算机对 电子的影响

    6.1 有关电子专业
    
            在过去,电子是理工专业中最大的专业,不过这些年体量减小了,但是仍然还是最大的专业。
            我自己就是电子专业毕业的,记得我那个时候,电子专业还是蛮不错的,不过这些年随着微电子和计算机的快速发展,
        电子专业受到了不小的影响。
        
    6.2 电子是如何受到微电子和计算机影响的

        想了解这一点,需要弄清楚电子发展的几个阶段。
    
        6.2.1 第一阶段:电子为主导时的阶段
        (1)这一阶段的电子设备的特点是
                1)这一时期还没有计算机,也没有微电子,所有的电子设备的设计只与电子有关,电路设计全由电子工程师完成,
                    这一时期电子是核心。
                
                        图:            

                2)电子元器件(电阻、电容、电子管等)的体积非而且常大,电子元器件全都是分立元件,所以设备体积非常大    
                3)没有所谓的pcb板,电子元器件之间直接使用导线进行连接
                4)电路硬件设计好后,设备的工作逻辑(功能)固定死了
                    也就是说,电子设备的功能是直接由硬件结构决定的,跟软件半毛钱关系都没有。
                    
        (2)这一时期电路的样子

                    图:
                
        6.2.2 第二阶段:微电子和计算机开始出现
        

        (1)这一时期的电子设备的特点是
                1)在众多的电子设备中,开始出现计算机这种特有的电子设备
                
                        图:
                        
                2)半导体材料晶体管代替了电子管,由于晶体管体积更小,因此电子设备的体积相应大幅缩小
                3)PCB板被广泛使用,不再使用导线直接连接电子元器件
                4)电子专业中分离出了微电子
                        微电子的出现,使得集成电路开始发展,集成电路晚于计算机的出现。
                        集成电路出现后,电路中的核心功能开始被集成于芯片之中,由于集成芯片把核心的电路分走了,
                    电子工程师的工作量开始减少,只是由于集成度的限制,设备中还留有大量的分离元件,因此设备体积还是较大。
                        需要强调一点的是,不要一说到集成芯片就想到CPU,尽管CPU也是集成芯片,但是并不是所有的集成芯片都是CPU,很多的只是
                    某些特殊的功能集成芯片,比如某些芯片专门用于A/D或者D/A的,专门用于实现3-8译码器。                
            (2)这一时期的电路板的样子
            
                图:

        6.2.3 第三阶段:微电子和计算机进一步发展

        (1)在这一时期的特点

                1)超大规模集成电路日趋成熟
                    几乎所有的复杂的电路,都被集成在了芯片中,不再需要使用分立元件来设计复杂电路,电路板变得更加的简洁,设备体
                积也变得更小。
                
                2)几乎所有的电子设备使用计算机实现

                        图:

                    (a)为什么计算机被广泛应用于各个方面
                    
                            随着集成电路的快速发展,计算机可以做的越来越小,所以除了PC和服务器等通用计算机外,各种小型计算机被大量使用,
                        以前所有的、有着某些特殊用途的、纯硬件式的电子设备都被淘汰了,都改用小型计算机实现,并大量用于民用、工业、农业、
                        军事、交通、医疗等领域,比如交通灯、内窥镜、空调等。
                        

                            这些有着某些特殊用途的小型计算机常被称为“嵌入式计算机”,有关嵌入式,会在后面的“嵌入式工程师学习指南”篇中详
                        细介绍。                

                    (b)计算机又拿走了一部分原属于电子的工作内容
    
                            在计算机普及之前,设备的功能原本是由电子硬件决定的,但是现在几乎所有的电子设备都是由计算机实现,设备的功能不在由
                        纯硬件结构决定,而是计算机程序决定,因此电子原有的工作,又被计算机的分走了一部分。
    
                            现在几乎所有的电子设备,均由计算机实现,所以都涉及编程工作,因此对于电子专业的学生来说,自然也要求具备一定的
                        编程能力,这就是为什么电子专业都要求学习C语言的原因了,之所以是C语言,而不是其它的语言,那是因为电子系的同学经
                        常从事的是嵌入式计算机的开发,而不是PC/服务器等这类通用计算机的开发,而嵌入式计算机基本都使用C语言进行编程。


        (2)这一时期电路板的样子
                    
                图:
6.3 回顾“微电子”和“计算机”对“电子”的影响    
        (1)微电子对电子的影响
                由于核心电路都被集成到了集成芯片中,不再需要电子工程师来设计复杂的、分离元件形式的电路,原本属于电子的很多工
            作被微电子给分走了
        
        (2)计算机对电子的影响
                前面就说过,现在的电子设备几乎都是由计算机实现的,设备功能均由程序决定,不再像以前,设备的功能纯粹由电子工程师所
            设计的硬件结构决定,同样的,原本属于电子的工作,又被计算机给分走了一部分。

            总之原本属于电子的工作内容,被微电子和计算机给分走了很多,如果你毕业后不考研,也不从事与编程相关的纯软件开发、或者
            嵌入式开发的话,电子的就业机会相对比较窄。
    
    6.4 通用计算机开发与嵌入式计算机开发
        现在电子计算机大体上可以分为两类,一类是通用计算机,另一类的嵌入式计算机,
    
    6.4.1 通用计算机
            PC和服务器等计算机就是典型的通用计算机,
        (1)通用计算机的硬件基本的是标准化的,它们在出厂时硬件就被设计好了,开发人员不再需要关心硬件问题,只需要为其
                开发运行的软件即可。
        (2)通用计算机的软件开发,大多由计算机相关专业的同学从事。
                
    6.4.2 嵌入式计算机
            比如各种的电冰箱/电饭煲、各种玩具、各种汽车电子等,就属于典型嵌入式设备。
        (1)由于嵌入式计算机的特殊性,计算机的硬件不是标准化的,需要专门的定制,因此进行嵌入式开发时,既要涉及硬件的开发,
                也要软件的开发,所以嵌入式是属于硬软结合的开发。
        (2)嵌入式的开发,大多由电子相关专业的同学从事
                    比如像单片机、Linux等嵌入式开发,嵌入式开发应该说,算是电子专业的御用开发方向之一。
                    之所以会这样的,是因为嵌入式是硬软相结合的开发,而电子专业的同学,硬件知识相对比较扎实,毕竟电子专业就是专门
                研究硬件的。            
                    而且电子专业几乎都会学习c语言,有相当的编程基础,而嵌入式开发通常使用的也是C语言,因此电子专业学生的知识结构,
                应该说是天然的满足嵌入式的开发需求,所以大量电子专业的学生毕业后,大多会选择从事嵌入式开发。    
                
                
    6.5 通用计算机与嵌入式计算机之间的界限
            这些年随着嵌入式的飞速发展,嵌入式计算机与通用计算机之间的界限越来越模糊,比如以手机为例,事实上早先的手机属于典
        型的嵌入式设备,升级为智能手机后,与PC这种通用计算机差别是越来越小,PC能干的事情,智能手机基本都能干。
            从手机就可以看出,嵌入式计算机与通用计算机之间界限正在模糊化,所以与手机相关的开发,既可以认为是通用计算机的开发,
        也可以认为是嵌入式开发。
            与之相对应的,在未来,计算机专业与电子专业之间的界限也会变得模糊,电子专业毕业后与计算机专业毕业后所做的事情,可
        能会越来越来相似,现在有不少高校开有物联网、嵌入式等新专业,实际上这些新专业,是典型的介于电子与计算机之间的新型专业,
        既涉有电子的特点,也有计算机的特点。
        
    6.6 目前,电子专业的毕业去向
    (1)考研        
    (2)做与编程相关的IT开发

            1)纯软件的开发,对应就是通用计算机相关的开发

            2)硬软相结合的开发,对应就是嵌入式相关的开发
            

    (3)毕业后,从事纯硬件方面工作

            比如像设计电路原理图,绘制PCB板等,

a)设计电路原理图

                由于集成电路的快速发展,各种复杂的核心电路,都被集成到了芯片中,相比以前,电路原理图的设计变得简单了。

            b)绘制pcb板
                应该说,绘制pcb板算是一个经验活,因此经过PCB培训的初中/高中毕业的学生,基本都能从事PCB板的绘制工作,就技术含量来说
            相对少了些。

                当然需要强调一点的是,如果绘制的是高速PCB的话,技术要求相对较高,如果没有一定深度的电子专业知识作为基础的,很难绘
            制出这类高级的PCB板,所以像这类高级别PCB的绘制,大多还是由电子专业的本科学生在做,毕竟技术难度不在一个档次上,当然对应
            的待遇自然也是不一样的,像这种能够高级别PCB的硬件工程师,薪资待也是相当可观的,不过同样需要多年的经验积累。
    
            
    (4)电子方面的销售,或者技术支持什么的

    (5)转行其它
    
第二部分:计算机硬件组成结构
    第一块:CPU  ----------
    7. 计算机基本结构组成    
    8. CPU各部件是如何通过电子元器件实现的    
    9. CPU、MCU、PLC、DSP、SOC、FPGA等之间的关系    
    
    第二块:总线与接口-----
    10. 总线与接口的详细结构    
    
    第三块:外部设备-------
    11. 外部设备之存储器 Bit    
    12. 外部设备之其它设备    
    13. 冯诺·依曼结构和哈佛结构    
    
    14. 举例理解,计算机具体是如何工作的    

    
第三部分:通信(硬件的角度讲通信)
    16. 通信原理概述
    17. 通信中的协议
    18. 通信和协议的总结
    19. 通信中的一些常见概念介绍
    20. 常见的通信例子

 

















以上是关于计算机体系结构的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段5——HTML元素结构

分享几个实用的代码片段(第二弹)

分享几个实用的代码片段(第二弹)

for循环结构

使用从循环内的代码片段中提取的函数避免代码冗余/计算开销

14.VisualVM使用详解15.VisualVM堆查看器使用的内存不足19.class文件--文件结构--魔数20.文件结构--常量池21.文件结构访问标志(2个字节)22.类加载机制概(代码片段