理解计算机系统:计算机的组成 组成原理学习方法(来自大学老师的总结):抽象课程,联想现实,克服畏难,转变思路。抓住信息流的变换、表示、处理、传送、存储。整体学习,避免孤立。 一.计算机系统简介 1.1 计算机系统的组成 计算机系统由软件和硬件构成,图1-1为计算机系统的基本组成。
图1-1 计算机系统组成 1.2 计算机系统层次结构 操作系统是一种系统软件,它是与计算机硬件直接打交道的人。我们通常说的操作系统工程师就会接触到底层硬件的驱动开发,就是让操作系统更好的控制各种硬件。
图1-2 计算机系统层次结构 图1-2展示了计算机系统的基本层次结构,从这个图当中我们也可以看出一个程序是如何编译运行的。 以C/C++程序为例子:
图1-3 C++/C 运行过程(理解过程)
图1-4 C++/C运行过程 一个程序的核心执行流程为编译和汇编,编译就是将特殊的语言例如C++编译为汇编器可以进行翻译的语言(test.s),而汇编器将这种语言汇编为机器语言(test.o)。机器语言是计算机可以直接执行的代码和语言,主要成分为0和1。 编译笼统上来说是产生目标程序的过程(包括预处理、编译、汇编这些细节过程),也就是从test.c到test.o就是广义的、非正式的编译过程。 1.3 语言分类 1.3.1 语言分级(笼统概念) 目前随着计算机科学水平不断提高,计算机语言已经发展出第四代、第五代甚至更高级的语言。第一代:机器码。也就是上文提到的机器语言,主要成分0、1。冯姓男子曾定下行业标准要用二进制表示指令和数据,因此机器码中既有指令也有数据。第二代:汇编码。机器码都是0、1比较难记,汇编码就是将机器码串改编为助记符。例如: add ax,1。底层就是一串二进制代码。第三代:高级语言。C都是高级语言,C++不用说,Python、JS这些脚本语言不用说,C#、Java这些更“面向对象”(Object-Oriented)的语言更不用说了。第四代:非过程语言。说白了,就是抽象程度更高了,我一句话,就能够自动生成高级语言并有序执行。例如SQL就是比较常见的第四代语言。第五代:智能语言。Prolog,只要给出事实和规则,它会自动分析其中的逻辑关系,然后允许用户通过查询,完成复杂的逻辑运算。 1.3.2 解释型/编译型语言 解释型语言和编译型语言的区别主要是是否编译,而不在于是否逐条执行。 举LZ最喜欢的三种语言为栗子。 Scala语言的运行过程:Scala语言是编译型语言,它的执行需要经过编译,但它是基于JVM平台逐条执行的。也就是每执行一条源码指令就编译成字节码程序在JVM平台上运行。 Python语言的运行过程:Python语言是解释型语言,需要带着一个解释器。例如: 先翻译成中间代码,解释器解读并执行。因为我们说源程序到产出机器码的过程才笼统叫做编译,因此这种源程序到中间代码的过程只能描述为“翻译”。 Java语言的运行过程:Java也是一门编译型的语言。源程序文件经过编译之后形成字节码文件(.class),这种字节码文件还不能在操作系统上直接运行,还需要在JVM(Java Virtual Mechine)平台上运行。 二.计算机的基本组成 冯诺依曼冯大佬,被誉为“计算机之父”,20世纪最重要的数学家之一。兴趣爱好为博弈论、计算机、生化武器、原子弹等。
图2-1 冯大佬看似萎靡的生活其实充满生机 该冯姓男子创建了一个广为流传、并被“取其精华、弃其糟粕”的计算机结构—–冯诺依曼计算机。
图2-2 冯诺依曼计算机 取其精华: 1/采用存储程序的思路进行工作:将程序按照地址顺序放在内存储器中,运行时,按地址顺序取出存放在内存储器中的指令,并分析执行,当遇到跳转指令时,跳转(cs:ip)到指定地址,再按次序执行。 优点:计算任务能够按序列批量执行。 2/指令和数据都使用二进制表示:物理信号的逻辑就是基于0、1进行传输的。别看我们现在看它很容易,但是把你放到过去,你未必能想到。 3/指令和数据以同等地位存储于存储器,可按地址寻访,其中指令由操作码和地址码组成。 弃其糟粕: 1.使用运算器为中心:什么都要走运算器的流程?我就打印一个Pi运算器都要走半天?那我核心的计算任务就不用干了。
图2-3 以运算器为中心 转变为 以存储器为中心 冯诺依曼计算机提出了计算机在硬件组成上的五大部件:运算器、控制器、存储器、输入设备、输出设备。
图2-4 现代计算机硬件框图主存储器包含了ROM和RAM,也就是内存。外存属于外设而不是主存。 三.从计算机处理问题的过程看五大部件
*图3-1 计算机五大部件组成框图 STEP1: 取指令 机器启动后,将PC中存储的下一条指令的地址送入MAR,并命令存储器做读操作,存储器读出对应的指令并存入MDR。然后送入IR。[1] PC -> MAR[2] [MAR] -> MDR[3] MDR -> IR STEP2:分析指令 IR中的指令送入CU进行分析。[4] OP(IR) -> CU STEP3:执行指令 例如00000中分析出000001是取数指令,于是将0000001000送入MDR进行一个取数流程(将数据的地址送入MAR,并命令存储器读数据,将数据存储到MDR)。最后将数取到运算器的ACC中进行下一步操作,PC寄存器加一。[5] Ad(IR) -> MAR[6] [MAR] -> MDR[7] MDR -> ACC[8] (PC) + 1 -> PC 3.1 主存储器的构成
图3-2 存储器的组成框图 存储体:存储体由许多存储单构成,每个存储单又包含多个存储件(触发器或者电容),每个存储件能够寄存一位的0或者1。存储单:存放一串二进制代码/数据。一般存储单的大小为8位。每个存储单赋予一个地址号,计算机可以按照这个地址号寻访。存储字:几个存储单组成一个存储字。存储字长:存储单中二进制代码的位数。存储字长可以是8位、16位、32位等。 主存的工作方式就是按存储单的地址号存取存储字。这个流程称为简称。为了能够实现访存,主存中还必须配置两个寄存器MAR、MDR: MAR(Memory Address Register):存储器地址寄存器,用于暂存欲访问的存储单地址,地址号的长度能够反映存储单的个数。例如MAR有10位,则存储单的个数就是2^10个,也就是有1024个存储单。MDR(Memory Data Register):存储器数据寄存器,用于暂存从存储体某单取出的代码或者准备往某存储单存入的代码,反映的是存储字长。例如MDR有16位,则存储字长就是16位。 早期的计算机,存储字长=指令字长=数据字长,一次访存可以取出一条数据或者指令。 如今计算机需要适应高精度高内存利用效率的存储,存储字长、指令字长、数据字长可以各不相同。但它们都是字节的整数倍。 3.2 运算器运算流程
图3-3 运算器如何进行加减乘除ACC(Accumulator):累加器,有特殊用途的二进制八位寄存器。MQ(Multiple-Quotient Register):乘商寄存器,在乘、商计算中用于保存计算参数与计算结果的寄存器。ALU(Arithmetic and Logic Unit): 算逻单,是能够实现多组算术运算和逻辑运算的组合逻辑电路。X:操作数寄存器,用于暂存参与运算的数,包括加数、减数、被乘数、除数等。 以乘法为例子: 我们要将乘数和被乘数分别放到MQ和X寄存器当中,最终计算结果是乘积高位保存到ACC,低位保存到MQ。 假设计算机读到了指令,其详细步骤为: 3.3 控制器的基本组成
图3-4 控制器的基本组成 控制器是计算机的神经中枢,由它指挥各部件自动、协调地工作。CU:控制流程,负责计算机的流程控制。IR(Instruction Register):指令寄存器,存储下一条需要执行的指令。PC(Program Counter):指令计数器,存储下一条要执行指令的地址。ID(Instruction Decoder):指令译码器,对指令进行分析解释。时序部件:提供时序功能。 3.4 I/O设备 CPU和主存构成了主机,除主机外的大部分硬件设备都可以称为I/O设备或者外设。 详细的外设知识点可以参照:【操作系统】总结五(I/O管理) – peterYong – 博客园 四.硬件主要技术指标 4.1机器字长 机器字长越长,计算机计算精度越高,针对高精度计算的运算次数越少,运算速度就越快。 常见的机器字长有32位、64位的。 4.2 运算速度 运算速度一般使用主频和MIPS来衡量。 1)MIPS – Million of Instruction Per Second 每秒执行多少百万条指令 2)主频。主频:CPU在单位时间内发出的脉冲数。单位为MHz。CPI(Cycle Per Instruction): 执行一条指令所需的时钟周期,也就是机器主频的倒数。 3)Flops 一般超算使用的是Flop/s也就是每秒执行多少次浮点数计算。
图4-1 2019年6月公布TOP100超级计算机 IBM的Summit尖峰的最大运算速度为每秒完成万亿次浮点运算(TFlops)。我国的“神威•太湖之光”峰值运算速度为每秒.9万亿次浮点运算(TFlops)。 4.3 存储容量 存储容量 = 存储单个数 x 存储字长 假设MAR为16位,MDR为32位。则存储单的个数是2^16也就是65536个存储单,存储字长为32位,总的存储容量也就是2^16 x 32 = 2M 位。 参考 [1] 系统架构师教程.第四版 P14-18 [2] 计算机组成原理 唐朔飞 第二版 高教社
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/90594.html