如果2³位= 4亿位而不是字节,32位如何处理4GB?

问题描述 投票:3回答:3

从本质上讲,4Gb如何变成4GB?如果内存是寻址字节,那么可能性不是2(32/8)?

cpu-architecture memory-address addressing
3个回答
6
投票

这取决于您如何处理数据。

如果使用32位来寻址每个位,则可以寻址232位或4Gb = 512MB。如果您像大多数当前架构一样处理字节,它将为您提供4GB。

但是如果你处理更大的块,你将需要更少的位来解决4GB。例如,如果你寻址每个512字节的块(2 ^ 9字节),你可以用23位寻址4GB。 FAT16使用16位来寻址(最大)64KB群集,因此可以满足最大4GB的容量。在Java Compressed Oops中使用相同的地方,你可以使用32位参考来寻址32GB的内存。

一些较旧的架构甚至像现在大多数人一样使用word-addressable memory而不是字节。具有大于八位字节的最小可寻址单元的现代架构主要存在于DSP中。还有一些具有位寻址存储器的架构,如Intel 8051


2
投票

大多数现代计算机都是字节可寻址的,每个地址标识一个8位字节的存储空间;太大而不能存储在单个字节中的数据可能驻留在占据一系列连续地址的多个字节中。存在可字寻址的计算机,其中最小可寻址存储单元正是处理器的字。例如,Data General Nova小型机,德州仪器TMS9900和National Semiconductor IMP-16微型计算机使用16位字,并且有许多36位大型计算机(例如,PDP-10)使用18位字寻址,不是字节寻址,给出2 ^ 18个36位字的地址空间,大约1兆字节的存储空间。存储器寻址的效率取决于用于地址的总线的位大小 - 使用的位越多,计算机可用的地址就越多。例如,具有20位地址总线的8位字节可寻址机器(例如Intel 8086)可以寻址2 ^ 20(1,048,576)个存储器位置,或者一个MiB内存,而32位总线(例如Intel) 80386)处理2 ^ 32(4,294,967,296)个位置或4 GiB地址空间。


1
投票

芯片上的电气接口包括(极简化)地址线(例如32条地址线)和数据线(例如,8条线用于读取数据来自RAM,8条线用于写入数据到RAM) 。在这种情况下,您有2 ^ 32个8位字,因此您可以寻址2 ^ 32 * 8位数据。

如果你有一个字宽为16位的RAM(比8位更可能),你可以用相同数量的地址位寻址两倍的RAM。在现代系统中,您不能真正“读取一个字节”,而是CPU从RAM中获取整个缓存行,然后只返回您要求的字节。

© www.soinside.com 2019 - 2024. All rights reserved.