6

计算机组成原理——总结 - Lee-zq

 1 year ago
source link: https://www.cnblogs.com/lee-zq/p/17254507.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

1. 简单介绍

三月份的一个主要任务是学一门计算机科班的基础课程————《计算机组成原理》,在学之前对这部分的知识似懂非懂,没系统学过所以也不清楚它到底包含哪些知识点,但学完之后又能和本科时期学过的一些课程有了联系,比如最基础的模电和数电,想起之前课设的时候大家熬夜在宿舍做LED时钟显示器的情形,那个时候真的是平时不学习、期末抱佛脚,稀里糊涂四年时间就过去了,算是过的最舒服的几年时光了。但出来混,迟早要还的,现在开始学这些基础课程了。
计算机是一个复杂的结构,深挖计算机的第一性,从最基础的物理知识开始:

  1. 电路:I=U/R,涉及的硬件有电阻、电感、电容,也有电磁学相关的内容,是信息时代快速发展的基石。
  2. 模电: 用连续电信号作为信息载体,处理的是连续变化的模拟量电信号(即其幅值可以是任何值),如无线电、收音机等。不做深入了解。但基础元器件还是三极管。
  3. 数电:主要是针对数字信号处理的模块。数字集成电路的运行以开关状态进行运算,它的精度高,适合复杂的计算。数字电路只要能区分高电平和低电平即可,数字电路不仅能完成数值运算,还可以进行逻辑运算和判断,因此数字电路又称为数字逻辑电路。基础元器件还是三极管,也即晶体管,现在芯片中的基本单位就是这个玩意儿,其尺寸已经达到纳米尺度了。数电中我们需要理解的是与或非门电路,这是构建复杂计算逻辑组合电路的基础。
  4. 计算机组成原理:在数电原理基础上,构建的复杂电路。主要包含的硬件模块有:总线、CPU、主存、I/O设备。下面分别进行简要总结
    1349600-20230325104822018-1556046244.png

2. 简单分模块总结

  1. 总线。可以理解为分布在计算机中用于各模块之间通讯、数据传输的线。各模块发出或者可以接受从总线上传输的数据,数据传输的速度和总线的频率和宽度相关。一般我们说的总线是系统总线,这里面又分为控制总线、地址总线和数据总线。此外,CPU内部也可能有用于在cpu内部进行数据和命令传输的总线,可称为内部总线。此外,I/O设备也可以拥有独立的io总线。总之,这些总线都是为传输信号工作的,为了使传输信号更快,总线的连接通路会更多,导致系统看起来非常复杂。
  2. 主存:在计算机运行期间存储数据和代码,CPU在运行期间直接从主存中存取指令和数据。将其理解为一个非常大的数组即可,且可以根据地址高速随机访问。
  3. CPU:这是整个计算机的控制计算中心,所有的任务都是在这里执行的。逻辑上主要包含四个组件:寄存器、ALU、CU和中断系统。
  • 寄存器是用来临时存储一些从内存中拿来或者ALU计算结果的存储单元,如通用寄存器,还有一些是专用寄存器,如PC用于存储下一条指令在内存中的地址,还有状态寄存器。各种cpu其寄存器配置不尽相同,功能都是用来存储的,是计算机中最快的存储器;
  • ALU用做算数逻辑运算,包括浮点、定点的加减乘除和逻辑与或非等能力,这个模块只要理解为按照既定的电路做算数逻辑计算即可,内部设计的组合逻辑电路各个芯片大同小异,有的还复用电路即可用做浮点计算也可以做整形计算,至于对输入的数据做何种运算,是由CU给出的信号(+-*/ &|!)决定的。
  • CU是核心部件,用于将PC中的指令进行解析,讲指令由操作码+操作数组成,CU会将操作码解析为硬件命令信号,将操作数从内存中加载到约定好的寄存器并按照命令运算。这个过程细分为取指+间址(option)+执行+中断(option)。其中执行过程最复杂也最耗时。这些步骤细分还会分为微指令等更细微的操作,涉及到时钟、流水化,微程序控制器等较细的模块,简单了解有这个东西就行。简言之,最简单的计算机就是一直在循环做取指+执行。汇编指令和机器指令是一一对应的,如果有需要做指令级优化的话,掌握相应CPU架构的指令集,写汇编代码即可。
  • 中断系统:中断系统是为相应系统的中断信号设计的,一般由硬件实现和软件实现两种,是速度和灵活性之间权衡的结果。在系统运行过程中,运行的程序本身或者IO设备都有可能发出中断请求,中断程序根据请求的种类不同,在保护现场后,去调用对应的中断程序来处理请求,结束后再返回到之前的程序断点继续执行,类似于函数调用。
    1349600-20230325111950104-1779863311.png
  1. 数的表示和计算。
    计算机顾名思义是用来计算的,那就涉及到数据的存储和计算,数据是如何编码为2进制并存储到内存或硬盘上的,大端法小端法等。ALU里面的加法器是如何实现的,乘法是如何利用加法器工作的等等。其实这些都是组合逻辑电路实现的,和电子时钟原理差不多。当实现了最基本的加减乘除逻辑电路后,复杂的超越函数可以通过泰勒展开等近似方法简化为加减乘除运算,只不过不能一次性在ALU中完成计算,需要通过软件的方式,运行很多个指令才能求解出一个近似值。对于那些专用的计算芯片,可能会将常用的非线性函数如sin/cos/log/e^x等以硬件实现模拟,计算速度会大大提高。当然需要有配套的编译器和指令支持才可以。
  2. 微程序控制单元。取到一条指令后,会被解析为很多粒度更细的指令按照严格顺序执行,是在cpu内部硬件实现的,相当于一个指令解码部件。
    1349600-20230325120151730-759843769.png
  3. 流水线。多个指令并行执行且不干扰执行结果,基本原则是下一条指令使用上一条指令使用过的内部运算或存储体,该存储体或运算单元是当前指令使用完并在指令结束前不会再使用。跳转指令和耗时不均匀的指令会打乱流水、影响效率。流水逻辑是严格保证逻辑和串行执行一致的,在写汇编代码的时候按照串行写即可。

这门课是在计算机组成原理-刘宏伟-B站跟着视频学的,中间太深太细的没有深究,毕竟工作中用不到,只把组成原理的整体结构和知识点看完了,也做了这篇总结,主要是为了建立计算机组成原理的基本知识点范畴,并把硬件知识和上层代码联系起来,也把计算机硬件和之前学的数电建立了链接。接下来,还有一门操作系统,是重中之重。下个月主攻CS,道阻且长行则将至。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK