IT铁人
生活中很常对各种东西做出比较,哪本书比较好看、哪个星座比较好相处、安卓跟苹果哪个更好用,种种的比较很难有一定的答案,我们要针对某个特定的项目作比较才行,比如说我们拿战斗机跟客机比较:
战斗机 | 客机 |
---|---|
单纯直接说哪个比较好都不公平,战斗机绝对能得到速度上的优势,而客机绝对能在载运人数上胜过对方。
刚刚提到的速度跟载运人数,类似於电脑的Response time (Execution time) 和Throughput,前者代表工作开始到完成所花的时间,後者代表单位时间所完成的工作量,在不同情况我们会考虑用不同的标准检视,比如说在个人电脑中我们比较在乎Response time,多人共用的服务器我们比较在乎Throughput。
Response time(Execution time) | Throughput |
---|---|
工作从开始到完成所花的时间 | 单位时间内所完成的工作量 |
个人电脑 | 多人共用服务器 |
要讨论电脑的优秀程度,我们定义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倍。
前面提到的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是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渲染的精髓
今天就来做些 GUI 吧! 用 HTML + CSS 先把结构弄出来 app.html <ht...
本篇重点 Order & Deal Event 委托单失败OrderState内容 官方说明...
今天的影片内容为介绍Python内建用来下载网页资讯所使用的模组—urllib 某些观念和前两天所介...
在每种资料在影藏些资讯,但会因单位或数值的不同,导致代表的意义也有所不同,有以下的类别,Nomina...
“By believing passionately in something that stil...