嵌入式系统(2)认识计算机
掌握计算机的基本结构组成
计算机的定义:通用信息处理机
计算机的构成:
主板
分为许多个功能块儿,每个功能块儿由一些芯片或元件完成。主要包括以下几个部分:CPU插槽、内存插槽、高速缓存、局域总线、扩展总线、硬盘、软驱、串口并口等外设接口、时钟、CMOS主板(保存计算机基本启动信息)、BIOS (basic input output Syetem基本输入输出控制系统)控制芯片
扩充插槽
可插入需要的扩展卡 并行 串行 鼠标 音频 视频 等
计算机发展历史
图灵机
图灵机的构成:
- 纸带:无限长。纸带上也有一个一个的小方格,每个方格里有不同的信心(符号、文字、颜色之类)
- 读写头:可以在纸带上移来移去,可以读写方格里的信息
- 控制器:存储程序和当前状态。
图灵机启动后,通过读写头读取方格里的信息,然后结合自己的当前状态,查找内部程序,然后根据程序输出信息修改方格里的内容,改变自身状态,并在纸带上移动到下一个位置。
(即在不同的状态下,根据不同的输入有对应不同的输出,并引起状态的转换。内部程序是输入和输出的对应规则。)
图灵机模型四要素:输入集合、输出集合、内部状态集合和固定的程序。
图灵机模型,对人们用纸笔进行的数学运算进行抽象。模拟解决计算问题的过程。
图灵测试
用于判断机器是否能够思考
如果一个人询问两个对象(两个对象一个是机器,一个是人。使用两个对象都能够理解的语言,且这个人不能看到这两个对象,只能收到结果)任意一串问题,如果经过若干询问后,人不能判别两个对象的不同,那么机器通过图灵测试。
冯·诺依曼机
冯诺依曼机以运算器为中心,数据输入到运算器,经运算后输出。数据可经运算器送到存储器存放或从存储器取出。控制器控制输入输出,控制存储和运算。程序存在存储器,可供控制器调用。
改进的计算机模型
其中ALU和CU 联系紧密,合称CPU
总线
在冯诺依曼机中,没有提到总线。为了更好的连接计算机的内部构件,发展出了总线连接。各部件之间通过一条公共总线相连,各部件分时传送信息,共享数据通路。
总线按功能分为:地址总线,数据总线和控制总线。
冯诺依曼结构中指令和数据存储在同一存储器中,通过分时复用的方式在同一总线上进行取指和数据传输。高速运行时不能同时取指和取数,传输速率受限。
哈佛结构将指令和数据分开存储,独立访问。减轻程序运行时的访存瓶颈。
改进型哈佛结构
独立存储,总线合并。
参考链接:https://blog.csdn.net/u014470361/article/details/79774331
摩尔定律
集成电路的线宽每年减小10%。芯片的规模每18个月翻一翻。
软硬件逻辑等价性
软硬件在逻辑功能上是等价的,即具有互易性。
硬件实现速度快功耗低,性能指标高,但不灵活不易升级成本高。
软件实现灵活多变容易升级,但性能指标弱功耗高。
在实际系统中应当妥善分配软硬件的功能,划分软硬件功能边界。
CPU内部构成
逻辑上CPU基本上可以划分为控制单元,储存单元,运算单元。
控制单元:控制单元是整个CPU的指挥控制中心,由指令寄存器IR(Instruction Register)、指令译码器ID(Instruction Decoder)和操作控制器OC(Operation Controller)等,对协调整个电脑有序工作极为重要。它根据用户预先编好的程序,依次从存储器中取出各条指令,放在指令寄存器IR中,通过指令译码(分析)确定应该进行什么操作,然后通过操作控制器OC,按确定的时序,向相应的部件发出微操作控制信号。操作控制器OC中主要包括节拍脉冲发生器、控制矩阵、时钟脉冲发生器、复位电路和启停电路等控制逻辑。
运算单元:是运算器的核心。可以执行算术运算(包括加减乘数等基本运算及其附加运算)和逻辑运算(包括移位、逻辑测试或两个值比较)。相对控制单元而言,运算器接受控制单元的命令而进行动作,即运算单元所进行的全部操作都是由控制单元发出的控制信号来指挥的,所以它是执行部件。
存储单元:包括CPU片内缓存和寄存器组,是CPU中暂时存放数据的地方,里面保存着那些等待处理的数据,或已经处理过的数据,CPU访问寄存器所用的时间要比访问内存的时间短。采用寄存器,可以减少CPU访问内存的次数,从而提高了CPU的工作速度。但因为受到芯片面积和集成度所限,寄存器组的容量不可能很大。寄存器组可分为专用寄存器和通用寄存器。专用寄存器的作用是固定的,分别寄存相应的数据。而通用寄存器用途广泛并可由程序员规定其用途,通用寄存器的数目因微处理器而异。
(转载自http://blog.chinaunix.net/uid-23069658-id-3563960.html)
指令的执行
常见的指令执行过程有以下几个阶段
- 取指:CPU 通过地址总线AB给内存MEM发送一个地址。然后通过指令总线CB给内存发送一个指令:读。之后等着MEM把指令放到数据总线DB上发过来。
- CPU收到指令后,按照指令里给的寻址方式和地址去MEM里找数据。
- 在ALU 里对操作数执行相应的计算
- 保存操作数(取操作数的反向操作),把计算结果送回内存。
- 计算下一条指令的地址
指令序列的执行
程序计数器PC(program counter)中记录了下一条即将被执行的指令的地址
程序寄存器IR(instruction register)中记录了当前正在被执行的指令
执行指令的之后CPU会自动修改PC的量(增加一个指令字节数)使其总是指向下一条将要取指的指令的地址。
关于程序计数器和exe程序运行过程:https://blog.csdn.net/u014465934/article/details/80522714
关于系统加电的第一条指令:
https://blog.csdn.net/y4786924/article/details/12575063
发展
高可用性计算:
-
高性能计算
-
器件技术改进
- 更高的IC集成度
- 更高的频率
-
部件的改进
- 针对特定的应用增加指令:如DSP芯片中的FFT指令
- 软件功能硬件化:高端MCU中增加专门的乘法器代替软件乘法程序代码
- 系统不同层次之间增加cache(高速的储存缓冲器)来缩小不同层次之间的性能差异
-
系统结构的改进(资源共享,时间复用,空间复用)
- 指令流水线
- 超标量
- 超长指令字:有点类似于超级标量,是一条指令来实现多个操作的并行执行,之所以放到一条指令是为了减少内存访问。
- RISC(精简指令集,降低由硬件执行指令的复杂度,因为软件比硬件容易提供更大的灵活性和更高的智能)和CISC(侧重于硬件执行指令的功能,使CISC的指令变得很复杂)
-
并行和分布式技术
-
能量约束
-
-
普适计算(网络化计算、移动计算、嵌入式计算)
-
高可靠性
-
高安全性