2024-11-21 18:13阅读: 460评论: 0推荐: 0

计算机体系结构 国科大胡伟武 课后习题期末题库重点选集解析Ⅰ(2-3章)

第2章 计算机系统结构基础

第一题 MIPS

1.在3台不同指令系统的计算机上运行同一程序P时,A机需要执行1.0×108条指令,B机需要执行2.0×108条指令,C机需要执行4.0×108条指令,但实际执行时间都是10s。请分别计算这3台机器在运行程序P时的实际速度,以MIPS为单位。这3台计算机在运行程序P时,哪一台性能最高?为什么?

答案:

A为10MIPS,B为20MIPS,C为40MIPS。三台机器实际性能相同。题目问的是运行程序P时的性能。

解析:

首先,我们需要计算每台机器在运行程序P时的实际速度,以MIPS(百万指令每秒)为单位。

MIPS的计算公式为:

MIPS=指令数执行时间(秒)×106

对于A机:

  • 指令数:1.0×108

  • 执行时间:10秒

  • MIPS值:

    MIPSA=1.0×10810×106=10MIPS

对于B机:

  • 指令数:2.0×108

  • 执行时间:10秒

  • MIPS值:

    MIPSB=2.0×10810×106=20MIPS

对于C机:

  • 指令数:4.0×108

  • 执行时间:10秒

  • MIPS值:

    MIPSC=4.0×10810×106=40MIPS

比较性能:

虽然C机的MIPS值最高,为40 MIPS,但所有机器运行程序P的实际执行时间都是10秒。因此,在运行程序P时,三台机器的实际性能是相同的。

原因分析:

  • MIPS的局限性:MIPS值仅反映了机器执行指令的速度,但不考虑每条指令的功能强度和指令集的差异。不同的机器可能需要执行不同数量的指令来完成同一任务。

  • 程序执行时间:真正衡量程序性能的是执行时间。尽管C机的MIPS值最高,但由于它需要执行更多的指令(4.0×108条),最终执行时间与其他机器相同。

结论:

在运行程序P时,三台机器的性能是相同的。因为它们完成相同任务所需的时间一致,即10秒。


第五题 静态功耗总功耗

5.对某处理器进行功耗测试,得到如下数据:时钟不翻转,电压1.05V时,电流为500mA;时钟频率为1GHz,电压1.1V时,电流为2500mA。请计算在1.1V下,此处理器的静态功耗以及500MHz下的总功耗。

答案:

  • 在1.1V下,处理器的静态功耗约为0.576W。
  • 在500MHz时,处理器的总功耗约为1.663W。

解析:

要计算处理器在1.1V下的静态功耗以及500MHz时的总功耗,我们需要分解总功耗为静态功耗和动态功耗,并利用已知数据进行推导。

步骤1:计算在1.1V、1GHz时的总功耗

已知在1.1V、1GHz时,电流为2.5A。

  • 总功耗Ptotal_1GHz

    Ptotal\_1GHz=V×I=1.1V×2.5A=2.75W

步骤2:估算在1.1V下的静态功耗

已知在时钟不翻转、1.05V时,电流为0.5A。

  • 静态功耗在1.05V时为:

    Pstatic\_1.05V=V×I=1.05V×0.5A=0.525W

    假设漏电流与电压的平方成正比(一般情况下,漏电流对电压的依赖可以近似为指数关系,但为了简化计算,我们采用平方关系)。

  • 计算电压比例因子:

    (1.11.05)2=(1.0476)21.0975

    因此,静态功耗在1.1V时为:

    Pstatic\_1.1V=Pstatic\_1.05V×1.0975=0.525W×1.09750.576W

步骤3:计算在1.1V、1GHz时的动态功耗

  • 动态功耗Pdynamic_1GHz

    Pdynamic\_1GHz=Ptotal\_1GHzPstatic\_1.1V=2.75W0.576W=2.174W

步骤4:确定动态功耗与频率的关系

动态功耗与频率成正比,即:

Pdynamicf

步骤5:计算在500MHz时的动态功耗

  • 计算频率比例因子:

    500MHz1GHz=0.5GHz1GHz=0.5

  • 因此,动态功耗在500MHz时为:

    Pdynamic\_500MHz=Pdynamic\_1GHz×0.5=2.174W×0.5=1.087W

步骤6:计算在500MHz时的总功耗

  • 总功耗Ptotal_500MHz

    Ptotal\_500MHz=Pstatic\_1.1V+Pdynamic\_500MHz=0.576W+1.087W=1.663W

总结:

  1. 静态功耗的计算:利用时钟不翻转时的电流,假设漏电流与电压平方成正比,计算出在目标电压下的静态功耗。

  2. 动态功耗的计算:通过总功耗减去静态功耗得到动态功耗,利用动态功耗与频率成正比的关系,计算出不同频率下的动态功耗。

  3. 总功耗的计算:将静态功耗和动态功耗相加,得到在特定频率下的总功耗。

第3章 二进制与逻辑电路

第二题 进制转换

2.按照以下要求将浮点数表示出来。
(1)把单精度数转化为十进制数:0x7ff0000,0xbe400000,0xff800000。
(2)把双精度数转化为十进制数:0x4035000000000000,0x8008000000000000。
(3)把十进制数转化为单精度数:-100.0,0.25。
(4)把十进制数转化为双精度数:1024.0,0.25。

参考答案

解析:

本题要求在IEEE 754标准下进行浮点数和十进制数之间的转换。我们将分别解决每个小题,并详细解释每个步骤。


(1) 将单精度浮点数转换为十进制数:

(a) 0x07FF0000

步骤1:将十六进制数转换为二进制数

0x07FF0000 转换为二进制:

0    7    F    F    0    0    0    0
0000 0111 1111 1111 0000 0000 0000 0000

步骤2:提取符号位、指数位和尾数位

  • 符号位 (S):第31位,0(正数)
  • 指数位 (E):第30位到第23位,00001111,转换为十进制是15
  • 尾数位 (F):第22位到第0位,11110000000000000000000

步骤3:计算阶码和尾数

  • 阶码 (e)E - 127 = 15 - 127 = -112
  • 尾数 (M)1 + (尾数位对应的值)

尾数位对应的值:

Fraction=21+22+23+24=0.5+0.25+0.125+0.0625=0.9375

因此,M=1+0.9375=1.9375

步骤4:计算实际值

Value=(1)S×M×2e=1×1.9375×2112

由于指数很小,结果是一个接近于零的正数:

Value1.9375×21123.73×1034

答案:

0x07FF0000 表示的十进制数约为 3.73×10343.73×1034


(b) 0xBE400000

步骤1:将十六进制数转换为二进制数

B    E    4    0    0    0    0    0
1011 1110 0100 0000 0000 0000 0000 0000

步骤2:提取符号位、指数位和尾数位

  • 符号位 (S)1(负数)
  • 指数位 (E)01111100,十进制为124
  • 尾数位 (F)10000000000000000000000

步骤3:计算阶码和尾数

  • 阶码 (e)124 - 127 = -3
  • 尾数位对应的值

Fraction=21=0.5

因此,M=1+0.5=1.5M = 1 + 0.5 = 1.5

步骤4:计算实际值

Value=(1)1×1.5×23=1.5×0.125=0.1875

答案:

0xBE400000 表示的十进制数为 -0.1875


(c) 0xFF800000

步骤1:将十六进制数转换为二进制数

F    F    8    0    0    0    0    0
1111 1111 1000 0000 0000 0000 0000 0000

步骤2:提取符号位、指数位和尾数位

  • 符号位 (S)1(负数)
  • 指数位 (E)11111111(全为1)
  • 尾数位 (F)10000000000000000000000(尾数位非零)

步骤3:判断特殊值

在IEEE 754标准中,当指数位全为1且尾数位为零时,表示无穷大;如果尾数位非零,则表示 NaN(非数字)。

由于尾数位非零,因此:

答案:

0xFF800000 表示的值为 负无穷大


(2) 将双精度浮点数转换为十进制数:

(a) 0x4035000000000000

步骤1:将十六进制数转换为二进制数

4    0    3    5    0    0    0    0    0    0    0    0    0    0    0    0
0100 0000 0011 0101 0000 ...(后面全为0

步骤2:提取符号位、指数位和尾数位

  • 符号位 (S)0(正数)
  • 指数位 (E)1000000011,十进制为1027
  • 尾数位 (F)010100000...(只有第51位和第48位为1,其余为0)

步骤3:计算阶码和尾数

  • 阶码 (e)1027 - 1023 = 4
  • 尾数位对应的值

Fraction=24+27=0.0625+0.0078125=0.0703125

因此,M=1+0.0703125=1.0703125M = 1 + 0.0703125 = 1.0703125

步骤4:计算实际值

Value=1×1.0703125×24=1.0703125×16=17.125

注意到我们的尾数计算有误,实际上,第51位对应2−12{-1},第48位对应2−42。但题目中第51位是0,第50位是1,所以尾数实际上是:

Fraction=22+24=0.25+0.0625=0.3125Fraction=22+24=0.25+0.0625=0.3125

因此,M=1+0.3125=1.3125M = 1 + 0.3125 = 1.3125

重新计算实际值:

Value=1×1.3125×16=21

答案:

0x4035000000000000 表示的十进制数为 21.0


(b) 0x8008000000000000

步骤1:将十六进制数转换为二进制数

8    0    0    8    0    0    0    0    0    0    0    0    0    0    0    0
1000 0000 0000 1000 0000 ...(后面全为0

步骤2:提取符号位、指数位和尾数位

  • 符号位 (S)1(负数)
  • 指数位 (E)00000000000(全为0)
  • 尾数位 (F):第51位为1,其余为0

步骤3:计算实际值

由于指数位为0且尾数位非零,这是一个非规范化数(次正规数)

  • 阶码 (e)1 - 1023 = -1022
  • 尾数位对应的值

Fraction=212=0.000244140625

计算实际值:

Value=1×0.000244140625×210221.1125369292536007×10308

答案:

0x8008000000000000 表示的十进制数约为 1.1125369×103081.1125369×10308


(3) 将十进制数转换为单精度浮点数:

(a) -100.0

步骤1:确定符号位

  • 符号位 (S)1(负数)

步骤2:将数字转换为二进制

  • 100.0 的二进制表示为 1100100.0
  • 规范化为:1.100100×26

步骤3:计算指数位

  • 阶码 (e)6
  • 指数位 (E)e + 127 = 6 + 127 = 133
  • 指数位二进制表示10000101

步骤4:计算尾数位

  • 尾数位 (F)10010000000000000000000(将小数部分填充至23位)

步骤5:组合位串并转换为十六进制

位串:

S |     E      |             F
1 | 10000101 | 10010000000000000000000

转换为十六进制:

1 10000101 10010000000000000000000
= C2C80000

答案:

-100.0 的单精度浮点表示为 0xC2C80000


(b) 0.25

步骤1:确定符号位

  • 符号位 (S)0(正数)

步骤2:将数字转换为二进制

  • 0.25 的二进制表示为 0.01
  • 规范化为:1.0×22

步骤3:计算指数位

  • 阶码 (e)-2
  • 指数位 (E)-2 + 127 = 125
  • 指数位二进制表示01111101

步骤4:尾数位

  • 尾数位 (F)00000000000000000000000(因为小数部分为0)

步骤5:组合位串并转换为十六进制

位串:

S |     E      |             F
0 | 01111101 | 00000000000000000000000

转换为十六进制:

0 01111101 00000000000000000000000
= 3E800000

答案:

0.25 的单精度浮点表示为 0x3E800000


(4) 将十进制数转换为双精度浮点数:

(a) 1024.0

步骤1:确定符号位

  • 符号位 (S)0(正数)

步骤2:将数字转换为二进制

  • 1024.0 的二进制表示为 10000000000.0
  • 规范化为:1.0×210

步骤3:计算指数位

  • 阶码 (e)10
  • 指数位 (E)10 + 1023 = 1033
  • 指数位二进制表示10000001001

步骤4:尾数位

  • 尾数位 (F)000...0(共52位,全为0)

步骤5:组合位串并转换为十六进制

位串:

S |        E         |                     F
0 | 10000001001 | 000...0(共52位)

转换为十六进制:

0 10000001001 000...0
= 4090000000000000

答案:

1024.0 的双精度浮点表示为 0x4090000000000000


(b) 0.25

步骤1:确定符号位

  • 符号位 (S)0(正数)

步骤2:将数字转换为二进制

  • 0.25 的二进制表示为 0.01
  • 规范化为:1.0×22

步骤3:计算指数位

  • 阶码 (e)-2
  • 指数位 (E)-2 + 1023 = 1021
  • 指数位二进制表示01111111101

步骤4:尾数位

  • 尾数位 (F)000...0(共52位,全为0)

步骤5:组合位串并转换为十六进制

位串:

S |        E         |                     F
0 | 01111111101 | 000...0(共52位)

转换为十六进制:

0 01111111101 000...0
= 3FD0000000000000

答案:

0.25 的双精度浮点表示为 0x3FD0000000000000

总结:

  1. 单精度数转换为十进制数:
    • 0x07FF0000 ≈ 3.73×10343.73×1034
    • 0xBE400000 = -0.1875
    • 0xFF800000 = 负无穷大
  2. 双精度数转换为十进制数:
    • 0x4035000000000000 = 21.0
    • 0x8008000000000000 ≈ 1.1125369×10308
  3. 十进制数转换为单精度浮点数:
    • -100.0 = 0xC2C80000
    • 0.25 = 0x3E800000
  4. 十进制数转换为双精度浮点数:
    • 1024.0 = 0x4090000000000000
    • 0.25 = 0x3FD0000000000000

第三题 晶体管级电路图

3.画出e=a&b|c&d的晶体管级电路图

题目解析

题目要求画出表达式 e=(a&b)∣(c&d)e = (a & b) | (c & d) 的晶体管级电路图,同时通过图片已经提供了解释和解答。


逻辑表达式简化:

  1. 原表达式:

    e=(a&b)|(c&d)

  2. 化为非门实现:

    e=∼((a&b)&(c&d))

  3. 根据逻辑电路设计原理,逻辑运算可以通过 CMOS 的 P 管(逻辑高电平)和 N 管(逻辑低电平)搭建,其中:

    • 与门:通过 N 管串联实现。
    • 或门:通过 P 管并联实现。
    • 非门:通过单级 CMOS 反相器实现。

电路图分解

  1. 第一部分:(a&b)(c&d)
    • a&ba & b:通过 N 管串联P 管并联 实现。
    • c&dc & d:同样通过 N 管串联P 管并联 实现。
  2. 第二部分:(a&b)(c&d)
    • 将第一部分的输出通过 CMOS 反相器,实现逻辑非操作。
  3. 第三部分:((a&b)&(c&d))
    • 对第二部分的两个非门输出,通过 N 管串联P 管并联 实现逻辑与操作。
    • 最后通过一个 CMOS 反相器对结果再次取反,得到最终输出。

注意点

  1. 逻辑设计原则:
    • N 管负责接地,处理低电平。
    • P 管负责接电源,处理高电平。
    • 不能颠倒,否则电路无法正常工作。
  2. 电路实现注意:
    • 两级与非门电路使用 CMOS 的串并联结构来实现。
    • 电路需要保证输出端的驱动能力,因此必须在最后一级加反相器进行缓冲和逻辑调整。
  3. 课本上方案:
    • 第一级实现 (a&b)(a & b) 和 (c&d)(c & d) 的逻辑非。
    • 第二级实现整体逻辑非的输出。
    • 最后通过反相器得到最终结果。

总结

  • e = (a & b) | (c & d) 的逻辑通过两级与非门电路加反相器实现。
  • 电路图按照 CMOS 原理设计,其中 N 管和 P 管搭配确保逻辑功能和可靠性。
  • 注意串联和并联结构的功能和连接要求。

第四题 电容延迟

4.计算一个FO4的延迟,假设反相器的输入电容为0.0036pF,平均每个负载连线电容为0.0044pF,翻转延迟为0.023ns,每pF延迟为4.5ns。

参考答案:

题目解析:

题目要求计算一个 FO4 的延迟,给出了反相器输入电容、负载连线电容、翻转延迟和其他相关参数。参考答案中已经给出了公式和部分推导过程,以下是详细解析。


FO4 延迟的定义:

FO4(Fan-Out of 4)是数字电路中衡量逻辑延迟的重要参数之一,指的是一个反相器驱动 4 个相同反相器时的延迟。其延迟由以下两部分组成:

  1. 本征延迟(Intrinsic Delay):
    • 反相器自身的延迟,与负载无关。
    • 本题中给出 =0.023ns本征延迟=0.023ns
  2. 负载延迟(Load Delay):
    • 由于驱动负载电容产生的延迟。
    • 负载延迟可以通过以下公式计算: =kC负载延迟=k负载电容C
    • 其中 k 是单位负载延迟(每 pF 延迟),本题中 k=4.5ns/pFk=4.5ns/pF

已知条件:

  1. 反相器的输入电容:Cin=0.0036pFCin=0.0036pF
  2. 平均每个负载连线电容:Cwire=0.0044pFCwire=0.0044pF
  3. 本征延迟:τintrinsic=0.023nsτintrinsic=0.023ns
  4. 翻转延迟单位:k=4.5ns/pFk=4.5ns/pF
  5. Fanout=4

计算负载延迟:

反相器驱动 4 个相同反相器时,总的负载电容为:

Ctotal=4(Cin+Cwire)Ctotal=4(Cin+Cwire)

代入已知值:

Ctotal=4(0.0036+0.0044)=40.008=0.032pFCtotal=4(0.0036+0.0044)=40.008=0.032pF

负载延迟为:

τload=kCtotal=4.50.032=0.144nsτload=kCtotal=4.50.032=0.144ns


计算 FO4 总延迟:

总延迟为:

τFO4=τintrinsic+τloadτFO4=τintrinsic+τload

代入已知值:

τFO4=0.023+0.144=0.167nsτFO4=0.023+0.144=0.167ns


总结:

  • FO4 延迟 = 0.167 ns
  • 本题计算方法与参考答案一致,明确了 FO4 延迟的两部分来源,即本征延迟和负载延迟。
  • 如果题目中对 FO4 的定义发生变化(如驱动多个反相器或调整负载计算方式),需根据定义修正公式。

第五题 触发器延迟

5.分析附图3.1的CMOS EDFF触发器(边沿触发的CMOS D触发器)的建立时间、保持时间和CLK→Q延迟。假设反相器的延迟为1ns,传输门从源到漏(或从漏到源)的延迟为0.5ns,传输门从栅到漏(或源)的延迟为0.75ns,不考虑由于latch的fight对反相器延迟的影响。

参考答案:

题目解析:

分析图 3.1 的 CMOS EDFF 边沿触发 D 触发器,求出以下三个参数:

  1. 建立时间 Tsetup
  2. 保持时间Thold
  3. 时钟到 Q 的延迟TCK→Q

基本参数说明:

  1. 反相器延迟: 1ns
  2. 传输门延迟:
    • 从栅到漏/源的延迟:0.75ns
    • 从漏到源的延迟:0.5ns
  3. 时钟信号传播延迟:
    • TCK→C=2ns
    • TCK→CN=2ns(假设时延一致)

解析过程:

1. 建立时间 Tsetup

建立时间定义为时钟信号到达 CK 之前,触发器内部状态必须完成改变并稳定的时间。
数据从D 端传到触发器内部1N1 节点,需要经过路径:

DN0N1N2N1

  • D → N0 → N1 的延迟:

    1ns()+0.5ns()=1.5ns

  • N1 → N2 → N1 的延迟(环路内状态改变):

    1ns+1ns=2ns

此外,还需考虑时钟信号传播到传输门控制端的延迟:

取最小值:min(TCKC,TCKCN)=min(2,2)=2ns

同时加上传输门的栅到漏/源延迟:0.75ns

综合计算建立时间:

Tsetup=1.5ns+2ns+2ns+0.75ns2ns=0.75ns


2. 保持时间 Thold

保持时间定义为时钟信号到达 CKCK 之后,数据 DD 必须保持稳定的最小时间。
关键在于时钟信号到达时,传输门 N0N0 需要完全关闭,保证数据 DD 不再进入节点 N1N1。

  • 时钟信号传播到传输门控制端的延迟:

    取最大值:max(TCK→C,TCK→CN)=max(2,2)=2ns

  • 加上传输门的栅到漏/源延迟:0.75ns

  • 数据 D→N0→N1D → N0 → N1 的路径延迟:1ns+0.5ns=1.5ns

综合计算保持时间:

Thold=2ns+0.75ns1.5ns=1.25ns


3. 时钟到 Q 的延迟TCK→Q

时钟到 Q 的延迟定义为时钟下降沿到来后,Q 输出端反映触发器状态的时间。
数据从 N2 → N3 → N4 → Q 传递,并需要考虑时钟控制传输门的延迟。

  • N2 → N3 → N4 → Q 的延迟:

    0.5ns+1ns+1ns=2.5ns

  • 时钟信号传播到传输门控制端的延迟:

    取最大值:max(TCK→C,TCK→CN)=2ns

  • 加上传输门的栅到漏/源延迟:0.75ns

综合计算时钟到 Q 的延迟:

TCK→Q=2ns+0.75ns+2.5ns=5.25ns


最终答案:

  1. 建立时间:Tsetup=0.75ns
  2. 保持时间:Thold=1.25ns
  3. 时钟到 Q 的延迟:TCK→Q=5.25ns

参考文献

[1] 国科大胡伟武老师计算机体系结构课后答案(最新版) from CSDN.

[2] 计算机体系结构 第二版 胡伟武 清华大学出版社

本文作者:孤飞

本文链接:https://www.cnblogs.com/ranxi169/p/18561259

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   孤飞  阅读(460)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起