请教大家一个计算机组成原理的问题

2023-04-17 15:48:27 +08:00
 OrdinaryMan

当初大学计组这里就没想明白,最近重学机组还是在这里碰壁,故来 v 站请教各位 IT 同志: 既然现代计算机都是按字节编制,也就是每个地址对应一个字节大小的存储单元,也就是说按字节编制存储字长就是 8 位,那为什么存储字长还可以是 32 位,64 位? 我知道这句话肯定有问题,具体是哪里除了问题呢?

8055 次点击
所在节点    程序员
76 条回复
leonshaw
2023-04-18 00:06:20 +08:00
@OrdinaryMan #25 存储单元的位数决定了数据总线的条数——错
RecursiveG
2023-04-18 00:20:16 +08:00
汉字是一个字一个框,如果要存二字词就需要两个框,如果要存人名就要三个框,存成语要四个框。
存完成语我还可以问这个成语的第三个字是啥。
tyzandhr
2023-04-18 00:48:58 +08:00
省流:一个字节长度为 1-48bit 不等。最初通常使用 6bit 或 9bit 为一个字节。from:维基百科
DonaldY
2023-04-18 01:21:02 +08:00
计算单位。
一般说是字长,寄存器最大处理单位。
aijam
2023-04-18 05:37:30 +08:00
32/64 位的 CPU ,指的是用多少个 bit 代表一个内存地址。
每个内存地址,指向的都是 1 byte(8 bit)的数据,这叫 word size 。
所以 32 位的电脑,你最多有 2^32 个内存地址(0x00000000 to 0xffffffff)。每个地址存 1 byte ,最多有 2^32 byte=4GB ,这就是常说的 32 位电脑的最大内存限制。相应的 64 位电脑,理论最多能支持有 2^24 TB 内存,大约是 16 million TB 。
polarbearn
2023-04-18 08:21:22 +08:00
@Livid @raymanr chatGPT 回答
raymanr
2023-04-18 09:26:42 +08:00
@polarbearn 有什么问题吗? 我贴个回答意思是告诉楼主, 这种事问 chatgpt 就行了, 而且回答内容我也是完全阅读了解认可并认为能够回答楼主的疑问的.
raymanr
2023-04-18 09:33:13 +08:00
@polarbearn
@009694
算求, 以后老子还回答个屁的问题, chatgpt 组织了语言复制粘贴下, 就跟他妈行政查考勤一样闹麻了, 我他妈粘贴的是无意义的灌水内容还是怎么?? 你们了不起, 你们清高, 你们加油哈, 早日把 chatgpt 赶出 v2, 下回我看别人直接不贴 FROM CHATGPT 你们又要怎么个折腾.
shendaowu
2023-04-18 09:47:49 +08:00
感觉 OP 可能是对 CPU 的运行过程不太了解。我找了一会,找到个可视化的 CPU 模拟器:

视频介绍: <amp-youtube data-videoid="QqBmVEBhdco" layout="responsive" width="480" height="270"></amp-youtube>
网址: https://eseo-tech.github.io/emulsiV/

进去之后把 Animation 勾选上。然后点 run 或者 step 一步一步执行。这个模拟器好像没表示控制总线。

应该是可以自己修改指令。不过这个指令集我不熟,没试。
polarbearn
2023-04-18 10:01:51 +08:00
009694
2023-04-18 10:04:31 +08:00
@raymanr 你自己看看这个回答有解决什么问题吗?拿一个满天飞的免费接口绕了一圈还感觉自己做了什么大善事。对这种客观问题问题 gpt 是很容易给出似是而非的错误答案的。 真想接 gpt 直接搞个爬虫效率比你这个人工粘贴高不知道多少
42is42is42
2023-04-18 10:08:11 +08:00
存储体:
• 存储单元:每个存储单元存放一串二进制代码。
• 存储字( word ):存储单元中二进制代码的组合。
• 存储字长:存储单元中二进制代码的位数。
• 存储元:存户二进制的电子元件(电容),每个存储元可存 1bit 。
ButcherHu
2023-04-18 10:10:25 +08:00
按字节寻址,但是总线宽度不一样。可以理解为 mtu 是 1500 但是带宽是千兆。
leimao
2023-04-18 10:11:27 +08:00
工地里,阿宝力气很小,一趟只能搬一块砖。
后来工地里又来了阿宏,阿宏力气很大,一趟能搬四块砖。
后来工地里又来了阿彪,阿彪力气更大,一趟能搬八块砖。

如果你让阿彪一趟只搬一块砖,那可就太浪费了。
lostsquirrelX
2023-04-18 11:39:20 +08:00
字 Word cpu 决定长度
字节 byte
raymanr
2023-04-18 11:45:12 +08:00
@009694 搞笑, 那下面这么多人类回答解决楼主的疑惑了吗? 人笨怪答案是 chatgpt?
raymanr
2023-04-18 11:49:37 +08:00
@009694 顺带一提, 你在这反对了半天我贴 chatgpt 组织的答案, 又解决了楼主什么问题呢?
raymanr
2023-04-18 12:04:04 +08:00
@polarbearn 我只想问, 我贴个 FROM CHATGPT 你们自然可以跳脚不满, 我自己承认了嘛. 不过有人要是闲的发慌, 把稿子洗一洗, 不承认是 AI 生成, 看起来也不像 AI 生成, 你们又要如何应对呢?
byron
2023-04-18 13:06:15 +08:00
你的疑问很好,的确按字节来说,一个字节有 8 位,对应 8 个二进制位。但是在计算机系统中,一个"字"的大小和一个字节是两个不同的概念。

字节(Byte)是存储单元的大小,确实是 8 位,固定的。

而字长(Word size)表示 CPU 在一次读 /写内存操作中能读取或写入的数据位数。它决定了 CPU 在同一时刻能操作的数据宽度。字长可以是 8 位,16 位,32 位,64 位等不同位数。

所以,尽管内存是以字节为存储单元来划分的,但是 CPU 在访问内存时,一次可以访问多个字节,这就是字长的概念。

32 位机和 64 位机之所以具有不同的字长,是因为它们的 CPU 及其寻址总线等硬件支持读取不同位数的数据。32 位 CPU 支持 32 位字长,可以一次读取 4 个字节(32 位)的数据;64 位 CPU 支持 64 位字长,可以一次读取 8 个字节(64 位)的数据。

除字长外,与之对应的还有地址总线宽度。32 位机的地址总线宽度也是 32 位,所以其最大内存空间也就是 2^32 = 4GB 。64 位机的地址总线是 64 位,所以支持最大 16EB 的内存空间。

所以,总结来说:

1) 字节大小固定是 8 位,这是存储单元大小。

2) 字长表示 CPU 一次可以访问的位数,可以是 8 位,16 位,32 位,64 位等。它决定了 CPU 的访问宽度和性能。

3) 地址总线宽度对应字长,决定了系统可以支持的最大内存空间。

希望通过上述解释,能帮助你理解计算机中的字节、字长和地址总线的概念,明白 32 位和 64 位系统的区别所在。如果还有不理解的地方,请继续提问,我很乐意阐述和讨论。
ljpCN
2023-04-18 15:51:55 +08:00
我宣布 #59 byron 老哥是最佳答案!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/933184

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX