目录
前言
新学期开始总是觉得自己学习马马虎虎的,为了更好的掌握专业课知识,打算对学过的内容整理复盘,希望能找出遗漏的知识点,有所收获。
计算机系统的结构组成与工作原理
基本构成与组成
为了简化对计算机系统的理解,人们把计算机分为了若干个层次,这同时也方便了人们研究。在这里我们只研究如下的计算机层次结构:(课本内容对这一部分写的十分宽泛,我对这里的理解也是有许多疑惑,可能经过后续的学习,这一部分内容会理解地更加透彻)
举个例子简单地概括这个层次图,例如我们要实现卷积的算法,那么首先要设计算法(系统分析层),之后利用例如C语言进行编程(用户程序层),再然后C语言被编译器编译为二进制文件(语言处理层),之后二进制文件基于操作系统(操作系统层),传输到指令系统层,成为机器语言指令,最后在硬核级完成运算。硬核级可能是基于微程序的微体系结构,也可能是直接硬连逻辑的数字逻辑层。
对于一个没有学过这门课的人来说,这张图上仍有许多让人感到很疑惑的点:
1. 什么是机器语言指令? 2. 什么是微程序? 3. 什么是硬连逻辑?
局限于现在的知识,我们对这些问题做出简单解答。
机器语言指令
经过查阅,机器语言指令是指示计算机操作的命令,是计算机运行的最小单元,一台计算机所有指令的集合,我们称其为指令集。这并不难理解,我们可以把机器语言指令当作是计算机可以直接识别的语言,而例如C语言之类的编程语言需要编译和解读之后计算机才能理解。
微程序
微程序用于实现指令集架构到硬件的具体执行细节。在微程序设计方法中,计算机的主要操作不是由硬连线逻辑直接控制,而是由一系列预先存储在只读存储器中的微指令来控制。这些微指令序列被称为微程序。也就是说机器语言指令在微体系结构层会被再次分解为若干个预先设置好的微指令,每一条微指令都包含了一系列控制信号,用于激活或控制CPU内部的各种功能部件。
硬连逻辑
硬连线逻辑是在计算机的中央处理单元(CPU)中,用来实现控制单元的一种方式。硬连线逻辑直接使用逻辑门电路和其他组合逻辑组件来构建控制器。这其实就是我们在数字电路中学习的组合逻辑电路,直接一步到位完成操作。与微程序相比,硬连线逻辑通常没有存储的微程序,而是通过电路直接生成控制信号。微程序和硬连逻辑具有不同的特点和应用场景,是两种不同的计算机硬核设计思路。
CISC与RISC思想
基于机器指令集,目前计算机系统设计衍生出两个思想:CISC和RISC。
CISC思想,即复杂指令集计算机思想。其追求在指令集中加入一些常用的高级指令,其设计思路在于通过设计微指令,将复杂指令功能实现,加入高级复杂指令,让单条指令完成尽可能多的操作,这也就为硬件带来了很大负担(微指令的实现是基于硬件的,所以微程序的增多就会导致硬件设计的复杂度)。同时复杂指令操作繁杂,执行速度慢,这并不难理解,如果单条指令对应的微指令过多,执行时间会变长。此外不定长和复杂数据类型的指令译码会导致硬件设计变得更复杂,很容易出错。CISC思想的历史背景在于当时的存储器价格高,且读取速度慢,因此人们需要研究设计绕过存储器读写的微指令来实现对计算机系统的高速控制。(这段话不知道对不对,课本上只说了存储器价格高和读取慢引起的,但是却没有直接到问题上)
RISC思想,即精简指令集计算机。随着存储器价格的下降与CPU制造技术的提高,RISC思想目前成为主流。这也是因为一些简单的指令便可实现对计算机系统的控制,更复杂的系统只需要由这些简单指令组合即可。
课程研究目的
研究指令集中是否存在某个指令是计算机体系结构问题,乘法指令由什么样的器件(加法器或专门乘法器?)实现是计算机组成的研究问题,底层物理器件采用何种工艺实现是计算机实现的内容,本课程的主要研究目标是计算机体系结构与组成。
计算机系统的工作原理——冯·诺依曼架构
下面我们学习第一个学习的计算机架构——冯·诺依曼架构,基于此架构学习计算机系统的工作原理。下图为工作结构图:
其中虚线代表控制信息,实线代表数据信息。透过该图,我们能看出冯·诺依曼结构的主要特点:
1. 以存储器为核心,由五大部分组成,存储器,运算器,控制器,输入设备,输出设备。具体地,运算器负责进行数据处理,存储器存放各种信息包含数据和程序,控制器对程序代码进行解释并产生各种控制信号,输入输出设备负责人机交互。
2. 无论是控制信息还是数据信息均用二进制数进行标识,存放在同一个存储器中,不划分程序存储器和数据存储器。
3. 计算机按照存储器的程序原理工作,其基本点在于指令驱动。程序和数据存储在存储器中,开始工作后,控制器自动从存储器中去除程序指令并执行。
以上我们说的都是冯·诺伊曼架构的特点与广义架构思想,并不涉及实际的设计,下面我们学习基于总线的冯·诺依曼架构模型机。
基于总线的冯·诺依曼架构模型机
模型机相比于架构图,更贴合实际计算机设计,下图为一个基于总线的冯·诺依曼架构模型机简略图:
下面我们针对图中每一个元素进行详细解释:
总线
总线是连接了不同子系统的公共通路,用于实现各个子系统或部件之间的数据传输和交换。根据传输信息不同,总线又分为数据总线(DB),地址总线(AB),控制总线(CB)。
特别的,AB,即地址总线只能由CPU发出,是一个单向通路(这是因为寻址是CPU独有的功能)。DB,数据总线是一个双向的数据交换总线。CB,控制总线包括控制信号线和一些状态信号线,用于设备的监控。
存储器子系统
存储器子系统被用来存放当前运行的程序和数据,对于冯·诺依曼架构来说,程序指令和数据被存放在同一个存储器中。这也埋下了一个缺点,那就是程序指令和数据不能同时被读取。下图呈现了存储器读写的流程:
首先来自CPU的地址信号经地址总线,传输至存储器子系统。地址信号首先被存至地址寄存器中,之后地址信号经地址译码器解译为选通信号,之后再控制信号的作用下,对选定的存储单元进行读或写的操作,读出到与数据总线相连的数据缓冲器或将从数据总线传输至数据缓冲器的数据写入。
输入/输出子系统
输入输出子系统完成的主要是计算机与外部的信息缓缓,一般来说,计算机与直接相连的外部设备(打印机,键盘等)进行数据交换的过程被称为输入/输出,而与远方设备进行数据交换的过程被称为数据通信。
为了简化计算机与外部设备的总线互连,同时也是因为外部设备结构的繁杂,我们在外部设备和计算机总线之间设置了接口,接口一方面接收、转换、解释计算机的命令,另一方面将总线从外部设备获取的数据传输给计算机。接口的的组织与读/写方式与存储器类似。
CPU子系统
CPU子系统的核心在于CPU。CPU,全称为中央处理单元,是一个集成了运算器、控制器、寄存器的超大规模集成电路芯片。对应于冯·诺依曼架构中的控制器和运算器,同时含有少部分的存储器。
具体地,CPU与主存构成主机,其他输入/输出设备以及辅存被称为外部设备,简称外设。CPU主机与外设共同组成了CPU子系统。主存可以被称为内存,辅存被称为外存。下图为一个一般的CPU内部结构:
下面我们以该图为例,详细学习一下CPU的工作原理。
运算器
运算器的核心在于算术逻辑单元(ALU),其受控制信号进行加减乘除等基本运算操作。累加器(ACC)实际上是一个通用寄存器,其内部存放了两个被运算的操作数,同时算术逻辑单元计算产生的结果也被短暂放入累加器中,方便下一步运算。在控制信号的控制下,累加锁存器被用来防治ACC对ALU下一步运算输入的影响。暂存器的作用在于保存操作数,但与累加器ACC不同的是,暂存器不被放入操作结果。操作结果的导出是经过ACC累加器的。标志寄存器是一个专用按位操作寄存器,寄存了ALU运算结果的特征,这些特征能够被CPU后续指令调用。
控制器
控制器指挥控制了整个CPU的运转以及微处理器,其根据指令发出控制信号。控制器首先根据程序计数器指针(PC)中指定的地址,经过AB地址总线从存储子系统中取出地址所在处的指令,之后指令由DB数据总线传入指令寄存器(IR),指令之后经过指令译码器(ID)通过操作控制器确定时序,通过控制总线CB向部件发出控制信号。操作控制器(OC)中主要包括脉冲发生器、控制矩阵等控制逻辑。
寄存器阵列
寄存器阵列为CPU的临时存储单元,用来暂时存放数据和地址,其访问速度高于存储器。某些需要被频繁使用的操作数与中间结果可以暂存于寄存器阵列,大大缩短了执行时间。
具体地寄存器可以被分为通用寄存器和专用寄存器。专用寄存器的作用固定,例如堆栈指针(SP),程序计数器(PC),标志寄存器(FR)。
PC中存放程序第一条指令所在存储单元的编号,顺序执行情况下,每取出指令的1字节,PC内容自动加1,当从PC取完一条指令的所有字节之后,按照PC中存放的下一条指令的首地址,执行下一条指令,当遇到跳转指令时,程序指令运行顺序将被改变,新的指令地址将被存入PC。
堆栈是一组寄存器或存储器中开辟的一个特定区域。数据存入被称为‘压入’,数据被取出被称为‘弹出’。‘压入’与‘弹出’均发生在栈顶。因此堆栈指针就是被用来指示栈顶地址的寄存器。SP的初值由程序员设定,而后由CPU自动管理。
缓冲器
地址和数据缓冲器是CPU地址与数据的出入口,被用来隔离CPU内部总线与计算机外总线,提供附加驱动功能。
下一节我们学习的重心在于汇编语言与机器语言指令作用下的模型机工作流程。
标签:计算机,诺依曼,存储器,总线,嵌入式,指令,寄存器,CPU,组成 From: https://blog.csdn.net/qq_73991479/article/details/142305824