计组第一章:概述
第一节:计算机系统层次结构
冯诺依曼体系:
冯诺依曼体系是现代计算机的基本结构,包括存储程序的基本思想依旧应用在现代体系
唯一的区别在于以原先的“运算器”为核心转为了以“主存储器”为核心
虚线表示控制反馈线路,其他都是数据通路,应当与机器字长保持一致性
计算机功能部件可以分为:I/O设备、存储器、运算器和控制器(集成在中央处理器)
I/O设备:
I/O设备在计组、OS内均有详细的解释和概述,这一节更多是介绍,不做展开
届时可能会做一定的索引
存储器:
存储器是计组的核心内容,尤其是主存,外存则分散在计组、OS内均有部分的内容
内存管理(即主存在OS中有单独的一章作为内容),外存管理和磁盘在OS中也有部分
因而届时应该会根据情况完善该节内容,添加一定量的索引(待完善后)
MAR、MDR是后续考察的重点内容,其一般被集成在CPU内,基本和主存是分离的
运算器:
运算器当前主要把握其结构即可,寄存器在P184有更为详细的介绍(指令体系内)
控制器:
控制器只要清楚内部结构含:CU、IR、PC即可,具体的运行流程在指令集内容中阐述
关于总线,外部总线含数据总线、控制总线、地址总线,其位数都不是固定的
控制线更不可能只有两位,读写信号只是其中最重要的两个
而实际上还有:时钟信号、地址有效信号、片选、字选、位选信号、中断、总线请求等
控制线本身包含的控制信号是非常多的,并不能单纯只是看做只有读写两个功能
计算机软件:
该内容目前暂未考察过,了解即可,主要把握应用程序员和系统程序员两者的区别
语言和编译程序:
机器语言是唯一能够被计算机识别和执行的语言,这个是一个必然的结论,其他都不行
同样不能说微指令能够被计算机识别和执行,即使机器语言基于微指令
汇编程序指代的是汇编器,而不是汇编语言编写的程序,这两者需要区分开
汇编语言和机器语言一一对应,但高级语言和机器语言并不一一对应
解释程序解释一条执行一条因而在执行过程中是不会产生可执行文件的,例如R/Python
而编译程序是一次性解释并存储为一个可执行文件,具体的过程见P7的流程内部
需要注意的是,如果需要编译并执行,在计算机内是先进行源程序存储为可执行文件
然后再读取这个可执行文件(这一块就涉及内存管理,OS内容:编译、链接、装入
也就是先存到外存再读取到内存!涉及到一次访外存的操作!
最简单的例子就是C语言的编译并执行,是先产生可执行文件,再调入内存进行执行的
如果源程序本身没有改变就不需要重新编译
计算器层次结构:
了解即可,ISA指令可以被软件看到,使用
计算机系统工作原理:
首先明确现代计算机体系是基于冯诺依曼体系,并且其存储程序思想一直沿用至今
具体的执行过程和流程会在第五章有具体的叙述,作为预习只需要基本回忆即可
大体上都是一个模子刻出来的,无非就是后续具体操作的时候会有一定程序的区别罢了
习题总结分析:
1:具体的知识点叙述在引言部分,原句的对应
2:其实基于描述也能看出来应该选择哪个选项的,就是以指令序列驱动的
3:D选项即为全相联存储器的概念,这一块后面会在存储器部分具体有讲解在的
7:提一个点,通用寄存器实际上是一系列寄存器的“简称”而已
具体的介绍可以见指令体系P184
9:由此衍生拓展,即计算单元、控制单元内均有数据总线和控制总线(CPU内部总线
同时还有各个部件所依赖的寄存器,构成了一个完整的计算、控制单元
10:速度的比较在P82页,各个部件基本都有速度的比较,离CPU越近的速度越快
一般容易忽略的就是CPU内部寄存器,寄存器的速度非常快,造价也比较昂贵
12:程序运行时需要先读入内存,可以结合操作系统内存管理章节进行交叉学科理解
13:一般需要明确一个事实,一次性编译后运行的速度要远快于一条条编译并执行
典型的边编译边执行的有Python、R、Javascript(了解即可
14:一般用助记符特指汇编语言而不代指高级语言,这一点需要明确
16:汇编语言基于机器语言,而机器语言基于ISA指令架构,指令架构自然基于硬件
故机器结构不同自然可能会导致ISA不同,进而使得汇编语言同时也会改变语法
18:向后兼容,术语名词,虽然暂时还没考过但作为一个最基本的概念需要了解的
20:相联存储器的内容会在后面存储章具体介绍,只需要知道其是基于内容寻址即可
21:硬件描述语言程序其实算是超纲的内容,确实很容易理解错,其算是一种高级语言
但个人认为如果以后出来这种类型,首先的思路就要想当下的低级语言是哪些
因为低级的能够被计算机直接解释的语言就是机器语言,而进一步机器语言基于微程序
22:细节题,这里说了转换为机器级目标代码文件,那么就不能选择解释程序了
解释程序、编译程序都可以完成高级语言源代码转换为机器语言
但解释程序解释一条执行一条,根本不会留下一个可执行目标代码文件
23:数据一般并不在指令内给出,而是在指令中给出存储地址,除了立即寻址以外
第二节:计算机性能指标
首先明确一个事实,这里所包含的一切介绍指标均是可以用于评估计算机性能的指标
不要认为篇幅大的就是一切,其他也同样重要
机器字长:
机器字长主要和运算精度、数据表示范围强相关,是机器性能评估指标,无关运算速度
用户角度性能指标:
吞吐量和响应时间其实主要取决于访存速度、访问磁盘的开销,CPU时间可以忽略
时钟周期与相关周期整理(优化中):
指令流水线需要保证每个流水段内的操作都能在这个时钟周期内完成,所以以最长延迟
详情其实可以见P90的流水线,每个流水段应该视作是一个存取的周期
另外,关于周期本身,目前有如下总结:
周期补充:https://blog.csdn.net/m0_62894677/article/details/134751839
运算指标:
主频是描述计算机硬件执行速度的一个重要指标,其描述的是计算机对指令执行速度
可以理解为执行指令的速度会随着主频的提高而提高,时钟周期越短指令执行也就越快
CPI是执行一条指令所需要的平均时钟周期数(一般基于某个ISA指令集体系架构
CPI是这个指令集的固有属性,和硬件没太大关系,其描述是指令平均需要几步执行
主频提高只能加速指令执行的速度,除非优化了指令集,否则CPI就是不随硬件改变的
ISP则是和硬件、指令集平均CPI均有关系,提高主频或者降低主频确实能改变ISP
FLOPS作为新增考纲考点,需要清楚最基本的运算关系
单位换算:
MGTPEZ(10^6)开始的次数换算单位
时间换算单位
对应3、6、9、12次
习题总结分析:
1:各个参数需要基于理解基础上去运算,否则熟练度不够,注意统考新增浮点数指标
2:以“字长”结尾的名词通常有这样一些:
机器字长(一般也被称为字长)、指令字长、总线字长、寄存器字长、存储字长
一般看到上面的都能想起来内容是什么,不会的直接回去查
3:寄存器确实是由多个触发器构成的,所以才需要最后阶段去翻阅教材补充整个框架
因为这些内容王道上面并不会写,如果想非常完善,最后只能去翻书补知识体系
计算机中一个字的长度一般概括的就是机器字长,主要和CPU的架构、寄存器位数有关
磁盘严谨而言是不能永久存储数据的,毕竟磁盘会存在失磁,应是“可长期存储”
4:一般而言存储字长就是在说一个存储单元的二进制存储位数(可能以字节作单位
其一般和外部数据总线、指令字长、机器字长、指令集架构字长是相同,保证效率最高
但不是一定需要相同,不同只是会导致效率的下降,类似于多次读取事件的发生
MDR位数一般表示为一个存储单元的大小,即一个存储单元所含的二进制位数的长度
5:需要阐明的是,机器字长一般和数据表示精度、表示范围强相关,和其他关系一般
并没有和运算速度有多少的相关性,因为一次性处理的长了,处理时间也就长了
一般机器字长和CPU处理器位数、数据通路宽度、通用寄存器位数、各单元位数相同
6:表述不够严谨,一般这类在统考里面会频繁出现,需要特别留意严谨性的问题
8:首先是运行功能完全相同的高级语言程序(功能相同可以代码量不同
再就是每台机器的指令集不一定相同,编译产生的机器指令条数也就不一定相同
最后就是虽然平均CPI相同,但每个时钟周期的时间长度在不同机器上不一定是相同的
依旧有四个潜在的变量,怎么可能能够确定?
9:细节题,本题的机器字长是以字节作单位的,单位是必然需要看清楚的一个细节
10:CPU内寄存器的可视与否参考以下内容(王道书内的结论,如果错了王道需要负责
所有用户/程序员可见(不透明):PC、PSW、ACC、通用寄存器
所有用户/程序员不可见(透明):MAR、MDR、IR、暂存器、Cache、uMAR、uMDR、uIR
汇编程序员可见,所有用户可见基础上外加:中断字寄存器、基址寄存器、变址寄存器
系统程序员可见,所有用户可见基础上外加:虚拟存储器
程序状态字寄存器=标志寄存器=条件码寄存器=PSW,不同教材表述略有差别
P207上有具体补充
11:PC长度和主存存储字数量有关,边界对齐情况下和对齐方式也有关
12、22:这里涉及到一个很重要的知识点,指令的运行是一步步的(微指令序列
即,完成一条指令就是固定需要X个时钟周期,CPI描述的就是这个固定量
不论你怎么调整硬件结构,只要你指令集没有产生较大变化,CPI是不会产生变化的
形象比喻就是执行一件事固定需要X个步骤,你可以对每个步骤进行加速
但你没办法减少执行这件事的步骤,只能减少执行完成这一件事的时间,仅此而已
CPI实际上是描述指令集的一个固有属性,主频则是描述硬件性能,即执行的速度
两者不可以互相混淆在一起,就像认为电阻和电流大小有关一样
13:从用户角度看衡量一台电脑的性能指标主要是响应时间和吞吐量,是用户能感受的
其他的性能指标均是用户无法直观感受到的
14:记住这个知识点就可以了,提高主频对提高计算机性能有限
15:兼容,书面上有明确解释:指计算机硬件或软件在系列机上的通用性(易混淆
日常生活里面确实非常容易理解为计算机硬件和软件在系列机上的通用性,但这是错的
要明白清楚,是软件或硬件的通用性,而非互相配合的兼容性,语义完全不同
需要和日常生活中使用的“兼容”区分开,日常生活用的“兼容”更多是“互相适用”
16:其实如果按表述含义来说D也应该是对的,毕竟可以理解为A的速度是B的80%
但一般不太会用这种会产生混淆的表述,所以这类文字游戏一般不用特别去在乎的
17:从运行程序所需要的总时钟周期数去考虑即可
18:需要注意的是,本节全都是对计算机性能的描述指标,这一点是先前所忽略的
机器字长、数据通路带宽、主存容量、运算速度(吞吐量、响应速度)、主频、CPI等
凡是在这一节出现的都可以算作计算机性能指标,往往容易忽略其他的
19:机器字长主要和运算精度、表述范围强相关,和别的基本没有什么关系
22:其实这类情况一般就默认指令集是不变的,也就是CPI是固定的
那么提高CPU的时钟频率自然也就是正确的,因为相对而言就可以提高CPU的速度
24:当时应该是错过的,错在了CPU速度提高50%混淆为CPU执行时间减少50%
28:通用寄存器一般泛指CPU内部的非指令、控制寄存器,主要是运算单元内的部件
29:这个基于个人的一个习惯问题,在数这种幂次数的时候个人会少数一位的
因为从个位数开始数,数出来确实就是千万亿,而实际上这是幂,所以是从十位开始的
最终的结果自然就差了一位,这个是当时可能都没意识到的问题
番外篇:记得回头看章末总结
计算机体系结构、计算机组成:组成是最底层偏硬件,体系结构是上层偏设计
ISA指令集架构就是体系结构的部分,具体的微指令、电路逻辑就是计算机组成部分
体系结构是偏设计层面的,实现的功能层面的,组成更加偏硬件、功能具体实现
一般这类题目如果出来了确实很难去区分,但记住偏硬件就是组成,偏设计是体系结构