百科问答小站 logo
百科问答小站 font logo



x86架构字节序是小端模式,其bit位序是类似小端模式还是大端模式? 第1页

  

user avatar   bei-ji-85 网友的相关建议: 
      

如果严格按照位序定义来说x86架构(单纯指的是CPU指令集),是不存在位序的概念的。

有位序概念的前提是:按位(bit)的方式串行收发、处理数据,然后组装成一个字节(byte)。比如USB 2.0的两条数据线发送数据的时候,需要把字节信号转换成电平信号,按位(bit)的方式发送。类似的有位序概念的还有以太网、RS232串口等。

但Intel架构上,不存在直接按照位(bit)组装成字节(bytes)的相关指令操作,CPU操作的最小数据单元是字节(byte),所以严格的说,x86不存在位序的定义

同样的,在其它架构的CPU上,CPU以字节作为最小单位的方式访问数据,都没有位序的概念

CPU层面上,唯一可能有位序概念的是GPIO管脚,但多数现代的CPU的GPIO都是外挂的,一般是用MMIO方式访问,所以也可以排除。

下图是Intel 80386的逻辑图,可以看到数据总线和地址总线都是并行总线,不是串行总线。所以不存在位序的概念(甚至在硬件层面上,连字节序的概念都不存在,地址请求是一次发送的)。

以MSB/LSB/bit order位关键词,在Intel的《Intel 64 and IA-32 Architectures Software Developer's Manual》里搜索,并不能找到有效的内容,唯一有点关于bit order的描述:

所以事实上,Intel CPU没有位序的概念。


user avatar   netwarm007 网友的相关建议: 
      

这是一个好问题,回答其实也没有那么简单。

总的来说,对于绝大部分CPU,bit位序是和字节序保持一致的。因为大部分CPU命令的操作最小单位都是字节,通过一系列位操作命令将一个字节内的位进行调转,是非常耗费性能的。

所以,简单回答的话,x86架构的bit位序也是小端模式。这意味着CPU的D0线是lsb,而D7线是msb。

但是,除了CPU之外,一个计算机系统其实还有缓存、总线、外设等等很多东西。这些东西同样是有字节序/位序的。

为了简化设计和连接,大部分时候,计算机系统内的其它周边设备,也都会和CPU保持一致。但是有一个设备除外,那就是网卡。

Ethernet的PHY(物理层)是大端的字节序,小端的位序。所以对于网卡在收发数据的时候,需要根据需要进行重排。(一般由网卡自己完成)

然后OSI更加上层的协议,其实也都有各自的Endian。比如IP协议,就是大端的。所以如果你要去解析IP协议的协议头里面的东西,往往就需要进行进行一下字节的重排。




  

相关话题

  AMD锐龙5000系增强版、6000系单核性能还有可能追上英特尔酷睿12代吗? 
  如何看待全球芯片荒之际,英特尔投资 200亿美元资建立两个新工厂,将产生哪些影响? 
  计算机专业 CPU 应该用 AMD 还是 Intel? 
  RISC-V RV32I中零寄存器有什么用? 
  如何看待集成电路专业正式成为一级学科,对半导体芯片行业的从业人员和毕业学生有什么影响? 
  如何通俗易懂地说明 i7 真不一定比 i5 好? 
  非 x86 平台,USB 主控制器规范还是主流的 xhci 和 ehci 吗? 
  IC行业 IP供应公司是如何运作的? 
  如何看待三星停止自研 CPU 架构并解散相关团队? 
  请问现在还有能支持32位版本win7系统的ATX主板和CPU吗? 

前一个讨论
USB 3.0 速度远不如 SATA,为什么现在外接硬盘柜还是普遍用 USB 接口?
下一个讨论
Linux 为什么不是实时操作系统?





© 2025-02-21 - tinynew.org. All Rights Reserved.
© 2025-02-21 - tinynew.org. 保留所有权利