123_计算机的组成概述


课程内容
-------------------------------------------------------------------------------------------------
7. 计算机基本组成结构


  7.1 冯诺·依曼结构

7.1.1 冯诺·依曼结构的组成部分
(1)输入、输出设备

1)输入设备:向计算机输入数据,比如,
·通过摄像头、MIC,将图像/声音等转成二进制数据给计算机
·从网卡输入数据给计算机等
·其它

2)输出设备:从计算机输出数据,比如,
·通过显示器、扬声器,将二进制数据翻译成为图片/视频/声音等让人能够识别
·或者通过网卡输出数据给别的计算机
·其它

(2)存储器:实现程序和数据存储

(3)运算器(ALU): 进行算术运算和逻辑运算


(4)控制器: 解释(理解)程序指令,将程序指令转为对应的一条一条的微指令,这些微指令会控制运算器等部件工作,进行比如,
·数据的算术、逻辑运算
·数据的搬移,比如从CPU的寄存器搬移到内存,或者从内存的某个位置搬移到内存的另一个位置。
·等等

7.1.1 结构图



7.2 哈佛结构
与冯诺·依曼结构相对应的是哈佛结构,我们会在后面详细讲解这两种结构之间的异同和各自的优缺,为了便于讲解的方便,这边
还是以经典的冯诺·依曼结构为例,进行计算机组成结构的介绍。


7.3 计算机的详细结构
如果说我们将存储器划归到输入、输出设备里面去的话, 计算机总体上可以分为三大块,即CPU,总线与接口、外部设备(输入输出设备)



7.3.2 各部分简述

(1)cpu
1)运算器
(a)作用:根据指令要求,对数字电信号的二进制数据,进行算术运算和逻辑运算,
(b)运算器组成
· ALU:Arithmetic Logic Unit,中文叫算术逻辑运算单元,进行算数运算和逻辑运算

·(通用)寄存器组:用于临时存放ALU在进行算术/逻辑运算时,运算过程中涉及到的一些中间值和最终计算结果值。

· 乘商寄存器:专门用于临时存放乘法和除法运算中间值和最终结果值。

· CVZS标志位:ALU运算时,会设置各种标志位

C:进位、借位标志,如果有进位或者借位,C=1,否则C=0。
C的应用举例:请写汇编代码计算13208 + 34535相加后的值。

答:为了便于编程时好理解,我们先将这两个十进制的数,转为十六进制,即OX3398和0X86E7。
汇编实现这两个数的相加的大致步骤如下图所示。




总结:从这个例子就可以看出,C标志位的作用,有关借位作用同理,就不再赘述。如果你想了解跟多,我们在后面嵌入
式技术课程中,在讲有关汇编时,还会将这方面的内容。当然我们这里在强调一点,我们学习汇编并不是为了使用会变
来进行开发,而是通过汇编理解计算机的工作原理。

有些同学说,我用C语言的等高级语言写代码,这些标志位也会用的上吗,当然也会用得上,百年一起在编译时,C语
言写的程序会被编译为汇编,进行加法这种算术运算时,会按照同样的方式使用C进/借位标志位。


Z:运算结果是否为零标志,如果结果为0,将Z设置为1(2.5v),否者将Z设置为0(0v)。
应用举例:比较两数是否相等,比如a=3,b=3,判断两数是否相等,写汇编程序实现时,实际上就是将两数相减(算术运算),
如果Z=1表示a-b的结果为零,说明a等于b,否则说明a不等于b。

但是有些同学可能会说,老师,我用C语言写的时候,是直接按照if(a == b)这种形式来写的,没有a-b的过程啊,这是高级
语言的人性化的写法,但是编译器最后都会讲高级语言的程序编译成为汇编程序,汇编程序基本可以等价于机器指令了,
汇编会按照之前描述的方式来判断两数是否相等。

V:溢出标志,有溢出,V=1,V=0

(1)什么是溢出
比如一个32位的寄存器,自然只有32个bit,能装二进制数的最大情况就是32个1,即11111111 11111111 11111111 11111111,
如果再往里面加一个1的话,就向第33位进位了,但是寄存器只有32位,不存在第33位,哪个进位并没有被记录,寄存器
中的32个bit全都变成了是0,即00000000 00000000 00000000 00000000,这种类似的现象就是溢出。
溢出会导致数值发生突变,这种数值的突变,可能会导致计算结果出现错误。


(2)为什么要检查溢出
从上面的描述中,不难看出,溢出可能会带来一些不好的结果,因此溢出的检查是很有意义的,检查到溢出后就能提前
准备应对措施。检查有无益处的方法就是检查V标志位,如果V被设置为了1,表示有溢出,否者就是没有溢出。

S:有时用N表示,意思是当两个有符号数进行运算时,如果结果为负数,S就被设置为1,如果结果为零或者正数的话,S就
被设置为0。

应用举例:比较a、b两数的大小,写成程序的话,我们会让两个数做减法运算,然后检查标志位S,如果
S=1:表示减法的结果是一个负数,说明a<b
S=0:则表明减法结果为0或者正数,说明a大于或者等于b,这个时候需要在查询Z标志位,如果Z标志位为1,表示a等于b,
否者说明a大于b。




QQ群:528495268     电话:17150302648      邮箱:[email protected]     网站:www.plusembed.com  


-------------------------------------------------------------------------------------------------


2)控制器

(a)作用:最重要的功能就是进行指令译码,将指令转成微指令,再由微指令控制计算机各部件工作,比如

· 控制ALU,让ALU进行数据的算术、逻辑运算
· 进行数据的移动,比如从CPU的寄存器移到内存中,或者从内存的某个位置搬移到内存的另一个位置。
· 等等

控制器是用于控制和协调整个计算机的动作控制中心,最核心的功能是将每条程序指令解释为微指令,再由微指令控制
计算机各部件做要求的动作,从而让计算机按照程序安排的任务进行工作。


(b)控制器组成

· 程序计数器(PC):Program?Counter,程序最开始运行时,PC里面放的是程序第一条指令在内存中所在的地址,每运行一
条指令,PC里面的地址就会加1,指向下一个指令,如果一个指令的存放需要4个字节,加1指向下一个指令,pc中的地址实际上
加的是4个字节。

· 指令寄存器(IR):Instruction?Register,按时存放从内存中取得的,即将要被解释运行的指令,指令由两部分组成,
第一部分:操作码,指明计算机需要执行的某个动作的性质和功能,比如有些操作码表示做加运算,有些表示要进行数据搬移。
第二部分:地址码,这个地址码要么直接是要被操作码操作的数,要么是要被操作的数在内存中所在的地址。

 MOV
指令 101001 1001010101 
   操作码  地址码

· 指令译码器(ID):Instruction?Decoder,解释指令,解释指令的过程为,
第一步:检查指令的格式是否合法,是否夹有非法字符、或者非法词组,有的话,译码将不会通过
第二步:如果指令被检查合格了,译码器会将指令中操作码和地址码分离,从而提取出操作码


· 控制存储器:用于存放微指令程序(或称微程序),每一操作码都对应着一个自己的微程序,控制存储器中存放着所有
的指令自己所对应的微程序。

比如ADD(加运算)操作码,也一定对应着自己的微程序,微程序是有=由一条条的微指令构成的,在出厂时,这些微指令程序
就被固化在了控制存储器中,该存储器只能读不能写。

指令被译码器译码后,操作码会被提取出来并交给控制存储器,然后再控制存储器中,找到操作码所对应的微程序,输出该微
程序每一条微指令,这些微指令会通过控制中线控制计算机各部分工作。



· 微指令寄存器:临时微指令













QQ群:528495268     电话:17150302648      邮箱:[email protected]     网站:www.plusembed.com  


-------------------------------------------------------------------------------------------------

(2)总线与接口
总线与接口的作用就是,将CPU和外部设备连接在一起。-----

1)三大高速总线

(a)作用:高速通信线路,相当于CPU的高速公路

· 地址总线:传输地址信号,通过地址信号找到要操作的寄存器、内存单元等


· 控制总线:传输控制信号,比如通过地址总线找到内存的某位置了,接下来到底是进行读还是写,就由控制总线发控制信号决定


· 数据总线:传输数据信号,比如通过地址找到内存的某个位置了,控制总线发出写的控制信号,希望对其写数据,那么写数
据时,数据信号就是在数据总线上传输的


(b)同学疑问,三大高速总线干嘛不合成一个?
合在一起不是不行,但是合成一个的话会忙不过来的,通信的速率会非常低,分成三条总线就好比将高速公路分成三个车道,
不同车走不同的车道,互不相干。


(c)为了提高通信的效率,三大高速总线是并行通信的


(d)三大高速总线所处位置  -------
三大高速总线位于CPU内部,通过CPU引脚引出后,与外部的IO桥连接在一起。



2)外设IO接口


(a)作用:负责连接各种的输入、输出外部设备


(b)每一个设备都会对应有一个自己的外设IO接口

(c)外设io接口也分为了地址、数据、控制线,只是不少设备IO接口的地址、数据、控制线是复用,比如以USB为例,有4根线,其中
两根是正极和负极电源线,其它两根线被复用当作地址、数据、控制线使用,所谓复用就是一线多用。

不过内存不一样,为了能够提高内存的访问速度,因此内存io接口的地址、数据、控制线都是独立的,而且是还是并行的。


(d)后面的linux驱动主要涉及的IO接口的内容


linux驱动就是讲如何通过编写驱动程序,去控制这些IO接口与各种外部设备通信,有关IO接口这一块的知识,我们会在后面的
linux驱动技术课程部分详细讲解,外设io接口是驱动课程的核心内容,想要深入学习的同学请关注后续的linux驱动课程。



(e)io接口所处的位置
PC:CPU芯片的外部,在电路板上
单片机(MCU):很多IO接口集成于芯片中


3)IO桥


(a)可以不用IO桥吗
可以,如果没有IO桥,所有的“外设IO接口”都是直接挂接在三大高速总线上的,但是随着发展,挂接的外部设备越来越多,
直接挂接在总线上,太多了,管理是一个麻烦,慢慢的才有了IO桥这个管理者。


(b)IO桥的好处
设备的IO接口直接挂接在IO桥上,IO桥有效的管理着众多的外设IO接口,IO桥里面会有相应的控制芯片,控制IO桥的工作。


(c)南桥和北桥
IO桥分为了南桥和北桥,南桥由南桥芯片负责,北桥由北桥芯片负责,南北桥之间有线路将其连接在一起。 -----------

· 南桥:负责CPU与各类通信速率较低(鼠标、键盘、磁盘)的外部设备之间的通信


· 北桥:负责CPU与内存、显示器等,通信速率要求较高的外设之间的通信


(d)io桥所处的位置
io桥指的就是南桥和北桥芯片,位于CPU芯片的外部,在电路板上。



(d)并不是计算机都需要IO桥
IO桥是PC机特有的,并不是所有的计算机都有的,比如我们后面讲的ARM的开发板,就没有明显的IO桥这个东西。---------------


QQ群:528495268     电话:17150302648      邮箱:[email protected]     网站:www.plusembed.com  


-------------------------------------------------------------------------------------------------

4)地址、数据、控制线相互配合工作


(a)例子:比如将内存中地址0101字节的数据读出,写到CPU通用寄存器R0(地址为1001)中,假设寄存器R0只有一个字节。


图:


(b)以上过程,在高级语言程序里面,只有一条语句
使用高级语言写程序时,以上过程的过程只需一条a = b就搞定了,但是实际上这句话会被翻译为汇编,然后汇编程序被执行时,
硬件在指令的控制下,经过以上步骤才能实现数据的读写。

(c)疑问
有些同学可能有一个疑问,那就是地址、数据、控制线,在技术上是如何做到只操作想操作哪个字节就操作哪个字节,为什么其
它直接为高阻态是不受影响,其个就是我们数字电路里面所学的三态门的工作原理了,具体内容,这里就不再介绍,后面技术课程
涉及到后在讲解这样的问题。





















QQ群:528495268     电话:17150302648      邮箱:[email protected]     网站:www.plusembed.com  


-------------------------------------------------------------------------------------------------

(3)外部设备

1)哪些是外部设备                       
只要是挂接在外设IO接口上的都是外部设备,与设备所在计算机中的位置没有关系,外部设备大致分为三类。--------------
(a)专门进行数据的传输:比如网卡,负责数据的发送和接收,即是输入也是输出设备


(b)专门进行数据的存储:比如像磁盘,SSD(固态硬盘),负责数据的存储,能读数据,也能写数据,所以即是输入也是输出设备。


(c)专门进行数据的翻译:比如输入设备MIC,将输入的声音翻译为电信号的二进制数据。比如显示器,将电信号的二进制图形、
图像数据翻译为人看得见的图像和视频。

2)外部设备在计算机中所处的位置  --------


(a)片内外设
集成在芯片内部的就是片内外设,只是像PC这种计算机,所使用的CPU是一个独立芯片,很少集成片内外设,外设都在芯片的外
部,我们后面讲MCU、DSP、SOC时,会具体的讲到片内外设。


(b)片外外设
芯片外部的就是片外外设。

· 直接坐在在电路板上:pc的内存


· 需要通过数据线连接到电路板上
机壳内:硬盘
机壳外:比如像鼠标、移动硬盘、U盘。

3)输入设备
键盘:按下某个按键,输入动作会被翻译为某个字符的ASCII编号(以电信号的二进制数形式存在)。
鼠标:屏幕中光标位置输入,将鼠标的移动转为电信号二进制坐标数据
摄像头:图形、图像输入,将光信号的图形、图像翻译为电信号二进制图形、图像数据
麦克风:声音输入,将其翻译为电信号二进制数据
触摸屏:将触摸位置翻译为电信号二进制坐标数据
网卡:接受别的计算机发送的电信号二进制数据,输入给计算机
磁盘、SSD:读取存储的数据,输入给计算机



4)输出设备
显示器:将电信号二进制的图形、图像数据,翻译成为光信号的图形、图像,供人识别
喇叭:将声音数据翻译成为人能听得见的声音
打印机:将数据输出到打印机打印
机械手臂:将输出数据翻译成为机械手臂的动作
led灯等:将输出数据翻译成为灯的亮灭
网卡:从计算机输出数据,传输给别的计算机通信
磁盘、SSD:从计算机输出数据,写到磁盘或者SSD中存储

这里先对设备做一个大致的介绍,在硬件篇后续课程,我们会详细介绍有关存储器这种外设,至于其它外设,我们会在后续
的linux驱动课程详细涉及。


7.4 为什们要介绍计算机的组成结构
这里之所以要介绍计算机的组成结构,主要是有如下两个原因,

(1)很多同学对于计算机的组成结构一直是模模糊糊,所以我们希望给各位同学把这部分的知识认真补习下。

(2)在我们后续的嵌入式技术课程中,因为技术课程的需要,还会涉及计算机的详细结构,希望通关现在讲解能给各位同学
打下一个好的基础,为我们后面深入讲解计算机详细结构做铺垫。




猜你喜欢

转载自blog.csdn.net/sanbanzui2008/article/details/80221732
今日推荐