计算机系统基础
计算机系统基本组成和基本功能
存储器:不仅能存放数据,而且也能存放指令,形式两者没有区别,但计算机应能区分数据还是指令。存储阵列、地址译码器、读写控制电路
控制器:应自动取出指令。对指令译码生成控制信号。
运算器:进行加/减/乘/除四种基本算术运算,并且也能进行一些逻辑运算和附加运算。ALU、GPRs、标志寄存器等
输入设备/输出设备:
现代计算机结构模型
CPU:中央处理器;PC:程序计数器;MAR(memory address register):存储器地址寄存器
ALU:算术逻辑部件;IR:指令寄存器;MDR(memory data register):存储器数据寄存器
GPRs:通用寄存器组(由若干通用寄存器组成)
总线(数据传送):数据(MDR)、地址(MAR)和控制线
计算机是如何工作的?
程序在执行前
数据和指令事先存放在存储器中,每条指令和每个数据都有地址,指令按序存放,指令由OP、ADDR字段组成,程序起始地址置PC。
开始执行程序
第一步:根据PC取指令(从5号架上取菜谱)
第二步:指令译码(看菜谱)
第三步:取操作数(从架上或盘中取原材料)
第四步:执行操作数(洗、切、炒等具体操作)
第五步:回写结果(装盘或直接送桌)
第六步:修改PC的值(算出下一菜谱所在架子号)
继续执行下一条指令(继续做下一道菜)
指令和数据
程序启动前
指令和数据都存放在存储器中,形式上没有差别,都是0/1序列
采用存储程序工作方式:
程序由指令组成,程序被启动后,计算机能自动取出一条一条指令执行,在执行过程中无需人的干预。
指令执行过程中
指令和数据被从存储器取到CPU,存放在CPU内的寄存器中,指令在IR中,数据在GPR中。
指令中需给出的信息:
操作性质(操作码)
源操作数 或/和 源操作数2 (立即数、寄存器编号、存储地址)
目的操作数地址(寄存器编号、存储地址)
存储地址的描述与操作数的数据结构有关
现代计算机系统的层次结构
程序执行结果不仅取决于算法、程序编写而且取决于语言处理系统、操作系统、ISA、微体系结构。
功能转换:上层是下层的抽象,下层是上层的实现。
上层:程序员所关注的算法、编程和系统软件等层次
中层:计算机架构师所关注的ISA和微架构等层次
下层:电子工程师所关注的器件和逻辑电路等层次
ISA处于软件和硬件的交界面(接口)。
ISA是对硬件的抽象。所有软件都建立在ISA之上。
ISA是最重要的层次,那么什么是ISA呢?
ISA(指令集体系结构)
ISA指Instruction Set Architecture,即指令集体系结构,有时简称为指令系统。
ISA是一种规约(Specification),它规定了如何使用硬件
- 可执行的指令集合
- 指令可以接受的操作数的类型
- 操作数所能存放的寄存器的结构
- 操作数所能存放的存储空间的大小和编址方式;
- 操作数在存储空间存放时按照大端还是小端方式存放;
- 指令获取操作数的方式,即寻址方式
- 指令执行过程的控制方式,包括程序计数器(PC)、条件码定义等。
ISA在通用计算机系统中是必不可少的一个抽象层,Why?
没有它,软件无法使用计算机硬件
没有它,一台计算机不能称为通用计算机
ISA和计算机组成是何关系?微体系关系
有没有乘法指令属于指令集体系结构(ISA)需考虑的问题,而如何实现乘法指令是微体系结构需要考虑的问题。
课程的三个主题:
表示(Representation)
- 不同数据类型(包括带符号整数、无符号整数、浮点数、数组、结构等)在寄存器或存储器中如何表示和存储?
- 指令如何表示和编码(译码)?
- 存储地址(指针)如何表示?如何生成复杂数据结构中数据元素的地址?
转换(Translation)
- 高级语言程序对应的机器代码是怎样的?如何转换并链接生成可执行文件
执行控制流(Control flow)
- 计算机能理解的“程序”是如何组织和控制的?
- 如何在计算机中组织多个程序的并发执行?
- 逻辑控制流中的异常事件及其处理
- I/O操作的执行控制流(用户态-内核态)