我刚刚开始汇编语言编程,在第一堂课中,我们的老师告诉我们有关intel 8080和intel 8085的内容,他说这些处理器有64k内存。
现在我想知道我们如何使用特定处理器找到这么多的内存,例如我有一个1.8 Ghz的处理器,现在我怎么能找到可以用于这个处理器的内存量。
我想问的是告诉我如何找出这么多内存的方法?
答案 0 :(得分:7)
取决于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。
答案 1 :(得分:1)
通常,处理器的设计使得单个整数寄存器可以存储任何存储器位置的地址。因此,“最大存储量”由寄存器(或处理器)的位数确定。 32位等于4 GB。 64位等于16 exabytes 的RAM。
答案 2 :(得分:1)
取决于架构,但CPU将受到它拥有的地址线数量的限制。使用旧的奔腾专业32位CPU,支持36个地址线,因此CPU可支持高达64GB。最近的CPU,例如i7-860是一个64位CPU,也只支持36个物理地址,因此也限制在64GB。通过使用CPUID指令代码可以找到物理地址空间量,其他CPU可能使用不同的技术或需要读取数据表。看起来像是在学习x86,所以在这种情况下CPUID就是你想要的CPU。
答案 3 :(得分:1)
通过提及“记忆”虚拟记忆或物理,你指的是什么?在虚拟内存的情况下,对于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
答案 4 :(得分:0)
嗯,这取决于某些变量。
例如,一个8位处理器的值最高为255,这是通过取2到8的幂来计算的,并将该值减1。这个数字255是CPU可以处理的字节数,RAM不能超过这个数量。
现在,让我们加强一点(没有双关语)。一个16-it处理器的值高达65,535,并且再次计算出2到16的功率,然后减去1(我相信你现在得到了大局)。这意味着我们可以拥有65,535字节的RAM,即65.535千字节。希望这开始有意义。
32位处理器的值最高为4,294,967,295(这些数字变得非常大)。这是4,294,967,295字节,或4.294967295千兆字节的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 ......嗯,有些字节的测量值恰好大于yottabytes,据我所知,没有任何单位除此之外的字节测量。但是,嘿,这只是告诉你一个128位处理器可以处理很多,我们可能会在不久的将来看到它们。人们说128位,64位,32位,16位或8位的原因是因为它比试图记住所有这些比那些每个代表的大数字容易得多。
所以,我希望这会有所帮助。我不确定8位是否正确,因为我知道NES有2千字节的RAM,超过255个字节,但是,我知道其他一切都是正确的。如果不正确,您也可以代表您进行一些研究;)。