LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 739|回复: 9

听说有另一种优化方式

[复制链接]
发表于 2005-3-24 23:37:28 | 显示全部楼层 |阅读模式
选择对文件尺寸优化,可以增加CPU中Cache的命中率而提高程序效率
不知道是不是这样
发表于 2005-3-25 07:52:25 | 显示全部楼层
不懂。cpu的cache里面怎么可能有文件存在?
回复 支持 反对

使用道具 举报

发表于 2005-3-25 09:53:13 | 显示全部楼层
Post by hutigers
不懂。cpu的cache里面怎么可能有文件存在?

呵呵,可执行程序要载入到内存的对不?CPU实际上是执行内存的东西是不?执行过程中,它会先把内存的东西放到Cache里面的。这样,如果程序比较小,就更可能把整个程序都放在Cache中。
回复 支持 反对

使用道具 举报

发表于 2005-3-25 10:06:10 | 显示全部楼层
几乎是不可能的,按照存储器的塔式映射结构,处于最尖端的L1cache太少了.不过短小的程序可以减少换页操作
回复 支持 反对

使用道具 举报

发表于 2005-3-25 10:31:48 | 显示全部楼层
可以么?期待确切的答案
回复 支持 反对

使用道具 举报

发表于 2005-3-25 10:57:02 | 显示全部楼层
文件不可能放在cpu cache里头,cpu cache应该是缓存指令用的。
楼主的意思可能是用于页面映射的cache吧
对于寻址变换机构的cache一般只是缓存内存中的页号和页描述子,用以加快对内存页面的访问速度;其本身也不会存储文件。
回复 支持 反对

使用道具 举报

发表于 2005-3-25 11:20:09 | 显示全部楼层
现在主流CPU的L2 Cache也不少了。从L1 Cache/L2 Cache/RAM/HDD这个顺序看,一般整个程序都是放在RAM中的。但如果程序短小,有可能整个放在L2 Cache中。如果适当优化程序结构,其中的核心程序部分全部在L1中也是有可能的。
但这仅适合于任务单一且计算量繁重的任务。比如计算Pi之类。整体上说,由于多数程序的主要花费都在I/O等待上,所以帮助不会太大。对于视频编码这类CPU繁重的任务,也许会有些帮助。
回复 支持 反对

使用道具 举报

发表于 2005-3-25 12:07:57 | 显示全部楼层
6楼有误,用于页面映射的是隐cache,又叫快表,与通常所说cahce不同,不计入cache大小(对用户程序完全透明)。理论上足够小的程序加上足够精心的代码安排,可以使程序整个存在于cache中,前提是没有系统调用等东西让操作系统来抢地方。同楼上,系统时间其实都开销到I/O和调度上了。
回复 支持 反对

使用道具 举报

发表于 2005-3-25 12:56:18 | 显示全部楼层
Post by StrangerCHL
6楼有误,用于页面映射的是隐cache,又叫快表,与通常所说cahce不同,不计入cache大小(对用户程序完全透明)。理论上足够小的程序加上足够精心的代码安排,可以使程序整个存在于cache中,前提是没有系统调用等东西让操作系统来抢地方。同楼上,系统时间其实都开销到I/O和调度上了。


我所说的用于寻址变换的cache就是所谓TLB俗称快表,里面存储的是页号及描述子而不会是程序。当处理器需要进行地址翻译时,它就会首先在TLB中查找。如果TLB中有需要的内容,CPU就会直接获得物理地址,不必再去内存的页表格提取,从而提高访问速度。

至于cpu cache的功能大家都知道,但是系统瓶颈更多在于 cpu与内存、外设之间。

精简的程序可以把整段指令代码送入cpu cache倒是可能的。
回复 支持 反对

使用道具 举报

发表于 2005-3-25 13:04:12 | 显示全部楼层
事实上TLB很多都放在LC2甚至LC1里头成为cache一部分,只不过其操作不由用户控制罢了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表