【问题标题】:how can we find that this processor supports how much memory?我们如何才能发现这个处理器支持多少内存?
【发布时间】:2010-03-20 09:42:26
【问题描述】:

我刚开始汇编语言编程,在第一堂课中,我们的老师告诉我们有关英特尔 8080 和英特尔 8085 的信息,他说这些处理器有 64k 内存。

现在我想知道我们如何使用特定处理器找到这个内存量,例如我有一个 1.8 Ghz 的处理器,现在我如何找出这个处理器可以使用的内存量。

我想问的是告诉我如何找出这个内存量的方法?

【问题讨论】:

    标签: assembly computer-architecture


    【解决方案1】:

    这取决于 CPU 支持多少位(物理)寻址,地址位数通常是

    8085/Z80 - 16 bit address registers - 16 bit addressing - 64 kB address space
    68008 - 32 bit address registers - 20 bit addressing - 1 MB address space
    68000 - 32 bit address registers - 24 bit addressing - 16 MB address space
    68020 - 32 bit address registers - 32 bit addressing - 4 GB address space
    

    请注意,许多 64 位 CPU 通常只支持 40 位地址空间,即 1 TB。

    【讨论】:

    • 当然,即使 CPU 支持给定数量的内存,也并不意味着其他硬件或操作系统可以支持它。例如。 Intel i7 是 64 位 CPU,但主板通常限制为 24GB。
    • 很多 CPU 的物理地址位超过 32 位,但地址寄存器只有 32 位。 Intel 的 PAE 允许在旧的 32 位处理器(如 Pentium III 等)上达到 64 GB。
    【解决方案2】:

    通常处理器被设计成单个整数寄存器可以存储任何内存位置的地址。因此,“最大内存量”由寄存器(或处理器)的位数决定。 32 位等于 4 GB。 64 位等于 16 exabytes 的 RAM。

    【讨论】:

      【解决方案3】:

      取决于架构,但 CPU 将受到它拥有多少地址线的限制。旧的 pentium pro 32 位 CPU 支持 36 条地址线,因此 CPU 最多可支持 64GB。较新的 CPU,例如 64 位 CPU 的 i7-860,也仅支持 36 个物理地址,因此也仅限于 64GB。物理地址空间的大小可以通过 CPUID 指令代码找到,其他 CPU 可能使用不同的技术或需要阅读数据表。好像您正在学习 x86,所以在这种情况下,如果您的 CPU 支持,CPUID 就是您想要的。

      【讨论】:

        【解决方案4】:

        您指的是“内存”虚拟内存还是物理内存?在虚拟内存的情况下,32 位处理器为 4GB,尽管您可能无法全部使用它们,因为操作系统使用了其中的一部分。还要注意 CPU 的 PAE(物理地址扩展)以及操作系统是否运行 PAE 内核。这将为您提供超过 4GB 的物理内存来安装和使用,但虚拟地址空间仍保持 4GB。请看:

        http://en.wikipedia.org/wiki/Physical_Address_Extension

        http://msdn.microsoft.com/en-us/library/aa366796(v=vs.85).aspx

        http://msdn.microsoft.com/en-us/windows/hardware/gg487503

        【讨论】:

          【解决方案5】:

          嗯,这取决于某些变量。

          例如,一个 8 位处理器的值最多为 255,这是通过将 2 的八次方减去该值得出的。这个数字 255 是 CPU 可以处理的字节数,RAM 不能超过这个数量。

          现在,让我们稍微加强一下(没有双关语的意思)。一个 16-it 处理器的值高达 65,535,这再次通过取 2 的 16 次方得到,然后再减去 1(我相信你现在明白了)。这意味着我们可以拥有 65,535 字节的 RAM,即 65.535 KB。希望这开始有意义了。

          32 位处理器的值高达 4,294,967,295(这些数字变得非常大)。那是 4,294,967,295 字节,或 4.294967295 GB 的 RAM。这项技术在 90 年代开始大量使用,直到今天仍然是半流行的。

          但是,当然,我们都知道技术是如何快速而频繁地变化的,所以是的,还有 64 位计算机,与 32 位技术一样好。这实际上是当今最常见的处理器类型。因此,它们可以支持 18,446,744,073,709,551,615 的值。是的,这也是它可以容纳的字节数,等于 18.446744073709551615 艾字节。

          而且,尽管目前没有处理器可以容纳这个数量,但也有 128 位处理器。它们最多可以容纳 340,282,366,920,938,463,463,374,607,431,768,211,455 字节的数据,也等于 340.282366920938463463374607431768211455 ......嗯......嗯,一些字节的测量,恰好比 yottabyte 大除此之外的字节测量。但是,嘿,这只是告诉您 128 位处理器可以处理很多事情,我们可能会在遥远的将来看到它们。人们之所以说 128 位、64 位、32 位、16 位或 8 位,是因为这比记住所有这些比记住它们每个代表的大数字要容易得多。

          所以,我希望这会有所帮助。我不确定 8 位的是否正确,因为我知道 NES 有 2 KB 的 RAM,超过 255 字节,但是,我知道其他一切都是正确的。如果不正确,您也可以代表您进行一些研究;)。

          【讨论】:

          • 虽然 NES 有 2 kB 的板载内存,但卡带增加了 1 MB 的额外 RAM。普通的 8 位微处理器可以寻址高达 64 kB 的主存储器,而无需像库切换这样的技巧。 “16 位”8086 可以寻址 1MB 的主内存,而 32 位 iA 处理器可以通过 PAE 之类的技巧寻址高达 64 MB。
          • 真的,所有这些加起来,一个非常糟糕和误导性的答案。
          • 老实说,我认为这根本没有误导性。当然,处理器 RAM 支持在某种程度上取决于其他方面,但这基本上是一般事情的工作方式。
          猜你喜欢
          • 1970-01-01
          • 2012-04-19
          • 2014-02-08
          • 2020-10-06
          • 2022-11-11
          • 2021-04-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多