游戏开发论坛

 找回密码
 立即注册
搜索
查看: 4471|回复: 18

2维内存条--我的大胆创意

[复制链接]

362

主题

3023

帖子

3553

积分

论坛元老

Rank: 8Rank: 8

积分
3553
发表于 2008-5-5 14:34:00 | 显示全部楼层 |阅读模式
由于计算机内存的线性寻址的限制,
在做矩阵运算时多有不便,速度也受限制。

内存寻址单元:

4byte

数据类型支持(举例):

float,
signed long,
unsigned long

由于是矩阵式内存,所以需要固定基本数据类型的长度。
否则,纵向寻址不太方便。


============================================================================


CPU物理寻址方式:


**我先介绍物理寻址,再介绍分段的逻辑寻址**


矩阵绝对寻址: [ 行地址, 列地址 ]
行内绝对寻址: [ 行寄存器, 列地址 ]
列内绝对寻址: [ 行地址, 列寄存器 ]

矩阵相对寻址: [ 行寄存器 + 行地址, 列寄存器 + 列地址 ]
行内相对寻址: [ 行寄存器, 列寄存器 + 列地址 ]
列内相对寻址: [ 行地址 + 行地址, 列寄存器 ]

-------------------------------------------------------------------

注意:根据操作系统的内存管理,或者虚拟机的情况下的宿主机的内存管理,
如果列(行)地址太大,将可能导致系统崩溃,或虚拟内存不足。
所以,即使是大型线性数据结构,必须存储为较小的矩阵。

为了方便这种操作,附加以下寻址方式:


行线性绝对寻址: 列边界寄存器 [ 行线性地址 ]

CPU内部将按照 列边界寄存器,进行“自动换行”。

比如,列边界寄存器==100,行线性地址950,
则实际上就是对 [9, 50] 的内存寻址


行线性相对寻址: 列边界寄存器 [ 行线性寄存器 + 行线性地址 ]

注意这里的概念,
“行线性寄存器”是参考列边界寄存器指定的行地址。
行线性寄存器中,存储的是绝对的行线性地址,作为当前的基准地址。


列线性绝对寻址: 行边界寄存器 [ 列线性地址 ]
同理,略

列线性相对寻址: 行边界寄存器 [ 列线性寄存器 + 列线性地址 ]
同理,略

-------------------------------------------------------------------

**最具魅力的---交换寻址方式:

CPU有一个行列交换标志位,置为1,则所有地址中的行列。(包括线性寻址!)

如果必要,可以将DRC压入堆栈。

这样对于矩阵的转置十分方便。

(请听下回分解)

4

主题

49

帖子

49

积分

注册会员

Rank: 2

积分
49
发表于 2008-5-5 18:04:00 | 显示全部楼层

Re:2维内存条--我的大胆创意

我看楼主只是改变内存的寻址方式吧,这样的话,软件模拟不就行了,否则局限性太大,这种内存难道只用来做矩阵的数据存取?
而且你这样好像改变了图灵机的结构理论吧,难道你考虑把程序也变成两维寻址?呵呵,搞两个IP,挺有意思。

64

主题

272

帖子

272

积分

中级会员

Rank: 3Rank: 3

积分
272
发表于 2008-5-5 20:04:00 | 显示全部楼层

Re:2维内存条--我的大胆创意

问一下楼主这几个问题:
内存是通用设备,专门为了矩阵运算而改变寻址方式是否合适?
内存本身的物理结构貌似就是二维的,为什么寻址方式要做成线性的呢?出于效率考虑??

362

主题

3023

帖子

3553

积分

论坛元老

Rank: 8Rank: 8

积分
3553
 楼主| 发表于 2008-5-5 21:28:00 | 显示全部楼层

Re: Re:2维内存条--我的大胆创意

kp_ns: Re:2维内存条--我的大胆创意

我看楼主只是改变内存的寻址方式吧,这样的话,软件模拟不就行了,否则局限性太大,这种内存难道只用来做矩...


软件模拟效率不高,
而且,软件模拟,还会有那种“行”“列”之类的争论

不仅是矩阵运算,BMP图像也是矩阵阿!图像处理不快吗?

362

主题

3023

帖子

3553

积分

论坛元老

Rank: 8Rank: 8

积分
3553
 楼主| 发表于 2008-5-5 21:29:00 | 显示全部楼层

Re: Re:2维内存条--我的大胆创意

梁某: Re:2维内存条--我的大胆创意

问一下楼主这几个问题:
内存是通用设备,专门为了矩阵运算而改变寻址方式是否合适?
内存本身的物理结构貌似就是二维的,为什么寻址方式要做成线性的呢?出于效率考虑??


有些数据结构是线性的,所以也支持线性寻址。
线性地址到行列地址的转换,是硬件完成的,不消耗什么时间

362

主题

3023

帖子

3553

积分

论坛元老

Rank: 8Rank: 8

积分
3553
 楼主| 发表于 2008-5-5 21:34:00 | 显示全部楼层

Re:2维内存条--我的大胆创意

并不偏离图灵机结构,因为 IP 中存放的是线性地址,就是说,代码是线性的。

1

主题

103

帖子

119

积分

注册会员

Rank: 2

积分
119
发表于 2008-5-5 22:56:00 | 显示全部楼层

Re:2维内存条--我的大胆创意

**最具魅力的---交换寻址方式:
CPU有一个行列交换标志位,置为1,则所有地址中的行列。(包括线性寻址!)
如果必要,可以将DRC压入堆栈。
这样对于矩阵的转置十分方便。
========================================================================
最具魅力个P,这种“重新解释”线性地址的的机制早在古董级的硬件上都实现了。为了一个矩阵转置而“发明”出来的“二维”内存?你啊,太简单,太幼稚了。

50

主题

200

帖子

200

积分

中级会员

Rank: 3Rank: 3

积分
200
发表于 2008-5-6 08:56:00 | 显示全部楼层

Re:2维内存条--我的大胆创意

这个其实应该做在显卡里.
显卡里面专门有一部分  矩阵显存区......

11

主题

112

帖子

112

积分

注册会员

Rank: 2

积分
112
发表于 2008-5-6 09:09:00 | 显示全部楼层

Re:2维内存条--我的大胆创意

又来了,我觉得instemast这个人,整天就会搞些浮想,现有的技术还未掌握,就自以为多了得,还想搞什么创意,哼,真是垃圾!

50

主题

200

帖子

200

积分

中级会员

Rank: 3Rank: 3

积分
200
发表于 2008-5-6 09:37:00 | 显示全部楼层

Re:2维内存条--我的大胆创意

我觉得做游戏的人是很需要创造力的. 和一般的码工不一样的.
不要扼杀创造力, 不管是否离谱.
很多'离谱'的东西最后都成为了'经典'.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-22 14:45

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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