Day-5 谁是最棒的狗勾

谁是最棒的狗勾

tags: IT铁人

效能的定义

生活中很常对各种东西做出比较,哪本书比较好看、哪个星座比较好相处、安卓跟苹果哪个更好用,种种的比较很难有一定的答案,我们要针对某个特定的项目作比较才行,比如说我们拿战斗机跟客机比较:

战斗机 客机

单纯直接说哪个比较好都不公平,战斗机绝对能得到速度上的优势,而客机绝对能在载运人数上胜过对方。

刚刚提到的速度跟载运人数,类似於电脑的Response time (Execution time)Throughput,前者代表工作开始到完成所花的时间,後者代表单位时间所完成的工作量,在不同情况我们会考虑用不同的标准检视,比如说在个人电脑中我们比较在乎Response time,多人共用的服务器我们比较在乎Throughput。

Response time(Execution time) Throughput
工作从开始到完成所花的时间 单位时间内所完成的工作量
个人电脑 多人共用服务器

Performance

要讨论电脑的优秀程度,我们定义Performance = $\frac{1}{Execution Time}$

所以如果有两部电脑X与Y:
Performance~X~>Performance~Y~

-> $\frac{1}{Execution Time~X~}$ > $\frac{1}{Execution Time~Y~}$

-> Execution Time~Y~ > Execution Time~X~

比较两台不同电脑的效能,X的速度是Y的n倍则表示成:

$\frac{Performance~X~}{Performance~Y~}$ = n

此时Y的执行时间会是X的n倍。

CPU Time

前面提到的Execution Time,包含了很多动作,比如说硬碟存时间、记忆体存取时间、输入/输出时间、作业系统时间等等。

CPU Execution Time,简称为CPU Time,是指CPU花在处理某一项工作的时间,不包括那些存取以及输入输出的时间。

而CPU Time又有User CPU Time跟System CPU Time两者,前者是执行程序的部分,後者是为了服务程序执行所花在作业系统上的时间。

大概是下图这样:

一个程序的CPU Time = Clock cycles x Clock cycle time,也就是Clock跑了几个循环,乘以一个循环会跑多少时间,就是整个程序到底使用了多久的CPU,底下慢慢跟各位介绍CPI(Clock per Instruction)。

CPI

CPI是Clock per Instruction的缩写。

一个程序一定有很多行的程序码,转换成Assembly code之後通常会有更多行。

Assembly code复习
add $t0 $t1 $t2 (将t1加上t2的结果放在t0 register)

CPI的算法为 $\frac{Clock Cycles}{Instruction count}$。

也就是说Clock Cycles = CPI x Instruction count。

套回去CPU Time = Clock cycles x Clock cycle time

= CPI x Instruction count x Clock cycle time。

不过因为不是每个Instruction的执行时间,所以准确来说Clock cycle应该要写成 $\sum{CPIi * Ci}$ (C~i~代表类别i所使用之指令个数)

例题示范

讲讲都是纸上谈兵,我们现在实际在纸上操作一次。

假设有两个使用相同ISA的电脑,执行同一个程序,
Machine A的clock cycle time为250ps,CPI为2.0,
Machine B的clock cycle time为500ps,CPI为1.2。
请问哪一部电脑比较快?快多少?

假设总共有I个cycle。
首先算出A的CPU cycles = I x 2。
B的CPU cycles = I x 1.2。
CPU time A = 2I x 250ps = 500I ps
CPU time B = 1.2I x 500ps = 600I ps

$\frac{Performance A}{Performance B}$ = $\frac{Execution Time B}{Execution Time A}$ = $\frac{600I}{500I}$ = 1.2

所以A的速度是B的1.2倍。

牛刀小试

Consider the following performance measurements for a program:

Measurement Computer A Computer B
Instruction count 10 billion 8billion
Clock cycle time 250ps 250ps
CPI 1.0 1.1

Which computer is faster?

上一篇 下一篇
CLA以及bit乘法 Build a CPU

谁比较快?


<<:  Day2 - Canvas基础概论 I - 成为Canvas Ninja ~ 理解2D渲染的精髓

>>:  今天学会了env虚拟环境

#27 做点 GUI 吧!

今天就来做些 GUI 吧! 用 HTML + CSS 先把结构弄出来 app.html <ht...

Day 15 - Order & Deal Event

本篇重点 Order & Deal Event 委托单失败OrderState内容 官方说明...

Day 18 urllib模组

今天的影片内容为介绍Python内建用来下载网页资讯所使用的模组—urllib 某些观念和前两天所介...

人脸辨识-day23 资料的型态

在每种资料在影藏些资讯,但会因单位或数值的不同,导致代表的意义也有所不同,有以下的类别,Nomina...

卡夫卡的藏书阁【Book12】- KafkaJS 安装

“By believing passionately in something that stil...