作者gwliao (gwliao)
看板CSSE
标题Re: [问题] little endian 的 alignment?
时间Thu Apr 13 18:28:00 2006
※ 引述《hardcover (精装版喔)》之铭言:
: 标题: Re: [问题] little endian 的 alignment?
: 时间: Wed Apr 12 23:33:01 2006
:
: ※ 引述《hardcover (精装版喔)》之铭言:
: 请问一下
: little endian的系统
: 要考虑memory的alignment吗?
两回事, 真的是两回事.
: 大多数使用 big endian 机制的架构并不允许字组以非字组位址边界写入记忆体
: (例如,如果一个字组是2或4个位元组的话,它一定要是偶数的位元组位址才行)
: 这样很浪费空间。像intel这样的litle endian 机器,就允许奇数位址的读和写,
: 这让写程式的人方便许多。
: ---
: p.225
: 计算机组织与结构
: 阮圣彰、蔡坤霖 译
去看Patterson和Hennessy的书,
不会出现这种似是而非的句子.
第一:
大部分的big endian的机器的实做方式所造成的现象不代表是
全部big endian的机器的实做方式都会这样.
第二:
实际上, 那本书的"大部份"不知道是那边的东西.
Sun UltraSPARCII/III的机器上就允许, Alpha也可以, ARM也可以.
(这我手边的三种常见的RISC的机器)
我实在搞不懂书为何这样写, 但为了你好, 还是去买本Patterson和Hennessy的书吧.
虽然他们书还是有一些错误, 但都是小问题, 不会有这种怪东西.
alignment的话, 取一个word,只要用一次Bus就可以.
misalignment的话, 取一个word,要用两次Bus就才可以.
当以前memory很慢时, 这会差很多.
现在memory蛮快,又有cache, 这个差距就被缩小.
这种状况应该只有一种情况成立,
就是code segment/code region/code area, 就是放instruction的地方,
因为几乎所有的RISC的instruction fetch都是用word address,
所以instruction不能misalignment.
而CISC的instruction有可能会是variable length,
所以instruction fetch的功能要能handle misalignment的东西.
但这只是读的动作, 而且还局限在instruction fetch,
但你的书说读和写,所以我觉得你的书该换了. XD
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.48.60
1F:推 hardcover:感谢 XD 04/13 21:39