【整理】李开复-如何制作好的ppt
今天在李开复先生微博看到的,在这里整理下,供自己和大家以后查阅。
如何写PPT标题
原文:http://weibo.com/1197161814/xv8FTCsYn
- 每页标题尽量不超过10字,涵盖该页主旨。
- 标题一行写完,绝对不可换行回车,这样听众眼睛要回车,增加认知负荷。
- 让你的题目讲你的故事,就是当你把所有的题目连串起来,只读题目,就可以大致了解你的演讲。这样那些专注的听众用标题辅助听你演讲就可,不专注的也会看进去一些。
今天在李开复先生微博看到的,在这里整理下,供自己和大家以后查阅。
如何写PPT标题
原文:http://weibo.com/1197161814/xv8FTCsYn
这周四,为了解近些年来的研究,需要看大量的论文,而在大量论文中找出最有价值的,我感兴趣的文章,除了标题外,就是摘要了。由于一篇一篇的看摘要很累(其实我有体系结构方面近些年来所有文章的全文,但一篇一篇打开看还是比较郁闷),于是突然想到可以先把摘要整理出来,这样以后过文章也方便一些。于是花了一天多差不多两天把ISCA2000-2011的所有文章的摘要整理出来个doc,后来突然想到这东西也许对别人有点用,于是又把他转化html,放到了网上。链接地址如下:
另外,在整理中,用到了几个工具和网站,在这里推荐下:
这篇日记就写到这了,算是这周的任务,还得赶紧把这些整理出来的摘要扫一遍,从而找出想看的文章。现在感觉越来越难每周坚持写一篇日志了。不过无论如何,我还是会坚持的。
昨天使用scanf(fscanf)碰到一个很诡异的问题,问题抽象出来是这样的:
有如下代码:
#include <stdio.h> #include <stdlib.h> int main() { FILE *fin; int i; unsigned char a[8]; fin=fopen("test_file","r"); for(i = 7; i >= 0 ; i--) // for(i = 0; i <= 7 ; i++) { fscanf(fin,"%x",a+i); printf("%2x ",a[i]); } printf("\n"); for(i = 7; i >= 0 ; i--) { printf("%2x ",a[i]); } printf("\n"); fclose(fin); return 0; }
其中test_file的内容是:11 22 33 44 55 66 77 88 99 阅读全文…
上一篇关于提高处理器吞吐量的文章讲到,CMP以及SMT技术可以大大提高处理器的吞吐量,提高处理器的并发处理器能力,从而分别提高处理器的峰值和效率。
但是,现在的很多串行程序,还不能直接从CMP以及SMT技术中获利。并且,这些程序中有很多都又对延时很敏感,比如说各类实时应用。对于这些程序,提高单个任务的性能,降低延时就很有必要。在CMP出现之前,各类的复杂的处理器结构的基本目标都是这个,包括超标量,提高主频等,其基本思想都是提高单处理器核心的性能。但是,当多核时代来临后,出现了一些新的方法,最常见的有:辅助线程(Helper thread),猜测多线程(thread-level speculation,TLS),核融合(core fusion)等技术,下面对这些技术进行简要的介绍。
辅助线程技术是通过在任务主线程外的加一个辅助线程(helper thread),辅助线程要比主线程跑地快一点,但是可以跳过一些代码,功能主要是为主线程完成一些预取操作,比如将数据从主存搬到cache上,从而降低主线程的cache miss等,提高主线程(也即任务)的执行速度。
猜测多线程技术是通过在执行过程中将一些原来的串行比较容易并行化的代码(如循环,分支,不同函数等)的动态地分配给几个线程执行,从而提高程序的执行速度,但是猜测多线程会带来额外的消耗,一是线程分配的消耗,另外就是猜测失败重新执行的消耗。一个好的猜测多线程机制必须解决以下几个问题:
核融合是指硬件将多个核的各个功能部件,如取值,执行等融合成一个核,就像superscale那样,从而提高串行程序的执行速度。这东西貌似比较新,wikipedia都还没有相关内容,想了解的话,可以自己google scholar “Core fusion”。
最后,附上一张TLS的示意图,图来自《Chip Multiprocessor Architecture:Techniques to Improve Throughput and Latency》一书:
随着互联网的发展,web服务器成为了一个很大的应用。和传统的科学计算以及桌面应用不同,web服务器对延时并不是很敏感,因为网络传输延时往往大于服务器端的计算延时。相反的,对于web服务器,提高并发处理能力倒显得极端重要,因为现在的web站点动辄就是几万人,甚至上千万人在线(当然,对于这种系统,往往不是一个服务器,而是服务器分布在各地,导出都是CDN),因此,提高web服务器的处理器吞吐量就显得极端重要(记得计算所所长李国杰院士去年提过高通量计算,不知道是不是这个意思)。
提高处理器的吞吐量的基本思路很简单,那就是提高处理器的并发线程数,而提高处理器的并发线程数,方法又有两类,同步多线程(Simultaneous MultiThreading,SMT)以及多核(Multicore)。
传统的处理器核心只能并发执行一个线程,而一个线程内部往往会由于相关(数据相关,控制相关)导致流水线堵塞,从而导致处理器的部件不能充分利用(包括取值部件,功能部件等)。为了减少由于线程内的依赖所造成的堵塞,提高单个处理器核心的吞吐量,出现了在一个处理器核心同时执行几个线程的技术(因为线程间的依赖比线程内要少很多),即同步多线程技术,Intel又叫超线程技术(Hyper-Threading Technology,HT)。
同步多线程(SMT)是一种在一个CPU 的时钟周期内能够执行来自多个线程的指令的硬件多线程技术。本质上,同步多线程是一种将线程级并行处理(多CPU)转化为指令级并行处理(同一CPU)的方法。 同步多线程是单个物理处理器从多个硬件线程上下文同时分派指令的能力。同步多线程用于在商用环境中及为周期/指令(CPI)计数较高的工作负载创造性能优势。 同步多线程使您可在同一处理器上同时调度多个线程,从而充分利用处理器的各个部件,提高性能功耗比。下面是一副不同粒度的多线程技术的比较,同时从图中也可以基本看出同步多线程的基本原理。
很多厂商,包括IBM,Sun,Intel的处理器都应用了同步多线程技术,MIPS昨天也发布了代号为神童(Prodigy)的64位同步多线程处理器。
另外一方面,多核也是提高并发线程数的好方法,但是多核会增加大量的面积及功耗,从而大大降低性能功耗比,而性能功耗比对于24小时在线的web服务器是至关重要的,因此,不能简单的在超标量核心上堆积现有的复杂的超标量(Superscale)处理器核心。
考虑到web应用对延时不敏感的特点,可以将每个处理器核心设计的尽量简单(但可以保持其同步多线程的能力),从而提高处理器核心数目同时,对面积和功耗并不会提高,同时可以大大的提高处理器处理并发线程数(等于处理器核心数X每个核心的多线程数)的能力,提高处理器的吞吐量,并且提高性能功耗比。下面这幅图比较了超标量的多核处理器和简单的多核处理器的吞吐量和功耗的比较,可以看到,简单的核心优势极其明显。
在设计web服务器处理器方面,Sun做到了极致,其Niagara系列处理器绝对是这个领域的巅峰之作(可惜一心做技术的sun却被一心赚钱的oracle收购了!)。
近期评论