【学习笔记】计算机组成原理前三讲核心知识点

【学习笔记】计算机组成原理前三讲核心知识点
未似风不息计算机组成原理(Computer Organisation) 是计算机科学与技术专业的核心课程之一,它不仅仅是为了让学生了解计算机硬件的工作原理,更是为了培养学生的系统思维和解决问题的能力。通过学习这门课,可以了解现代计算机是如何工作的。
这门课要求我们系所有人到大礼堂共同听课,Lab课则由四位TA老师负责,老师们讲的很快,因此想学好这门课不光要按时上课,课下也要整理总结。
Lecture 1 什么是计算机
计算机定义
一台现代计算机是一种电子的、数字的、通用的计算设备,它自动遵循一系列逐步的指令来解决问题。
计算机所遵循的这一系列逐步的指令也被称为计算机程序。
图灵机
图灵机(Turing Machine) 是由英国数学家艾伦·图灵开发的一种假设装置,它是所有计算机的抽象模型。
一个图灵机由
- 一个分成单元格的磁带
 - 一个移动的读写头
 - 一个存储图灵机状态的寄存器
 - 一个有限的指令表
 
通用图灵机
通用图灵机(Universal Turing Machine),能够模拟其他所有的图灵机。
- 输入:数据 + 计算描述(图灵机)
 - 它是可编程的,因此它是一台计算机,指令是输入数据的一部分
 - 计算机就是一台通用图灵机
 
冯·诺依曼体系结构
冯·诺依曼体系结构(Von Neumann Architecture),也称为存储程序架构,数据和程序都存储在内存中
存储程序架构
- 一个中央处理器(CPU)
- 控制单元
 - 算术逻辑单元(ALU)
 - 寄存器
 
 - 主存
 - I/O 系统
 
主存储器和 CPU 之间的一条单一路径,称为冯·诺依曼瓶颈。

冯·诺依曼执行周期
冯·诺依曼执行周期(Von Neumann Execution Cycle) 也称为获取-解码-执行周期,分成四步
- 控制单元从内存中获取下一条指令
 - 指令被解码成 ALU 能够理解的语言
 - 数据操作数从内存中获取到 CPU 内部的寄存器中
 - ALU 执行指令并将结果放入寄存器或内存中
 
冯·诺依曼瓶颈
冯·诺依曼瓶颈(The Von Neumann Bottleneck)
- CPU 和内存是分开的
 - 所有数据和代码都在内存中
 - CPU 通常比内存快
 - CPU 被迫等待需要的数据被传输到或从内存中
 
抽象
抽象(abstraction) 是通过识别一组个体中的共同特征,或忽略这些个体的时空方面来形成概念的过程,抽象的本质是在特定情境中保留相关信息,并忘记在该情境中无关紧要的信息。
从抽象到具体
- 一份出版物
- 一份报纸 
- 《旧金山纪事报》
- 《纪事报》5 月 18 日那一期
- 我那本《纪事报》5 月 18 日那一期
 
 
 - 《纪事报》5 月 18 日那一期
 
 - 《旧金山纪事报》
 
 - 一份报纸 
 
现代现代计算系统的抽象层次
- 用户级别:应用程序如 qq.exe
 - 高级语言:C、Java、C++
 - 汇编语言
 - 操作系统
 - 机器语言:指令集 A
 - 控制级别:微码或硬接线
 - 数字逻辑:电路、门
 
硬件与软件
硬件能做的,软件也能做,反之亦然。硬件实现更快但固定,软件实现更灵活但更慢。
Lecture 2 比特:数据表示与操作
计算机是处理数字的机器,输入数字,对数字进行操作,输出也是数字。
二进制数:比特
计算机是二进制机器:只有0和1。BIT = Binary digITs; 1 bit: 0 or 1(比特 = 二进制数字;1比特:0或1),1 字节 = 8 比特(1 Byte = 8 bits),一个字(word) 是作为单元处理的固定大小数据块
数值数据表示
- Unsigned integers(无符号整数)
 - Signed integers(有符号整数)
- Sign-magnitude(原码)
 - 1’s complement(反码)
 - 2’s complement(补码)
 
 - Real number representation(实数表示)
 - Floating-point numbers(浮点数)
 
无符号整数表示
无符号整数表示(Unsigned Integer Representation) 是计算机中以二进制形式表示非负整数的方法,其所有二进制位均为数值位,无符号位,取值范围为 0 到 
有符号整数表示
有符号整数表示(Signed Integer Representation)最左侧的比特位(最高有效位)用作符号位。按照惯例,符号位为0表示正数,为1则表示负数。原码:其余比特位表示数值大小不足七位要补足七位;反码:在原码基础上,正数不变,负数符号位不变,其数值位的的相反1变为0,0变为1;补码:需先通过按位取反运算(即反码)将所有位反转或“翻转”;然后在结果值上加1,并忽略对0取补码时产生的溢出。
取一个正数,其原码,反码,补码完全相同。例如25,二进制为:11001;原码:00011001(符号位 0 + 数值位 0011001);反码:00011001;补码:00011001。
例如-25,其原码:10011001;反码:11100110(符号位 1 + 取反后的数值位 1100110);补码:11100110+1=11100111。
| 数值 | 原码 | 反码 | 补码 | 
|---|---|---|---|
| 25 | 00011001 | 00011001 | 00011001 | 
| -25 | 10011001 | 11100110 | 11100111 | 
数字转换
主要对数字进行2进制和16进制转换,因较为基础,这里不多赘述。
实数表示
正二进制小数(Positive binary fractions (fixed point))这里以三个例子来进行解释,如下:
对这三个问题进行解答(点击按钮显示对应答案)
首先看整数位,对其进行2进制转换。本题整数位为6,
,取整数部分1 ,剩余小数部分0.25 ,取整数部分0(剩余小数部分 ) ,取整数部分1将整数部分从上往下排列,小数部分的二进制为:101。 
因此
对于
- 小数点后第1位:
 - 第4位:
 - 第7位:
 
其余位为 0,求和:
因此,
步骤如下:
→ 取整1(第 1 位,记为 ),剩余小数 → 取整1(第 2 位, ),剩余小数 → 取整1(第 3 位, ),剩余小数 → 取整0(第 4 位, ),剩余小数 → 取整0(第 5 位, ),剩余小数 (开始循环) → 取整1(第 6 位, ),剩余小数 → 取整1(第 7 位, ),剩余小数 → 取整0(第 8 位, ) 
凑齐 8 位后,二进制小数为
因此,
浮点数
浮点(Floating point) 指数字的基数点可以”浮动”,即它可以相对于数字的有效数字放置在任何位置。
半/单精度浮点数
半精度浮点数是一种使用16位(2字节)存储的浮点数格式,主要用于对存储和计算效率要求较高的场景,如深度学习和图形处理。
组成:
- 符号位:1位,表示数值的正负
 - 指数部分:5位,采用偏移表示法,用于表示数值的大小
 - 尾数部分:10位,表示有效数字,包含一个隐含的1(对于规范化数)
 
与半精度浮点数类似,单精度浮点数为32位,1位作为符号位,8位作为指数部分;23位表示尾数部分
以下是几道题目
解答如下(点击按钮显示对应答案)
符号位:0。
指数位:接下来的 5 位是 01111吗,将其转为十进制位15,半精度的指数偏移量为 15(
尾数为:0000000000.半精度尾数采用隐含 “1” 的规格化形式,即尾数为1.M(M是尾数位),这里M全为0,所以尾数是1.0。
代入半精度公式计算
符号位:12.375 是正数,符号位为0。
指数位:单精度的指数偏移量为127(因为 8 位指数的偏移量公式:
尾数位:规格化尾数是1.100011,去掉隐含的 “1”,剩下小数部分100011。尾数位需要补够 23 位,因此在100011后补 17 个 0,得到10001100000000000000000。
将这三部分组合:
非数值数据表示
这一部分内容不是很重要,因此放一张ASCII 码,可自行对照

Lecture 3 布尔代数:从比特到逻辑
计算机通过比特(二进制位)表示信息。一个比特具有两种可能的值,即0和1。比特可用于表示真值——真与假。因此比特运算对应着布尔代数中的逻辑运算。
布尔变量与运算符
布尔变量是只能取两个值的变量:真/假;或1/0
布尔运算符
- AND(A AND B , AB , 
)  - OR (A OR B , A+B , 
)  - NOT ( NOT A , A’ , 
)  
布尔函数
函数是一种关系,能够唯一地将一个集合的成员与另一个集合的成员相关联。
布尔函数具有
- 至少一个布尔变量
 - 至少一个布尔运算符
 - 至少一个来自集合{0,1}的输入
 
其产生的输出也在集合{0,1}之中
布尔运算符优先级
一个布尔函数中可能包含多个布尔运算符。运算优先级规则为:
- NOT优先级最高
 - 其次是AND
 - 最后是OR
 
布尔运算符的真值表
| AND | ||
|---|---|---|
| A | B | AB | 
| 0 | 0 | 0 | 
| 0 | 1 | 0 | 
| 1 | 0 | 0 | 
| 1 | 1 | 1 | 
| OR | ||
|---|---|---|
| A | B | A+B | 
| 0 | 0 | 0 | 
| 0 | 1 | 1 | 
| 1 | 0 | 1 | 
| 1 | 1 | 1 | 
| NOT | |
|---|---|
| A | |
| 0 | 1 | 
| 1 | 0 | 
布尔恒等式
布尔恒等式(Boolean Identities),也可以称为布尔代数常用基本法则。由于打成表格太麻烦了,找了张图片

上述所有恒等式都可以通过真值表来证明。为此,你需要使用真值表展示等式两边的所有可能取值。若两者完全一致,则该恒等式成立。
规范形式
表示同一布尔表达式有多种方式。逻辑等价的表达式具有相同的真值表。例如,
- 积之和(Sum-of-products)
 - 和之积(Product-of-sums)
 
积之和
来自输入的不同 “乘积” 项被 “相加” 在一起。这也被称为析取范式(Disjunctive Normal Form)。
和之积
来自输入的不同 “和项” 被 “相乘” 在一起。这也被称为合取范式(Conjunctive Normal Form)。
卡诺图
卡诺图(KM或K-map)是由莫里斯·卡诺(Maurice Karnaugh,1924年~)于1953年提出的一种简化布尔代数表达式的方法。




前三节课的知识就结束了,之后是门电路,只学了一部分就国庆放假了(老师看我们听不下去就提前下课了)。门电路部分我尽量在quiz之前整理出来。









