计算机组成与设计01——计算机概要与技术

目录

系列文章目录

一、本课程内容

二、计算机系统结构的8个伟大思想

1.摩尔定律

2.抽象简化

3.加速大概率事件

4.抽象——简化设计

5.API vs. ABI

6.ICs制造

7.计算机的效率

8.指令数和 CPI

8.1 CPI

8.2 复杂CPI

8.3 性能度量

9.功耗趋势

10.一些陷阱

10.1 改进(需求分析) 

10.2 功耗与利用率

10.3 MIPS 

总结


系列文章目录

本系列博客重点在深圳大学计算机系统(3)课程的核心内容梳理,参考书目《计算机组成与设计》(有问题欢迎在评论区讨论指出,或直接私信联系我)。

第一章 计算机组成与设计01——计算机概要与技术


梗概

本篇博客主要介绍深入计算机组成与设计全书的核心内容,以及书目第一章计算机概要与技术的相关知识。


一、本课程内容

二、计算机系统结构的8个伟大思想

1.摩尔定律

Tip:设计时要考虑之后(上市时)的集成电路情况

2.抽象简化

3.加速大概率事件

核心:若代码不断迭代使用,对大概率事件(重要程序)优化工作很有必要

4.抽象——简化设计

5.API vs. ABI

API 源码兼容
ABI – 二进制兼容

6.ICs制造

图案化切块后多次测试目的:提高空白晶圆的面积使用率

7.计算机的效率

计算机的效率与响应时间吞吐率有关。

响应时间 (执行时间):计算机完成某任务所需的总时间

吞吐率 (带宽):单位时间内完成的任务数

  例如, 任务数/事务数/… 每小时

如何正向影响响应时间和吞吐率

1.将处理器更换为更高速的型号

2.增加多个处理器分别处理独立的任务

Tips:我们重点关注响应时间…

总的响应时间包括所有方面(CPU时间也在内): 处理, I/O操作, OS 开销, 空闲时间

时钟周期时间 = 1/时钟频率

    时钟周期: 计算机一个时钟周期的时间 例如, 250ps = 0.25ns = 250×10–12s

    时钟频率: 每秒钟的时钟周期数 例如, 4.0GHz = 4000MHz = 4.0×109Hz 

样例如下:

8.指令数和 CPI

8.1 CPI

CPI (Clock cycle per instruction): 每条指令所需的时钟周期数的平均值

Tips:一个程序的指令数取决于程序, ISA 和编译器

平均每条指令的时钟周期数(CPI)

CPU 硬件确定

如果不同指令有不同的CPI,那么平均CPI受整个指令集的影响 

    Tips:根据CPU的时间比可以推导出执行时间(效率)之比 

8.2 复杂CPI

如果一指令序列有n种不同类型指令,各需不同的时钟周期数(对应CPI定义),那么 

样例如下:

8.3 性能度量

n 程序的性能依赖于:
n 算法 : 影响指令数 , 可能的 CPI
n 编程语言 : 影响指令数 , CPI
n 编译程序 : 影响指令数 , CPI
n 指令集体系结构 : 影响指令数 , CPI, 时钟频率

样例如下(n核并非相对单核有n倍提升,其中有损耗):

9.功耗趋势

基于 CMOS 集成电路技术的每个晶体管的功耗如下: 

 Tips:功耗与电容、电压、开关频率均成正比(不能无限降低 公式了解即可)

10.一些陷阱

10.1 改进(需求分析) 

例子: 一个程序运行需100秒,乘法操作占80

若把程序运行速度提高到5,乘法操作的速度该改进多少?

10.2 功耗与利用率

谬误: 利用率低的计算机功耗低

10.3 MIPS 

MIPS为超级计算机,每秒百万条指令,由于无法解释计算机之间指令集的差异与指令之间复杂性的差异,所以不能单一地作为性能指标。

总结

以上便是全书核心内容归纳及第一章——计算机概要与技术的核心知识。在第一章中,主要以计算机系统结构中的8个设计思想、计算机效率与功耗的介绍为主。

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
## 简单计算机代码的概要设计 ### 功能描述 这个简单计算机程序将允许用户输入两个数和一个运算符(加、减、乘、除),然后输出计算结果。程序将持续运行,以便用户可以进行多个计算,而不需要重新启动程序。 ### 输入 1. 用户输入两个数 2. 用户输入一个运算符 ### 处理 1. 根据输入的运算符,执行相应的计算 2. 如果用户输入的运算符无效,则给出错误提示 ### 输出 1. 输出计算结果 ## 简单计算机代码的详细设计 ### 输入 1. 用户输入两个数:num1, num2 2. 用户输入一个运算符:op ### 处理 1. 判断输入的运算符是否合法,如果不合法则输出错误提示并要求用户重新输入运算符。 2. 通过switch语句根据不同的运算符执行相应的计算,将结果存储在变量result中。 ### 输出 1. 输出计算结果:result ### 代码实现 ``` #include <iostream> using namespace std; int main() { char op; // 运算符 double num1, num2, result; // 两个数和计算结果 while (true) { // 持续运行程序 cout << "Enter two numbers: "; cin >> num1 >> num2; cout << "Enter an operator (+, -, *, /): "; cin >> op; // 判断运算符是否合法 if (op == '+' || op == '-' || op == '*' || op == '/') { switch(op) { case '+': result = num1 + num2; break; case '-': result = num1 - num2; break; case '*': result = num1 * num2; break; case '/': result = num1 / num2; break; } // 输出计算结果 cout << num1 << " " << op << " " << num2 << " = " << result << endl; } else { // 输出错误提示,要求用户重新输入运算符 cout << "Invalid operator. Please enter a valid operator." << endl; } } return 0; } ``` 这个程序使用while循环来持续运行,以便用户可以进行多个计算。用户首先输入两个数字,然后输入一个运算符。程序会检查运算符是否合法,如果合法则执行相应的计算并输出结果,否则输出错误提示并要求用户重新输入运算符。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@李忆如

感谢!!! 有什么问题欢迎交流

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值