为什么要内存对齐?

mountaineer 2003-07-07 05:39:20
加精
想知道why? 有什莫好处,如何作。
多谢啦
...全文
4097 202 打赏 收藏 转发到动态 举报
写回复
用AI写文章
202 条回复
切换为时间正序
请发表友善的回复…
发表回复
w803007 2003-11-14
  • 打赏
  • 举报
回复
收藏!
大健 2003-07-21
  • 打赏
  • 举报
回复
学习
Wenxy1 2003-07-21
  • 打赏
  • 举报
回复
楼上满天星星。
^0^
reddatura 2003-07-21
  • 打赏
  • 举报
回复
真强,什么时候我也能来这里“吵架“就好了!
swimmer2000 2003-07-21
  • 打赏
  • 举报
回复
看本接口技术的书,里面讲了cpu怎么取数的,数由两字节组成,奇地址和偶地址,如果从奇地址开始要两个周期,若从基地址开始,只要一个周期。这和cpu的工作方式有关。
happycock 2003-07-21
  • 打赏
  • 举报
回复
给楼上的一句话,你不发言,永远也到不了五星
frankzch 2003-07-21
  • 打赏
  • 举报
回复
超人气呕像巨星全阵容,偶也来看看
什么时候有5颗红星了,就来发表意见
现在是学习
1998810 2003-07-21
  • 打赏
  • 举报
回复
<inside c++ object model>里好象有解释
wujianfeng 2003-07-20
  • 打赏
  • 举报
回复
我想也是
hswxf 2003-07-20
  • 打赏
  • 举报
回复
我认为这个问题是可以从二个方面理解:
1、硬件结构决定了软件的性质,在硬件设计上是一个基于8位的数据线来定义微程序的。这样的软件设计只能是基于8位的,指令的形成也是这样的,是一个基于8位的理解来完成对程序的认识;在存储器的设计中为了上述的理由分为偶存储体与奇存储体各是8位,每次针对内存的存取数据均以二次取出(16位),这是硬件上的规定或说是设计上确定的。
2、如果只从高层来理解,只能是一种“产生正确”的答案的方法是什么的讨论,这一点上楼上英雄说的精彩。
贴主的这个问题应该是一个软对硬的要求,从硬来解答软的原因
bearfly1980 2003-07-20
  • 打赏
  • 举报
回复 1
找本关于计算机结构的看看就知道了!!!!
计算机中内存是按照bank来组织的,比如说:bank1对应第一个byte,bank2对应第二个byte,一般来说访问内存时,需要cpu产生一个选通信号,如果是按照bank来读写的话,一个地址选通信号可以同时选通两个bank,从而读出bank1,bank2的数据,这样对齐的话就可以在一个读写周期里读出两个byte,而如果没有对齐,要读出两个byte则要两个读写周期!!!
maojunhua 2003-07-20
  • 打赏
  • 举报
回复
应该是效率,看Andrew S.Tanenbaum (Minix开发者)的《结构化计算机组成》或者John L. Hennessy(Mips提出者)和David A. Patterson(Risc提出者)《计算机体系结构:一种量化的研究方法》。我觉得从体系结构理解比较好,讨论在软件层的影响又是另外一回事了,前为因后为果,不能把影响说成原因
minghui000 2003-07-20
  • 打赏
  • 举报
回复
Regardless of the state of the $A directive, variables and typed constants are always aligned for optimal access. In the {$A+} state, execution will be faster.
1cs1ak1 2003-07-19
  • 打赏
  • 举报
回复



up



ckacka 2003-07-19
  • 打赏
  • 举报
回复
glassshark()和internet(bbc)是同一个人
cherry0805 2003-07-19
  • 打赏
  • 举报
回复
我也是,象牛人学习一下
pressman 2003-07-19
  • 打赏
  • 举报
回复
学习,
我是刚刚来的菜鸟!
Jupin 2003-07-19
  • 打赏
  • 举报
回复
(摘自MSDN)
应用程序通常在地址中对齐结构成员,而这些地址对所涉及的数据类型和处理器是“自然的”。例如,一个 4 字节数据成员的地址应该是 4 的倍数。

当编写用于移植到多处理器的代码时,此原则特别重要。没有对齐的 4 字节数据成员所在的地址不是 4 的倍数,这将导致 80386 处理器的性能损失和 MIPS® RISC 处理器的硬件异常。后一种情况中,虽然系统会处理异常,但是性能损失更明显。

下面的原则确保 Win32 处理器的正确对齐:

类型 对齐方式
char 与字节边界对齐
short(16 位) 与偶数字节边界对齐
int 和 long(32 位) 与 32 位边界对齐
float 与 32 位边界对齐
double 与 64 位边界对齐
structures 任何成员的最大对齐要求
unions 第一个成员的对齐要求

编译器自动根据这些要求对齐数据,在结构中插入空白,直至 /Zp 选项或 #pragma pack 指定的限制(默认包大小)。例如,/Zp2 允许最多 1 字节的空白,/Zp4 允许最多 3 字节的空白,诸如此类。Windows 3.x 的默认包大小为 2,而 Win32 的默认包大小为 8。因此:

如果用 /Zp 或 #pragma pack 指定了封装限制,则不能获得正确的 Win32 对齐(默认值)。
不同的 Win32 默认设置会改变某些结构成员的偏移量,从而影响源代码。仔细检查代码,确认是否已经硬编码这些偏移量,或者代码是否根据特定的默认包大小进行假设。
giantzz 2003-07-19
  • 打赏
  • 举报
回复
为什么要急着结贴,再等等,汇编版的牛人还没到齐!
放心,保证给您一个满意的答案!



internet 2003-07-19
  • 打赏
  • 举报
回复
来了许多带"星"的,我好怕呢.
嗯,晚上睡不着,要作恶梦了.(坏了,又写错了一个字).
加载更多回复(182)
内容概要:本文围绕基于三重移相控制(TPS)的双有源桥(DAB)高频隔离DC-DC变换器开展系统性研究,重点构建了其在Simulink环境下的高精度仿真模型。研究全面涵盖SPS单相移相、DPS双重重移相与TPS三重移相等多种控制策略的建模、实现与性能对比,深入分析不同模式下变换器的功率传输特性、软开关实现条件及功率回流问题,旨在提升DAB在交直流混合微电网、能量路由器、多端口柔性互联装置等场景中的转换效率与动态响应能力。通过对ZVS(零电压切换)条件的精确控制与移相角参数的优化,有效降低了开关损耗,增强了系统整体能效与运行稳定性。该仿真模型具有良好的可扩展性,适用于复杂电能转换系统的科研验证与工程开发。; 适合人群:电力电子、电气工程及其自动化等相关专业的硕士研究生、博士生、科研人员以及从事新能源变换器、柔性输配电系统设计的工程技术人员。; 使用场景及目标:①掌握双有源桥DAB变换器的基本工作原理及其在高频隔离场合的核心优势;②深入理解三重移相控制策略的设计机理、控制自由度分配及其在效率优化中的关键作用;③构建并调试可用于科研论文撰写、项目申报或实际系统验证的高保真Simulink仿真模型,支撑理论分析与实验对比。; 阅读建议:建议结合MATLAB/Simulink平台进行动手实践,重点关注主电路拓扑搭建、移相控制模块设计、驱动信号时序配置及ZVS实现条件的仿真观测,推荐通过对比SPS、DPS与TPS三种模式的稳态与动态响应曲线,深入掌握各控制策略的适用边界与优化方向。
【重要提示】本资源设置为0积分下载,若非0积分请勿轻易下载 亲爱的CSDN用户: 首先感谢你点进这个资源页面。我需要提前说明一个重要情况: 本资源原本已设置为“0积分下载”,即作者希望完全免费共享。但CSDN平台有时会根据文件的下载热度、文件大小、用户权限等因素,自动将部分资源的积分调整为非0数值(如1积分、2积分、5积分等)。这是平台系统的自动行为,而非作者本人的设定。 因此,如果你当前看到该资源的下载所需积分不是0(例如显示为1、2、3……),请谨慎决定是否下载。 如果你按照非0积分支付并下载后发现资源内容不符合预期、链接失效,或者实际上该资源本应是免费的,作者无法为此承担积分损失或退还操作。强烈建议:仅在页面显示为0积分时进行下载。 另外,本资源描述中并未直接提供具体的下载地址或外部链接,因为它本身是一个通过CSDN官方上传通道提交的文件/内容包。如果你看到描述中没有外部网盘地址,这是正常的——资源文件应通过CSDN内置的“下载”按钮获取。若因平台积分显示异常导致你支付了积分,请优先联系CSDN客服咨询积分退还政策,作者没有权限修改平台自动设定的积分值。 感谢你的理解与支持。技术分享本应开放,但受限于平台规则,特此提醒如上。祝学习进步!

70,038

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧