南大袁春风计算机系统基础(一)笔记
一、计算机系统基本组成与基本功能
1946年,第1台通用电子计算机 ENIAC(Electronic Numerical Integrator And Computer电子数字积分计算机)诞生。
冯.诺依曼结构计算机模型
1.计算机包含五大部件:输入/输出设备,存储器,控制器,运算器。
2.各基本部件的功能是:
• 存储器不仅能存放数据,而且也能存放指令,形式上两者没有区别,但计算机应能区分数据还是指令;
• 控制器应能自动取出指令来执行;
• 运算器应能进行加/减/乘/除四种基本算术运算,并且也 能进行一些逻辑运算和附加运算;
• 操作人员可以通过输入设备、输出设备和主机进行通信;
3.内部以二进制表示指令和数据。每条指令由操作码和地址码两部分组成。操作码指出操作类型,地址码指出操作
数的地址。由一串指令组成程序。
4.采用“存储程序”工作方式。
冯.诺依曼计算机结构的特点
CPU:中央处理器;PC:程序计数器;MAR:存储器地址寄存器 ALU:算术逻辑部件;IR:指令寄存器;
MDR:存储器数据寄存器 GPRs:通用寄存器组(由若干通用寄存器组成,早期就是累加器)
计算机工作的步骤:
将数据和指令按序放在存储器的存储单元当中–>–>根据PC取指令–>将指令译码–>去操作数–>指令执行–>回写
结果–>修改PC的值–>执行下一条指令
计算机的指令和数据
-
程序启动前,指令和数据都存放在存储器中,形式上没有差别, 都是0/1序列
-
采用”存储程序“工作方式:
- 程序由指令组成,程序被启动后,计算机能自动取出一条一条 指令执行,在执行过程中无需人的干预。
-
指令执行过程中,指令和数据被从存储器取到CPU,存放在CPU 内的寄存器中,指令在IR中,数据在GPR中。
-
指令中需给出的信息:
- 操作性质(操作码)
- 源操作数1 或/和 源操作数2 (立即数、寄存器编号、存储地址)
- 目的操作数地址 (寄存器编号、存储地址)
总结: 计算机的基本部件及功能:
–运算器(数据运算):ALU、GPRs、标志寄存器等
–存储器(数据存储):存储阵列、地址译码器、读写控制电 路
–总线(数据传送):数据(MDR)、地址(MAR)和控制线
–控制器(控制):对指令译码生成控制信号
二、程序开发和执行过程简介
程序开发的发展过程
-
最早的程序开发过程:使用打孔机,在纸带上打孔,打孔处表示0,未打孔处表示1。所有的信息都是0/1序列,如果程序需要修改,则需要重新打孔,效率不高。
-
使用汇编语言开发程序:使用符号表示跳转位置和变量位置,这样提高了代码的可读性,也不会因为增减指令而去修改其他指令。但是需要将汇编语言通过汇编程序转换成机器语言。
- 汇编语言(源)程序由汇编指令构成。
- 汇编指令是用助记符和标号来表示的指令(与机器指令一一对应)
- 指令是包含操作码和操作数或其地址码 (机器指令用二进制表示,汇编指令用符号表示,只能描述:取(或存一个数) 两个数加(或减、乘、除、与、或等) 根据运算结果判断是否转移执行。
-
高级语言开发程序:
- 它们与具体机器结构无关
- 面向算法描述,比机器级语言描述能力强得多
- 高级语言中一条语句对应几条、几十条甚至几百条指令
- 有“面向过程”和“面向对象”的语言之分
- 处理逻辑分为三种结构 : 顺序结构、选择结构、循环结构
- 有两种转换方式:“编译”和“解释” :1. 编译程序(Complier):将高级语言源程序转换为机器级目 标程序,执行时只要启动目标程序即可 2.解释程序(Interpreter ):将高级语言语句逐条翻译成机器 指令并立即执行,不生成目标文件。
典型程序转换处理过程
将每个符号或者是字符转换成对应的ASCII码值,但是计算机需要编译器才能够正确运行.c文件
通过上图的处理过程,将hello.c文件编译汇编链接成二进制的可执行程序。
Hello程序的数据流动过程
不同层次语言之间的等价转换
高级语言的源程序通过编译程序转换成汇编语言的源程序,也就是各种符号表示的语言,再通过汇编程序,将汇编语言转换成只有0/1的机器语言,最后通过指令译码器转换成计算机硬件接受的控制信号。故:任何高级语言的程序最终都会通过若干条指令来完成。
**总结:**最早的程序开发都比较简单,只需要直接输入指令和数据,启动后把第一条指令地址送到PC执行。
高级语言开发需要编译器编写源程序,需要一套翻译转换专拣处理各种源程序,还需要一个可执行程序的界面(GUI:图形界面,CUI:命令行界面)。支撑程序开发和运行的环境由系统软件提供 最重要的系统软件是操作系统和语言处理系统 语言处理系统运行在操作系统之上,操作系统利用指令管理硬件。