Chinaunix

标题: 有没有软件实现的cache [打印本页]

作者: 怪怪虎    时间: 2010-01-18 10:45
标题: 有没有软件实现的cache
cache 用在cpu和内存中见,提高访问速度,是不是都是有硬件实现,有没有软件实现的?
作者: cjaizss    时间: 2010-01-18 14:32
cache只是一个名词而已.
硬件的手段,软件可以参照,软件的手段,硬件也可以参照.
软件也可以建立临时比较快速的访问机制,也可以叫cache,只是和CPU的cache不是同样的功能而已
作者: 怪怪虎    时间: 2010-01-18 15:40
原帖由 cjaizss 于 2010-1-18 14:32 发表
cache只是一个名词而已.
硬件的手段,软件可以参照,软件的手段,硬件也可以参照.
软件也可以建立临时比较快速的访问机制,也可以叫cache,只是和CPU的cache不是同样的功能而已


硬件的手段,软件可以参照,软件的手段,硬件也可以参照.
>>>是不是有点哲学的味道. 我也这么觉得.想确认下. 只是实现方法的不同而以. 都可以达到同样的目的.
作者: 怪怪虎    时间: 2010-01-18 15:43
突然想起你以前说过的一个"傻瓜式的"硬件设计. 硬件就想当于做了一些软件的东西.

<<<不知道为什么,老是觉得没有软件,硬件做不了事情.(老是不相信硬件的能力,^_^)
作者: snail_314    时间: 2010-01-18 16:06
标题: 回复 #1 怪怪虎 的帖子
你说的这种cache软件没法做吧。
作者: snail_314    时间: 2010-01-18 16:07
标题: 回复 #4 怪怪虎 的帖子
软件能做的事情,都可以用纯硬件搭。只是复杂度无穷大
作者: 铁城    时间: 2010-01-18 17:23
楼主所说的软件方法必定是使用内存
cache的执行速度和效率比普通内存高一个数量级,如果能用软件方法将内存变成cache,那intel和AMD搞几十年岂不是白搭了。
作者: cjaizss    时间: 2010-01-18 22:31
原帖由 怪怪虎 于 2010-1-18 15:40 发表


硬件的手段,软件可以参照,软件的手段,硬件也可以参照.
>>>是不是有点哲学的味道. 我也这么觉得.想确认下. 只是实现方法的不同而以. 都可以达到同样的目的.

你可能误解了我的意思.CPU的cache那就是CPU的cache,软件模拟不来的.
我的意思是类似的设计思路可以套用.
打个比方,有个很夸张的数据结构,某种访问比较的慢,于是软件就可以提供一个cache算法,临时建立一个小的数据结构,访问比较快,也可以如同cache那样可以回写,那么这就是一个软件级的cache.而这是类似的设计思想.
作者: cjaizss    时间: 2010-01-18 22:33
原帖由 cjaizss 于 2010-1-18 22:31 发表

你可能误解了我的意思.CPU的cache那就是CPU的cache,软件模拟不来的.
我的意思是类似的设计思路可以套用.
打个比方,有个很夸张的数据结构,某种访问比较的慢,于是软件就可以提供一个cache算法,临时建立一个小 ...

再有个典型的例子就是数据库,用到很多的cache机制
当然,文件系统的驱动也是个比较好的例子.
这里和我前面说的有点不同,假设一个慢速设备,一个快速设备,那么就可能可以设计一个算法,使得大多数时间都在访问快速设备,降低慢速设备访问频率,这也是cache机制.

[ 本帖最后由 cjaizss 于 2010-1-18 22:36 编辑 ]
作者: xyfree    时间: 2010-01-19 00:03
标题: 回复 #1 怪怪虎 的帖子
据我所知没有任何CPU指令能够控制CACHE (本人接触的CPU仅限于x86的)

都是CPU从内存读取数据时按照一定法则将内存数据放入CACHE的

所以,没有任何软件能控制CPU的Cache
作者: RUNONMIPS    时间: 2010-01-19 17:00
在mips cpu中,有一条指令是控制cache操作的,但那是特权指令。软件一般都是用一些算法来模拟cache机制而已
作者: 怪怪虎    时间: 2010-01-19 20:41
标题: 回复 #5 snail_314 的帖子
我认为cpu中的cache是根据LRU算法实现的一种硬件. 即它是硬件,但是按照LRU算法实现的
作者: 怪怪虎    时间: 2010-01-19 20:46
标题: 回复 #9 cjaizss 的帖子
一个慢速设备,一个快速设备,那么就可能可以设计一个算法
>>>这种情况是buffer机制吧,^_^
作者: 怪怪虎    时间: 2010-01-19 20:49
接着此帖在问下MMU是用硬件实现的吗?
作者: xyfree    时间: 2010-01-20 11:28
原帖由 怪怪虎 于 2010-1-19 20:46 发表
一个慢速设备,一个快速设备,那么就可能可以设计一个算法
>>>这种情况是buffer机制吧,^_^


Cache 的意思是“高速缓存”,除了存放数据,还有一套数据查找机制,也就是查找算法,譬如LRU。

Buffer 的意思是“缓冲”,仅仅是把慢速设备的资料一次大量读入,在读入期间需要数据的高速部件可以做其他事情。不包含查找算法。
作者: beepbug    时间: 2010-01-20 18:09
有软件实现的CPU,有实用价值。
作者: yumanifold    时间: 2010-01-20 18:37
hash

memcache

只是lz没说清楚是哪种cache。。。。
作者: 怪怪虎    时间: 2010-01-20 20:44
标题: 回复 #17 yumanifold 的帖子
我想问的是常说的cpu中的L1 cache.
作者: 怪怪虎    时间: 2010-01-20 22:39
刚刚看了下接口的书,对自己的这个疑问的一点小总结^_^
首先cache(cpu中的L1 cache)肯定是有一个实实在在的硬件芯片.但是这个芯片在生产出来时,已经被interl 或者AMD 做了一些工作,即已经实现了LRU算法, 这个地方厂商一定是用自己的语言(代码逻辑)完成了这个过程. 对于安腾结构的cpu,这部分叫做系统固件,并被映射到fffffff~ff000000之间.看了书上对这部分共享的代码,大部分是对寄存器的操作. 这部分是不是也可以认为是驱动程序啊? 值得注意的是操作系统基本上不会设计这部分的code,只会调用固件程序提供的服务.
{感觉类似先用VHDL语言实现某个功能,然后根据这个功能生产芯片电路,在为这个芯片写一个固件程序}

所以MMU和L1 cache都有自己的固件程序,以MMU为例,给一个虚拟地址,它(MMU芯片)会自己转换成物理地址,在这个转化的过程中没有操作系统的参与. 如果需要的话,可以通过某个寄存器来改变这些芯片的行为.前提是看人家芯片愿不愿意暴露这个寄存器.

看完书后的理解. 不对之处请大家指教.
作者: cjaizss    时间: 2010-01-21 00:00
原帖由 怪怪虎 于 2010-1-20 20:44 发表
我想问的是常说的cpu中的L1 cache.

这些是硬件基础里提供的,没有这些,软件跑个啥?软件的功能只是使得系统更加灵活,可是它并不是硬件,软件再强也没法闭门造车.
我的感觉是,你可能还未完全明白CPU里的cache是个什么东西.

[ 本帖最后由 cjaizss 于 2010-1-21 00:05 编辑 ]
作者: jardon_zhao    时间: 2010-01-21 09:21
Linux下的Swap就是一种吧
作者: snail_314    时间: 2010-01-22 13:40
标题: 回复 #19 怪怪虎 的帖子
我有点怀疑这里说的的“指令”在这里是指那些用cpu执行的“指令”。是不是指的微指令,intel的x86即这种CISC架构的采用了微指令概念,已经是cpu执行的指令的组成部分了。再说就算是,他们肯定也不属于驱动程序。应该是对所有软件透明的。
作者: 怪怪虎    时间: 2010-01-27 22:42
原帖由 snail_314 于 2010-1-22 13:40 发表
我有点怀疑这里说的的“指令”在这里是指那些用cpu执行的“指令”。是不是指的微指令,intel的x86即这种CISC架构的采用了微指令概念,已经是cpu执行的指令的组成部分了。再说就算是,他们肯定也不属于驱动程序。 ...

恩,应该不是驱动程序. Intel它内部设计应该用的是微指令.它暴露给我们的是指令,类似mov, in , out.

纯硬件的实现:
对程序员(包括系统程序员)来说,没有编程的机会.硬件能够自动实现,只要加上合适的电压就可以. 这叫对程序员透明的.
对于软件和硬件结合使用:
有了特定功能的硬件,不一定同样的在别的芯片上能够完成某种功能的软件在这款芯片上也能完成同样的功能. 取决于芯片提供商提供没提供相应的操作指令.
如果特定的硬件提供了操作指令, 此时就要看软件如何操作此硬件了. (这里所有的指令,对程序员(包括系统程序员),都是汇编级的)

另外一个例子, 最近买了款笔记本,右点击电脑-->属性. 有一项是不支持 TouchPad.
这个可以有两层理解:
1) cpu硬件不支持, (是不是说cpu不合适啊,想说可能某款芯片不存在)
2) 操作系统不支持.

个人感觉是1)的可能性更大.  不对的地方,请指点
作者: snail_314    时间: 2010-01-28 11:01
标题: 回复 #23 怪怪虎 的帖子
如果是x86的笔记本的话,应该是芯片组没有touchpad的功能吧。目前还没有cpu+chipset统一的SoC的x86架构。intel最新的那个不算。
作者: 怪怪虎    时间: 2010-01-28 14:20
原帖由 snail_314 于 2010-1-28 11:01 发表
如果是x86的笔记本的话,应该是芯片组没有touchpad的功能吧。目前还没有cpu+chipset统一的SoC的x86架构。intel最新的那个不算。


应该是芯片组没有touchpad的功能吧. 你这里的芯片组怎么理解? 是没有相应的硬件,还是没有相应的软件?




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2