[zz]cache line

在内存分配器 SLAB 中涉及到了 cache line

http://gpg119.blog.163.com/blog/static/915341532009074137160/

一个L1 DATA CACHE相当于一块小的内存,我们假设它为16K大,它会与一般物理内存交互。
它和内存交互一般一次传输16个字节(32个字节),也就是:


CACHE 字节0-15一次写到/读取物理内存 ,字节16-31一次写到/读取物理内存.32-47 ... ...

这些一次被传输的字节被称为cache line。
--------------------------------------------------------------

另外,cache写到物理内存的位置不是任意的,
我们假定内存为64K,那么cache地址0的数值只能和物理内存的地址0, 16K, 32K交互;cache地址1的数值只能和物理内存的地址1, 16K+1, 32K+1交互
。。。 。。。cache地址16K-1的数值只能和物理内存的地址6K-1, 16K+16K-1, 32K+16K -1交互

这说明了两点:

(1)假设对象A的一个字段长为16个字节,如果它放在物理地址 0-15,那么它将和cache的第一个cache line 交互,如果放在物理地址 8-23,那么
如果CPU要访问这个字段,必须将第一个和第二个cache line 都读入,才能获得这个字段的信息,显然这样速度慢,所以一般字段需要cache line对齐,
在这里就是16个字节对齐。


(2)关于colour


一般一个对象某些字段访问频繁些。
假定一个cache(这个cache指slab的cache,不是上面提到CPU的L1 DATA CACHE)占用5个页面也就是20K.
假定其中对象大小为32个字节,前16个字节访问频繁许多。

假定对象A起始于物理地址0,对象C起始于31,对象B起始于物理地址16K,那么对象A,对象B的前16个字节都和第一个cache line 交互,后16个字节都和第二个cache line 交互
对象C前16个字节与第3个cache line交互。

我们假定内核访问A后就访问B,再访问A,交错进行,并且前16个字节次数都是50次,后16个为10次。C也是。

这样第一个cache line 要交互100次,第二个20次,一共120次。

如果让对象B向后移动16个字节,也就是对象B的前16个字节与第二个cache line 交互,后16个与第3个交互。
那么第一个为2次,因为只有开头结尾2次要与内存交互,其它每次都在L1 DATACACHE 中写就可以了。第2个cache line为20次左右(后面的只须在CACHE中读写),第3个cache line为20次,
3个line一共才41次,你不妨仔细模拟一下。

所以进行错位能降低CACHE的交互次数,从而提高CPU处理速度能力

这个错位(也就是上面的16个字节)就是colour.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MD5是一种广泛使用的散列函数,它能将任意长度的数据转换成一个固定长度(通常为128位)的十六进制数,这个过程被称为"散列"或"哈希"。Zz12345678经过MD5算法处理后的结果,即其散列值通常用于数据完整性检查或是非敏感的信息加密。MD5散列值具有不可逆性的特点,即从散列值很难推导出原始输入内容。以下是一个计算字符串 "Zz12345678" 的MD5散列值的例子: ```bash $ md5sum Zz12345678 ``` 运行上述命令将会得到类似于下面这样的输出: ```bash c96a92a8e074b8d2b6c268e4e0f3789f Zz12345678 ``` 其中 `c96a92a8e074b8d2b6c268e4e0f3789f` 就是 "Zz12345678" 经过MD5算法产生的唯一散列值。请注意,每次运行上述命令都可能会得到不同的结果,因为MD5生成的是随机散列值,尽管相同的输入总是会产生相同的输出。不过值得注意的是,尽管MD5在最初设计时被认为是安全可靠的,但它现在已经不是加密领域的最佳选择。这是因为研究人员已经找到了能够快速产生与给定散列值匹配的不同输入的算法,这种现象称为"碰撞",这使得基于MD5的认证机制面临潜在风险。因此,对于安全性和保密需求较高的场景,通常推荐使用更安全的散列函数,如SHA-2系列。 --- ### 相关问题: 1. **如何判断两个文件的内容是否一致**? 使用MD5散列值比较是最常用的方法之一。 - 对比两份文档的MD5散列值即可判断它们的内容是否完全相同。如果散列值相等,则表示文件内容一致;反之则不一致。 2. **为什么不再建议使用MD5进行密码存储**? - 主要原因是MD5的不可逆性和容易遭受碰撞攻击。现代密码存储通常采用更安全的哈希算法,如bcrypt、scrypt或argon2,这些算法不仅提供良好的安全性,还能抵抗暴力破解和字典攻击。 3. **MD5与其他哈希算法相比有何优势和劣势**? - **优势**: 计算速度快,易于实现。 - **劣势**: 安全性低,容易发生碰撞,不适合用于密码校验或安全关键的应用场景。相较于SHA-2系列和现代哈希算法,MD5提供的安全保障级别较低。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值