by 池雨泉
- 无论是选择题还是大题,请大家尽量写出关键的解题步骤或推断依据,如果过程过于简略,下次可能会酌情扣分
- 鼓励同学们尝试不同寻常的思路与解法
- 新奇的思路或解法有机会被收录到作业解析中
- 计算过程中,最好带着分数或者根号,等到最后一步再转成小数,否则计算结果会出现较大的误差,例如习题1.5的小题b:
>>> 18.18 * 2.6 / 7 6.752571428571429 >>> 18.18 * 2.64 / 7 6.856457142857144
- 如果想在过程中使用小数,也请保留较多的有效数字
- IPC与IPS是两个不同的指标
- IPC - instructions per cycle
$$\text{IPC} = \frac{1}{\text{CPI}}$$ - IPS - instructions per second
$$\text{IPS} = \text{r} \times \text{IPC} = \frac{\text{r}}{\text{CPI}}$$
- IPC - instructions per cycle
个别同学的作业存在抄袭现象
- 下次如果再发现,该次作业直接记为零分
- 屡教不改者,本门课程成绩直接记为不及格
允许他人抄袭者与被抄袭者处罚相同
可以互相交流讨论,但不可以抄袭
-
时钟频率的单位
- Hz (hertz)
- kHz (kilohertz)
- MHz (megahertz)
- GHz (gigahertz)
-
每秒执行指令数的单位
- IPS (instructions per second)
- TIPS (thousands of instructions per second); kIPS (kilo instructions per second)
- MIPS (millions of instructions per second)
- BIPS (billions of instructions per second)
-
指令数以及时钟周期数一般不使用k/M/G或T/M/B这两个系列的缩写
-
不确定使用什么单位时,建议使用科学计数法,例如
-
$2 \times {10}^{10}$ 条指令 -
$3 \times {10}^{10}$ 个时钟周期
-
- 在使用自己定义的符号前,请明确说明其含义
- 保持计算过程中所使用符号的统一性
- 科学计数法要求小数点的左边只有1位非零数字
20E9 # 不是科学计数法 2E10 # 是科学计数法 (= 2 * (10 ** 10)) 0.43E10 # 不是科学计数法 4.3E9 # 是科学计数法 (= 4.3 * (10 ** 9))
通常来说
- 比值 (ratio) 用于部分与部分之间的比较
- 比重 (proportion) 用于部分与整体之间的比较,用百分比 (percentage) 表示
- 比率 (rate) 是两种不同单位的量之间的商,分母通常与时间有关,用于表示速率或事件的发生率
因此,不要用百分比表示比值 (ratio)
中文上有时会将比值/比例/比率几个词混用,这时可以考虑借助英文来明确说明所使用的到底是哪个概念
当然,英文中也存在混用的情况,因此上面提到的区分方式不是绝对的
答案:B
- A是不存在的机器
- B是对“存储程序”的阐述,正确
- C是与题干无关的选项
- D是相联存储器的特点
答案:D
软件和硬件具有逻辑功能上的等价性
- 硬件实现具有更高的执行速度
- 执行频繁、硬件实现代价不是很高的功能通常由硬件实现
- 软件实现具有更好的灵活性
综上所述,D选项的说法是错误的
答案:B
以Linux上的C语言源程序的转换过程为例。流程如下:
- 预处理器 (preprocessor) 对代码中的
#include
/#define
等宏 (macro) 进行解析,将以.c
结尾的文件转换为以.i
结尾的文件 - 编译器 (compiler) 将C语言程序翻译为汇编语言程序,生成以
.s
结尾的文件 - 汇编器 (assembler) 将汇编语言程序翻译为机器语言程序,生成以
.o
结尾的可重定位 (relocatable) 目标 (object) 文件- 可以进一步将若干目标文件整合,生成以
.a
/.so
结尾的静态/动态库文件
- 可以进一步将若干目标文件整合,生成以
- 链接器 (loader) 将若干目标文件与其所依赖的非标准库文件、标准库文件整合在一起,生成最后的可执行 (executable) 文件
Windows/Linux相关文件后缀名对比
文件类型 | Windows | Linux | 对应的英文 |
---|---|---|---|
C语言程序 | .c |
.c |
C |
预处理后的文件 | .i |
.i |
intermediate |
汇编语言程序 | .asm |
.s |
assembly language |
可重定位目标文件 | .obj |
.o |
object |
静态链接库 | .lib |
.a |
library; archive |
动态链接库 | .dll |
.so |
dynamic-link library; shared object |
可执行文件 | .exe |
无后缀名/任意后缀名 | executable |
答案:B
计算机的位数,即机器字长,指的是计算机能够一次性处理的二进制数的长度。一般情况下,通用寄存器的位数与机器字长相同,但是,这是两个不同的概念。因此选B。
答案:C
设
- 程序P在M1上的运行时间为
$\text{t}_1$ - 程序P在M2上的运行时间为
$\text{t}_2$
则
答案:D
一个程序的总CPI等于其所使用的各种类型的指令的CPI按照其所占比例求得的加权平均
而
从而
从而
处理器 | 时钟频率 | CPI |
---|---|---|
P1 | 3GHz | 1.5 |
P2 | 2.5GHz | 1.0 |
P3 | 4.0GHz | 2.2 |
- P1的IPS等于
$2 \times {10}^{9}$ - P2的IPS等于
$2.5 \times {10}^{9}$ - P3的IPS等于
$1.82 \times {10}^{9}$
就IPS而言,P2的性能最高。
由于
处理器 | 时钟周期数 | 指令数 |
---|---|---|
P1 | ||
P2 | ||
P3 |
先求时钟周期数
先求指令数
分别计算时钟周期数和指令数
改进后
- P1的频率为5.14GHz
- P2的频率为4.29GHz
- P3的频率为6.86GHz
处理器型号 | 时钟频率 |
电压 |
静态功率 |
动态功率 |
---|---|---|---|---|
Pentium 4 Prescott (2004) | 3.6 GHz | 1.25 V | 10 W | 90 W |
Core i5 Ivy Bridge (2012) | 3.4 GHz | 0.9 V | 30 W | 40 W |
由动态功率的计算公式
-
Pentium 4 Prescott
$$C = \frac{2 \times 90\text{W}}{{(1.25)}^{2}\text{V}^{2} \times 3.6 \times {10}^{9}\text{Hz}} = 3.20 \times {10}^{-8}\text{F} \text{ 或者 } 32.00 \text{nF}$$ -
Core i5 Ivy Bridge
$$C = \frac{2 \times 40\text{W}}{{(0.9)}^{2}\text{V}^{2} \times 3.4 \times {10}^{9}\text{Hz}} = 2.90 \times {10}^{-8}\text{F} \text{ 或者 } 29.05 \text{nF}$$
注:电容的单位是法拉 (F - farad)
处理器名称 | 静态功率所占百分比 | 静态功率与动态功率的比值 |
---|---|---|
Pentium 4 Prescott | 10.00% | 0.11 |
Core i5 Ivy Bridge | 42.86% | 0.75 |
- Pentium 4 Prescott: 1.18 V
>>> (math.sqrt(1600 + 4*288*450) - 40) / (2 * 288) 1.1824830817583296
- 与改进前相比降低了0.07伏
- Core i5 Ivy Bridge: 0.84 V
>>> (math.sqrt(2700 ** 2 + 4 * 4000 * 63 * 81) - 2700) / (2 * 4000) 0.8413368207686762
- 与改进前相比降低了0.06伏
以Core i5 Ivy Bridge为例
动态功率
代入改进前的数据,求出
静态功率
代入改进前的数据,求出电流
计算改进后的总功率
又因为总功率等于动态功率与静态功率之和
由于改进前后电流不变,改进后的静态功率为
从而改进后的动态功率为
又因为改进前后电容与频率均保持不变,因此
联立上述两式,整理得
解得
以Pentium 4 Prescott为例
由于