计算机工作原理万变不离其宗,也就是存储程序控制原理,把操作要求编制成程序代码存放在存储器中,执行程序时逐条取出相应的程序指令并执行。微型计算机一般采用冯·诺依曼结构,它把计算机分成五大组成部分,即输入设备、控制器、运算器、存储器和输出设备,如图1.2所示。其中最核心的控制器和运算器部分由CPU来担任,可见CPU在计算机中的重要地位,所有操作都是由控制器发出的控制信号来指挥的,而控制器根据程序产生控制信号,程序则由编程人员编制并存放在存储器中。
图1.1 微处理器、微型计算机、微型计算机系统的组成及相互关系图
图1.2 微型计算机的冯·诺依曼结构
1)存储器
存储器是计算机中存储程序和数据的部件。计算机的存储器分为两大部分:一部分为内部存储器或主存储器,简称内存或主存;另一部分为外部存储器或辅助存储器,简称外存或辅存。
(1)存储容量
描述存储器存储二进制信息量多少的指标是存储容量。存储二进制信息的基本单位是位(bit,简写为“b”),一般把8个二进制位组成的通用基本单元称为字节(Byte,简写为“B”),微型计算机中是以字节为单位表示存储容量。一个字节只能存储8位信息,能够表示的信息量太小,所以实际中经常使用的容量单位有KB、MB和GB,更大的单位还有TB等,它们之间的关系如下:
它们之间是以210来进行递增的,在数学上它们则是以103来递增的,和计算机中的表示是有区别的。
(2)存储速度
存储速度是描述存储器工作快慢程度的指标,它是指信息存入存储器和从存储器中取出所需要的时间。
(3)存储器类型
①半导体存储器。半导体存储器又分为随机读写存储器RAM和只读存储器ROM。一般RAM用作数据存储器来存储临时数据,它比ROM的读写速度要快很多;ROM用作程序存储器,比如计算机BIOS程序就存放在ROM当中。RAM又可以分为SRAM和DRAM,SRAM集成度没有DRAM集成度高,但是读写速度更快,一般用作高速缓存,比如CPU的Cache;DRAM的集成度更高,经常用作计算机的主存,比如常用的内存条都是DRAM。
②磁记录存储器。磁带、磁盘和硬盘都属于磁记录存储器。前两者因为磁记录介质暴露在空气中,容易受损,可靠性大大降低,同时存储速度也很慢,目前已经被淘汰。硬盘的加工非常精密,所有磁记录介质都被密封起来,可以长期保存数据;同时采用了多磁头、多柱面,读写速度也非常快。
③光盘存储器。光盘是以光信息作为存储的载体并用来存储数据的,具有存储密度高和非易失的特点,经常用来保存数据量很大的多媒体文件,但是它的工作速度要比硬盘慢一个数量级。(www.xing528.com)
④其他存储器。随着技术的发展,目前又出现了FROM、固态硬盘等,甚至还出现了网络存储器,其存储容量越来越大,存储速度也越来越快。
2)微处理器
微处理器是微型计算机的运算和控制指挥中心,不同的微处理器,其性能有所不同,但基本组成是相同的,由运算器、控制器和寄存器3个主要部件组成,如图1.3所示。其中运算器和控制器的结构非常复杂,然而我们在使用计算机时可以忽略这一部分;相反,寄存器的结构和操作比较简单,操作计算机主要就是操作寄存器。因此,计算机学习的重点就是掌握寄存器的使用。
图1.3 微处理器内部结构
(1)运算器
运算器是执行算术运算和逻辑运算的部件,由累加器(A)、暂存器(TMP)、算术逻辑单元(ALU)、标志寄存器(FR)和一些逻辑电路组成。
(2)控制器
控制器是指令执行部件,包括取指令、分析指令(指令译码)和执行指令,由指令寄存器(IR)、指令译码器(ID)和定时控制电路等组成。计算机的所有操作都是在控制器的控制下完成的。
(3)寄存器
寄存器也是CPU的重要组成部分,是CPU进行数据处理必不可少的“存储地”,用来“寄存”数据处理的当前信息。按照用途分为通用寄存器和特殊寄存器,通用寄存器一般用来供用户存取数据,特殊寄存器则拥有特殊的用途,一般不允许用户随便使用,比如用来管理堆栈的寄存器——堆栈指示器SP,还比如用来管理程序步序的程序计数器PC。
图1.4 压栈和弹栈操作
①堆栈是一块设在内存中按先进后出(First In Last Out,FILO)原则组织的存储区域,主要用于子程序及中断程序调用时的现场保护和参数传递,当然用户也可以用来存放数据。数据存入栈区称为压栈(PUSH),从栈区中取出数据称为弹栈(POP)。PUSH和POP操作每次压入或弹出一个元素,元素的大小根据机型和指令的不同而不同。比如8051单片机默认元素大小是1个字节;80486默认元素大小是16位;而STM32-CM3默认元素大小是32位。对于8051单片机,一个元素占1字节;对于80X86微机,一个元素占2字节;而对于STM32-CM3单片机,则一个元素占4字节。压栈和弹栈操作如图1.4所示。
②堆栈指示器SP用于指示当前栈顶元素所在的位置,无论是压栈还是弹栈总是在栈顶进行的。随着对堆栈的压入和弹出操作,SP的值会自动变化。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。