我是荔园微风,作为一名在IT界整整25年的老兵,今天总结一下,Windows程序员必须掌握的计算机硬件知识。
一、计算机的硬件组成
1.运算器;2.控制器;3.存储器;4.输入设备;5.输出设备。
二、CPU的组成
1.运算器;2.控制器;3.寄存器组;4.内部总线。
三、主机的组成
1.CPU;2.内存。
四、控制器的组成
控制器是计算机的指挥与管理中心,协调计算机各部件有序地工作。控制器控制CPU工作、确保程序正确执行、处理异常事件。功能上包括指令控制、时序控制、总线控制和中断控制等。
1.程序计数器PC。所有CPU共用的一个特殊寄存器,指向下一条指令的地址。CPU根据PC的内容去主存处取得指令,由于程序中的指令是按顺序执行的,所以PC必须有自动增加的功能。
2.指令寄存器IR。保存当前正在执行指令的代码,指令寄存器的倍数取决于指令字长。
3.地址寄存器AR。存放CPU当前访问的内存单元地址。
4.数据寄存器DR。暂存从内存储器中读/写的指令或数据。
5.指令译码器。对获取指令进行译码,产生该指令操作所需要的一系列微操作信号,用以控制计算机各部件完成该指令。
五、运算器的组成
运算器接收控制器命令,完成加工和处理数据的任务。
1.算术逻辑单元ALU。用于进行各种算术逻辑运算(如与、或、非等 )、算术运算(如加、减、乘、除等)。
2.通用寄存器。用来存放操作数、中间结果和各种地址信息的一系列存储单元。
2.1数据寄存器
AX。累加寄存器,算术运算的主要寄存器。
BX。基址寄存器。
CX。计数寄存器,串操作、循环控制的计数器。
DX。数据寄存器。
2.2地址指针寄存器
SI。源变址寄存器。
DI。目的变址寄存器。
SP。堆栈寄存器。
BP。基址指针寄存器。
2.3累加寄存器
AC。又加累加器,是当运算器的逻辑单元执行算术运算或者逻辑运算时,为ALU提供的一个工作区,能进行加、减、读出、移位、循环移位和求补等操作,能暂存运算结果。
3.数据暂存器
用来暂存从主存储器读出的数据,这类数据不能存放在通用寄存器中,否则会破坏其原有的内容。
4.程序状态字寄存器。
PSW。体现当前指令执行结果的各种状态信息如进位、溢出、结果正负、结果是否为零等 ,存放控制信息,如允许中断、跟踪标志等。
六、指令系统寻址方式
1.立即寻址。直接给出操作码。
2.直接寻址。直接给出操作码地址或所在寄存器号(寄存器寻址)。
3.间接寻址。给出的是指向操作码地址的地址。寄存器间接寻址将操作码的地址放在寄存器中,操作码放在内存中。
4.变址寻址。给出的地址,需要与特定的地址值相加,得到操作码地址。
七、指令分类
1.数据传送类。
1.1传送指令;1.2数据交换指令;1.3出/入栈指令;1.4输入/输出指令。
2.程序控制类。
2.1转移指令;2.2循环控制指令;2.3子程序调用和返回指令;2.4程序自中断指令。
3.处理器控制类。
包含开/关中断、空操作、置位或清零等指令。
4.数据处理类。
4.1算术运算;4.2逻辑运算指令;4.3移位指令。
八、CPU指令的执行过程
1.取指令。根据程序计数器PC指向的指令地址,从主存储器中读取指令,送入主存数据缓存。再送往CPU内的指令寄存器IR中,同时改变程序计数器的内容,使其指向下一条指令地址或者紧跟当前指令的立即数或地址码。
2.取操作数。如果无操作数指令,则直接进入第3步。如果需要取操作数,则根据寻址方式计算地址,然后要根据地址去取操作数。如果是双操作数指令,则需要两个取数周期来取操作数。
3.执行操作。根据操作码完成相应的操作,并根据目的操作数的寻址方式来保存结果。
和指令操作紧密相关的是指令执行的周期,在指令执行过程中,要清楚各个周期中机器所完成的工作。指令执行过程中的各个周期如下:
取指周期:地址由PC给出,取出指令后,PC内容自动递增。当出现转移情况时,指令地址在执行周期被修改。取操作数周期期间要解决的是计算操作数地址并取出操作数。
执行周期:主要任务是完成由指令操作码规定的动作,包括传送结果及记录状态信息。执行过程中要保留状态信息,尤其是条件码要保存在PSW中。若程序出现转移,则在执行周期内还要决定转移地址的问题。
指令周期:一条指令从取出到执行完成所需要的时间。
指令周期、机器周期、时钟周期的关系如下:
(1)指令周期:完成一条指令所需的时间,包括取指令、分析指令和执行指令所需的全部时间。
(2)机器周期:又称为CPU工作周期或基本周期。指令周期划分为几个不同的阶段,每个阶段所需的时间就是机器周期。一般来说机器周期与取指时间或访存时间是一致的。
(3)时钟周期:时钟频率的倒数,也可称为节拍脉冲,是处理操作的最基本单位。
一个指令周期由若干个机器周期组成,每个机器周期又由若千个时钟周期组成。一个机器周期内包含的时钟周期个数取决于该机器周期内完成的动作所需的时间。一个指令周期包含的机器周期个数也与指令所要求的动作有关,如单操作数指令只需要一个取操作数周期,而双操作数指令需要两个取操作数周期。
总线周期:指CPU从存储器或I/O端口存取一字节所需的时间。
九、CPU的主要性能指标
(1)主频。主频又称时钟频率,单位为MHz或GHz,表示CPU的运算和处理数据的速度。主频不能完全代表CPU整体运算能力,但人们已经习惯用于衡量CPU的运算速度。
(2)字长。字长是CPU在单位时间内能一次处理的二进制数的位数。通常能一次处理16bit数据的CPU就叫16位的CPU。字长越长,计算机数据运算精度越高。
(3)缓存。缓存是位于CPU与内存之间的高速存储器,容量比内存小,速度却比内存快,甚至接近CPU的工作速度。缓存用于解决CPU运行速度与内存读写速度之间不匹配的问题。缓存容量的大小是CPU性能的重要指标之一。缓存的结构和大小对CPU速度的影响非常大。
通常,CPU有三级缓存:一级缓存、二级缓存和三级缓存。
一级缓存(L1 Cache)是CPU的第一层高速缓存,L1 Cache分为数据缓存和指令缓存。受制于CPU的面积,L1通常很小。二级缓存(L2 Cache)是CPU的第二层高速缓存,L2 Cache分为内部和外部两种。内部二级缓存运行速度与主频接近,而外部二级缓存运行速度只有主频的50%。理论上L2 Cache越大越好,但综合考虑成本与性能等因素,实际上CPU的L2高速缓存不大。三级缓存(L3 Cache)的作用是进一步降低内存延迟,提升大数据量计算时处理器的性能。因此在数值计算领域的服务器CPU上增加L3缓存可以在性能方面获得显著的效果。
作者简介:荔园微风,1981年生,高级工程师,浙大工学硕士,软件工程项目主管,做过程序员、软件设计师、系统架构师,早期的Windows程序员,Visual Studio忠实用户,C/C++使用者,是一位在计算机界学习、拼搏、奋斗了25年的老将,经历了UNIX时代、桌面WIN32时代、Web应用时代、云计算时代、手机安卓时代、大数据时代、ICT时代、AI深度学习时代、智能机器时代,我不知道未来还会有什么时代,只记得这一路走来,充满着艰辛与收获,愿同大家一起走下去,充满希望的走下去。