是啥原因导致目前的内存地址都是一维线性的?
学过集合论的都会告诉你,只要你的下标还是整数,那你就可以找到一个一维的编码,仅需要O(1)的时间复杂度就可以让他一一对应到二维的下标上面,所以最后还是变成了一维。
如果你的下标不仅是整数,而且还有明确的范围,那就更简单了,C/C++都已经在语法上提供了,而且没有任何证据表明把这个转换过程做到硬件里会有显著的性能提升。
=======================================================
题主终于不遮遮掩掩了。我觉得题主的意思不是整块内存怎么怎么样,而是为什么malloc出来的一小块东西不能在二维的硬件上刚好就是分配一个矩形,在三维的硬件上刚好就是分配一个立方体呢,然后更加重要的cache也是按照矩形或者立方体的位置来cache?
其实到最后你会发现,这跟你重新安排一下图片的像素的存放格式,其实区别不大……你感觉到a比b快,其实跟内存没关系,跟cache有关系。但是你无论怎么选择cache的算法,他始终都只能是一种算法,你要么选择a,要么选择b。如果有一个算法同时扫行+扫列,反正我没想到什么办法可以同时都cache friendly。
■网友
1. 如风地址都改为二维寻址、二维摊开存储,那么内存分配技术就会复杂很多。2. 这样并没有什么显著的优点,因为内存在读取的时候是从行选到列选,cache 也是一行一行缓存的。除非你将内存控制器、cache 都改为方块状的。(which 又复杂很多,而且是在硬件上的。)3. 即使你将2中说到的都调教服帖了,比如内存现在一次取一个8*8=64的方块的数据,cache 也这样存储了,那这和你将图片按64个点一组存储有什么区别呢…
■网友
题主可以评测一下,图像处理中内存访问的2维地址转为1维,这个转换对性能影响有多大。我猜是不大的。cache是另一个问题。【应用层的2维信息在传给CPU时已经丢失了,在不改变一维地址线的前提下,CPU不可能提供出"value=https://www.zhihu.com/api/v4/questions/24293571/read(x,y),物理上可以做到在两个维度上连续都能获得很好的性能"这样的特性的。】这个不是很准确。如果你连续的按行读取图片,那么cache容量有限,后面的数据自然会冲掉前面;如果你连续按列读取,一般而言,第一列全部miss之后,第二列应该是会全部hit的。所以一定程度上,cache在两个维度上连续性都还可以。但题主的意思大概是希望在纵向也有cache line一样的效果,第一个数据miss之后,连续几个都可以hit。这是个挺好的研究点,可以考虑给CPU加上一种“2D数据预取”功能,读取一个地址d之后,就预取d+stride, d+stride*2, d+stride*3,其中stride为图像的宽度。但我相信这么简单的idea肯定早就有人研究过了。用“cache prefetch image process 2d”关键字在http://scholar.google.com上一搜,果然出来好几篇论文……
■网友
页式地址管理就是多维的 虽然看上去只用了一个数字来寻址 但那一个数字是由很多维的offset组成的 虽然不能在目前的高级语言中清晰地体现 但稍微修改下C编译器 加一种页式指针 就可以看到语义上的多维内存了 题主乃是这个意思咩?
■网友
因为多维问题可以转化为一维问题来解决。
■网友
一般电脑用的DRAM芯片都不是“一维”的。看这个文档里面的框图就知道了。micron.com 的页面看Figure 3,里面的Array 组织起码能看出有3个维度,Bank, Row, Column大部分程序员是不知道这些的因为这都是CPU内存控制器的事情。而就算在硬件工程领域,内存控制器设计也算是比较高大上的topic了。
■网友
怎么没有二维内存……不考虑地址线本质还是一维的话,x86 的 DS/CS:SI 寻址方式不就是二维吗?
■网友
连续访问可以有性能提升的主要原因是cache的存在。所以并不是设计成2维的内存性能就能提升。你举的例子是图像算法,其实更应该从算法设计、数据结构设计本身去考虑,比如:256*256的图像,你可以每8*8的数据放在内存中接近的位置,递归地存储。
推荐阅读
- 「降雪」目前江苏全省道路运行基本顺畅 降雪持续
- 学校■南通这所学校为他们募集煤炭款!原因超暖心…
- 孩子|吃黄鳝是导致儿童性早熟的元凶?
- 保安师傅退休在即当场哭了,原因是......
- 新浪微博创新基金投资了哪些团队
- 微博目前已经支持文本,图片,位置分享,为啥没有语音和视频呢微博的pm肯定想过这两种微博形态,但迟迟不做的原因到底是啥。是语音和视频不符合产
- 什么|到底是什么原因?宝宝易咳嗽
- 孩子|你还敢逼孩子午睡吗?强制午睡导致的可怕后果
- 为啥现在没有一家信用评级系统的公司
- 同一款手游为啥会有多家代理
