关于字节对齐的理解程度

字节对齐的剖析

一、需要了解的名词和概念

1、数据类型自身的对齐值:即数据本身所占字节长度。

2、结构体或类的自身对齐值:即其中数据成员类型对齐值的最大值。

3、指定对齐值:由编程人员通过#pragma pack(value)指定的value值,通过#pragma pack()代码解除。

4、结构体、类、数据成员的有效对齐值:即2、3以及当前计算机总线长度三者的最大值。

5、圆整: 即结构体成员变量占用总长度需要是对结构体有效对齐值的整数倍

以上为理解字节对齐的最基本要求,请耐心看完。

二、CPU的指令运行过程

         在讨论字节对齐之前先简单看一下CPU对指令处理读写指令的工作过程:首先CPU从PC(程序计数器)中得到指令地址,通过总线从内存中取出指令(即其操作码+地址码),放入IR(指令寄存器)中(PC->AR[地址寄存器]->bus->DR[数据寄存器]->IR)对操作码进行译码,得到具体操作,同时PC自增1(下一条指令)。上述过程消耗一个CPU周期(机器周期)。然后进入下一个CPU周期,CPU取出其操作对象的地址码,通过总线在内存中定位到该地址,再进入下一个周期,若此时为写操作,则直接将数据写入到内存地址中,操作结束,若为读操作,则将数据通过总线从内存中取到CPU中,然后交由累加器或者其他控制元件进行处理完毕。个人认为,cache速度小于寄存器速度,故读取数据应当耗时更多,但由于计算机由CPU周期控制,在同步时钟信号的控制下应当是一样的,如果异步控制可能略有差异。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值