提问人:Vignesh B 提问时间:11/10/2023 最后编辑:Peter CordesVignesh B 更新时间:11/10/2023 访问量:30
64 位 cpu 如何从 ram 中获取 8 位(通常为 1 字节)的数据
How 64bit cpu fetch 8bits(generally 1 Byte) of data from ram
问:
在学习计算机体系结构的同时,我开始了解 CPU 的获取-执行周期、ISA、总线和其他东西。每个 CPU 都可以根据其架构(如 8、16、32、64 位)对不同位大小的数据执行操作。考虑 64 位 CPU,它可以一次处理 64 位大小的数据。为了支持这三个地址、数据和控制总线,可以一次传输 64 位数据。我们使用称为“WORD”的术语来表示 CPU 一次可以处理多少位(对于 64 位 CPU,“WORD”大小为 64 位)。64 位 CPU 中使用的每条指令也将采用 64 位大小。
程序员通常使用“Byte”作为内存的单位,我们开发程序的目的是使用Byte作为单位(例如C语言中的char,int,long,float)。
我的疑惑: 考虑 64 位 CPU。
CPU 是否使用字大小或字节大小来寻址 RAM。 例如: 为简单起见,我们将 RAM 大小设为 256 位。如果 CPU 为每个 64 位 (WORD) 提供地址。然后总共会有 4 个地址。否则 CPU 为每个 8bit(Byte) 提供地址。那么总共会有 32 个地址。
如果程序员使用字节大小,那么它将如何从 word 中获取。 例如:考虑 C 语言中的 char 数据类型,它需要 1Byte(8bit)。 CPU 是从 RAM 中获取完整的 64 位,还是仅获取 8 位来处理字符类型。
在 Fetch-Execute 周期中,64 位 CPU 将获取 64 位大小的指令。每个 64 位指令将使用全尺寸或根据我们执行的操作拆分为多个部分。有些操作不需要操作数,有些操作需要 1 个或多个操作数。例如,add 将 2 个操作数,ISA 将分别是操作码、操作数 1 和操作数 2 的三个部分。想象一下,在 64 位中,前 16 位将是操作码,操作数 1 为 24 位,操作数 2 为 24 位。如果我们使用 address for 指示从该地址获取数据作为操作数,并且该地址需要使用完整的 64 位大小来存储该地址。那么,如果只有 24 位用于操作数,那么该地址将如何在 64 位 ISA 中使用。是否需要多个 ISA 来执行该操作或其他任何操作?
答: 暂无答案
评论