《计算机组成原理》笔记一
[toc]
Q1:现代计算机由哪几部分组成?(顶层抽象)
A:软件 + 硬件。本课程主要讲硬件的设计逻辑。
系统复杂性管理方法
从程序员角度来分层:高级语言—>汇编语言—>操作系统—>机器语言—>微指令系统
其结构的问题:<mark style="box-sizing: border-box; background-color: rgb(255, 255, 0); color: rgb(0, 0, 0); background-position: initial initial; background-repeat: initial initial;">以运算器为核心</mark>,运算器成为性能的瓶颈;不具有层次化特征
改进:
注:主存+CPU构成主机;辅存和输入输出设备构成I/O系统
将图中每个部分进一步细化,再重新组装起来就构成了计算机组成系统。(层次化+模块化)
思考:真正的运算器、控制器、存储器结构都是什么样的?(这正是本课程要学习的)
Q:一个现实中的问题,如何用计算机来解决?
Q:是不是所有的问题都可以用计算的方法来解决?(可计算性理论/算法理论)(e.g.图灵机停机问题)
假设我们面对的是一个可计算问题,如何解决一个问题呢?
我们设定一个可计算的问题,来对计算机组成框图的各个部件进行细化。
指令和数据保存在存储器中,所以存储器是什么样的?如何访问呢?每次访问获得的数据的位数是多少呢?我们先从存储器的结构来看。
类比:
重要概念:
每个存储单元赋予一个地址号,每个存储单元中存放一个存储字;存储单元按地址寻访
解释:计算机中的主存数据寄存器(MDR),与主存地址寄存器(MAR)帮助完成CPU和主存储器之间的通信:
运算器的功能是什么,如何工作?
运算器结构:
乘法:加法+移位操作 (<u style="box-sizing: border-box;">这里有点不太清楚</u>)
除法:减法+移位操作 (<u style="box-sizing: border-box;">这里有点不太清楚</u>)
<mark style="box-sizing: border-box; background-color: rgb(255, 255, 0); color: rgb(0, 0, 0); background-position: initial initial; background-repeat: initial initial;">(回去看看《编码》、《CSAPP》第二章理解理解,再回过来看看)</mark>
运算器中各种操作都是在控制器的控制下执行的。那么控制器的功能是什么,进而其结构应该是什么样的呢?
功能:
基本结构:
完成一条指令:
结构:
这里要好好理解每一个指令步骤,理解了每一个步骤就相当于理解了这一章。
(1)主机完成一条取数指令的步骤
取数指令的功能:把存储体(主存/内存)中的数存到ACC中
完成一条指令的三个阶段:
(注:指令:操作码+地址码)
<mark style="box-sizing: border-box; background-color: rgb(255, 255, 0); color: rgb(0, 0, 0); background-position: initial initial; background-repeat: initial initial;">取数操作步骤分析</mark>(如图):
(2)主机完成一条存数操作步骤
存数指令的功能:把存放在ACC中的计算结果存到内存单元M中
<mark style="box-sizing: border-box; background-color: rgb(255, 255, 0); color: rgb(0, 0, 0); background-position: initial initial; background-repeat: initial initial;">存数操作步骤分析</mark>(如图):
存取数指令已经分析完了,那么加法、乘法、停机、打印等指令在这个模型下怎么执行?(自行思考)
一条指令的执行步骤我们已经知道了,那么一条程序(多条指令的指令集)的执行步骤就是把一条条指令按顺序执行;
这里同样只是分析了取指令的步骤,任何一条指令都可以分为三步执行:取指令—>分析指令—>执行指令。注意PC执行完一条指令之后,就可以+1了,指向下一条指令的地址。
CPU一次能处理数据的位数(如可以对两个8位二进制数进行加法,就是8位),与CPU中的寄存器(ACC,X,MQ)的位数有关。
一般来说,机器字长越长性能越好。
前两个是硬件指标;后四个是从指令执行的角度来衡量的。
存放二进制信息的总位数